diff --git a/devices/protocols/ZwaveJS/xaal/zwavejs/gw.py b/devices/protocols/ZwaveJS/xaal/zwavejs/gw.py index 829265e67aa6578054f48228c7612e04448c45f3..82fb319cd91d857952b050b2efb3f8bb4ae4af44 100644 --- a/devices/protocols/ZwaveJS/xaal/zwavejs/gw.py +++ b/devices/protocols/ZwaveJS/xaal/zwavejs/gw.py @@ -1,10 +1,14 @@ # from xaal.lib import tools +import asyncio import pdb import logging from zwave_js_server.client import Client as ZwaveClient from aiohttp.client import ClientSession +from xaal.lib import AsyncEngine, Device +from xaal.schemas import devices + PACKAGE_NAME = 'xaal.zwavejs' logger = logging.getLogger(__name__) @@ -13,17 +17,31 @@ URL = "ws://10.77.3.143:3000" class GW: - def __init__(self, engine): + def __init__(self, engine: AsyncEngine): self.engine = engine logger.debug("ZwaveJS gateway initialized") engine.on_start(self.start) + gw = devices.gateway() + gw.new_attribute("gw", self) + engine.add_device(gw) async def start(self): sess = ClientSession() self.client = ZwaveClient(URL, sess) await self.client.connect() - await self.client.initialize() - await self.client.receive_until_closed() + self.ready = asyncio.Event() + self.engine.new_task(self.client.listen(self.ready)) + # await self.client.listen(ready) + logger.warning("Done") + await self.run() + + async def run(self): + await self.ready.wait() + # logger.warning(self.client.controller.nodes) + logger.warning("ZwaveJS ready") + nodes = self.client.driver.controller.nodes + for node in nodes: + logger.warning(node) def setup(eng):