Read out connection
This commit is contained in:
parent
1ef5f7a64d
commit
0f630e854e
5 changed files with 31 additions and 5 deletions
|
@ -18,7 +18,7 @@ pip install pyhOn
|
||||||
To get an idea of what is possible, use the commandline-tool `pyhOn`. This command requests all available options of connected appliances from the hOn api of your Haier Account.
|
To get an idea of what is possible, use the commandline-tool `pyhOn`. This command requests all available options of connected appliances from the hOn api of your Haier Account.
|
||||||
```commandline
|
```commandline
|
||||||
$ pyhOn --user example@mail.com --password pass123
|
$ pyhOn --user example@mail.com --password pass123
|
||||||
========== Waschmaschine ==========
|
========== WM - Waschmaschine ==========
|
||||||
commands:
|
commands:
|
||||||
pauseProgram: pauseProgram command
|
pauseProgram: pauseProgram command
|
||||||
resumeProgram: resumeProgram command
|
resumeProgram: resumeProgram command
|
||||||
|
@ -31,7 +31,6 @@ data:
|
||||||
antiAllergyStatus: 0
|
antiAllergyStatus: 0
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
The claim is, to see everything what you can see in your hOn app and to execute everything you can execute there.
|
|
||||||
|
|
||||||
## Python-API
|
## Python-API
|
||||||
### List devices
|
### List devices
|
||||||
|
@ -82,3 +81,7 @@ _Unfortunately I don't have any more Haier appliances..._
|
||||||
|
|
||||||
## Usage example
|
## Usage example
|
||||||
This library is used for the custom [HomeAssistant Integration "Haier hOn"](https://github.com/Andre0512/hOn).
|
This library is used for the custom [HomeAssistant Integration "Haier hOn"](https://github.com/Andre0512/hOn).
|
||||||
|
|
||||||
|
## Contribution
|
||||||
|
Any kind of contribution is welcome!
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,7 @@ async def main():
|
||||||
password = getpass("Password for hOn account: ")
|
password = getpass("Password for hOn account: ")
|
||||||
async with HonConnection(user, password) as hon:
|
async with HonConnection(user, password) as hon:
|
||||||
for device in hon.devices:
|
for device in hon.devices:
|
||||||
print("=" * 10, device.nick_name, "=" * 10)
|
print("=" * 10, device.appliance_type_name, "-", device.nick_name, "=" * 10)
|
||||||
pretty_print({"commands": device.commands})
|
pretty_print({"commands": device.commands})
|
||||||
pretty_print({"data": device.data})
|
pretty_print({"data": device.data})
|
||||||
|
|
||||||
|
|
7
pyhon/appliances/wm.py
Normal file
7
pyhon/appliances/wm.py
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
class Appliance:
|
||||||
|
def __init__(self, data):
|
||||||
|
self._data = data
|
||||||
|
|
||||||
|
def get(self):
|
||||||
|
self._data["connected"] = self._data["lastConnEvent.category"] == "CONNECTED"
|
||||||
|
return self._data
|
|
@ -1,9 +1,14 @@
|
||||||
|
import importlib
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
from pyhon.commands import HonCommand
|
from pyhon.commands import HonCommand
|
||||||
|
|
||||||
|
|
||||||
class HonDevice:
|
class HonDevice:
|
||||||
def __init__(self, connector, appliance):
|
def __init__(self, connector, appliance):
|
||||||
self._appliance = appliance
|
self._appliance = appliance
|
||||||
|
for values in self._appliance.pop("attributes"):
|
||||||
|
self._appliance[values["parName"]] = values["parValue"]
|
||||||
self._connector = connector
|
self._connector = connector
|
||||||
self._appliance_model = {}
|
self._appliance_model = {}
|
||||||
|
|
||||||
|
@ -123,6 +128,10 @@ class HonDevice:
|
||||||
def statistics(self):
|
def statistics(self):
|
||||||
return self._statistics
|
return self._statistics
|
||||||
|
|
||||||
|
@property
|
||||||
|
def appliance(self):
|
||||||
|
return self._appliance
|
||||||
|
|
||||||
async def load_commands(self):
|
async def load_commands(self):
|
||||||
raw = await self._connector.load_commands(self)
|
raw = await self._connector.load_commands(self)
|
||||||
self._appliance_model = raw.pop("applianceModel")
|
self._appliance_model = raw.pop("applianceModel")
|
||||||
|
@ -160,6 +169,8 @@ class HonDevice:
|
||||||
data = await self._connector.load_attributes(self)
|
data = await self._connector.load_attributes(self)
|
||||||
for name, values in data.get("shadow").get("parameters").items():
|
for name, values in data.get("shadow").get("parameters").items():
|
||||||
self._attributes[name] = values["parNewVal"]
|
self._attributes[name] = values["parNewVal"]
|
||||||
|
for name, value in data.get("lastConnEvent").items():
|
||||||
|
self._attributes[f"lastConnEvent.{name}"] = value
|
||||||
|
|
||||||
async def load_statistics(self):
|
async def load_statistics(self):
|
||||||
self._statistics = await self._connector.load_statistics(self)
|
self._statistics = await self._connector.load_statistics(self)
|
||||||
|
@ -169,4 +180,9 @@ class HonDevice:
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def data(self):
|
def data(self):
|
||||||
return self.attributes | self.parameters | self._appliance | self._statistics
|
result = self.attributes | self.parameters | self.appliance | self._statistics
|
||||||
|
try:
|
||||||
|
extra = importlib.import_module(f'appliances.{self.appliance_type_name.lower()}')
|
||||||
|
return result | extra.Appliance(result).get()
|
||||||
|
except ModuleNotFoundError:
|
||||||
|
return result
|
||||||
|
|
2
setup.py
2
setup.py
|
@ -7,7 +7,7 @@ with open("README.md", "r") as f:
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="pyhOn",
|
name="pyhOn",
|
||||||
version="0.2.1",
|
version="0.2.2",
|
||||||
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,
|
||||||
|
|
Loading…
Reference in a new issue