Home Assistant Unofficial Reference 2024.12.1
const.py
Go to the documentation of this file.
1 """Constants for National Weather Service Integration."""
2 
3 from __future__ import annotations
4 
5 from datetime import timedelta
6 from typing import Final
7 
9  ATTR_CONDITION_CLOUDY,
10  ATTR_CONDITION_EXCEPTIONAL,
11  ATTR_CONDITION_FOG,
12  ATTR_CONDITION_HAIL,
13  ATTR_CONDITION_LIGHTNING,
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_WINDY,
21  ATTR_CONDITION_WINDY_VARIANT,
22 )
23 
24 DOMAIN = "nws"
25 
26 CONF_STATION = "station"
27 
28 ATTRIBUTION = "Data from National Weather Service/NOAA"
29 
30 ATTR_FORECAST_SHORT_DESCRIPTION: Final = "short_description"
31 ATTR_FORECAST_DETAILED_DESCRIPTION: Final = "detailed_description"
32 
33 CONDITION_CLASSES: dict[str, list[str]] = {
34  ATTR_CONDITION_EXCEPTIONAL: [
35  "Tornado",
36  "Hurricane conditions",
37  "Tropical storm conditions",
38  "Dust",
39  "Smoke",
40  "Haze",
41  "Hot",
42  "Cold",
43  ],
44  ATTR_CONDITION_SNOWY: ["Snow", "Sleet", "Snow/sleet", "Blizzard"],
45  ATTR_CONDITION_SNOWY_RAINY: [
46  "Rain/snow",
47  "Rain/sleet",
48  "Freezing rain/snow",
49  "Freezing rain",
50  "Rain/freezing rain",
51  ],
52  ATTR_CONDITION_HAIL: [],
53  ATTR_CONDITION_LIGHTNING_RAINY: [
54  "Thunderstorm (high cloud cover)",
55  "Thunderstorm (medium cloud cover)",
56  "Thunderstorm (low cloud cover)",
57  ],
58  ATTR_CONDITION_LIGHTNING: [],
59  ATTR_CONDITION_POURING: [],
60  ATTR_CONDITION_RAINY: [
61  "Rain",
62  "Rain showers (high cloud cover)",
63  "Rain showers (low cloud cover)",
64  ],
65  ATTR_CONDITION_WINDY_VARIANT: ["Mostly cloudy and windy", "Overcast and windy"],
66  ATTR_CONDITION_WINDY: [
67  "Fair/clear and windy",
68  "A few clouds and windy",
69  "Partly cloudy and windy",
70  ],
71  ATTR_CONDITION_FOG: ["Fog/mist"],
72  "clear": ["Fair/clear"], # sunny and clear-night
73  ATTR_CONDITION_CLOUDY: ["Mostly cloudy", "Overcast"],
74  ATTR_CONDITION_PARTLYCLOUDY: ["A few clouds", "Partly cloudy"],
75 }
76 
77 DAYNIGHT = "daynight"
78 HOURLY = "hourly"
79 
80 OBSERVATION_VALID_TIME = timedelta(minutes=60)
81 FORECAST_VALID_TIME = timedelta(minutes=45)
82 # Ask for observations for last four hours
83 UPDATE_TIME_PERIOD = timedelta(minutes=240)
84 
85 DEBOUNCE_TIME = 10 * 60 # in seconds
86 DEFAULT_SCAN_INTERVAL = timedelta(minutes=10)
87 RETRY_INTERVAL = timedelta(minutes=1)
88 RETRY_STOP = timedelta(minutes=10)