async def async_set_preset_mode(self, preset_mode: str) -> None: """Set new preset mode.""" if self.device.mode.supports_operation_mode: knx_operation_mode = HVACOperationMode( PRESET_MODES_INV.get(preset_mode)) await self.device.mode.set_operation_mode(knx_operation_mode) self.async_write_ha_state()
async def async_set_preset_mode(self, preset_mode: str) -> None: """Set new preset mode. This method must be run in the event loop and returns a coroutine. """ if self.device.mode.supports_operation_mode: knx_operation_mode = HVACOperationMode(PRESET_MODES_INV.get(preset_mode)) await self.device.mode.set_operation_mode(knx_operation_mode) await self.async_update_ha_state()
async def async_set_hvac_mode(self, hvac_mode: str) -> None: """Set operation mode.""" if self.device.supports_on_off and hvac_mode == HVAC_MODE_OFF: await self.device.turn_off() elif self.device.supports_on_off and hvac_mode == HVAC_MODE_HEAT: await self.device.turn_on() elif self.device.mode.supports_operation_mode: knx_operation_mode = HVACOperationMode(OPERATION_MODES_INV.get(hvac_mode)) await self.device.mode.set_operation_mode(knx_operation_mode) await self.async_update_ha_state()
def __init__( self, xknx, name, group_address_operation_mode=None, group_address_operation_mode_state=None, group_address_operation_mode_protection=None, group_address_operation_mode_night=None, group_address_operation_mode_comfort=None, group_address_operation_mode_standby=None, group_address_controller_status=None, group_address_controller_status_state=None, group_address_controller_mode=None, group_address_controller_mode_state=None, group_address_heat_cool=None, group_address_heat_cool_state=None, operation_modes=None, controller_modes=None, device_updated_cb=None, ): """Initialize ClimateMode class.""" # pylint: disable=too-many-arguments, too-many-locals, too-many-branches, too-many-statements super().__init__(xknx, name, device_updated_cb) self.remote_value_operation_mode = RemoteValueClimateMode( xknx, group_address=group_address_operation_mode, group_address_state=group_address_operation_mode_state, sync_state=True, device_name=name, feature_name="Operation mode", climate_mode_type=RemoteValueClimateMode.ClimateModeType.HVAC_MODE, after_update_cb=None, ) self.remote_value_controller_mode = RemoteValueClimateMode( xknx, group_address=group_address_controller_mode, group_address_state=group_address_controller_mode_state, sync_state=True, device_name=name, feature_name="Controller mode", climate_mode_type=RemoteValueClimateMode.ClimateModeType. HVAC_CONTR_MODE, after_update_cb=None, ) self.remote_value_controller_status = RemoteValueClimateMode( xknx, group_address=group_address_controller_status, group_address_state=group_address_controller_status_state, sync_state=True, device_name=name, feature_name="Controller status", climate_mode_type=RemoteValueClimateMode.ClimateModeType. CONTROLLER_STATUS, after_update_cb=None, ) self.remote_value_operation_mode_comfort = RemoteValueBinaryOperationMode( xknx, group_address=group_address_operation_mode_comfort, group_address_state=group_address_operation_mode_comfort, sync_state=True, device_name=name, feature_name="Operation mode Comfort", operation_mode=HVACOperationMode.COMFORT, after_update_cb=None, ) self.remote_value_operation_mode_standby = RemoteValueBinaryOperationMode( xknx, group_address=group_address_operation_mode_standby, group_address_state=group_address_operation_mode_standby, sync_state=True, device_name=name, feature_name="Operation mode Standby", operation_mode=HVACOperationMode.STANDBY, after_update_cb=None, ) self.remote_value_operation_mode_night = RemoteValueBinaryOperationMode( xknx, group_address=group_address_operation_mode_night, group_address_state=group_address_operation_mode_night, sync_state=True, device_name=name, feature_name="Operation mode Night", operation_mode=HVACOperationMode.NIGHT, after_update_cb=None, ) self.remote_value_operation_mode_protection = RemoteValueBinaryOperationMode( xknx, group_address=group_address_operation_mode_protection, group_address_state=group_address_operation_mode_protection, sync_state=True, device_name=name, feature_name="Operation mode Protection", operation_mode=HVACOperationMode.FROST_PROTECTION, after_update_cb=None, ) self.remote_value_heat_cool = RemoteValueBinaryHeatCool( xknx, group_address=group_address_heat_cool, group_address_state=group_address_heat_cool_state, sync_state=True, device_name=name, feature_name="Heat/Cool", controller_mode=HVACControllerMode.HEAT, after_update_cb=None, ) self.operation_mode = HVACOperationMode.STANDBY self.controller_mode = HVACControllerMode.HEAT self._operation_modes = [] if operation_modes is None: self._operation_modes = self.gather_operation_modes() else: for mode in operation_modes: if isinstance(mode, str): self._operation_modes.append(HVACOperationMode(mode)) elif isinstance(mode, HVACOperationMode): self._operation_modes.append(mode) self._controller_modes = [] if controller_modes is None: self._controller_modes = self.gather_controller_modes() else: for mode in controller_modes: if isinstance(mode, str): self._controller_modes.append(HVACControllerMode(mode)) elif isinstance(mode, HVACControllerMode): self._controller_modes.append(mode) self.supports_operation_mode = any( operation_mode.initialized for operation_mode in self._iter_byte_operation_modes()) or any( operation_mode.initialized for operation_mode in self._iter_binary_operation_modes()) self.supports_controller_mode = any( operation_mode.initialized for operation_mode in self._iter_controller_remote_values()) self._use_binary_operation_modes = any( operation_mode.initialized for operation_mode in self._iter_binary_operation_modes())
def __init__(self, xknx, name, group_address_operation_mode=None, group_address_operation_mode_state=None, group_address_operation_mode_protection=None, group_address_operation_mode_night=None, group_address_operation_mode_comfort=None, group_address_controller_status=None, group_address_controller_status_state=None, group_address_controller_mode=None, group_address_controller_mode_state=None, operation_modes=None, device_updated_cb=None): """Initialize ClimateMode class.""" # pylint: disable=too-many-arguments, too-many-locals, too-many-branches, too-many-statements super().__init__(xknx, name, device_updated_cb) if isinstance(group_address_operation_mode, (str, int)): group_address_operation_mode = GroupAddress( group_address_operation_mode) if isinstance(group_address_operation_mode_state, (str, int)): group_address_operation_mode_state = GroupAddress( group_address_operation_mode_state) if isinstance(group_address_operation_mode_protection, (str, int)): group_address_operation_mode_protection = GroupAddress( group_address_operation_mode_protection) if isinstance(group_address_operation_mode_night, (str, int)): group_address_operation_mode_night = GroupAddress( group_address_operation_mode_night) if isinstance(group_address_operation_mode_comfort, (str, int)): group_address_operation_mode_comfort = GroupAddress( group_address_operation_mode_comfort) if isinstance(group_address_controller_status, (str, int)): group_address_controller_status = GroupAddress( group_address_controller_status) if isinstance(group_address_controller_status_state, (str, int)): group_address_controller_status_state = GroupAddress( group_address_controller_status_state) if isinstance(group_address_controller_mode, (str, int)): group_address_controller_mode = GroupAddress( group_address_controller_mode) if isinstance(group_address_controller_mode_state, (str, int)): group_address_controller_mode_state = GroupAddress( group_address_controller_mode_state) self.group_address_operation_mode = group_address_operation_mode self.group_address_operation_mode_state = group_address_operation_mode_state self.group_address_operation_mode_protection = group_address_operation_mode_protection self.group_address_operation_mode_night = group_address_operation_mode_night self.group_address_operation_mode_comfort = group_address_operation_mode_comfort self.group_address_controller_status = group_address_controller_status self.group_address_controller_status_state = group_address_controller_status_state self.group_address_controller_mode = group_address_controller_mode self.group_address_controller_mode_state = group_address_controller_mode_state self.operation_mode = HVACOperationMode.STANDBY self.operation_modes_ = [] if operation_modes is None: self.operation_modes_ = self.guess_operation_modes() else: for mode in operation_modes: if isinstance(mode, str): self.operation_modes_.append(HVACOperationMode(mode)) elif isinstance(mode, HVACOperationMode): self.operation_modes_.append(mode) self.supports_operation_mode = \ group_address_operation_mode is not None or \ group_address_operation_mode_state is not None or \ group_address_operation_mode_protection is not None or \ group_address_operation_mode_night is not None or \ group_address_operation_mode_comfort is not None or \ group_address_controller_status is not None or \ group_address_controller_status_state is not None or \ group_address_controller_mode is not None or \ group_address_controller_mode_state is not None