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):