1 """Constants for the Shelly integration."""
3 from __future__
import annotations
5 from enum
import StrEnum
6 from logging
import Logger, getLogger
8 from typing
import Final
10 from aioshelly.const
import (
32 DOMAIN: Final =
"shelly"
34 LOGGER: Logger = getLogger(__package__)
36 CONF_COAP_PORT: Final =
"coap_port"
37 FIRMWARE_PATTERN: Final = re.compile(
r"^(\d{8})")
40 BLOCK_MAX_TRANSITION_TIME_MS: Final = 5000
43 RPC_MIN_TRANSITION_TIME_SEC = 0.5
45 RGBW_MODELS: Final = (
50 MOTION_MODELS: Final = (
55 MODELS_SUPPORTING_LIGHT_TRANSITION: Final = (
64 MODELS_SUPPORTING_LIGHT_EFFECTS: Final = (
70 MODELS_WITH_WRONG_SLEEP_PERIOD: Final = (
77 DUAL_MODE_LIGHT_MODELS: Final = (
83 REST_SENSORS_UPDATE_INTERVAL: Final = 60
86 RPC_SENSORS_POLLING_INTERVAL: Final = 60
88 CONF_SLEEP_PERIOD: Final =
"sleep_period"
91 UPDATE_PERIOD_MULTIPLIER: Final = 2.2
94 RPC_RECONNECT_INTERVAL = 60
97 SHAIR_MAX_WORK_HOURS: Final = 9000
100 INPUTS_EVENTS_DICT: Final = {
110 BATTERY_DEVICES_WITH_PERMANENT_CONNECTION: Final = [
117 EVENT_SHELLY_CLICK: Final =
"shelly.click"
119 ATTR_CLICK_TYPE: Final =
"click_type"
120 ATTR_CHANNEL: Final =
"channel"
121 ATTR_DEVICE: Final =
"device"
122 ATTR_GENERATION: Final =
"generation"
123 CONF_SUBTYPE: Final =
"subtype"
124 ATTR_BETA: Final =
"beta"
125 CONF_OTA_BETA_CHANNEL: Final =
"ota_beta_channel"
127 BASIC_INPUTS_EVENTS_TYPES: Final = {
"single",
"long"}
129 SHBTN_INPUTS_EVENTS_TYPES: Final = {
"single",
"double",
"triple",
"long"}
131 RPC_INPUTS_EVENTS_TYPES: Final = {
140 BLOCK_INPUTS_EVENTS_TYPES: Final = {
149 SHIX3_1_INPUTS_EVENTS_TYPES = BLOCK_INPUTS_EVENTS_TYPES
151 INPUTS_EVENTS_SUBTYPES: Final = {
159 SHBTN_MODELS: Final = [MODEL_BUTTON1, MODEL_BUTTON1_V2]
161 STANDARD_RGB_EFFECTS: Final = {
168 SHBLB_1_RGB_EFFECTS: Final = {
175 6:
"Red/Green Change",
178 SHTRV_01_TEMPERATURE_SETTINGS: Final = {
184 RPC_THERMOSTAT_SETTINGS: Final = {
191 KELVIN_MAX_VALUE: Final = 6500
192 KELVIN_MIN_VALUE_WHITE: Final = 2700
193 KELVIN_MIN_VALUE_COLOR: Final = 3000
196 BLOCK_WRONG_SLEEP_PERIOD = 21600
197 BLOCK_EXPECTED_SLEEP_PERIOD = 43200
199 UPTIME_DEVIATION: Final = 5
202 ENTRY_RELOAD_COOLDOWN = 60
204 SHELLY_GAS_MODELS = [MODEL_GAS]
206 CONF_BLE_SCANNER_MODE =
"ble_scanner_mode"
210 """BLE scanner mode."""
212 DISABLED =
"disabled"
217 MAX_PUSH_UPDATE_FAILURES = 5
218 PUSH_UPDATE_ISSUE_ID =
"push_update_{unique}"
220 NOT_CALIBRATED_ISSUE_ID =
"not_calibrated_{unique}"
222 FIRMWARE_UNSUPPORTED_ISSUE_ID =
"firmware_unsupported_{unique}"
224 GAS_VALVE_OPEN_STATES = (
"opening",
"opened")
226 OTA_BEGIN =
"ota_begin"
227 OTA_ERROR =
"ota_error"
228 OTA_PROGRESS =
"ota_progress"
229 OTA_SUCCESS =
"ota_success"
231 GEN1_RELEASE_URL =
"https://shelly-api-docs.shelly.cloud/gen1/#changelog"
232 GEN2_RELEASE_URL =
"https://shelly-api-docs.shelly.cloud/gen2/changelog/"
233 DEVICES_WITHOUT_FIRMWARE_CHANGELOG = (
242 VIRTUAL_COMPONENTS_MAP = {
243 "binary_sensor": {
"types": [
"boolean"],
"modes": [
"label"]},
244 "number": {
"types": [
"number"],
"modes": [
"field",
"slider"]},
245 "select": {
"types": [
"enum"],
"modes": [
"dropdown"]},
246 "sensor": {
"types": [
"enum",
"number",
"text"],
"modes": [
"label"]},
247 "switch": {
"types": [
"boolean"],
"modes": [
"toggle"]},
248 "text": {
"types": [
"text"],
"modes": [
"field"]},
251 VIRTUAL_NUMBER_MODE_MAP = {
252 "field": NumberMode.BOX,
253 "slider": NumberMode.SLIDER,
257 API_WS_URL =
"/api/shelly/ws"
259 COMPONENT_ID_PATTERN = re.compile(
r"[a-z\d]+:\d+")