Home Assistant Unofficial Reference 2024.12.1
const.py
Go to the documentation of this file.
1 """Constants for the Tomorrow.io integration."""
2 
3 from __future__ import annotations
4 
5 import logging
6 
7 from pytomorrowio.const import DAILY, HOURLY, NOWCAST, WeatherCode
8 
10  ATTR_CONDITION_CLEAR_NIGHT,
11  ATTR_CONDITION_CLOUDY,
12  ATTR_CONDITION_FOG,
13  ATTR_CONDITION_HAIL,
14  ATTR_CONDITION_LIGHTNING_RAINY,
15  ATTR_CONDITION_PARTLYCLOUDY,
16  ATTR_CONDITION_POURING,
17  ATTR_CONDITION_RAINY,
18  ATTR_CONDITION_SNOWY,
19  ATTR_CONDITION_SNOWY_RAINY,
20  ATTR_CONDITION_SUNNY,
21  ATTR_CONDITION_WINDY,
22 )
23 
24 LOGGER = logging.getLogger(__package__)
25 
26 CONF_TIMESTEP = "timestep"
27 FORECAST_TYPES = [DAILY, HOURLY, NOWCAST]
28 
29 DEFAULT_TIMESTEP = 60
30 DEFAULT_FORECAST_TYPE = DAILY
31 DOMAIN = "tomorrowio"
32 INTEGRATION_NAME = "Tomorrow.io"
33 DEFAULT_NAME = INTEGRATION_NAME
34 ATTRIBUTION = "Powered by Tomorrow.io"
35 
36 MAX_REQUESTS_PER_DAY = 100
37 
38 CLEAR_CONDITIONS = {"night": ATTR_CONDITION_CLEAR_NIGHT, "day": ATTR_CONDITION_SUNNY}
39 
40 MAX_FORECASTS = {
41  DAILY: 14,
42  HOURLY: 24,
43  NOWCAST: 30,
44 }
45 
46 # Additional attributes
47 ATTR_WIND_GUST = "wind_gust"
48 ATTR_CLOUD_COVER = "cloud_cover"
49 ATTR_PRECIPITATION_TYPE = "precipitation_type"
50 
51 # V4 constants
52 CONDITIONS = {
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,
77 }
78 
79 # Weather constants
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"
96 
97 # Sensor attributes
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"