This commit is contained in:
Andre Basche 2023-02-13 03:36:09 +01:00
parent cf481e5f13
commit 984d1b91b7
5 changed files with 23 additions and 14 deletions

View file

@ -1,3 +1,4 @@
import asyncio
import json import json
import logging import logging
import secrets import secrets
@ -6,20 +7,20 @@ from typing import List
import aiohttp as aiohttp import aiohttp as aiohttp
import const from pyhon import const
from auth import HonAuth from pyhon.auth import HonAuth
from device import HonDevice from pyhon.device import HonDevice
_LOGGER = logging.getLogger() _LOGGER = logging.getLogger()
class HonConnection: class HonConnection:
def __init__(self, email, password) -> None: def __init__(self, email, password, session=None) -> None:
super().__init__() super().__init__()
self._email = email self._email = email
self._password = password self._password = password
self._request_headers = {"Content-Type": "application/json"} self._request_headers = {"Content-Type": "application/json"}
self._session = None self._session = session
self._devices = [] self._devices = []
self._mobile_id = secrets.token_hex(8) self._mobile_id = secrets.token_hex(8)
@ -51,7 +52,13 @@ class HonConnection:
headers=await self._headers) as resp: headers=await self._headers) as resp:
try: try:
appliances = (await resp.json())["payload"]["appliances"] appliances = (await resp.json())["payload"]["appliances"]
self._devices = [HonDevice(self, appliance) for appliance in appliances] for appliance in appliances:
device = HonDevice(self, appliance)
await asyncio.gather(*[
device.load_attributes(),
device.load_commands(),
device.load_statistics()])
self._devices.append(device)
except json.JSONDecodeError: except json.JSONDecodeError:
_LOGGER.error("No JSON Data after GET: %s", await resp.text()) _LOGGER.error("No JSON Data after GET: %s", await resp.text())
return False return False

View file

@ -7,7 +7,7 @@ from urllib import parse
import aiohttp as aiohttp import aiohttp as aiohttp
import const from pyhon import const
_LOGGER = logging.getLogger() _LOGGER = logging.getLogger()

View file

@ -1,4 +1,4 @@
from parameter import HonParameterFixed, HonParameterEnum, HonParameterRange from pyhon.parameter import HonParameterFixed, HonParameterEnum, HonParameterRange
class HonCommand: class HonCommand:

View file

@ -1,4 +1,4 @@
from commands import HonCommand from pyhon.commands import HonCommand
class HonDevice: class HonDevice:
@ -147,3 +147,6 @@ class HonDevice:
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)
async def update(self):
await self.load_attributes()

View file

@ -1,22 +1,21 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
from setuptools import setup from setuptools import setup, find_packages
with open("README.md", "r") as f: with open("README.md", "r") as f:
long_description = f.read() long_description = f.read()
setup( setup(
name="pyhon", name="pyhon",
version="0.0.1", version="0.0.5",
author="Andre Basche", author="Andre Basche",
description="Control Haier devices with pyhon", description="Control hOn devices with python",
long_description=long_description, long_description=long_description,
long_description_content_type='text/markdown', long_description_content_type='text/markdown',
url="https://github.com/Andre0512/pyhon", url="https://github.com/Andre0512/pyhon",
license="MIT", license="MIT",
platforms="any", platforms="any",
package_dir={"": "pyhon"}, packages=find_packages(),
packages=[""],
include_package_data=True, include_package_data=True,
python_requires=">=3.10", python_requires=">=3.10",
install_requires=["aiohttp"] install_requires=["aiohttp"]