core/homeassistant/components/meteoclimatic/const.py

148 lines
4.3 KiB
Python

"""Meteoclimatic component constants."""
from __future__ import annotations
from datetime import timedelta
from meteoclimatic import Condition
from homeassistant.components.sensor import SensorEntityDescription
from homeassistant.components.weather import (
ATTR_CONDITION_CLEAR_NIGHT,
ATTR_CONDITION_CLOUDY,
ATTR_CONDITION_EXCEPTIONAL,
ATTR_CONDITION_FOG,
ATTR_CONDITION_HAIL,
ATTR_CONDITION_LIGHTNING,
ATTR_CONDITION_LIGHTNING_RAINY,
ATTR_CONDITION_PARTLYCLOUDY,
ATTR_CONDITION_POURING,
ATTR_CONDITION_RAINY,
ATTR_CONDITION_SNOWY,
ATTR_CONDITION_SNOWY_RAINY,
ATTR_CONDITION_SUNNY,
ATTR_CONDITION_WINDY,
ATTR_CONDITION_WINDY_VARIANT,
)
from homeassistant.const import (
DEGREE,
DEVICE_CLASS_HUMIDITY,
DEVICE_CLASS_PRESSURE,
DEVICE_CLASS_TEMPERATURE,
LENGTH_MILLIMETERS,
PERCENTAGE,
PRESSURE_HPA,
SPEED_KILOMETERS_PER_HOUR,
TEMP_CELSIUS,
)
DOMAIN = "meteoclimatic"
PLATFORMS = ["sensor", "weather"]
ATTRIBUTION = "Data provided by Meteoclimatic"
MODEL = "Meteoclimatic RSS feed"
MANUFACTURER = "Meteoclimatic"
SCAN_INTERVAL = timedelta(minutes=10)
CONF_STATION_CODE = "station_code"
DEFAULT_WEATHER_CARD = True
SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
SensorEntityDescription(
key="temp_current",
name="Temperature",
native_unit_of_measurement=TEMP_CELSIUS,
device_class=DEVICE_CLASS_TEMPERATURE,
),
SensorEntityDescription(
key="temp_max",
name="Daily Max Temperature",
native_unit_of_measurement=TEMP_CELSIUS,
device_class=DEVICE_CLASS_TEMPERATURE,
),
SensorEntityDescription(
key="temp_min",
name="Daily Min Temperature",
native_unit_of_measurement=TEMP_CELSIUS,
device_class=DEVICE_CLASS_TEMPERATURE,
),
SensorEntityDescription(
key="humidity_current",
name="Humidity",
native_unit_of_measurement=PERCENTAGE,
device_class=DEVICE_CLASS_HUMIDITY,
),
SensorEntityDescription(
key="humidity_max",
name="Daily Max Humidity",
native_unit_of_measurement=PERCENTAGE,
device_class=DEVICE_CLASS_HUMIDITY,
),
SensorEntityDescription(
key="humidity_min",
name="Daily Min Humidity",
native_unit_of_measurement=PERCENTAGE,
device_class=DEVICE_CLASS_HUMIDITY,
),
SensorEntityDescription(
key="pressure_current",
name="Pressure",
native_unit_of_measurement=PRESSURE_HPA,
device_class=DEVICE_CLASS_PRESSURE,
),
SensorEntityDescription(
key="pressure_max",
name="Daily Max Pressure",
native_unit_of_measurement=PRESSURE_HPA,
device_class=DEVICE_CLASS_PRESSURE,
),
SensorEntityDescription(
key="pressure_min",
name="Daily Min Pressure",
native_unit_of_measurement=PRESSURE_HPA,
device_class=DEVICE_CLASS_PRESSURE,
),
SensorEntityDescription(
key="wind_current",
name="Wind Speed",
native_unit_of_measurement=SPEED_KILOMETERS_PER_HOUR,
device_class="mdi:weather-windy",
),
SensorEntityDescription(
key="wind_max",
name="Daily Max Wind Speed",
native_unit_of_measurement=SPEED_KILOMETERS_PER_HOUR,
device_class="mdi:weather-windy",
),
SensorEntityDescription(
key="wind_bearing",
name="Wind Bearing",
native_unit_of_measurement=DEGREE,
device_class="mdi:weather-windy",
),
SensorEntityDescription(
key="rain",
name="Daily Precipitation",
native_unit_of_measurement=LENGTH_MILLIMETERS,
device_class="mdi:cup-water",
),
)
CONDITION_CLASSES = {
ATTR_CONDITION_CLEAR_NIGHT: [Condition.moon, Condition.hazemoon],
ATTR_CONDITION_CLOUDY: [Condition.mooncloud],
ATTR_CONDITION_EXCEPTIONAL: [],
ATTR_CONDITION_FOG: [Condition.fog, Condition.mist],
ATTR_CONDITION_HAIL: [],
ATTR_CONDITION_LIGHTNING: [Condition.storm],
ATTR_CONDITION_LIGHTNING_RAINY: [],
ATTR_CONDITION_PARTLYCLOUDY: [Condition.suncloud, Condition.hazesun],
ATTR_CONDITION_POURING: [],
ATTR_CONDITION_RAINY: [Condition.rain],
ATTR_CONDITION_SNOWY: [],
ATTR_CONDITION_SNOWY_RAINY: [],
ATTR_CONDITION_SUNNY: [Condition.sun],
ATTR_CONDITION_WINDY: [],
ATTR_CONDITION_WINDY_VARIANT: [],
}