46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
|
"""Code to handle a Motion Gateway."""
|
||
|
import logging
|
||
|
import socket
|
||
|
|
||
|
from motionblinds import MotionGateway
|
||
|
|
||
|
_LOGGER = logging.getLogger(__name__)
|
||
|
|
||
|
|
||
|
class ConnectMotionGateway:
|
||
|
"""Class to async connect to a Motion Gateway."""
|
||
|
|
||
|
def __init__(self, hass):
|
||
|
"""Initialize the entity."""
|
||
|
self._hass = hass
|
||
|
self._gateway_device = None
|
||
|
|
||
|
@property
|
||
|
def gateway_device(self):
|
||
|
"""Return the class containing all connections to the gateway."""
|
||
|
return self._gateway_device
|
||
|
|
||
|
def update_gateway(self):
|
||
|
"""Update all information of the gateway."""
|
||
|
self.gateway_device.GetDeviceList()
|
||
|
self.gateway_device.Update()
|
||
|
|
||
|
async def async_connect_gateway(self, host, key):
|
||
|
"""Connect to the Motion Gateway."""
|
||
|
_LOGGER.debug("Initializing with host %s (key %s...)", host, key[:3])
|
||
|
self._gateway_device = MotionGateway(ip=host, key=key)
|
||
|
try:
|
||
|
# update device info and get the connected sub devices
|
||
|
await self._hass.async_add_executor_job(self.update_gateway)
|
||
|
except socket.timeout:
|
||
|
_LOGGER.error(
|
||
|
"Timeout trying to connect to Motion Gateway with host %s", host
|
||
|
)
|
||
|
return False
|
||
|
_LOGGER.debug(
|
||
|
"Motion gateway mac: %s, protocol: %s detected",
|
||
|
self.gateway_device.mac,
|
||
|
self.gateway_device.protocol,
|
||
|
)
|
||
|
return True
|