Use weather attribute conditions constants (#39945)

This commit is contained in:
springstan 2020-11-20 21:04:03 +01:00 committed by GitHub
parent 700336258b
commit dd4f41c1db
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 372 additions and 186 deletions

View File

@ -1,4 +1,20 @@
"""Constants for AccuWeather integration.""" """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 ( from homeassistant.const import (
ATTR_DEVICE_CLASS, ATTR_DEVICE_CLASS,
CONCENTRATION_PARTS_PER_CUBIC_METER, CONCENTRATION_PARTS_PER_CUBIC_METER,
@ -29,20 +45,20 @@ NAME = "AccuWeather"
UNDO_UPDATE_LISTENER = "undo_update_listener" UNDO_UPDATE_LISTENER = "undo_update_listener"
CONDITION_CLASSES = { CONDITION_CLASSES = {
"clear-night": [33, 34, 37], ATTR_CONDITION_CLEAR_NIGHT: [33, 34, 37],
"cloudy": [7, 8, 38], ATTR_CONDITION_CLOUDY: [7, 8, 38],
"exceptional": [24, 30, 31], ATTR_CONDITION_EXCEPTIONAL: [24, 30, 31],
"fog": [11], ATTR_CONDITION_FOG: [11],
"hail": [25], ATTR_CONDITION_HAIL: [25],
"lightning": [15], ATTR_CONDITION_LIGHTNING: [15],
"lightning-rainy": [16, 17, 41, 42], ATTR_CONDITION_LIGHTNING_RAINY: [16, 17, 41, 42],
"partlycloudy": [4, 6, 35, 36], ATTR_CONDITION_PARTLYCLOUDY: [4, 6, 35, 36],
"pouring": [18], ATTR_CONDITION_POURING: [18],
"rainy": [12, 13, 14, 26, 39, 40], ATTR_CONDITION_RAINY: [12, 13, 14, 26, 39, 40],
"snowy": [19, 20, 21, 22, 23, 43, 44], ATTR_CONDITION_SNOWY: [19, 20, 21, 22, 23, 43, 44],
"snowy-rainy": [29], ATTR_CONDITION_SNOWY_RAINY: [29],
"sunny": [1, 2, 3, 5], ATTR_CONDITION_SUNNY: [1, 2, 3, 5],
"windy": [32], ATTR_CONDITION_WINDY: [32],
} }
FORECAST_DAYS = [0, 1, 2, 3, 4] FORECAST_DAYS = [0, 1, 2, 3, 4]

View File

@ -14,6 +14,20 @@ from buienradar.constants import (
import voluptuous as vol import voluptuous as vol
from homeassistant.components.weather import ( 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_CONDITION,
ATTR_FORECAST_PRECIPITATION, ATTR_FORECAST_PRECIPITATION,
ATTR_FORECAST_TEMP, ATTR_FORECAST_TEMP,
@ -40,20 +54,20 @@ CONF_FORECAST = "forecast"
CONDITION_CLASSES = { CONDITION_CLASSES = {
"cloudy": ["c", "p"], ATTR_CONDITION_CLOUDY: ["c", "p"],
"fog": ["d", "n"], ATTR_CONDITION_FOG: ["d", "n"],
"hail": [], ATTR_CONDITION_HAIL: [],
"lightning": ["g"], ATTR_CONDITION_LIGHTNING: ["g"],
"lightning-rainy": ["s"], ATTR_CONDITION_LIGHTNING_RAINY: ["s"],
"partlycloudy": ["b", "j", "o", "r"], ATTR_CONDITION_PARTLYCLOUDY: ["b", "j", "o", "r"],
"pouring": ["l", "q"], ATTR_CONDITION_POURING: ["l", "q"],
"rainy": ["f", "h", "k", "m"], ATTR_CONDITION_RAINY: ["f", "h", "k", "m"],
"snowy": ["u", "i", "v", "t"], ATTR_CONDITION_SNOWY: ["u", "i", "v", "t"],
"snowy-rainy": ["w"], ATTR_CONDITION_SNOWY_RAINY: ["w"],
"sunny": ["a"], ATTR_CONDITION_SUNNY: ["a"],
"windy": [], ATTR_CONDITION_WINDY: [],
"windy-variant": [], ATTR_CONDITION_WINDY_VARIANT: [],
"exceptional": [], ATTR_CONDITION_EXCEPTIONAL: [],
} }
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(

View File

@ -7,6 +7,17 @@ from requests.exceptions import ConnectionError as ConnectError, HTTPError, Time
import voluptuous as vol import voluptuous as vol
from homeassistant.components.weather import ( 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_CONDITION,
ATTR_FORECAST_PRECIPITATION, ATTR_FORECAST_PRECIPITATION,
ATTR_FORECAST_TEMP, ATTR_FORECAST_TEMP,
@ -40,18 +51,18 @@ ATTRIBUTION = "Powered by Dark Sky"
FORECAST_MODE = ["hourly", "daily"] FORECAST_MODE = ["hourly", "daily"]
MAP_CONDITION = { MAP_CONDITION = {
"clear-day": "sunny", "clear-day": ATTR_CONDITION_SUNNY,
"clear-night": "clear-night", "clear-night": ATTR_CONDITION_CLEAR_NIGHT,
"rain": "rainy", "rain": ATTR_CONDITION_RAINY,
"snow": "snowy", "snow": ATTR_CONDITION_SNOWY,
"sleet": "snowy-rainy", "sleet": ATTR_CONDITION_SNOWY_RAINY,
"wind": "windy", "wind": ATTR_CONDITION_WINDY,
"fog": "fog", "fog": ATTR_CONDITION_FOG,
"cloudy": "cloudy", "cloudy": ATTR_CONDITION_CLOUDY,
"partly-cloudy-day": "partlycloudy", "partly-cloudy-day": ATTR_CONDITION_PARTLYCLOUDY,
"partly-cloudy-night": "partlycloudy", "partly-cloudy-night": ATTR_CONDITION_PARTLYCLOUDY,
"hail": "hail", "hail": ATTR_CONDITION_HAIL,
"thunderstorm": "lightning", "thunderstorm": ATTR_CONDITION_LIGHTNING,
"tornado": None, "tornado": None,
} }

View File

@ -2,6 +2,20 @@
from datetime import timedelta from datetime import timedelta
from homeassistant.components.weather import ( 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_CONDITION,
ATTR_FORECAST_PRECIPITATION, ATTR_FORECAST_PRECIPITATION,
ATTR_FORECAST_PRECIPITATION_PROBABILITY, ATTR_FORECAST_PRECIPITATION_PROBABILITY,
@ -14,20 +28,20 @@ from homeassistant.const import TEMP_CELSIUS, TEMP_FAHRENHEIT
import homeassistant.util.dt as dt_util import homeassistant.util.dt as dt_util
CONDITION_CLASSES = { CONDITION_CLASSES = {
"cloudy": [], ATTR_CONDITION_CLOUDY: [],
"fog": [], ATTR_CONDITION_FOG: [],
"hail": [], ATTR_CONDITION_HAIL: [],
"lightning": [], ATTR_CONDITION_LIGHTNING: [],
"lightning-rainy": [], ATTR_CONDITION_LIGHTNING_RAINY: [],
"partlycloudy": [], ATTR_CONDITION_PARTLYCLOUDY: [],
"pouring": [], ATTR_CONDITION_POURING: [],
"rainy": ["shower rain"], ATTR_CONDITION_RAINY: ["shower rain"],
"snowy": [], ATTR_CONDITION_SNOWY: [],
"snowy-rainy": [], ATTR_CONDITION_SNOWY_RAINY: [],
"sunny": ["sunshine"], ATTR_CONDITION_SUNNY: ["sunshine"],
"windy": [], ATTR_CONDITION_WINDY: [],
"windy-variant": [], ATTR_CONDITION_WINDY_VARIANT: [],
"exceptional": [], ATTR_CONDITION_EXCEPTIONAL: [],
} }
@ -49,13 +63,13 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
0.5, 0.5,
TEMP_CELSIUS, TEMP_CELSIUS,
[ [
["rainy", 1, 22, 15, 60], [ATTR_CONDITION_RAINY, 1, 22, 15, 60],
["rainy", 5, 19, 8, 30], [ATTR_CONDITION_RAINY, 5, 19, 8, 30],
["cloudy", 0, 15, 9, 10], [ATTR_CONDITION_CLOUDY, 0, 15, 9, 10],
["sunny", 0, 12, 6, 0], [ATTR_CONDITION_SUNNY, 0, 12, 6, 0],
["partlycloudy", 2, 14, 7, 20], [ATTR_CONDITION_PARTLYCLOUDY, 2, 14, 7, 20],
["rainy", 15, 18, 7, 0], [ATTR_CONDITION_RAINY, 15, 18, 7, 0],
["fog", 0.2, 21, 12, 100], [ATTR_CONDITION_FOG, 0.2, 21, 12, 100],
], ],
), ),
DemoWeather( DemoWeather(
@ -67,13 +81,13 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
4.8, 4.8,
TEMP_FAHRENHEIT, TEMP_FAHRENHEIT,
[ [
["snowy", 2, -10, -15, 60], [ATTR_CONDITION_SNOWY, 2, -10, -15, 60],
["partlycloudy", 1, -13, -14, 25], [ATTR_CONDITION_PARTLYCLOUDY, 1, -13, -14, 25],
["sunny", 0, -18, -22, 70], [ATTR_CONDITION_SUNNY, 0, -18, -22, 70],
["sunny", 0.1, -23, -23, 90], [ATTR_CONDITION_SUNNY, 0.1, -23, -23, 90],
["snowy", 4, -19, -20, 40], [ATTR_CONDITION_SNOWY, 4, -19, -20, 40],
["sunny", 0.3, -14, -19, 0], [ATTR_CONDITION_SUNNY, 0.3, -14, -19, 0],
["sunny", 0, -9, -12, 0], [ATTR_CONDITION_SUNNY, 0, -9, -12, 0],
], ],
), ),
] ]

View File

@ -1,6 +1,20 @@
"""Constants for the ecobee integration.""" """Constants for the ecobee integration."""
import logging 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__) _LOGGER = logging.getLogger(__package__)
DOMAIN = "ecobee" DOMAIN = "ecobee"
@ -30,25 +44,25 @@ MANUFACTURER = "ecobee"
# Translates ecobee API weatherSymbol to Home Assistant usable names # Translates ecobee API weatherSymbol to Home Assistant usable names
# https://www.ecobee.com/home/developer/api/documentation/v1/objects/WeatherForecast.shtml # https://www.ecobee.com/home/developer/api/documentation/v1/objects/WeatherForecast.shtml
ECOBEE_WEATHER_SYMBOL_TO_HASS = { ECOBEE_WEATHER_SYMBOL_TO_HASS = {
0: "sunny", 0: ATTR_CONDITION_SUNNY,
1: "partlycloudy", 1: ATTR_CONDITION_PARTLYCLOUDY,
2: "partlycloudy", 2: ATTR_CONDITION_PARTLYCLOUDY,
3: "cloudy", 3: ATTR_CONDITION_CLOUDY,
4: "cloudy", 4: ATTR_CONDITION_CLOUDY,
5: "cloudy", 5: ATTR_CONDITION_CLOUDY,
6: "rainy", 6: ATTR_CONDITION_RAINY,
7: "snowy-rainy", 7: ATTR_CONDITION_SNOWY_RAINY,
8: "pouring", 8: ATTR_CONDITION_POURING,
9: "hail", 9: ATTR_CONDITION_HAIL,
10: "snowy", 10: ATTR_CONDITION_SNOWY,
11: "snowy", 11: ATTR_CONDITION_SNOWY,
12: "snowy-rainy", 12: ATTR_CONDITION_SNOWY_RAINY,
13: "snowy-heavy", 13: "snowy-heavy",
14: "hail", 14: ATTR_CONDITION_HAIL,
15: "lightning-rainy", 15: ATTR_CONDITION_LIGHTNING_RAINY,
16: "windy", 16: ATTR_CONDITION_WINDY,
17: "tornado", 17: "tornado",
18: "fog", 18: ATTR_CONDITION_FOG,
19: "hazy", 19: "hazy",
20: "hazy", 20: "hazy",
21: "hazy", 21: "hazy",

View File

@ -6,6 +6,18 @@ from env_canada import ECData # pylint: disable=import-error
import voluptuous as vol import voluptuous as vol
from homeassistant.components.weather import ( 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_CONDITION,
ATTR_FORECAST_PRECIPITATION_PROBABILITY, ATTR_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_FORECAST_TEMP, ATTR_FORECAST_TEMP,
@ -45,18 +57,18 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
# Icon codes from http://dd.weatheroffice.ec.gc.ca/citypage_weather/ # Icon codes from http://dd.weatheroffice.ec.gc.ca/citypage_weather/
# docs/current_conditions_icon_code_descriptions_e.csv # docs/current_conditions_icon_code_descriptions_e.csv
ICON_CONDITION_MAP = { ICON_CONDITION_MAP = {
"sunny": [0, 1], ATTR_CONDITION_SUNNY: [0, 1],
"clear-night": [30, 31], ATTR_CONDITION_CLEAR_NIGHT: [30, 31],
"partlycloudy": [2, 3, 4, 5, 22, 32, 33, 34, 35], ATTR_CONDITION_PARTLYCLOUDY: [2, 3, 4, 5, 22, 32, 33, 34, 35],
"cloudy": [10], ATTR_CONDITION_CLOUDY: [10],
"rainy": [6, 9, 11, 12, 28, 36], ATTR_CONDITION_RAINY: [6, 9, 11, 12, 28, 36],
"lightning-rainy": [19, 39, 46, 47], ATTR_CONDITION_LIGHTNING_RAINY: [19, 39, 46, 47],
"pouring": [13], ATTR_CONDITION_POURING: [13],
"snowy-rainy": [7, 14, 15, 27, 37], ATTR_CONDITION_SNOWY_RAINY: [7, 14, 15, 27, 37],
"snowy": [8, 16, 17, 18, 25, 26, 38, 40], ATTR_CONDITION_SNOWY: [8, 16, 17, 18, 25, 26, 38, 40],
"windy": [43], ATTR_CONDITION_WINDY: [43],
"fog": [20, 21, 23, 24, 44], ATTR_CONDITION_FOG: [20, 21, 23, 24, 44],
"hail": [26, 27], ATTR_CONDITION_HAIL: [26, 27],
} }

View File

@ -6,7 +6,19 @@ from homematicip.aio.device import (
) )
from homematicip.base.enums import WeatherCondition 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.config_entries import ConfigEntry
from homeassistant.const import TEMP_CELSIUS from homeassistant.const import TEMP_CELSIUS
from homeassistant.helpers.typing import HomeAssistantType from homeassistant.helpers.typing import HomeAssistantType
@ -15,20 +27,20 @@ from . import DOMAIN as HMIPC_DOMAIN, HomematicipGenericEntity
from .hap import HomematicipHAP from .hap import HomematicipHAP
HOME_WEATHER_CONDITION = { HOME_WEATHER_CONDITION = {
WeatherCondition.CLEAR: "sunny", WeatherCondition.CLEAR: ATTR_CONDITION_SUNNY,
WeatherCondition.LIGHT_CLOUDY: "partlycloudy", WeatherCondition.LIGHT_CLOUDY: ATTR_CONDITION_PARTLYCLOUDY,
WeatherCondition.CLOUDY: "cloudy", WeatherCondition.CLOUDY: ATTR_CONDITION_CLOUDY,
WeatherCondition.CLOUDY_WITH_RAIN: "rainy", WeatherCondition.CLOUDY_WITH_RAIN: ATTR_CONDITION_RAINY,
WeatherCondition.CLOUDY_WITH_SNOW_RAIN: "snowy-rainy", WeatherCondition.CLOUDY_WITH_SNOW_RAIN: ATTR_CONDITION_SNOWY_RAINY,
WeatherCondition.HEAVILY_CLOUDY: "cloudy", WeatherCondition.HEAVILY_CLOUDY: ATTR_CONDITION_CLOUDY,
WeatherCondition.HEAVILY_CLOUDY_WITH_RAIN: "rainy", WeatherCondition.HEAVILY_CLOUDY_WITH_RAIN: ATTR_CONDITION_RAINY,
WeatherCondition.HEAVILY_CLOUDY_WITH_STRONG_RAIN: "snowy-rainy", WeatherCondition.HEAVILY_CLOUDY_WITH_STRONG_RAIN: ATTR_CONDITION_SNOWY_RAINY,
WeatherCondition.HEAVILY_CLOUDY_WITH_SNOW: "snowy", WeatherCondition.HEAVILY_CLOUDY_WITH_SNOW: ATTR_CONDITION_SNOWY,
WeatherCondition.HEAVILY_CLOUDY_WITH_SNOW_RAIN: "snowy-rainy", WeatherCondition.HEAVILY_CLOUDY_WITH_SNOW_RAIN: ATTR_CONDITION_SNOWY_RAINY,
WeatherCondition.HEAVILY_CLOUDY_WITH_THUNDER: "lightning", WeatherCondition.HEAVILY_CLOUDY_WITH_THUNDER: ATTR_CONDITION_LIGHTNING,
WeatherCondition.HEAVILY_CLOUDY_WITH_RAIN_AND_THUNDER: "lightning-rainy", WeatherCondition.HEAVILY_CLOUDY_WITH_RAIN_AND_THUNDER: ATTR_CONDITION_LIGHTNING_RAINY,
WeatherCondition.FOGGY: "fog", WeatherCondition.FOGGY: ATTR_CONDITION_FOG,
WeatherCondition.STRONG_WIND: "windy", WeatherCondition.STRONG_WIND: ATTR_CONDITION_WINDY,
WeatherCondition.UNKNOWN: "", WeatherCondition.UNKNOWN: "",
} }
@ -92,11 +104,11 @@ class HomematicipWeatherSensor(HomematicipGenericEntity, WeatherEntity):
def condition(self) -> str: def condition(self) -> str:
"""Return the current condition.""" """Return the current condition."""
if getattr(self._device, "raining", None): if getattr(self._device, "raining", None):
return "rainy" return ATTR_CONDITION_RAINY
if self._device.storm: if self._device.storm:
return "windy" return ATTR_CONDITION_WINDY
if self._device.sunshine: if self._device.sunshine:
return "sunny" return ATTR_CONDITION_SUNNY
return "" return ""

View File

@ -8,6 +8,20 @@ from pyipma.location import Location
import voluptuous as vol import voluptuous as vol
from homeassistant.components.weather import ( 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_CONDITION,
ATTR_FORECAST_PRECIPITATION_PROBABILITY, ATTR_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_FORECAST_TEMP, ATTR_FORECAST_TEMP,
@ -38,20 +52,20 @@ ATTRIBUTION = "Instituto Português do Mar e Atmosfera"
MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=30) MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=30)
CONDITION_CLASSES = { CONDITION_CLASSES = {
"cloudy": [4, 5, 24, 25, 27], ATTR_CONDITION_CLOUDY: [4, 5, 24, 25, 27],
"fog": [16, 17, 26], ATTR_CONDITION_FOG: [16, 17, 26],
"hail": [21, 22], ATTR_CONDITION_HAIL: [21, 22],
"lightning": [19], ATTR_CONDITION_LIGHTNING: [19],
"lightning-rainy": [20, 23], ATTR_CONDITION_LIGHTNING_RAINY: [20, 23],
"partlycloudy": [2, 3], ATTR_CONDITION_PARTLYCLOUDY: [2, 3],
"pouring": [8, 11], ATTR_CONDITION_POURING: [8, 11],
"rainy": [6, 7, 9, 10, 12, 13, 14, 15], ATTR_CONDITION_RAINY: [6, 7, 9, 10, 12, 13, 14, 15],
"snowy": [18], ATTR_CONDITION_SNOWY: [18],
"snowy-rainy": [], ATTR_CONDITION_SNOWY_RAINY: [],
"sunny": [1], ATTR_CONDITION_SUNNY: [1],
"windy": [], ATTR_CONDITION_WINDY: [],
"windy-variant": [], ATTR_CONDITION_WINDY_VARIANT: [],
"exceptional": [], ATTR_CONDITION_EXCEPTIONAL: [],
} }
FORECAST_MODE = ["hourly", "daily"] FORECAST_MODE = ["hourly", "daily"]

View File

@ -1,5 +1,22 @@
"""Meteo-France component constants.""" """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 ( from homeassistant.const import (
DEVICE_CLASS_PRESSURE, DEVICE_CLASS_PRESSURE,
DEVICE_CLASS_TEMPERATURE, DEVICE_CLASS_TEMPERATURE,
@ -126,27 +143,31 @@ SENSOR_TYPES = {
} }
CONDITION_CLASSES = { CONDITION_CLASSES = {
"clear-night": ["Nuit Claire", "Nuit claire"], ATTR_CONDITION_CLEAR_NIGHT: ["Nuit Claire", "Nuit claire"],
"cloudy": ["Très nuageux", "Couvert"], ATTR_CONDITION_CLOUDY: ["Très nuageux", "Couvert"],
"fog": [ ATTR_CONDITION_FOG: [
"Brume ou bancs de brouillard", "Brume ou bancs de brouillard",
"Brume", "Brume",
"Brouillard", "Brouillard",
"Brouillard givrant", "Brouillard givrant",
"Bancs de Brouillard", "Bancs de Brouillard",
], ],
"hail": ["Risque de grêle", "Risque de grèle"], ATTR_CONDITION_HAIL: ["Risque de grêle", "Risque de grèle"],
"lightning": ["Risque d'orages", "Orages"], ATTR_CONDITION_LIGHTNING: ["Risque d'orages", "Orages"],
"lightning-rainy": ["Pluie orageuses", "Pluies orageuses", "Averses orageuses"], ATTR_CONDITION_LIGHTNING_RAINY: [
"partlycloudy": [ "Pluie orageuses",
"Pluies orageuses",
"Averses orageuses",
],
ATTR_CONDITION_PARTLYCLOUDY: [
"Ciel voilé", "Ciel voilé",
"Ciel voilé nuit", "Ciel voilé nuit",
"Éclaircies", "Éclaircies",
"Eclaircies", "Eclaircies",
"Peu nuageux", "Peu nuageux",
], ],
"pouring": ["Pluie forte"], ATTR_CONDITION_POURING: ["Pluie forte"],
"rainy": [ ATTR_CONDITION_RAINY: [
"Bruine / Pluie faible", "Bruine / Pluie faible",
"Bruine", "Bruine",
"Pluie faible", "Pluie faible",
@ -158,16 +179,16 @@ CONDITION_CLASSES = {
"Averses", "Averses",
"Pluie", "Pluie",
], ],
"snowy": [ ATTR_CONDITION_SNOWY: [
"Neige / Averses de neige", "Neige / Averses de neige",
"Neige", "Neige",
"Averses de neige", "Averses de neige",
"Neige forte", "Neige forte",
"Quelques flocons", "Quelques flocons",
], ],
"snowy-rainy": ["Pluie et neige", "Pluie verglaçante"], ATTR_CONDITION_SNOWY_RAINY: ["Pluie et neige", "Pluie verglaçante"],
"sunny": ["Ensoleillé"], ATTR_CONDITION_SUNNY: ["Ensoleillé"],
"windy": [], ATTR_CONDITION_WINDY: [],
"windy-variant": [], ATTR_CONDITION_WINDY_VARIANT: [],
"exceptional": [], ATTR_CONDITION_EXCEPTIONAL: [],
} }

View File

@ -1,6 +1,23 @@
"""Constants for Met Office Integration.""" """Constants for Met Office Integration."""
from datetime import timedelta 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" DOMAIN = "metoffice"
DEFAULT_NAME = "Met Office" DEFAULT_NAME = "Met Office"
@ -16,20 +33,20 @@ METOFFICE_NAME = "metoffice_name"
MODE_3HOURLY = "3hourly" MODE_3HOURLY = "3hourly"
CONDITION_CLASSES = { CONDITION_CLASSES = {
"cloudy": ["7", "8"], ATTR_CONDITION_CLOUDY: ["7", "8"],
"fog": ["5", "6"], ATTR_CONDITION_FOG: ["5", "6"],
"hail": ["19", "20", "21"], ATTR_CONDITION_HAIL: ["19", "20", "21"],
"lightning": ["30"], ATTR_CONDITION_LIGHTNING: ["30"],
"lightning-rainy": ["28", "29"], ATTR_CONDITION_LIGHTNING_RAINY: ["28", "29"],
"partlycloudy": ["2", "3"], ATTR_CONDITION_PARTLYCLOUDY: ["2", "3"],
"pouring": ["13", "14", "15"], ATTR_CONDITION_POURING: ["13", "14", "15"],
"rainy": ["9", "10", "11", "12"], ATTR_CONDITION_RAINY: ["9", "10", "11", "12"],
"snowy": ["22", "23", "24", "25", "26", "27"], ATTR_CONDITION_SNOWY: ["22", "23", "24", "25", "26", "27"],
"snowy-rainy": ["16", "17", "18"], ATTR_CONDITION_SNOWY_RAINY: ["16", "17", "18"],
"sunny": ["0", "1"], ATTR_CONDITION_SUNNY: ["0", "1"],
"windy": [], ATTR_CONDITION_WINDY: [],
"windy-variant": [], ATTR_CONDITION_WINDY_VARIANT: [],
"exceptional": [], ATTR_CONDITION_EXCEPTIONAL: [],
} }
VISIBILITY_CLASSES = { VISIBILITY_CLASSES = {

View File

@ -1,5 +1,19 @@
"""Consts for the OpenWeatherMap.""" """Consts for the OpenWeatherMap."""
from homeassistant.components.weather import ( 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_CONDITION,
ATTR_FORECAST_PRECIPITATION, ATTR_FORECAST_PRECIPITATION,
ATTR_FORECAST_TEMP, ATTR_FORECAST_TEMP,
@ -136,20 +150,33 @@ LANGUAGES = [
"zu", "zu",
] ]
CONDITION_CLASSES = { CONDITION_CLASSES = {
"cloudy": [803, 804], ATTR_CONDITION_CLOUDY: [803, 804],
"fog": [701, 741], ATTR_CONDITION_FOG: [701, 741],
"hail": [906], ATTR_CONDITION_HAIL: [906],
"lightning": [210, 211, 212, 221], ATTR_CONDITION_LIGHTNING: [210, 211, 212, 221],
"lightning-rainy": [200, 201, 202, 230, 231, 232], ATTR_CONDITION_LIGHTNING_RAINY: [200, 201, 202, 230, 231, 232],
"partlycloudy": [801, 802], ATTR_CONDITION_PARTLYCLOUDY: [801, 802],
"pouring": [504, 314, 502, 503, 522], ATTR_CONDITION_POURING: [504, 314, 502, 503, 522],
"rainy": [300, 301, 302, 310, 311, 312, 313, 500, 501, 520, 521], ATTR_CONDITION_RAINY: [300, 301, 302, 310, 311, 312, 313, 500, 501, 520, 521],
"snowy": [600, 601, 602, 611, 612, 620, 621, 622], ATTR_CONDITION_SNOWY: [600, 601, 602, 611, 612, 620, 621, 622],
"snowy-rainy": [511, 615, 616], ATTR_CONDITION_SNOWY_RAINY: [511, 615, 616],
"sunny": [800], ATTR_CONDITION_SUNNY: [800],
"windy": [905, 951, 952, 953, 954, 955, 956, 957], ATTR_CONDITION_WINDY: [905, 951, 952, 953, 954, 955, 956, 957],
"windy-variant": [958, 959, 960, 961], ATTR_CONDITION_WINDY_VARIANT: [958, 959, 960, 961],
"exceptional": [711, 721, 731, 751, 761, 762, 771, 900, 901, 962, 903, 904], ATTR_CONDITION_EXCEPTIONAL: [
711,
721,
731,
751,
761,
762,
771,
900,
901,
962,
903,
904,
],
} }
WEATHER_SENSOR_TYPES = { WEATHER_SENSOR_TYPES = {
ATTR_API_WEATHER: {SENSOR_NAME: "Weather"}, ATTR_API_WEATHER: {SENSOR_NAME: "Weather"},

View File

@ -10,6 +10,20 @@ from smhi import Smhi
from smhi.smhi_lib import SmhiForecastException from smhi.smhi_lib import SmhiForecastException
from homeassistant.components.weather import ( 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_CONDITION,
ATTR_FORECAST_PRECIPITATION, ATTR_FORECAST_PRECIPITATION,
ATTR_FORECAST_TEMP, ATTR_FORECAST_TEMP,
@ -29,20 +43,20 @@ _LOGGER = logging.getLogger(__name__)
# Used to map condition from API results # Used to map condition from API results
CONDITION_CLASSES = { CONDITION_CLASSES = {
"cloudy": [5, 6], ATTR_CONDITION_CLOUDY: [5, 6],
"fog": [7], ATTR_CONDITION_FOG: [7],
"hail": [], ATTR_CONDITION_HAIL: [],
"lightning": [21], ATTR_CONDITION_LIGHTNING: [21],
"lightning-rainy": [11], ATTR_CONDITION_LIGHTNING_RAINY: [11],
"partlycloudy": [3, 4], ATTR_CONDITION_PARTLYCLOUDY: [3, 4],
"pouring": [10, 20], ATTR_CONDITION_POURING: [10, 20],
"rainy": [8, 9, 18, 19], ATTR_CONDITION_RAINY: [8, 9, 18, 19],
"snowy": [15, 16, 17, 25, 26, 27], ATTR_CONDITION_SNOWY: [15, 16, 17, 25, 26, 27],
"snowy-rainy": [12, 13, 14, 22, 23, 24], ATTR_CONDITION_SNOWY_RAINY: [12, 13, 14, 22, 23, 24],
"sunny": [1, 2], ATTR_CONDITION_SUNNY: [1, 2],
"windy": [], ATTR_CONDITION_WINDY: [],
"windy-variant": [], ATTR_CONDITION_WINDY_VARIANT: [],
"exceptional": [], ATTR_CONDITION_EXCEPTIONAL: [],
} }
# 5 minutes between retrying connect to API again # 5 minutes between retrying connect to API again