Compare commits
	
		
			2 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 7c6ac15901 | |||
| eea79e28b9 | 
| @ -295,6 +295,15 @@ class HonAppliance: | ||||
|         ) | ||||
|         return result.replace(self.mac_address, "xx-xx-xx-xx-xx-xx") | ||||
|  | ||||
|     def sync_command(self, main, target=None) -> None: | ||||
|         base: HonCommand = self.commands.get(main) | ||||
|         for command, data in self.commands.items(): | ||||
|             if command == main or target and command not in target: | ||||
|                 continue | ||||
|             for name, parameter in data.parameters.items(): | ||||
|                 if base_value := base.parameters.get(name): | ||||
|                     parameter.value = base_value.value | ||||
|  | ||||
|  | ||||
| class HonApplianceTest(HonAppliance): | ||||
|     def __init__(self, name): | ||||
|  | ||||
							
								
								
									
										28
									
								
								pyhon/appliances/ref.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								pyhon/appliances/ref.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,28 @@ | ||||
| from pyhon.parameter.fixed import HonParameterFixed | ||||
|  | ||||
|  | ||||
| class Appliance: | ||||
|     def __init__(self, appliance): | ||||
|         self.parent = appliance | ||||
|  | ||||
|     def data(self, data): | ||||
|         if data["attributes"]["parameters"]["holidayMode"] == "1": | ||||
|             data["modeZ1"] = "holiday" | ||||
|         elif data["attributes"]["parameters"]["intelligenceMode"] == "1": | ||||
|             data["modeZ1"] = "auto_set" | ||||
|         elif data["attributes"]["parameters"]["quickModeZ1"] == "1": | ||||
|             data["modeZ1"] = "super_cool" | ||||
|         else: | ||||
|             data["modeZ1"] = "no_mode" | ||||
|  | ||||
|         if data["attributes"]["parameters"]["quickModeZ2"] == "1": | ||||
|             data["modeZ2"] = "super_freeze" | ||||
|         elif data["attributes"]["parameters"]["intelligenceMode"] == "1": | ||||
|             data["modeZ2"] = "auto_set" | ||||
|         else: | ||||
|             data["modeZ2"] = "no_mode" | ||||
|  | ||||
|         return data | ||||
|  | ||||
|     def settings(self, settings): | ||||
|         return settings | ||||
| @ -48,7 +48,7 @@ class HonCommand: | ||||
|     @property | ||||
|     def api(self) -> "HonAPI": | ||||
|         if self._api is None: | ||||
|             raise exceptions.NoAuthenticationException | ||||
|             raise exceptions.NoAuthenticationException("Missing hOn login") | ||||
|         return self._api | ||||
|  | ||||
|     @property | ||||
| @ -71,7 +71,7 @@ class HonCommand: | ||||
|     def parameter_groups(self) -> Dict[str, Dict[str, Union[str, float]]]: | ||||
|         result: Dict[str, Dict[str, Union[str, float]]] = {} | ||||
|         for name, parameter in self._parameters.items(): | ||||
|             result.setdefault(parameter.group, {})[name] = parameter.value | ||||
|             result.setdefault(parameter.group, {})[name] = parameter.intern_value | ||||
|         return result | ||||
|  | ||||
|     @property | ||||
|  | ||||
| @ -4,7 +4,7 @@ API_KEY = "GRCqFhC6Gk@ikWXm1RmnSmX1cm,MxY-configuration" | ||||
| APP = "hon" | ||||
| # All seen id's (different accounts, different devices) are the same, so I guess this hash is static | ||||
| CLIENT_ID = "3MVG9QDx8IX8nP5T2Ha8ofvlmjLZl5L_gvfbT9.HJvpHGKoAS_dcMN8LYpTSYeVFCraUnV.2Ag1Ki7m4znVO6" | ||||
| APP_VERSION = "1.53.7" | ||||
| APP_VERSION = "2.0.9" | ||||
| OS_VERSION = 31 | ||||
| OS = "android" | ||||
| DEVICE_MODEL = "exynos9820" | ||||
|  | ||||
| @ -22,6 +22,15 @@ class HonParameter: | ||||
|     def value(self) -> str | float: | ||||
|         return self._value if self._value is not None else "0" | ||||
|  | ||||
|     @value.setter | ||||
|     def value(self, value: str | float) -> None: | ||||
|         self._value = value | ||||
|         self.check_trigger(value) | ||||
|  | ||||
|     @property | ||||
|     def intern_value(self) -> str | float: | ||||
|         return str(self._value) if self._value is not None else "" | ||||
|  | ||||
|     @property | ||||
|     def values(self) -> List[str]: | ||||
|         return [str(self.value)] | ||||
|  | ||||
| @ -3,13 +3,17 @@ from typing import Dict, Any, List | ||||
| from pyhon.parameter.base import HonParameter | ||||
|  | ||||
|  | ||||
| def clean_value(value): | ||||
|     return str(value).strip("[]").replace("|", "_").lower() | ||||
|  | ||||
|  | ||||
| class HonParameterEnum(HonParameter): | ||||
|     def __init__(self, key: str, attributes: Dict[str, Any], group: str) -> None: | ||||
|         super().__init__(key, attributes, group) | ||||
|         self._default = attributes.get("defaultValue") | ||||
|         self._value = self._default or "0" | ||||
|         self._values: List[str] = attributes.get("enumValues", []) | ||||
|         if self._default and str(self._default.strip("[]")) not in self.values: | ||||
|         if self._default and clean_value(self._default.strip("[]")) not in self.values: | ||||
|             self._values.append(self._default) | ||||
|  | ||||
|     def __repr__(self) -> str: | ||||
| @ -17,7 +21,7 @@ class HonParameterEnum(HonParameter): | ||||
|  | ||||
|     @property | ||||
|     def values(self) -> List[str]: | ||||
|         return [str(value) for value in self._values] | ||||
|         return [clean_value(value) for value in self._values] | ||||
|  | ||||
|     @values.setter | ||||
|     def values(self, values) -> None: | ||||
| @ -25,7 +29,7 @@ class HonParameterEnum(HonParameter): | ||||
|  | ||||
|     @property | ||||
|     def value(self) -> str | float: | ||||
|         return self._value if self._value is not None else self.values[0] | ||||
|         return clean_value(self._value) if self._value is not None else self.values[0] | ||||
|  | ||||
|     @value.setter | ||||
|     def value(self, value: str) -> None: | ||||
|  | ||||
| @ -37,11 +37,11 @@ class HonParameterRange(HonParameter): | ||||
|         return self._step | ||||
|  | ||||
|     @property | ||||
|     def value(self) -> float: | ||||
|     def value(self) -> str | float: | ||||
|         return self._value if self._value is not None else self._min | ||||
|  | ||||
|     @value.setter | ||||
|     def value(self, value: float) -> None: | ||||
|     def value(self, value: str | float) -> None: | ||||
|         value = str_to_float(value) | ||||
|         if self._min <= value <= self._max and not (value - self._min) % self._step: | ||||
|             self._value = value | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	