Compare commits

...

17 Commits

Author SHA1 Message Date
ad864286fc Use firmware id optional 2023-04-23 14:40:39 +02:00
13cff8caa0 Bump version to 8.2 2023-04-23 03:35:13 +02:00
5fc6245806 Get values for every parameter 2023-04-22 23:08:44 +02:00
1dad0e14b8 Handle special dry level 11 2023-04-22 23:08:24 +02:00
b04c601ad6 Add log for empty token 2023-04-21 23:51:35 +02:00
3ec0f5a006 Merge pull request #12 from MiguelAngelLV/main
Oven overwrite
2023-04-19 20:18:32 +02:00
78bc85132f Black Style 2023-04-19 20:12:52 +02:00
191928287f Override Oven attributes when is disconnected 2023-04-19 19:29:59 +02:00
c0aab8b99d Merge remote-tracking branch 'origin/main' 2023-04-19 18:57:13 +02:00
b37715d0ca Bump version to 0.8.0 2023-04-19 17:37:55 +02:00
411effd814 Fix disappearing programs 2023-04-17 00:37:55 +02:00
04f19c4609 Fix error when sending commands 2023-04-17 00:07:22 +02:00
a68dcac379 Merge remote-tracking branch 'origin/main'
# Conflicts:
#	pyhon/appliance.py
2023-04-16 16:37:11 +02:00
40cc0013a5 Override Oven attributes when is disconnected 2023-04-16 11:36:10 +02:00
f2aa3dc8fd Merge remote-tracking branch 'origin/main'
# Conflicts:
#	pyhon/appliances/ov.py
2023-04-16 09:58:00 +02:00
e887371bec expose ancillary parameter in settings 2023-04-16 04:23:08 +02:00
18b0ecdd68 Override Oven attributes when is disconnected 2023-04-08 22:24:14 +02:00
9 changed files with 44 additions and 13 deletions

14
pyhon/appliances/ov.py Normal file
View File

@ -0,0 +1,14 @@
class Appliance:
def data(self, data):
if data["attributes"]["lastConnEvent"]["category"] == "DISCONNECTED":
data["attributes"]["parameters"]["temp"] = "0"
data["attributes"]["parameters"]["onOffStatus"] = "0"
data["attributes"]["parameters"]["remoteCtrValid"] = "0"
data["attributes"]["parameters"]["remainingTimeMM"] = "0"
data["active"] = data["attributes"]["parameters"]["onOffStatus"] == "1"
return data
def settings(self, settings):
return settings

View File

@ -1,3 +1,6 @@
from pyhon.parameter.fixed import HonParameterFixed
class Appliance: class Appliance:
def data(self, data): def data(self, data):
if data["attributes"]["lastConnEvent"]["category"] == "DISCONNECTED": if data["attributes"]["lastConnEvent"]["category"] == "DISCONNECTED":
@ -7,4 +10,7 @@ class Appliance:
return data return data
def settings(self, settings): def settings(self, settings):
dry_level = settings["startProgram.dryLevel"]
if isinstance(dry_level, HonParameterFixed) and dry_level.value == "11":
settings.pop("startProgram.dryLevel", None)
return settings return settings

View File

@ -62,11 +62,10 @@ class HonCommand:
return self._ancillary_parameters return self._ancillary_parameters
async def send(self) -> bool: async def send(self) -> bool:
parameters = { params = {k: v.value for k, v in self._parameters.items()}
name: parameter.value for name, parameter in self._parameters.items() ancillary_params = {k: v.value for k, v in self._ancillary_parameters.items()}
}
return await self._api.send_command( return await self._api.send_command(
self._appliance, self._name, parameters, self.ancillary_parameters self._appliance, self._name, params, ancillary_params
) )
@property @property

View File

