import asyncio, websockets, time

async def run():
    uri = "ws://192.168.40.90:8266"
    async with websockets.connect(uri, ping_interval=None, ping_timeout=None) as ws:
        data = await asyncio.wait_for(ws.recv(), timeout=5)
        await ws.send(b'claw2287\r\n')
        await asyncio.sleep(0.5)
        data = await asyncio.wait_for(ws.recv(), timeout=5)
        
        await ws.send(b'\x03')
        await asyncio.sleep(0.5)
        try:
            await asyncio.wait_for(ws.recv(), timeout=1)
        except: pass
        
        cmd = b"exec(open('/dtu_hm_provision.py').read())\r\n"
        await ws.send(cmd)
        
        deadline = time.time() + 80
        while time.time() < deadline:
            try:
                data = await asyncio.wait_for(ws.recv(), timeout=3)
                if isinstance(data, bytes):
                    print(data.decode('utf-8', errors='replace'), end='', flush=True)
            except asyncio.TimeoutError:
                pass
            except Exception as e:
                print(f"\nWS Error: {e}")
                break

asyncio.run(run())
