1 """Constants for the Overkiz (by Somfy) integration."""
3 from __future__
import annotations
5 from datetime
import timedelta
7 from typing
import Final
9 from pyoverkiz.enums
import (
18 CONCENTRATION_PARTS_PER_BILLION,
19 CONCENTRATION_PARTS_PER_MILLION,
24 UnitOfElectricCurrent,
25 UnitOfElectricPotential,
38 DOMAIN: Final =
"overkiz"
39 LOGGER: logging.Logger = logging.getLogger(__package__)
41 CONF_API_TYPE: Final =
"api_type"
42 CONF_HUB: Final =
"hub"
43 DEFAULT_SERVER: Final = Server.SOMFY_EUROPE
44 DEFAULT_HOST: Final =
"gateway-xxxx-xxxx-xxxx.local:8443"
47 UPDATE_INTERVAL_ALL_ASSUMED_STATE: Final =
timedelta(minutes=60)
49 PLATFORMS: list[Platform] = [
50 Platform.ALARM_CONTROL_PANEL,
51 Platform.BINARY_SENSOR,
63 Platform.WATER_HEATER,
66 IGNORED_OVERKIZ_DEVICES: list[UIClass | UIWidget] = [
67 UIClass.PROTOCOL_GATEWAY,
72 OVERKIZ_DEVICE_TO_PLATFORM: dict[UIClass | UIWidget, Platform |
None] = {
73 UIClass.ADJUSTABLE_SLATS_ROLLER_SHUTTER: Platform.COVER,
74 UIClass.AWNING: Platform.COVER,
75 UIClass.CURTAIN: Platform.COVER,
76 UIClass.DOOR_LOCK: Platform.LOCK,
77 UIClass.EXTERIOR_SCREEN: Platform.COVER,
78 UIClass.EXTERIOR_VENETIAN_BLIND: Platform.COVER,
79 UIClass.GARAGE_DOOR: Platform.COVER,
80 UIClass.GATE: Platform.COVER,
81 UIClass.LIGHT: Platform.LIGHT,
82 UIClass.ON_OFF: Platform.SWITCH,
83 UIClass.PERGOLA: Platform.COVER,
84 UIClass.ROLLER_SHUTTER: Platform.COVER,
85 UIClass.SCREEN: Platform.COVER,
86 UIClass.SHUTTER: Platform.COVER,
87 UIClass.SIREN: Platform.SIREN,
88 UIClass.SWIMMING_POOL: Platform.SWITCH,
89 UIClass.SWINGING_SHUTTER: Platform.COVER,
90 UIClass.VENETIAN_BLIND: Platform.COVER,
91 UIClass.WINDOW: Platform.COVER,
92 UIWidget.ALARM_PANEL_CONTROLLER: Platform.ALARM_CONTROL_PANEL,
93 UIWidget.ATLANTIC_ELECTRICAL_HEATER: Platform.CLIMATE,
94 UIWidget.ATLANTIC_ELECTRICAL_HEATER_WITH_ADJUSTABLE_TEMPERATURE_SETPOINT: Platform.CLIMATE,
95 UIWidget.ATLANTIC_ELECTRICAL_TOWEL_DRYER: Platform.CLIMATE,
96 UIWidget.ATLANTIC_HEAT_RECOVERY_VENTILATION: Platform.CLIMATE,
97 UIWidget.ATLANTIC_PASS_APC_DHW: Platform.WATER_HEATER,
98 UIWidget.ATLANTIC_PASS_APC_HEAT_PUMP: Platform.CLIMATE,
99 UIWidget.ATLANTIC_PASS_APC_HEATING_AND_COOLING_ZONE: Platform.CLIMATE,
100 UIWidget.ATLANTIC_PASS_APC_HEATING_ZONE: Platform.CLIMATE,
101 UIWidget.ATLANTIC_PASS_APC_ZONE_CONTROL: Platform.CLIMATE,
102 UIWidget.DOMESTIC_HOT_WATER_PRODUCTION: Platform.WATER_HEATER,
103 UIWidget.DOMESTIC_HOT_WATER_TANK: Platform.SWITCH,
104 UIWidget.HITACHI_AIR_TO_AIR_HEAT_PUMP: Platform.CLIMATE,
105 UIWidget.HITACHI_DHW: Platform.WATER_HEATER,
106 UIWidget.MY_FOX_ALARM_CONTROLLER: Platform.ALARM_CONTROL_PANEL,
107 UIWidget.MY_FOX_SECURITY_CAMERA: Platform.SWITCH,
108 UIWidget.RTD_INDOOR_SIREN: Platform.SWITCH,
109 UIWidget.RTD_OUTDOOR_SIREN: Platform.SWITCH,
110 UIWidget.RTS_GENERIC: Platform.COVER,
111 UIWidget.SIREN_STATUS:
None,
112 UIWidget.SOMFY_HEATING_TEMPERATURE_INTERFACE: Platform.CLIMATE,
113 UIWidget.SOMFY_THERMOSTAT: Platform.CLIMATE,
114 UIWidget.STATELESS_ALARM_CONTROLLER: Platform.SWITCH,
115 UIWidget.STATEFUL_ALARM_CONTROLLER: Platform.ALARM_CONTROL_PANEL,
116 UIWidget.STATELESS_EXTERIOR_HEATING: Platform.SWITCH,
117 UIWidget.TSKALARM_CONTROLLER: Platform.ALARM_CONTROL_PANEL,
118 UIWidget.VALVE_HEATING_TEMPERATURE_INTERFACE: Platform.CLIMATE,
122 OVERKIZ_STATE_TO_TRANSLATION: dict[str, str] = {
123 OverkizCommandParam.EXTERNAL_GATEWAY:
"external_gateway",
124 OverkizCommandParam.LOCAL_USER:
"local_user",
125 OverkizCommandParam.LOW_BATTERY:
"low_battery",
126 OverkizCommandParam.LSC:
"lsc",
127 OverkizCommandParam.MAINTENANCE_REQUIRED:
"maintenance_required",
128 OverkizCommandParam.NO_DEFECT:
"no_defect",
129 OverkizCommandParam.SAAC:
"saac",
130 OverkizCommandParam.SFC:
"sfc",
131 OverkizCommandParam.UPS:
"ups",
134 OVERKIZ_UNIT_TO_HA: dict[str, str] = {
135 MeasuredValueType.ABSOLUTE_VALUE:
"",
136 MeasuredValueType.ANGLE_IN_DEGREES: DEGREE,
137 MeasuredValueType.ANGULAR_SPEED_IN_DEGREES_PER_SECOND: f
"{DEGREE}/{UnitOfTime.SECONDS}",
138 MeasuredValueType.ELECTRICAL_ENERGY_IN_KWH: UnitOfEnergy.KILO_WATT_HOUR,
139 MeasuredValueType.ELECTRICAL_ENERGY_IN_WH: UnitOfEnergy.WATT_HOUR,
140 MeasuredValueType.ELECTRICAL_POWER_IN_KW: UnitOfPower.KILO_WATT,
141 MeasuredValueType.ELECTRICAL_POWER_IN_W: UnitOfPower.WATT,
142 MeasuredValueType.ELECTRIC_CURRENT_IN_AMPERE: UnitOfElectricCurrent.AMPERE,
143 MeasuredValueType.ELECTRIC_CURRENT_IN_MILLI_AMPERE: UnitOfElectricCurrent.MILLIAMPERE,
144 MeasuredValueType.ENERGY_IN_CAL:
"cal",
145 MeasuredValueType.ENERGY_IN_KCAL:
"kcal",
146 MeasuredValueType.FLOW_IN_LITRE_PER_SECOND: f
"{UnitOfVolume.LITERS}/{UnitOfTime.SECONDS}",
147 MeasuredValueType.FLOW_IN_METER_CUBE_PER_HOUR: UnitOfVolumeFlowRate.CUBIC_METERS_PER_HOUR,
148 MeasuredValueType.FLOW_IN_METER_CUBE_PER_SECOND: f
"{UnitOfVolume.CUBIC_METERS}/{UnitOfTime.SECONDS}",
149 MeasuredValueType.FOSSIL_ENERGY_IN_WH: UnitOfEnergy.WATT_HOUR,
150 MeasuredValueType.GRADIENT_IN_PERCENTAGE_PER_SECOND: f
"{PERCENTAGE}/{UnitOfTime.SECONDS}",
151 MeasuredValueType.LENGTH_IN_METER: UnitOfLength.METERS,
152 MeasuredValueType.LINEAR_SPEED_IN_METER_PER_SECOND: UnitOfSpeed.METERS_PER_SECOND,
153 MeasuredValueType.LUMINANCE_IN_LUX: LIGHT_LUX,
154 MeasuredValueType.PARTS_PER_BILLION: CONCENTRATION_PARTS_PER_BILLION,
155 MeasuredValueType.PARTS_PER_MILLION: CONCENTRATION_PARTS_PER_MILLION,
156 MeasuredValueType.PARTS_PER_QUADRILLION:
"ppq",
157 MeasuredValueType.PARTS_PER_TRILLION:
"ppt",
158 MeasuredValueType.POWER_PER_SQUARE_METER: UnitOfIrradiance.WATTS_PER_SQUARE_METER,
159 MeasuredValueType.PRESSURE_IN_HPA: UnitOfPressure.HPA,
160 MeasuredValueType.PRESSURE_IN_MILLI_BAR: UnitOfPressure.MBAR,
161 MeasuredValueType.RELATIVE_VALUE_IN_PERCENTAGE: PERCENTAGE,
162 MeasuredValueType.TEMPERATURE_IN_CELCIUS: UnitOfTemperature.CELSIUS,
163 MeasuredValueType.TEMPERATURE_IN_KELVIN: UnitOfTemperature.KELVIN,
164 MeasuredValueType.TIME_IN_SECOND: UnitOfTime.SECONDS,
166 MeasuredValueType.VOLTAGE_IN_MILLI_VOLT: UnitOfElectricPotential.MILLIVOLT,
167 MeasuredValueType.VOLTAGE_IN_VOLT: UnitOfElectricPotential.VOLT,
168 MeasuredValueType.VOLUME_IN_CUBIC_METER: UnitOfVolume.CUBIC_METERS,
169 MeasuredValueType.VOLUME_IN_GALLON: UnitOfVolume.GALLONS,
170 MeasuredValueType.VOLUME_IN_LITER: UnitOfVolume.LITERS,