@ -74,13 +74,14 @@ class HonAPI:
"applianceType": appliance.appliance_type, "applianceType": appliance.appliance_type,
"code": appliance.info["code"], "code": appliance.info["code"],
"applianceModelId": appliance.appliance_model_id, "applianceModelId": appliance.appliance_model_id,
"firmwareId": appliance.info["eepromId"],
"macAddress": appliance.mac_address, "macAddress": appliance.mac_address,
"fwVersion": appliance.info["fwVersion"], "fwVersion": appliance.info["fwVersion"],
"os": const.OS, "os": const.OS,
"appVersion": const.APP_VERSION, "appVersion": const.APP_VERSION,
"series": appliance.info["series"], "series": appliance.info["series"],
} }
if firmware_id := appliance.info.get("eepromId"):
params["firmwareId"] = firmware_id
url: str = f"{const.API_URL}/commands/v1/retrieve" url: str = f"{const.API_URL}/commands/v1/retrieve"
async with self._hon.get(url, params=params) as response: async with self._hon.get(url, params=params) as response:
result: Dict = (await response.json()).get("payload", {}) result: Dict = (await response.json()).get("payload", {})

View File

@ -228,7 +228,10 @@ class HonAuth:
except json.JSONDecodeError: except json.JSONDecodeError:
await self._error_logger(response) await self._error_logger(response)
return False return False
self._cognito_token = json_data["cognitoUser"]["Token"] self._cognito_token = json_data.get("cognitoUser", {}).get("Token", "")
if not self._cognito_token:
_LOGGER.error(json_data)
raise exceptions.HonAuthenticationError()
return True return True
async def authenticate(self) -> None: async def authenticate(self) -> None:

View File

@ -1,4 +1,4 @@
from typing import Dict, Any from typing import Dict, Any, List
from pyhon.parameter.base import HonParameter from pyhon.parameter.base import HonParameter
@ -19,3 +19,7 @@ class HonParameterFixed(HonParameter):
def value(self, value: str | float) -> None: def value(self, value: str | float) -> None:
# Fixed values seems being not so fixed as thought # Fixed values seems being not so fixed as thought
self._value = value self._value = value
@property
def values(self) -> List[str]:
return list(str(self.value))

View File

@ -1,4 +1,4 @@
from typing import List, TYPE_CHECKING from typing import List, TYPE_CHECKING, Dict
from pyhon.parameter.enum import HonParameterEnum from pyhon.parameter.enum import HonParameterEnum
@ -13,7 +13,7 @@ class HonParameterProgram(HonParameterEnum):
super().__init__(key, {}) super().__init__(key, {})
self._command = command self._command = command
self._value: str = command.program self._value: str = command.program
self._values: List[str] = list(command.programs) self._programs: Dict[str, "HonCommand"] = command.programs
self._typology: str = "enum" self._typology: str = "enum"
@property @property
@ -25,9 +25,9 @@ class HonParameterProgram(HonParameterEnum):
if value in self.values: if value in self.values:
self._command.program = value self._command.program = value
else: else:
raise ValueError(f"Allowed values {self._values}") raise ValueError(f"Allowed values {self.values}")
@property @property
def values(self) -> List[str]: def values(self) -> List[str]:
values = [v for v in self._values if all(f not in v for f in self._FILTER)] values = [v for v in self._programs if all(f not in v for f in self._FILTER)]
return sorted(values) return sorted(values)

View File

@ -1,4 +1,4 @@
from typing import Dict, Any from typing import Dict, Any, List
from pyhon.parameter.base import HonParameter from pyhon.parameter.base import HonParameter
@ -47,3 +47,7 @@ class HonParameterRange(HonParameter):
raise ValueError( raise ValueError(
f"Allowed: min {self._min} max {self._max} step {self._step}" f"Allowed: min {self._min} max {self._max} step {self._step}"
) )
@property
def values(self) -> List[str]:
return [str(i) for i in range(int(self.min), int(self.max) + 1, int(self.step))]

View File

@ -7,7 +7,7 @@ with open("README.md", "r") as f:
setup( setup(
name="pyhOn", name="pyhOn",
version="0.8.0b5", version="0.8.3",
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,