Skip to content

Commit

Permalink
Fix some stuff for hoover appliances
Browse files Browse the repository at this point in the history
  • Loading branch information
Andre0512 committed Apr 24, 2023
1 parent 9ee5dbc commit 5db13a9
Show file tree
Hide file tree
Showing 9 changed files with 31 additions and 19 deletions.
Empty file modified pyhon/__main__.py
100644 → 100755
Empty file.
11 changes: 5 additions & 6 deletions pyhon/appliance.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

from pyhon import helper
from pyhon.commands import HonCommand
from pyhon.parameter.base import HonParameter
from pyhon.parameter.fixed import HonParameterFixed

if TYPE_CHECKING:
Expand Down Expand Up @@ -169,7 +170,8 @@ async def load_commands(self):
def settings(self):
result = {}
for name, command in self._commands.items():
for key, setting in command.settings.items():
for key in command.setting_keys:
setting = command.settings.get(key, HonParameter(key, {}))
result[f"{name}.{key}"] = setting
if self._extra:
return self._extra.settings(result)
Expand All @@ -187,10 +189,7 @@ def parameters(self):

async def load_attributes(self):
self._attributes = await self._api.load_attributes(self)
_LOGGER.warning(self._attributes)
for name, values in (
self._attributes.pop("shadow", {}).get("parameters", {}).items()
):
for name, values in self._attributes.pop("shadow").get("parameters").items():
self._attributes.setdefault("parameters", {})[name] = values["parNewVal"]

async def load_statistics(self):
Expand Down Expand Up @@ -221,4 +220,4 @@ def diagnose(self):
{"commands": helper.create_command(self.commands)},
whitespace="\u200B \u200B ",
)
return result.replace(self.mac_address, "12-34-56-78-90-ab")
return result.replace(self.mac_address, "xx-xx-xx-xx-xx-xx")
7 changes: 4 additions & 3 deletions pyhon/appliances/td.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,13 @@ def data(self, data):
data["attributes"]["parameters"]["machMode"] = "0"
data["active"] = bool(data.get("attributes", {}).get("activity"))
data["pause"] = data["attributes"]["parameters"]["machMode"] == "3"
program = int(data["attributes"]["parameters"]["prCode"])
data["programName"] = self.parent.settings["startProgram.program"].ids[program]
if program := int(data["attributes"]["parameters"]["prCode"]):
ids = self.parent.settings["startProgram.program"].ids
data["programName"] = ids.get(program, "")
return data

def settings(self, settings):
dry_level = settings["startProgram.dryLevel"]
dry_level = settings.get("startProgram.dryLevel")
if isinstance(dry_level, HonParameterFixed) and dry_level.value == "11":
settings.pop("startProgram.dryLevel", None)
return settings
2 changes: 1 addition & 1 deletion pyhon/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def __init__(
self._api: HonAPI = api
self._appliance: "HonAppliance" = appliance
self._name: str = name
self._programs: Optional[Dict[str, "HonCommand"]] = programs or {}
self._programs: Optional[Dict[str, "HonCommand"]] = programs
self._program_name: str = program_name
self._description: str = attributes.get("description", "")
self._parameters: Dict[str, HonParameter] = self._create_parameters(
Expand Down
14 changes: 13 additions & 1 deletion pyhon/helper.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
from pyhon.parameter.base import HonParameter


def key_print(data, key="", start=True):
result = ""
if isinstance(data, list):
Expand Down Expand Up @@ -44,12 +47,21 @@ def pretty_print(data, key="", intend=0, is_list=False, whitespace=" "):
return result


def get_parameter(command, parameter):
if programs := command.programs:
for program in programs.values():
if data := program.settings.get(parameter):
return data
return command.settings.get(parameter)


def create_command(commands, concat=False):
result = {}
for name, command in commands.items():
if not concat:
result[name] = {}
for parameter, data in command.settings.items():
for parameter in command.setting_keys:
data = get_parameter(command, parameter)
if data.typology == "enum":
value = data.values
elif data.typology == "range":
Expand Down
2 changes: 1 addition & 1 deletion pyhon/hon.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def appliances(self) -> List[HonAppliance]:

async def _create_appliance(self, appliance_data: Dict[str, Any], zone=0) -> None:
appliance = HonAppliance(self._api, appliance_data, zone=zone)
if appliance.mac_address is None:
if appliance.mac_address == "":
return
await asyncio.gather(
*[
Expand Down
6 changes: 5 additions & 1 deletion pyhon/parameter/base.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from typing import Dict, Any
from typing import Dict, Any, List


class HonParameter:
Expand All @@ -17,6 +17,10 @@ def key(self) -> str:
def value(self) -> str | float:
return self._value if self._value is not None else "0"

@property
def values(self) -> List[str]:
return list(str(self.value))

@property
def category(self) -> str:
return self._category
Expand Down
6 changes: 1 addition & 5 deletions pyhon/parameter/fixed.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from typing import Dict, Any, List
from typing import Dict, Any

from pyhon.parameter.base import HonParameter

Expand All @@ -19,7 +19,3 @@ def value(self) -> str | float:
def value(self, value: str | float) -> None:
# Fixed values seems being not so fixed as thought
self._value = value

@property
def values(self) -> List[str]:
return list(str(self.value))
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

setup(
name="pyhOn",
version="0.8.6",
version="0.9.0",
author="Andre Basche",
description="Control hOn devices with python",
long_description=long_description,
Expand Down

0 comments on commit 5db13a9

Please sign in to comment.