36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
"""Helper and wrapper classes for Gree module."""
|
|
from typing import List
|
|
|
|
from greeclimate.device import Device, DeviceInfo
|
|
from greeclimate.discovery import Discovery
|
|
from greeclimate.exceptions import DeviceNotBoundError
|
|
|
|
from homeassistant import exceptions
|
|
|
|
|
|
class DeviceHelper:
|
|
"""Device search and bind wrapper for Gree platform."""
|
|
|
|
@staticmethod
|
|
async def try_bind_device(device_info: DeviceInfo) -> Device:
|
|
"""Try and bing with a discovered device.
|
|
|
|
Note the you must bind with the device very quickly after it is discovered, or the
|
|
process may not be completed correctly, raising a `CannotConnect` error.
|
|
"""
|
|
device = Device(device_info)
|
|
try:
|
|
await device.bind()
|
|
except DeviceNotBoundError as exception:
|
|
raise CannotConnect from exception
|
|
return device
|
|
|
|
@staticmethod
|
|
async def find_devices() -> List[DeviceInfo]:
|
|
"""Gather a list of device infos from the local network."""
|
|
return await Discovery.search_devices()
|
|
|
|
|
|
class CannotConnect(exceptions.HomeAssistantError):
|
|
"""Error to indicate we cannot connect."""
|