Compare commits

..

2 Commits

Author SHA1 Message Date
022da71800 Fix none-type attributes 2023-05-08 02:23:48 +02:00
8e16b4a215 Fix some errors 2023-05-08 00:03:53 +02:00
4 changed files with 14 additions and 6 deletions

View File

@ -7,6 +7,7 @@ from typing import TYPE_CHECKING
from pyhon import helper, exceptions from pyhon import helper, exceptions
from pyhon.commands import HonCommand from pyhon.commands import HonCommand
from pyhon.parameter.base import HonParameter
from pyhon.parameter.fixed import HonParameterFixed from pyhon.parameter.fixed import HonParameterFixed
if TYPE_CHECKING: if TYPE_CHECKING:
@ -33,6 +34,7 @@ class HonAppliance:
self._zone: int = zone self._zone: int = zone
self._additional_data: Dict[str, Any] = {} self._additional_data: Dict[str, Any] = {}
self._last_update = None self._last_update = None
self._default_setting = HonParameter("", {}, "")
try: try:
self._extra = importlib.import_module( self._extra = importlib.import_module(
@ -200,7 +202,7 @@ class HonAppliance:
async def load_commands(self): async def load_commands(self):
raw = await self.api.load_commands(self) raw = await self.api.load_commands(self)
self._appliance_model = raw.pop("applianceModel") self._appliance_model = raw.pop("applianceModel")
raw.pop("dictionaryId") raw.pop("dictionaryId", None)
self._commands = self._get_commands(raw) self._commands = self._get_commands(raw)
await self._recover_last_command_states() await self._recover_last_command_states()
@ -229,7 +231,7 @@ class HonAppliance:
result = {} result = {}
for name, command in self._commands.items(): for name, command in self._commands.items():
for key in command.setting_keys: for key in command.setting_keys:
setting = command.settings.get(key) setting = command.settings.get(key, self._default_setting)
result[f"{name}.{key}"] = setting result[f"{name}.{key}"] = setting
if self._extra: if self._extra:
return self._extra.settings(result) return self._extra.settings(result)
@ -256,18 +258,21 @@ class HonAppliance:
return self._extra.data(result) return self._extra.data(result)
return result return result
def diagnose(self, whitespace="\u200B \u200B "): def diagnose(self, whitespace="\u200B \u200B ", command_only=False):
data = { data = {
"attributes": self.attributes.copy(), "attributes": self.attributes.copy(),
"appliance": self.info, "appliance": self.info,
"additional_data": self._additional_data, "additional_data": self._additional_data,
} }
if command_only:
data.pop("attributes")
data.pop("appliance")
data |= {n: c.parameter_groups for n, c in self._commands.items()} data |= {n: c.parameter_groups for n, c in self._commands.items()}
extra = {n: c.data for n, c in self._commands.items() if c.data} extra = {n: c.data for n, c in self._commands.items() if c.data}
if extra: if extra:
data |= {"extra_command_data": extra} data |= {"extra_command_data": extra}
for sensible in ["PK", "SK", "serialNumber", "code", "coords"]: for sensible in ["PK", "SK", "serialNumber", "code", "coords"]:
data["appliance"].pop(sensible, None) data.get("appliance", {}).pop(sensible, None)
result = helper.pretty_print({"data": data}, whitespace=whitespace) result = helper.pretty_print({"data": data}, whitespace=whitespace)
result += helper.pretty_print( result += helper.pretty_print(
{"commands": helper.create_command(self.commands)}, {"commands": helper.create_command(self.commands)},

View File

@ -103,7 +103,8 @@ class HonCommand:
@category.setter @category.setter
def category(self, category: str) -> None: def category(self, category: str) -> None:
self._appliance.commands[self._name] = self.categories[category] if category in self.categories:
self._appliance.commands[self._name] = self.categories[category]
@property @property
def setting_keys(self) -> List[str]: def setting_keys(self) -> List[str]:

View File

@ -32,6 +32,8 @@ class HonParameterRange(HonParameter):
@property @property
def step(self) -> float: def step(self) -> float:
if not self._step:
return 1
return self._step return self._step
@property @property

View File

@ -7,7 +7,7 @@ with open("README.md", "r") as f:
setup( setup(
name="pyhOn", name="pyhOn",
version="0.10.4", version="0.10.6",
author="Andre Basche", author="Andre Basche",
description="Control hOn devices with python", description="Control hOn devices with python",
long_description=long_description, long_description=long_description,