#!/usr/bin/python from subprocess import * import time import pytuya import socket import sys import os from xaplib import Xap plugID = ['000', 'Xxxxx', 'Xxxxx', 'Xxxxx',] plugIP = ['000', 'Xxxxx', 'Xxxxx', 'Xxxxx',] plugKey = ['000', 'Xxxxx', 'Xxxxx', 'Xxxxx',] def hubTraffic(xap): xapmessage, port = xap.receive() parsed = xapmessage.split('\n') #print(parsed[6]) if parsed[6].find('tuya') > 0: for _ in range(3): try: if parsed[5] == 'class=xAPBSC.cmd': state = parsed[12][-2:] #print(state) if state == 'on': state = ' 1' else: state = ' 0' tgt = parsed[6][-1:] tgt = tgt+state switchDevice(tgt) #print(xapmessage) break except socket.error, msg: lost(int(parsed[6][-1:])) continue def lost(plug): p = plug for _ in range(12): try: time.sleep(5) d = pytuya.OutletDevice(plugID[p], plugIP[p], plugKey[p]) data = d.status() # NOTE this does NOT require a valid key print('Reconnecting. Current state: %r' % data['dps']['1']) if data['dps']['1'] == True or data['dps']['1'] == False: break except socket.error, msg: continue if data['dps']['1'] == True or data['dps']['1'] == False: return else: print('End Here') print('Socket Error') exitcode = Popen('bscmsg -t dbzoo.livebox.twitter -x Tuya_plug_failure -s on',shell=True, stdout=PIPE).stdout sys.exit() def switchDevice(patt): data = patt t = int(data[:1]) d = pytuya.OutletDevice(plugID[t], plugIP[t], plugKey[t]) mess = 'Switching plug '+data[:1] print(mess) if int(data[-1:]) == 1: print('on') ndata = d.set_status(True) # This requires a valid key else: print('off') ndata = d.set_status(False) # This requires a valid key Xap("FF000F00","dbzoo.livebox.tuyamanager").run(hubTraffic)