Issue with sync_command #16
| @@ -277,7 +277,12 @@ class HonAppliance: | ||||
|                 _LOGGER.info("Can't set %s - %s", key, error) | ||||
|                 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) | ||||
|         if not base: | ||||
|             return | ||||
| @@ -287,7 +292,12 @@ class HonAppliance: | ||||
|  | ||||
|             for name, target_param in data.parameters.items(): | ||||
|                 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) | ||||
|  | ||||
|     def sync_parameter(self, main: Parameter, target: Parameter) -> None: | ||||
|   | ||||
| @@ -1,11 +1,16 @@ | ||||
| from typing import Any, Dict | ||||
|  | ||||
| from pyhon.appliances.base import ApplianceBase | ||||
| from pyhon.parameter.base import HonParameter | ||||
|  | ||||
|  | ||||
| class Appliance(ApplianceBase): | ||||
|     def attributes(self, data: Dict[str, Any]) -> Dict[str, Any]: | ||||
|         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 | ||||
|  | ||||
|     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: | ||||
|         params: Dict[str, str | float] = {} | ||||
|         for key, parameter in self._parameters.items(): | ||||
|             if key in param_names: | ||||
|             if key in param_names or parameter.mandatory: | ||||
|                 params[key] = parameter.value | ||||
|         return await self.send_parameters(params) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user