1 """Constants for the Tomorrow.io integration."""
3 from __future__
import annotations
7 from pytomorrowio.const
import DAILY, HOURLY, NOWCAST, WeatherCode
10 ATTR_CONDITION_CLEAR_NIGHT,
11 ATTR_CONDITION_CLOUDY,
14 ATTR_CONDITION_LIGHTNING_RAINY,
15 ATTR_CONDITION_PARTLYCLOUDY,
16 ATTR_CONDITION_POURING,
19 ATTR_CONDITION_SNOWY_RAINY,
24 LOGGER = logging.getLogger(__package__)
26 CONF_TIMESTEP =
"timestep"
27 FORECAST_TYPES = [DAILY, HOURLY, NOWCAST]
30 DEFAULT_FORECAST_TYPE = DAILY
32 INTEGRATION_NAME =
"Tomorrow.io"
33 DEFAULT_NAME = INTEGRATION_NAME
34 ATTRIBUTION =
"Powered by Tomorrow.io"
36 MAX_REQUESTS_PER_DAY = 100
38 CLEAR_CONDITIONS = {
"night": ATTR_CONDITION_CLEAR_NIGHT,
"day": ATTR_CONDITION_SUNNY}
47 ATTR_WIND_GUST =
"wind_gust"
48 ATTR_CLOUD_COVER =
"cloud_cover"
49 ATTR_PRECIPITATION_TYPE =
"precipitation_type"
53 WeatherCode.WIND: ATTR_CONDITION_WINDY,
54 WeatherCode.LIGHT_WIND: ATTR_CONDITION_WINDY,
55 WeatherCode.STRONG_WIND: ATTR_CONDITION_WINDY,
56 WeatherCode.FREEZING_RAIN: ATTR_CONDITION_SNOWY_RAINY,
57 WeatherCode.HEAVY_FREEZING_RAIN: ATTR_CONDITION_SNOWY_RAINY,
58 WeatherCode.LIGHT_FREEZING_RAIN: ATTR_CONDITION_SNOWY_RAINY,
59 WeatherCode.FREEZING_DRIZZLE: ATTR_CONDITION_SNOWY_RAINY,
60 WeatherCode.ICE_PELLETS: ATTR_CONDITION_HAIL,
61 WeatherCode.HEAVY_ICE_PELLETS: ATTR_CONDITION_HAIL,
62 WeatherCode.LIGHT_ICE_PELLETS: ATTR_CONDITION_HAIL,
63 WeatherCode.SNOW: ATTR_CONDITION_SNOWY,
64 WeatherCode.HEAVY_SNOW: ATTR_CONDITION_SNOWY,
65 WeatherCode.LIGHT_SNOW: ATTR_CONDITION_SNOWY,
66 WeatherCode.FLURRIES: ATTR_CONDITION_SNOWY,
67 WeatherCode.THUNDERSTORM: ATTR_CONDITION_LIGHTNING_RAINY,
68 WeatherCode.HEAVY_RAIN: ATTR_CONDITION_POURING,
69 WeatherCode.RAIN: ATTR_CONDITION_RAINY,
70 WeatherCode.LIGHT_RAIN: ATTR_CONDITION_RAINY,
71 WeatherCode.DRIZZLE: ATTR_CONDITION_RAINY,
72 WeatherCode.FOG: ATTR_CONDITION_FOG,
73 WeatherCode.LIGHT_FOG: ATTR_CONDITION_FOG,
74 WeatherCode.CLOUDY: ATTR_CONDITION_CLOUDY,
75 WeatherCode.MOSTLY_CLOUDY: ATTR_CONDITION_CLOUDY,
76 WeatherCode.PARTLY_CLOUDY: ATTR_CONDITION_PARTLYCLOUDY,
80 TMRW_ATTR_TIMESTAMP =
"startTime"
81 TMRW_ATTR_TEMPERATURE =
"temperature"
82 TMRW_ATTR_TEMPERATURE_HIGH =
"temperatureMax"
83 TMRW_ATTR_TEMPERATURE_LOW =
"temperatureMin"
84 TMRW_ATTR_PRESSURE =
"pressureSeaLevel"
85 TMRW_ATTR_HUMIDITY =
"humidity"
86 TMRW_ATTR_WIND_SPEED =
"windSpeed"
87 TMRW_ATTR_WIND_DIRECTION =
"windDirection"
88 TMRW_ATTR_OZONE =
"pollutantO3"
89 TMRW_ATTR_CONDITION =
"weatherCode"
90 TMRW_ATTR_VISIBILITY =
"visibility"
91 TMRW_ATTR_PRECIPITATION =
"precipitationIntensityAvg"
92 TMRW_ATTR_PRECIPITATION_PROBABILITY =
"precipitationProbability"
93 TMRW_ATTR_WIND_GUST =
"windGust"
94 TMRW_ATTR_CLOUD_COVER =
"cloudCover"
95 TMRW_ATTR_PRECIPITATION_TYPE =
"precipitationType"
98 TMRW_ATTR_PARTICULATE_MATTER_25 =
"particulateMatter25"
99 TMRW_ATTR_PARTICULATE_MATTER_10 =
"particulateMatter10"
100 TMRW_ATTR_NITROGEN_DIOXIDE =
"pollutantNO2"
101 TMRW_ATTR_CARBON_MONOXIDE =
"pollutantCO"
102 TMRW_ATTR_SULPHUR_DIOXIDE =
"pollutantSO2"
103 TMRW_ATTR_EPA_AQI =
"epaIndex"
104 TMRW_ATTR_EPA_PRIMARY_POLLUTANT =
"epaPrimaryPollutant"
105 TMRW_ATTR_EPA_HEALTH_CONCERN =
"epaHealthConcern"
106 TMRW_ATTR_CHINA_AQI =
"mepIndex"
107 TMRW_ATTR_CHINA_PRIMARY_POLLUTANT =
"mepPrimaryPollutant"
108 TMRW_ATTR_CHINA_HEALTH_CONCERN =
"mepHealthConcern"
109 TMRW_ATTR_POLLEN_TREE =
"treeIndex"
110 TMRW_ATTR_POLLEN_WEED =
"weedIndex"
111 TMRW_ATTR_POLLEN_GRASS =
"grassIndex"
112 TMRW_ATTR_FIRE_INDEX =
"fireIndex"
113 TMRW_ATTR_FEELS_LIKE =
"temperatureApparent"
114 TMRW_ATTR_DEW_POINT =
"dewPoint"
115 TMRW_ATTR_PRESSURE_SURFACE_LEVEL =
"pressureSurfaceLevel"
116 TMRW_ATTR_SOLAR_GHI =
"solarGHI"
117 TMRW_ATTR_CLOUD_BASE =
"cloudBase"
118 TMRW_ATTR_CLOUD_CEILING =
"cloudCeiling"
119 TMRW_ATTR_UV_INDEX =
"uvIndex"
120 TMRW_ATTR_UV_HEALTH_CONCERN =
"uvHealthConcern"