Issue with sync_command #16
| @@ -277,7 +277,12 @@ class HonAppliance: | |||||||
|                 _LOGGER.info("Can't set %s - %s", key, error) |                 _LOGGER.info("Can't set %s - %s", key, error) | ||||||
|                 continue |                 continue | ||||||
|  |  | ||||||
|     def sync_command(self, main: str, target: Optional[List[str] | str] = None) -> None: |     def sync_command( | ||||||
|  |         self, | ||||||
|  |         main: str, | ||||||
|  |         target: Optional[List[str] | str] = None, | ||||||
|  |         to_sync: Optional[List[str] | bool] = None, | ||||||
|  |     ) -> None: | ||||||
|         base: Optional[HonCommand] = self.commands.get(main) |         base: Optional[HonCommand] = self.commands.get(main) | ||||||
|         if not base: |         if not base: | ||||||
|             return |             return | ||||||
| @@ -287,7 +292,12 @@ class HonAppliance: | |||||||
|  |  | ||||||
|             for name, target_param in data.parameters.items(): |             for name, target_param in data.parameters.items(): | ||||||
|                 if not (base_param := base.parameters.get(name)): |                 if not (base_param := base.parameters.get(name)): | ||||||
|                     return |                     continue | ||||||
|  |                 if to_sync and ( | ||||||
|  |                     (isinstance(to_sync, list) and name not in to_sync) | ||||||
|  |                     or not base_param.mandatory | ||||||
|  |                 ): | ||||||
|  |                     continue | ||||||
|                 self.sync_parameter(base_param, target_param) |                 self.sync_parameter(base_param, target_param) | ||||||
|  |  | ||||||
|     def sync_parameter(self, main: Parameter, target: Parameter) -> None: |     def sync_parameter(self, main: Parameter, target: Parameter) -> None: | ||||||
|   | |||||||
| @@ -1,11 +1,16 @@ | |||||||
| from typing import Any, Dict | from typing import Any, Dict | ||||||
|  |  | ||||||
| from pyhon.appliances.base import ApplianceBase | from pyhon.appliances.base import ApplianceBase | ||||||
|  | from pyhon.parameter.base import HonParameter | ||||||
|  |  | ||||||
|  |  | ||||||
| class Appliance(ApplianceBase): | class Appliance(ApplianceBase): | ||||||
|     def attributes(self, data: Dict[str, Any]) -> Dict[str, Any]: |     def attributes(self, data: Dict[str, Any]) -> Dict[str, Any]: | ||||||
|         data = super().attributes(data) |         data = super().attributes(data) | ||||||
|         data["active"] = data["parameters"]["onOffStatus"] == "1" |         parameter = data["parameters"]["onOffStatus"] | ||||||
|  |         is_class = isinstance(parameter, HonParameter) | ||||||
|  |         data["active"] = parameter.value == 1 if is_class else parameter == 1 | ||||||
|         return data |         return data | ||||||
|  |  | ||||||
|  |     def settings(self, settings: Dict[str, Any]) -> Dict[str, Any]: | ||||||
|  |         return settings | ||||||
|   | |||||||
| @@ -132,7 +132,7 @@ class HonCommand: | |||||||
|     async def send_specific(self, param_names: List[str]) -> bool: |     async def send_specific(self, param_names: List[str]) -> bool: | ||||||
|         params: Dict[str, str | float] = {} |         params: Dict[str, str | float] = {} | ||||||
|         for key, parameter in self._parameters.items(): |         for key, parameter in self._parameters.items(): | ||||||
|             if key in param_names: |             if key in param_names or parameter.mandatory: | ||||||
|                 params[key] = parameter.value |                 params[key] = parameter.value | ||||||
|         return await self.send_parameters(params) |         return await self.send_parameters(params) | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user