Compare commits

...

6 Commits

Author SHA1 Message Date
36079c3c77 Add oven and program filter 2023-04-08 04:06:36 +02:00
6d40e73881 Fix missing command attribute 2023-03-22 23:09:48 +01:00
6c3da96a03 Fix not showing device active when running 2023-03-22 22:42:40 +01:00
3c81c46c8b Bump version to v0.4.1 2023-03-21 10:10:49 +01:00
0d92d037a5 Merge pull request #8 from drudgebg/main
Create td.py
2023-03-21 09:58:28 +01:00
5e32dd76c0 Create td.py
Need to work with Tumble Dryers. Tested and work with Tumble Dryer haier HD80-A3959.
2023-03-21 08:39:20 +02:00
8 changed files with 61 additions and 21 deletions

View File

@ -112,7 +112,6 @@ async def main():
attr = "get" if args.get("all") else "pop" attr = "get" if args.get("all") else "pop"
key_print(data["attributes"].__getattribute__(attr)("parameters")) key_print(data["attributes"].__getattribute__(attr)("parameters"))
key_print(data.__getattribute__(attr)("appliance")) key_print(data.__getattribute__(attr)("appliance"))
key_print(data.__getattribute__(attr)("commands"))
key_print(data) key_print(data)
pretty_print(create_command(device.commands, concat=True)) pretty_print(create_command(device.commands, concat=True))
else: else:

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

@ -0,0 +1,16 @@
from pyhon.parameter import HonParameterEnum
class Appliance:
def __init__(self):
filters = ["receipt", "standard, special"]
data = {'defaultValue': filters[0], 'enumValues': filters}
self._program_filter = HonParameterEnum("program_filter", data)
def data(self, data):
return data
def settings(self, settings):
settings["program_filter"] = self._program_filter
settings["startProgram.program"].filter = self._program_filter.value
return settings

10
pyhon/appliances/td.py Normal file
View File

@ -0,0 +1,10 @@
class Appliance:
def data(self, data):
if data["attributes"]["lastConnEvent"]["category"] == "DISCONNECTED":
data["attributes"]["parameters"]["machMode"] = "0"
data["active"] = bool(data.get("attributes", {}).get("activity"))
data["pause"] = data["attributes"]["parameters"]["machMode"] == "3"
return data
def settings(self, settings):
return settings

View File

@ -1,10 +1,10 @@
class Appliance: class Appliance:
def __init__(self, data): def data(self, data):
self._data = data if data["attributes"]["lastConnEvent"]["category"] == "DISCONNECTED":
data["attributes"]["parameters"]["machMode"] = "0"
data["active"] = bool(data.get("attributes", {}).get("activity"))
data["pause"] = data["attributes"]["parameters"]["machMode"] == "3"
return data
def get(self): def settings(self, settings):
if self._data["attributes"]["lastConnEvent"]["category"] == "DISCONNECTED": return settings
self._data["attributes"]["parameters"]["machMode"] = "0"
self._data["active"] = bool(self._data.get("activity"))
self._data["pause"] = self._data["attributes"]["parameters"]["machMode"] == "3"
return self._data

View File

@ -1,10 +1,10 @@
class Appliance: class Appliance:
def __init__(self, data): def data(self, data):
self._data = data if data["attributes"]["lastConnEvent"]["category"] == "DISCONNECTED":
data["attributes"]["parameters"]["machMode"] = "0"
data["active"] = bool(data.get("attributes", {}).get("activity"))
data["pause"] = data["attributes"]["parameters"]["machMode"] == "3"
return data
def get(self): def settings(self, settings):
if self._data["attributes"]["lastConnEvent"]["category"] == "DISCONNECTED": return settings
self._data["attributes"]["parameters"]["machMode"] = "0"
self._data["active"] = bool(self._data.get("activity"))
self._data["pause"] = self._data["attributes"]["parameters"]["machMode"] == "3"
return self._data

View File

@ -18,7 +18,7 @@ class HonDevice:
self._attributes = {} self._attributes = {}
try: try:
self._extra = importlib.import_module(f'pyhon.appliances.{self.appliance_type.lower()}') self._extra = importlib.import_module(f'pyhon.appliances.{self.appliance_type.lower()}').Appliance()
except ModuleNotFoundError: except ModuleNotFoundError:
self._extra = None self._extra = None
@ -124,6 +124,8 @@ class HonDevice:
for name, command in self._commands.items(): for name, command in self._commands.items():
for key, setting in command.settings.items(): for key, setting in command.settings.items():
result[f"{name}.{key}"] = setting result[f"{name}.{key}"] = setting
if self._extra:
return self._extra.settings(result)
return result return result
@property @property
@ -150,5 +152,5 @@ class HonDevice:
result = {"attributes": self.attributes, "appliance": self.appliance, "statistics": self.statistics, result = {"attributes": self.attributes, "appliance": self.appliance, "statistics": self.statistics,
**self.parameters} **self.parameters}
if self._extra: if self._extra:
return result | self._extra.Appliance(result).get() return self._extra.data(result)
return result return result

View File

@ -94,7 +94,7 @@ class HonParameterEnum(HonParameter):
@property @property
def values(self): def values(self):
return sorted([str(value) for value in self._values]) return [str(value) for value in self._values]
@property @property
def value(self): def value(self):
@ -115,6 +115,7 @@ class HonParameterProgram(HonParameterEnum):
self._value = command._program self._value = command._program
self._values = command._multi self._values = command._multi
self._typology = "enum" self._typology = "enum"
self._filter = ""
@property @property
def value(self): def value(self):
@ -126,3 +127,15 @@ class HonParameterProgram(HonParameterEnum):
self._command.set_program(value) self._command.set_program(value)
else: else:
raise ValueError(f"Allowed values {self._values}") raise ValueError(f"Allowed values {self._values}")
@property
def filter(self):
return self._filter
@filter.setter
def filter(self, filter):
self._filter = filter
@property
def values(self):
return sorted([str(value) for value in self._values if not self._filter or self._filter in str(value)])

View File

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