Add support for AtlanticPassAPCZoneControl to Overkiz integration (#72384)
* Add support for AtlanticPassAPCZoneControl (overkiz) * Remove unneeded comments * Remove supported features * Fix new standards
This commit is contained in:
parent
1ef0102f12
commit
04c60d2183
3 changed files with 43 additions and 0 deletions
|
@ -2,7 +2,9 @@
|
||||||
from pyoverkiz.enums.ui import UIWidget
|
from pyoverkiz.enums.ui import UIWidget
|
||||||
|
|
||||||
from .atlantic_electrical_heater import AtlanticElectricalHeater
|
from .atlantic_electrical_heater import AtlanticElectricalHeater
|
||||||
|
from .atlantic_pass_apc_zone_control import AtlanticPassAPCZoneControl
|
||||||
|
|
||||||
WIDGET_TO_CLIMATE_ENTITY = {
|
WIDGET_TO_CLIMATE_ENTITY = {
|
||||||
UIWidget.ATLANTIC_ELECTRICAL_HEATER: AtlanticElectricalHeater,
|
UIWidget.ATLANTIC_ELECTRICAL_HEATER: AtlanticElectricalHeater,
|
||||||
|
UIWidget.ATLANTIC_PASS_APC_ZONE_CONTROL: AtlanticPassAPCZoneControl,
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
"""Support for Atlantic Pass APC Zone Control."""
|
||||||
|
from typing import cast
|
||||||
|
|
||||||
|
from pyoverkiz.enums import OverkizCommand, OverkizCommandParam, OverkizState
|
||||||
|
|
||||||
|
from homeassistant.components.climate import ClimateEntity
|
||||||
|
from homeassistant.components.climate.const import HVACMode
|
||||||
|
from homeassistant.components.overkiz.entity import OverkizEntity
|
||||||
|
from homeassistant.const import TEMP_CELSIUS
|
||||||
|
|
||||||
|
OVERKIZ_TO_HVAC_MODE: dict[str, str] = {
|
||||||
|
OverkizCommandParam.HEATING: HVACMode.HEAT,
|
||||||
|
OverkizCommandParam.DRYING: HVACMode.DRY,
|
||||||
|
OverkizCommandParam.COOLING: HVACMode.COOL,
|
||||||
|
OverkizCommandParam.STOP: HVACMode.OFF,
|
||||||
|
}
|
||||||
|
|
||||||
|
HVAC_MODE_TO_OVERKIZ = {v: k for k, v in OVERKIZ_TO_HVAC_MODE.items()}
|
||||||
|
|
||||||
|
|
||||||
|
class AtlanticPassAPCZoneControl(OverkizEntity, ClimateEntity):
|
||||||
|
"""Representation of Atlantic Pass APC Zone Control."""
|
||||||
|
|
||||||
|
_attr_hvac_modes = [*HVAC_MODE_TO_OVERKIZ]
|
||||||
|
_attr_temperature_unit = TEMP_CELSIUS
|
||||||
|
|
||||||
|
@property
|
||||||
|
def hvac_mode(self) -> str:
|
||||||
|
"""Return hvac operation ie. heat, cool mode."""
|
||||||
|
return OVERKIZ_TO_HVAC_MODE[
|
||||||
|
cast(
|
||||||
|
str, self.executor.select_state(OverkizState.IO_PASS_APC_OPERATING_MODE)
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
|
async def async_set_hvac_mode(self, hvac_mode: str) -> None:
|
||||||
|
"""Set new target hvac mode."""
|
||||||
|
await self.executor.async_execute_command(
|
||||||
|
OverkizCommand.SET_PASS_APC_OPERATING_MODE, HVAC_MODE_TO_OVERKIZ[hvac_mode]
|
||||||
|
)
|
|
@ -62,6 +62,7 @@ OVERKIZ_DEVICE_TO_PLATFORM: dict[UIClass | UIWidget, Platform | None] = {
|
||||||
UIClass.WINDOW: Platform.COVER,
|
UIClass.WINDOW: Platform.COVER,
|
||||||
UIWidget.ALARM_PANEL_CONTROLLER: Platform.ALARM_CONTROL_PANEL, # widgetName, uiClass is Alarm (not supported)
|
UIWidget.ALARM_PANEL_CONTROLLER: Platform.ALARM_CONTROL_PANEL, # widgetName, uiClass is Alarm (not supported)
|
||||||
UIWidget.ATLANTIC_ELECTRICAL_HEATER: Platform.CLIMATE, # widgetName, uiClass is HeatingSystem (not supported)
|
UIWidget.ATLANTIC_ELECTRICAL_HEATER: Platform.CLIMATE, # widgetName, uiClass is HeatingSystem (not supported)
|
||||||
|
UIWidget.ATLANTIC_PASS_APC_ZONE_CONTROL: Platform.CLIMATE, # widgetName, uiClass is HeatingSystem (not supported)
|
||||||
UIWidget.DOMESTIC_HOT_WATER_TANK: Platform.SWITCH, # widgetName, uiClass is WaterHeatingSystem (not supported)
|
UIWidget.DOMESTIC_HOT_WATER_TANK: Platform.SWITCH, # widgetName, uiClass is WaterHeatingSystem (not supported)
|
||||||
UIWidget.MY_FOX_ALARM_CONTROLLER: Platform.ALARM_CONTROL_PANEL, # widgetName, uiClass is Alarm (not supported)
|
UIWidget.MY_FOX_ALARM_CONTROLLER: Platform.ALARM_CONTROL_PANEL, # widgetName, uiClass is Alarm (not supported)
|
||||||
UIWidget.MY_FOX_SECURITY_CAMERA: Platform.SWITCH, # widgetName, uiClass is Camera (not supported)
|
UIWidget.MY_FOX_SECURITY_CAMERA: Platform.SWITCH, # widgetName, uiClass is Camera (not supported)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue