# Run this on PC: python capture.py import tinytuya import socket import threading import time # Pinguin DEVICE_IP = '192.168.1.55' DEVICE_ID = '19' LOCAL_KEY = '5b' # Monkey-patch socket to capture raw bytes _orig_connect = socket.socket.connect _orig_send = socket.socket.send _orig_recv = socket.socket.recv _orig_sendall = socket.socket.sendall def patched_connect(self, addr): print('[SOCKET] connect to', addr) return _orig_connect(self, addr) def patched_send(self, data, *args): print('[SOCKET] send %d bytes:' % len(data), ' '.join('%02x' % b for b in data)) return _orig_send(self, data, *args) def patched_recv(self, size, *args): data = _orig_recv(self, size, *args) print('[SOCKET] recv %d bytes:' % len(data), ' '.join('%02x' % b for b in data)) return data def patched_sendall(self, data, *args): print('[SOCKET] sendall %d bytes:' % len(data), ' '.join('%02x' % b for b in data)) return _orig_sendall(self, data, *args) socket.socket.connect = patched_connect socket.socket.send = patched_send socket.socket.recv = patched_recv socket.socket.sendall = patched_sendall d = tinytuya.OutletDevice( dev_id=DEVICE_ID, address=DEVICE_IP, local_key=LOCAL_KEY, version=3.3 ) d.set_socketTimeout(10) data = d.status() print('STATUS:', data)