Compare commits

...

3 Commits

Author SHA1 Message Date
9971fe95e2 Get appliance code from serial number 2023-05-20 13:24:24 +02:00
9f130e2e85 Make 'code' attribute really optional 2023-05-19 00:48:08 +02:00
dfbc24452b Fix value check 2023-05-16 21:26:24 +02:00
5 changed files with 15 additions and 8 deletions

View File

@ -98,6 +98,13 @@ class HonAppliance:
def nick_name(self) -> str:
return self._check_name_zone("nickName")
@property
def code(self) -> str:
if code := self.info.get("code"):
return code
serial_number = self.info.get("serialNumber", "")
return serial_number[:8] if len(serial_number) < 18 else serial_number[:11]
@property
def commands_options(self):
return self._appliance_model.get("options")
@ -276,7 +283,7 @@ class HonAppliance:
extra = {n: c.data for n, c in self._commands.items() if c.data}
if extra:
data |= {"extra_command_data": extra}
for sensible in ["PK", "SK", "serialNumber", "code", "coords", "device"]:
for sensible in ["PK", "SK", "serialNumber", "coords", "device"]:
data.get("appliance", {}).pop(sensible, None)
result = helper.pretty_print({"data": data}, whitespace=whitespace)
result += helper.pretty_print(

View File

@ -72,23 +72,23 @@ class HonAPI:
async def load_commands(self, appliance: HonAppliance) -> Dict:
params: Dict = {
"applianceType": appliance.appliance_type,
"code": appliance.info["code"],
"applianceModelId": appliance.appliance_model_id,
"macAddress": appliance.mac_address,
"os": const.OS,
"appVersion": const.APP_VERSION,
"series": appliance.info["series"],
"code": appliance.code,
}
if firmware_id := appliance.info.get("eepromId"):
params["firmwareId"] = firmware_id
if firmware_version := appliance.info.get("fwVersion"):
params["fwVersion"] = firmware_version
if code := appliance.info.get("code"):
params["code"] = code
if series := appliance.info.get("series"):
params["series"] = series
url: str = f"{const.API_URL}/commands/v1/retrieve"
async with self._hon.get(url, params=params) as response:
result: Dict = (await response.json()).get("payload", {})
if not result or result.pop("resultCode") != "0":
_LOGGER.error(await response.json())
return {}
return result

View File

@ -83,7 +83,7 @@ class Hon:
)
except (KeyError, ValueError, IndexError) as error:
_LOGGER.exception(error)
_LOGGER.error(f"Device data - %s", appliance_data)
_LOGGER.error("Device data - %s", appliance_data)
self._appliances.append(appliance)
async def setup(self) -> None:

View File

@ -9,7 +9,7 @@ class HonParameterEnum(HonParameter):
self._default = attributes.get("defaultValue")
self._value = self._default or "0"
self._values: List[str] = attributes.get("enumValues", [])
if self._default and self._default not in self._values:
if self._default and str(self._default) not in self.values:
self._values.append(self._default)
def __repr__(self) -> str:

View File

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