diff --git a/homeassistant/components/accuweather/const.py b/homeassistant/components/accuweather/const.py index aac37604584..fa9ed6b467f 100644 --- a/homeassistant/components/accuweather/const.py +++ b/homeassistant/components/accuweather/const.py @@ -1,4 +1,20 @@ """Constants for AccuWeather integration.""" +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, +) from homeassistant.const import ( ATTR_DEVICE_CLASS, CONCENTRATION_PARTS_PER_CUBIC_METER, @@ -29,20 +45,20 @@ NAME = "AccuWeather" UNDO_UPDATE_LISTENER = "undo_update_listener" CONDITION_CLASSES = { - "clear-night": [33, 34, 37], - "cloudy": [7, 8, 38], - "exceptional": [24, 30, 31], - "fog": [11], - "hail": [25], - "lightning": [15], - "lightning-rainy": [16, 17, 41, 42], - "partlycloudy": [4, 6, 35, 36], - "pouring": [18], - "rainy": [12, 13, 14, 26, 39, 40], - "snowy": [19, 20, 21, 22, 23, 43, 44], - "snowy-rainy": [29], - "sunny": [1, 2, 3, 5], - "windy": [32], + ATTR_CONDITION_CLEAR_NIGHT: [33, 34, 37], + ATTR_CONDITION_CLOUDY: [7, 8, 38], + ATTR_CONDITION_EXCEPTIONAL: [24, 30, 31], + ATTR_CONDITION_FOG: [11], + ATTR_CONDITION_HAIL: [25], + ATTR_CONDITION_LIGHTNING: [15], + ATTR_CONDITION_LIGHTNING_RAINY: [16, 17, 41, 42], + ATTR_CONDITION_PARTLYCLOUDY: [4, 6, 35, 36], + ATTR_CONDITION_POURING: [18], + ATTR_CONDITION_RAINY: [12, 13, 14, 26, 39, 40], + ATTR_CONDITION_SNOWY: [19, 20, 21, 22, 23, 43, 44], + ATTR_CONDITION_SNOWY_RAINY: [29], + ATTR_CONDITION_SUNNY: [1, 2, 3, 5], + ATTR_CONDITION_WINDY: [32], } FORECAST_DAYS = [0, 1, 2, 3, 4] diff --git a/homeassistant/components/buienradar/weather.py b/homeassistant/components/buienradar/weather.py index d0a0c0e18b4..4b0391c3190 100644 --- a/homeassistant/components/buienradar/weather.py +++ b/homeassistant/components/buienradar/weather.py @@ -14,6 +14,20 @@ from buienradar.constants import ( import voluptuous as vol from homeassistant.components.weather import ( + 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, ATTR_FORECAST_CONDITION, ATTR_FORECAST_PRECIPITATION, ATTR_FORECAST_TEMP, @@ -40,20 +54,20 @@ CONF_FORECAST = "forecast" CONDITION_CLASSES = { - "cloudy": ["c", "p"], - "fog": ["d", "n"], - "hail": [], - "lightning": ["g"], - "lightning-rainy": ["s"], - "partlycloudy": ["b", "j", "o", "r"], - "pouring": ["l", "q"], - "rainy": ["f", "h", "k", "m"], - "snowy": ["u", "i", "v", "t"], - "snowy-rainy": ["w"], - "sunny": ["a"], - "windy": [], - "windy-variant": [], - "exceptional": [], + ATTR_CONDITION_CLOUDY: ["c", "p"], + ATTR_CONDITION_FOG: ["d", "n"], + ATTR_CONDITION_HAIL: [], + ATTR_CONDITION_LIGHTNING: ["g"], + ATTR_CONDITION_LIGHTNING_RAINY: ["s"], + ATTR_CONDITION_PARTLYCLOUDY: ["b", "j", "o", "r"], + ATTR_CONDITION_POURING: ["l", "q"], + ATTR_CONDITION_RAINY: ["f", "h", "k", "m"], + ATTR_CONDITION_SNOWY: ["u", "i", "v", "t"], + ATTR_CONDITION_SNOWY_RAINY: ["w"], + ATTR_CONDITION_SUNNY: ["a"], + ATTR_CONDITION_WINDY: [], + ATTR_CONDITION_WINDY_VARIANT: [], + ATTR_CONDITION_EXCEPTIONAL: [], } PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( diff --git a/homeassistant/components/darksky/weather.py b/homeassistant/components/darksky/weather.py index fee7d60a2c3..0ad448ddfbd 100644 --- a/homeassistant/components/darksky/weather.py +++ b/homeassistant/components/darksky/weather.py @@ -7,6 +7,17 @@ from requests.exceptions import ConnectionError as ConnectError, HTTPError, Time import voluptuous as vol from homeassistant.components.weather import ( + ATTR_CONDITION_CLEAR_NIGHT, + ATTR_CONDITION_CLOUDY, + ATTR_CONDITION_FOG, + ATTR_CONDITION_HAIL, + ATTR_CONDITION_LIGHTNING, + ATTR_CONDITION_PARTLYCLOUDY, + ATTR_CONDITION_RAINY, + ATTR_CONDITION_SNOWY, + ATTR_CONDITION_SNOWY_RAINY, + ATTR_CONDITION_SUNNY, + ATTR_CONDITION_WINDY, ATTR_FORECAST_CONDITION, ATTR_FORECAST_PRECIPITATION, ATTR_FORECAST_TEMP, @@ -40,18 +51,18 @@ ATTRIBUTION = "Powered by Dark Sky" FORECAST_MODE = ["hourly", "daily"] MAP_CONDITION = { - "clear-day": "sunny", - "clear-night": "clear-night", - "rain": "rainy", - "snow": "snowy", - "sleet": "snowy-rainy", - "wind": "windy", - "fog": "fog", - "cloudy": "cloudy", - "partly-cloudy-day": "partlycloudy", - "partly-cloudy-night": "partlycloudy", - "hail": "hail", - "thunderstorm": "lightning", + "clear-day": ATTR_CONDITION_SUNNY, + "clear-night": ATTR_CONDITION_CLEAR_NIGHT, + "rain": ATTR_CONDITION_RAINY, + "snow": ATTR_CONDITION_SNOWY, + "sleet": ATTR_CONDITION_SNOWY_RAINY, + "wind": ATTR_CONDITION_WINDY, + "fog": ATTR_CONDITION_FOG, + "cloudy": ATTR_CONDITION_CLOUDY, + "partly-cloudy-day": ATTR_CONDITION_PARTLYCLOUDY, + "partly-cloudy-night": ATTR_CONDITION_PARTLYCLOUDY, + "hail": ATTR_CONDITION_HAIL, + "thunderstorm": ATTR_CONDITION_LIGHTNING, "tornado": None, } diff --git a/homeassistant/components/demo/weather.py b/homeassistant/components/demo/weather.py index 3c87cd1c27c..9792a45bbdf 100644 --- a/homeassistant/components/demo/weather.py +++ b/homeassistant/components/demo/weather.py @@ -2,6 +2,20 @@ from datetime import timedelta from homeassistant.components.weather import ( + 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, ATTR_FORECAST_CONDITION, ATTR_FORECAST_PRECIPITATION, ATTR_FORECAST_PRECIPITATION_PROBABILITY, @@ -14,20 +28,20 @@ from homeassistant.const import TEMP_CELSIUS, TEMP_FAHRENHEIT import homeassistant.util.dt as dt_util CONDITION_CLASSES = { - "cloudy": [], - "fog": [], - "hail": [], - "lightning": [], - "lightning-rainy": [], - "partlycloudy": [], - "pouring": [], - "rainy": ["shower rain"], - "snowy": [], - "snowy-rainy": [], - "sunny": ["sunshine"], - "windy": [], - "windy-variant": [], - "exceptional": [], + ATTR_CONDITION_CLOUDY: [], + ATTR_CONDITION_FOG: [], + ATTR_CONDITION_HAIL: [], + ATTR_CONDITION_LIGHTNING: [], + ATTR_CONDITION_LIGHTNING_RAINY: [], + ATTR_CONDITION_PARTLYCLOUDY: [], + ATTR_CONDITION_POURING: [], + ATTR_CONDITION_RAINY: ["shower rain"], + ATTR_CONDITION_SNOWY: [], + ATTR_CONDITION_SNOWY_RAINY: [], + ATTR_CONDITION_SUNNY: ["sunshine"], + ATTR_CONDITION_WINDY: [], + ATTR_CONDITION_WINDY_VARIANT: [], + ATTR_CONDITION_EXCEPTIONAL: [], } @@ -49,13 +63,13 @@ def setup_platform(hass, config, add_entities, discovery_info=None): 0.5, TEMP_CELSIUS, [ - ["rainy", 1, 22, 15, 60], - ["rainy", 5, 19, 8, 30], - ["cloudy", 0, 15, 9, 10], - ["sunny", 0, 12, 6, 0], - ["partlycloudy", 2, 14, 7, 20], - ["rainy", 15, 18, 7, 0], - ["fog", 0.2, 21, 12, 100], + [ATTR_CONDITION_RAINY, 1, 22, 15, 60], + [ATTR_CONDITION_RAINY, 5, 19, 8, 30], + [ATTR_CONDITION_CLOUDY, 0, 15, 9, 10], + [ATTR_CONDITION_SUNNY, 0, 12, 6, 0], + [ATTR_CONDITION_PARTLYCLOUDY, 2, 14, 7, 20], + [ATTR_CONDITION_RAINY, 15, 18, 7, 0], + [ATTR_CONDITION_FOG, 0.2, 21, 12, 100], ], ), DemoWeather( @@ -67,13 +81,13 @@ def setup_platform(hass, config, add_entities, discovery_info=None): 4.8, TEMP_FAHRENHEIT, [ - ["snowy", 2, -10, -15, 60], - ["partlycloudy", 1, -13, -14, 25], - ["sunny", 0, -18, -22, 70], - ["sunny", 0.1, -23, -23, 90], - ["snowy", 4, -19, -20, 40], - ["sunny", 0.3, -14, -19, 0], - ["sunny", 0, -9, -12, 0], + [ATTR_CONDITION_SNOWY, 2, -10, -15, 60], + [ATTR_CONDITION_PARTLYCLOUDY, 1, -13, -14, 25], + [ATTR_CONDITION_SUNNY, 0, -18, -22, 70], + [ATTR_CONDITION_SUNNY, 0.1, -23, -23, 90], + [ATTR_CONDITION_SNOWY, 4, -19, -20, 40], + [ATTR_CONDITION_SUNNY, 0.3, -14, -19, 0], + [ATTR_CONDITION_SUNNY, 0, -9, -12, 0], ], ), ] diff --git a/homeassistant/components/ecobee/const.py b/homeassistant/components/ecobee/const.py index f380c9bbef3..5ec3a0fcf96 100644 --- a/homeassistant/components/ecobee/const.py +++ b/homeassistant/components/ecobee/const.py @@ -1,6 +1,20 @@ """Constants for the ecobee integration.""" import logging +from homeassistant.components.weather import ( + ATTR_CONDITION_CLOUDY, + ATTR_CONDITION_FOG, + ATTR_CONDITION_HAIL, + 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, +) + _LOGGER = logging.getLogger(__package__) DOMAIN = "ecobee" @@ -30,25 +44,25 @@ MANUFACTURER = "ecobee" # Translates ecobee API weatherSymbol to Home Assistant usable names # https://www.ecobee.com/home/developer/api/documentation/v1/objects/WeatherForecast.shtml ECOBEE_WEATHER_SYMBOL_TO_HASS = { - 0: "sunny", - 1: "partlycloudy", - 2: "partlycloudy", - 3: "cloudy", - 4: "cloudy", - 5: "cloudy", - 6: "rainy", - 7: "snowy-rainy", - 8: "pouring", - 9: "hail", - 10: "snowy", - 11: "snowy", - 12: "snowy-rainy", + 0: ATTR_CONDITION_SUNNY, + 1: ATTR_CONDITION_PARTLYCLOUDY, + 2: ATTR_CONDITION_PARTLYCLOUDY, + 3: ATTR_CONDITION_CLOUDY, + 4: ATTR_CONDITION_CLOUDY, + 5: ATTR_CONDITION_CLOUDY, + 6: ATTR_CONDITION_RAINY, + 7: ATTR_CONDITION_SNOWY_RAINY, + 8: ATTR_CONDITION_POURING, + 9: ATTR_CONDITION_HAIL, + 10: ATTR_CONDITION_SNOWY, + 11: ATTR_CONDITION_SNOWY, + 12: ATTR_CONDITION_SNOWY_RAINY, 13: "snowy-heavy", - 14: "hail", - 15: "lightning-rainy", - 16: "windy", + 14: ATTR_CONDITION_HAIL, + 15: ATTR_CONDITION_LIGHTNING_RAINY, + 16: ATTR_CONDITION_WINDY, 17: "tornado", - 18: "fog", + 18: ATTR_CONDITION_FOG, 19: "hazy", 20: "hazy", 21: "hazy", diff --git a/homeassistant/components/environment_canada/weather.py b/homeassistant/components/environment_canada/weather.py index 3c3dbfe6ce6..f4fa96b52d6 100644 --- a/homeassistant/components/environment_canada/weather.py +++ b/homeassistant/components/environment_canada/weather.py @@ -6,6 +6,18 @@ from env_canada import ECData # pylint: disable=import-error import voluptuous as vol from homeassistant.components.weather import ( + ATTR_CONDITION_CLEAR_NIGHT, + ATTR_CONDITION_CLOUDY, + ATTR_CONDITION_FOG, + ATTR_CONDITION_HAIL, + 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_FORECAST_CONDITION, ATTR_FORECAST_PRECIPITATION_PROBABILITY, ATTR_FORECAST_TEMP, @@ -45,18 +57,18 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( # Icon codes from http://dd.weatheroffice.ec.gc.ca/citypage_weather/ # docs/current_conditions_icon_code_descriptions_e.csv ICON_CONDITION_MAP = { - "sunny": [0, 1], - "clear-night": [30, 31], - "partlycloudy": [2, 3, 4, 5, 22, 32, 33, 34, 35], - "cloudy": [10], - "rainy": [6, 9, 11, 12, 28, 36], - "lightning-rainy": [19, 39, 46, 47], - "pouring": [13], - "snowy-rainy": [7, 14, 15, 27, 37], - "snowy": [8, 16, 17, 18, 25, 26, 38, 40], - "windy": [43], - "fog": [20, 21, 23, 24, 44], - "hail": [26, 27], + ATTR_CONDITION_SUNNY: [0, 1], + ATTR_CONDITION_CLEAR_NIGHT: [30, 31], + ATTR_CONDITION_PARTLYCLOUDY: [2, 3, 4, 5, 22, 32, 33, 34, 35], + ATTR_CONDITION_CLOUDY: [10], + ATTR_CONDITION_RAINY: [6, 9, 11, 12, 28, 36], + ATTR_CONDITION_LIGHTNING_RAINY: [19, 39, 46, 47], + ATTR_CONDITION_POURING: [13], + ATTR_CONDITION_SNOWY_RAINY: [7, 14, 15, 27, 37], + ATTR_CONDITION_SNOWY: [8, 16, 17, 18, 25, 26, 38, 40], + ATTR_CONDITION_WINDY: [43], + ATTR_CONDITION_FOG: [20, 21, 23, 24, 44], + ATTR_CONDITION_HAIL: [26, 27], } diff --git a/homeassistant/components/homematicip_cloud/weather.py b/homeassistant/components/homematicip_cloud/weather.py index b880cfdf1cc..bdfd505a317 100644 --- a/homeassistant/components/homematicip_cloud/weather.py +++ b/homeassistant/components/homematicip_cloud/weather.py @@ -6,7 +6,19 @@ from homematicip.aio.device import ( ) from homematicip.base.enums import WeatherCondition -from homeassistant.components.weather import WeatherEntity +from homeassistant.components.weather import ( + ATTR_CONDITION_CLOUDY, + ATTR_CONDITION_FOG, + ATTR_CONDITION_LIGHTNING, + ATTR_CONDITION_LIGHTNING_RAINY, + ATTR_CONDITION_PARTLYCLOUDY, + ATTR_CONDITION_RAINY, + ATTR_CONDITION_SNOWY, + ATTR_CONDITION_SNOWY_RAINY, + ATTR_CONDITION_SUNNY, + ATTR_CONDITION_WINDY, + WeatherEntity, +) from homeassistant.config_entries import ConfigEntry from homeassistant.const import TEMP_CELSIUS from homeassistant.helpers.typing import HomeAssistantType @@ -15,20 +27,20 @@ from . import DOMAIN as HMIPC_DOMAIN, HomematicipGenericEntity from .hap import HomematicipHAP HOME_WEATHER_CONDITION = { - WeatherCondition.CLEAR: "sunny", - WeatherCondition.LIGHT_CLOUDY: "partlycloudy", - WeatherCondition.CLOUDY: "cloudy", - WeatherCondition.CLOUDY_WITH_RAIN: "rainy", - WeatherCondition.CLOUDY_WITH_SNOW_RAIN: "snowy-rainy", - WeatherCondition.HEAVILY_CLOUDY: "cloudy", - WeatherCondition.HEAVILY_CLOUDY_WITH_RAIN: "rainy", - WeatherCondition.HEAVILY_CLOUDY_WITH_STRONG_RAIN: "snowy-rainy", - WeatherCondition.HEAVILY_CLOUDY_WITH_SNOW: "snowy", - WeatherCondition.HEAVILY_CLOUDY_WITH_SNOW_RAIN: "snowy-rainy", - WeatherCondition.HEAVILY_CLOUDY_WITH_THUNDER: "lightning", - WeatherCondition.HEAVILY_CLOUDY_WITH_RAIN_AND_THUNDER: "lightning-rainy", - WeatherCondition.FOGGY: "fog", - WeatherCondition.STRONG_WIND: "windy", + WeatherCondition.CLEAR: ATTR_CONDITION_SUNNY, + WeatherCondition.LIGHT_CLOUDY: ATTR_CONDITION_PARTLYCLOUDY, + WeatherCondition.CLOUDY: ATTR_CONDITION_CLOUDY, + WeatherCondition.CLOUDY_WITH_RAIN: ATTR_CONDITION_RAINY, + WeatherCondition.CLOUDY_WITH_SNOW_RAIN: ATTR_CONDITION_SNOWY_RAINY, + WeatherCondition.HEAVILY_CLOUDY: ATTR_CONDITION_CLOUDY, + WeatherCondition.HEAVILY_CLOUDY_WITH_RAIN: ATTR_CONDITION_RAINY, + WeatherCondition.HEAVILY_CLOUDY_WITH_STRONG_RAIN: ATTR_CONDITION_SNOWY_RAINY, + WeatherCondition.HEAVILY_CLOUDY_WITH_SNOW: ATTR_CONDITION_SNOWY, + WeatherCondition.HEAVILY_CLOUDY_WITH_SNOW_RAIN: ATTR_CONDITION_SNOWY_RAINY, + WeatherCondition.HEAVILY_CLOUDY_WITH_THUNDER: ATTR_CONDITION_LIGHTNING, + WeatherCondition.HEAVILY_CLOUDY_WITH_RAIN_AND_THUNDER: ATTR_CONDITION_LIGHTNING_RAINY, + WeatherCondition.FOGGY: ATTR_CONDITION_FOG, + WeatherCondition.STRONG_WIND: ATTR_CONDITION_WINDY, WeatherCondition.UNKNOWN: "", } @@ -92,11 +104,11 @@ class HomematicipWeatherSensor(HomematicipGenericEntity, WeatherEntity): def condition(self) -> str: """Return the current condition.""" if getattr(self._device, "raining", None): - return "rainy" + return ATTR_CONDITION_RAINY if self._device.storm: - return "windy" + return ATTR_CONDITION_WINDY if self._device.sunshine: - return "sunny" + return ATTR_CONDITION_SUNNY return "" diff --git a/homeassistant/components/ipma/weather.py b/homeassistant/components/ipma/weather.py index d8ac0c039da..32a5967f8b4 100644 --- a/homeassistant/components/ipma/weather.py +++ b/homeassistant/components/ipma/weather.py @@ -8,6 +8,20 @@ from pyipma.location import Location import voluptuous as vol from homeassistant.components.weather import ( + 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, ATTR_FORECAST_CONDITION, ATTR_FORECAST_PRECIPITATION_PROBABILITY, ATTR_FORECAST_TEMP, @@ -38,20 +52,20 @@ ATTRIBUTION = "Instituto Português do Mar e Atmosfera" MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=30) CONDITION_CLASSES = { - "cloudy": [4, 5, 24, 25, 27], - "fog": [16, 17, 26], - "hail": [21, 22], - "lightning": [19], - "lightning-rainy": [20, 23], - "partlycloudy": [2, 3], - "pouring": [8, 11], - "rainy": [6, 7, 9, 10, 12, 13, 14, 15], - "snowy": [18], - "snowy-rainy": [], - "sunny": [1], - "windy": [], - "windy-variant": [], - "exceptional": [], + ATTR_CONDITION_CLOUDY: [4, 5, 24, 25, 27], + ATTR_CONDITION_FOG: [16, 17, 26], + ATTR_CONDITION_HAIL: [21, 22], + ATTR_CONDITION_LIGHTNING: [19], + ATTR_CONDITION_LIGHTNING_RAINY: [20, 23], + ATTR_CONDITION_PARTLYCLOUDY: [2, 3], + ATTR_CONDITION_POURING: [8, 11], + ATTR_CONDITION_RAINY: [6, 7, 9, 10, 12, 13, 14, 15], + ATTR_CONDITION_SNOWY: [18], + ATTR_CONDITION_SNOWY_RAINY: [], + ATTR_CONDITION_SUNNY: [1], + ATTR_CONDITION_WINDY: [], + ATTR_CONDITION_WINDY_VARIANT: [], + ATTR_CONDITION_EXCEPTIONAL: [], } FORECAST_MODE = ["hourly", "daily"] diff --git a/homeassistant/components/meteo_france/const.py b/homeassistant/components/meteo_france/const.py index 3ae24cbc71b..bfbaa828ea7 100644 --- a/homeassistant/components/meteo_france/const.py +++ b/homeassistant/components/meteo_france/const.py @@ -1,5 +1,22 @@ """Meteo-France component constants.""" +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 ( DEVICE_CLASS_PRESSURE, DEVICE_CLASS_TEMPERATURE, @@ -126,27 +143,31 @@ SENSOR_TYPES = { } CONDITION_CLASSES = { - "clear-night": ["Nuit Claire", "Nuit claire"], - "cloudy": ["Très nuageux", "Couvert"], - "fog": [ + ATTR_CONDITION_CLEAR_NIGHT: ["Nuit Claire", "Nuit claire"], + ATTR_CONDITION_CLOUDY: ["Très nuageux", "Couvert"], + ATTR_CONDITION_FOG: [ "Brume ou bancs de brouillard", "Brume", "Brouillard", "Brouillard givrant", "Bancs de Brouillard", ], - "hail": ["Risque de grêle", "Risque de grèle"], - "lightning": ["Risque d'orages", "Orages"], - "lightning-rainy": ["Pluie orageuses", "Pluies orageuses", "Averses orageuses"], - "partlycloudy": [ + ATTR_CONDITION_HAIL: ["Risque de grêle", "Risque de grèle"], + ATTR_CONDITION_LIGHTNING: ["Risque d'orages", "Orages"], + ATTR_CONDITION_LIGHTNING_RAINY: [ + "Pluie orageuses", + "Pluies orageuses", + "Averses orageuses", + ], + ATTR_CONDITION_PARTLYCLOUDY: [ "Ciel voilé", "Ciel voilé nuit", "Éclaircies", "Eclaircies", "Peu nuageux", ], - "pouring": ["Pluie forte"], - "rainy": [ + ATTR_CONDITION_POURING: ["Pluie forte"], + ATTR_CONDITION_RAINY: [ "Bruine / Pluie faible", "Bruine", "Pluie faible", @@ -158,16 +179,16 @@ CONDITION_CLASSES = { "Averses", "Pluie", ], - "snowy": [ + ATTR_CONDITION_SNOWY: [ "Neige / Averses de neige", "Neige", "Averses de neige", "Neige forte", "Quelques flocons", ], - "snowy-rainy": ["Pluie et neige", "Pluie verglaçante"], - "sunny": ["Ensoleillé"], - "windy": [], - "windy-variant": [], - "exceptional": [], + ATTR_CONDITION_SNOWY_RAINY: ["Pluie et neige", "Pluie verglaçante"], + ATTR_CONDITION_SUNNY: ["Ensoleillé"], + ATTR_CONDITION_WINDY: [], + ATTR_CONDITION_WINDY_VARIANT: [], + ATTR_CONDITION_EXCEPTIONAL: [], } diff --git a/homeassistant/components/metoffice/const.py b/homeassistant/components/metoffice/const.py index b088672b8a5..e710911ee59 100644 --- a/homeassistant/components/metoffice/const.py +++ b/homeassistant/components/metoffice/const.py @@ -1,6 +1,23 @@ """Constants for Met Office Integration.""" from datetime import timedelta +from homeassistant.components.weather import ( + 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, +) + DOMAIN = "metoffice" DEFAULT_NAME = "Met Office" @@ -16,20 +33,20 @@ METOFFICE_NAME = "metoffice_name" MODE_3HOURLY = "3hourly" CONDITION_CLASSES = { - "cloudy": ["7", "8"], - "fog": ["5", "6"], - "hail": ["19", "20", "21"], - "lightning": ["30"], - "lightning-rainy": ["28", "29"], - "partlycloudy": ["2", "3"], - "pouring": ["13", "14", "15"], - "rainy": ["9", "10", "11", "12"], - "snowy": ["22", "23", "24", "25", "26", "27"], - "snowy-rainy": ["16", "17", "18"], - "sunny": ["0", "1"], - "windy": [], - "windy-variant": [], - "exceptional": [], + ATTR_CONDITION_CLOUDY: ["7", "8"], + ATTR_CONDITION_FOG: ["5", "6"], + ATTR_CONDITION_HAIL: ["19", "20", "21"], + ATTR_CONDITION_LIGHTNING: ["30"], + ATTR_CONDITION_LIGHTNING_RAINY: ["28", "29"], + ATTR_CONDITION_PARTLYCLOUDY: ["2", "3"], + ATTR_CONDITION_POURING: ["13", "14", "15"], + ATTR_CONDITION_RAINY: ["9", "10", "11", "12"], + ATTR_CONDITION_SNOWY: ["22", "23", "24", "25", "26", "27"], + ATTR_CONDITION_SNOWY_RAINY: ["16", "17", "18"], + ATTR_CONDITION_SUNNY: ["0", "1"], + ATTR_CONDITION_WINDY: [], + ATTR_CONDITION_WINDY_VARIANT: [], + ATTR_CONDITION_EXCEPTIONAL: [], } VISIBILITY_CLASSES = { diff --git a/homeassistant/components/openweathermap/const.py b/homeassistant/components/openweathermap/const.py index 2c23c618c75..36f51a99ee1 100644 --- a/homeassistant/components/openweathermap/const.py +++ b/homeassistant/components/openweathermap/const.py @@ -1,5 +1,19 @@ """Consts for the OpenWeatherMap.""" from homeassistant.components.weather import ( + 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, ATTR_FORECAST_CONDITION, ATTR_FORECAST_PRECIPITATION, ATTR_FORECAST_TEMP, @@ -136,20 +150,33 @@ LANGUAGES = [ "zu", ] CONDITION_CLASSES = { - "cloudy": [803, 804], - "fog": [701, 741], - "hail": [906], - "lightning": [210, 211, 212, 221], - "lightning-rainy": [200, 201, 202, 230, 231, 232], - "partlycloudy": [801, 802], - "pouring": [504, 314, 502, 503, 522], - "rainy": [300, 301, 302, 310, 311, 312, 313, 500, 501, 520, 521], - "snowy": [600, 601, 602, 611, 612, 620, 621, 622], - "snowy-rainy": [511, 615, 616], - "sunny": [800], - "windy": [905, 951, 952, 953, 954, 955, 956, 957], - "windy-variant": [958, 959, 960, 961], - "exceptional": [711, 721, 731, 751, 761, 762, 771, 900, 901, 962, 903, 904], + ATTR_CONDITION_CLOUDY: [803, 804], + ATTR_CONDITION_FOG: [701, 741], + ATTR_CONDITION_HAIL: [906], + ATTR_CONDITION_LIGHTNING: [210, 211, 212, 221], + ATTR_CONDITION_LIGHTNING_RAINY: [200, 201, 202, 230, 231, 232], + ATTR_CONDITION_PARTLYCLOUDY: [801, 802], + ATTR_CONDITION_POURING: [504, 314, 502, 503, 522], + ATTR_CONDITION_RAINY: [300, 301, 302, 310, 311, 312, 313, 500, 501, 520, 521], + ATTR_CONDITION_SNOWY: [600, 601, 602, 611, 612, 620, 621, 622], + ATTR_CONDITION_SNOWY_RAINY: [511, 615, 616], + ATTR_CONDITION_SUNNY: [800], + ATTR_CONDITION_WINDY: [905, 951, 952, 953, 954, 955, 956, 957], + ATTR_CONDITION_WINDY_VARIANT: [958, 959, 960, 961], + ATTR_CONDITION_EXCEPTIONAL: [ + 711, + 721, + 731, + 751, + 761, + 762, + 771, + 900, + 901, + 962, + 903, + 904, + ], } WEATHER_SENSOR_TYPES = { ATTR_API_WEATHER: {SENSOR_NAME: "Weather"}, diff --git a/homeassistant/components/smhi/weather.py b/homeassistant/components/smhi/weather.py index f09491bf611..c13982ee15d 100644 --- a/homeassistant/components/smhi/weather.py +++ b/homeassistant/components/smhi/weather.py @@ -10,6 +10,20 @@ from smhi import Smhi from smhi.smhi_lib import SmhiForecastException from homeassistant.components.weather import ( + 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, ATTR_FORECAST_CONDITION, ATTR_FORECAST_PRECIPITATION, ATTR_FORECAST_TEMP, @@ -29,20 +43,20 @@ _LOGGER = logging.getLogger(__name__) # Used to map condition from API results CONDITION_CLASSES = { - "cloudy": [5, 6], - "fog": [7], - "hail": [], - "lightning": [21], - "lightning-rainy": [11], - "partlycloudy": [3, 4], - "pouring": [10, 20], - "rainy": [8, 9, 18, 19], - "snowy": [15, 16, 17, 25, 26, 27], - "snowy-rainy": [12, 13, 14, 22, 23, 24], - "sunny": [1, 2], - "windy": [], - "windy-variant": [], - "exceptional": [], + ATTR_CONDITION_CLOUDY: [5, 6], + ATTR_CONDITION_FOG: [7], + ATTR_CONDITION_HAIL: [], + ATTR_CONDITION_LIGHTNING: [21], + ATTR_CONDITION_LIGHTNING_RAINY: [11], + ATTR_CONDITION_PARTLYCLOUDY: [3, 4], + ATTR_CONDITION_POURING: [10, 20], + ATTR_CONDITION_RAINY: [8, 9, 18, 19], + ATTR_CONDITION_SNOWY: [15, 16, 17, 25, 26, 27], + ATTR_CONDITION_SNOWY_RAINY: [12, 13, 14, 22, 23, 24], + ATTR_CONDITION_SUNNY: [1, 2], + ATTR_CONDITION_WINDY: [], + ATTR_CONDITION_WINDY_VARIANT: [], + ATTR_CONDITION_EXCEPTIONAL: [], } # 5 minutes between retrying connect to API again