Skip to content

Commit

Permalink
Экспериментальная поддержка нескольких устройств
Browse files Browse the repository at this point in the history
  • Loading branch information
and7ey committed Jun 4, 2024
1 parent 578d005 commit 67f9b25
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 11 deletions.
9 changes: 9 additions & 0 deletions __init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,23 @@

from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.loader import async_get_integration
import asyncio
from . import api
from .const import DOMAIN
import logging


_LOGGER = logging.getLogger(__name__)

PLATFORMS: list[str] = ["climate"]



async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
integration = await async_get_integration(hass, DOMAIN)
_LOGGER.debug(f'Integration version: {integration.version}')

haier_object = api.Haier(hass, entry.data["email"], entry.data["password"])
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = haier_object
await hass.async_add_executor_job(
Expand Down
22 changes: 12 additions & 10 deletions api.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,16 +123,18 @@ def pull_data(self):
if item.get("contractName", "") == "deviceList":
state_data = item.get("state", {})
state_json = json.loads(state_data)
# haierevo://device?deviceId=12:34:56:78:90:68&type=AC&serialNum=AAC0M1E0000000000000&uitype=AC_BASE
device_title = state_json.get('items', [{}])[0].get('title', '') # only one device is supported
device_link = state_json.get('items', [{}])[0].get('action', {}).get('link', '')
parsed_link = urlparse(device_link)
query_params = parse_qs(parsed_link.query)
device_mac = query_params.get('deviceId', [''])[0]
device_mac = device_mac.replace('%3A', ':')
device_serial = query_params.get('serialNum', [''])[0]
_LOGGER.debug(f"Received device successfully, device title {device_title}, device mac {device_mac}, device serial {device_serial}")
self.devices.append(HaierAC(device_mac, device_serial, device_title, self))
devices = state_json.get('items', [{}])
for d in devices:
# haierevo://device?deviceId=12:34:56:78:90:68&type=AC&serialNum=AAC0M1E0000000000000&uitype=AC_BASE
device_title = d.get('title', '') # only one device is supported
device_link = d.get('action', {}).get('link', '')
parsed_link = urlparse(device_link)
query_params = parse_qs(parsed_link.query)
device_mac = query_params.get('deviceId', [''])[0]
device_mac = device_mac.replace('%3A', ':')
device_serial = query_params.get('serialNum', [''])[0]
_LOGGER.debug(f"Received device successfully, device title {device_title}, device mac {device_mac}, device serial {device_serial}")
self.devices.append(HaierAC(device_mac, device_serial, device_title, self))
break

else:
Expand Down
2 changes: 1 addition & 1 deletion manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@
"iot_class": "cloud_polling",
"issue_tracker": "https://github.com/and7ey/haier_evo/issues",
"requirements": ["requests"],
"version": "0.2.0",
"version": "0.2.1",
"zeroconf": []
}

0 comments on commit 67f9b25

Please sign in to comment.