1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 importsocket4 importjson5 from xm_gw importudp_token_key6
7
8 classudp_gw():9 def __init__(self, ip_gateway=‘192.168.8.100‘):10 self.ip_port_zu43 = (‘224.0.0.50‘, 4321)11 self.ip_port_single = (ip_gateway, 9898)12 self.ip_port_zu9898=(‘224.0.0.50‘, 9898)13
14 defwhois(self):15 s =socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0)16 comd = {‘cmd‘: ‘whois‘}17 order =json.dumps(comd)18 s.sendto(bytes(order, encoding="utf-8"), self.ip_port_zu43)19 data_bytes, addr = s.recvfrom(1024)20 data_dic = json.loads(str(data_bytes, encoding=‘utf-8‘))21 s.close()22 returndata_dic23
24 defget_id_list(self):25 s =socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0)26 comd = {‘cmd‘: ‘get_id_list‘}27 order =json.dumps(comd)28 s.sendto(bytes(order, encoding="utf-8"), self.ip_port_single)29 data_bytes, addr = s.recvfrom(1024)30 data_dic = json.loads(str(data_bytes, encoding=‘utf-8‘))31 s.close()32 returndata_dic33
34 defread_sid(self, sid):35 s =socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0)36 comd = {‘cmd‘: ‘read‘, ‘sid‘: sid}37 order =json.dumps(comd)38 s.sendto(bytes(order, encoding="utf-8"), self.ip_port_single)39 data_bytes, addr = s.recvfrom(1024)40 data_dic = json.loads(str(data_bytes, encoding=‘utf-8‘))41 s.close()42 returndata_dic43
44 defwrite_plug(self, status):45 s =socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0)46 key_encrypt =udp_token_key.get_token_encrypty()47 comd = {"cmd": "write", "model": "plug", "sid": "158d0001b84d9a", "short_id": 46384,48 "data": {"status": status, ‘key‘: key_encrypt}}49 order =json.dumps(comd)50 s.sendto(bytes(order, encoding="utf-8"), self.ip_port_single)51 data_bytes, addr = s.recvfrom(1024)52 data_dic = json.loads(str(data_bytes, encoding=‘utf-8‘))53 s.close()54 returndata_dic55
56 defread_all_sid(self):57 s =socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0)58 ls = json.loads(self.get_id_list().get(‘data‘))59 ls_sensor_state =[]60 for sid inls:61 comd = {‘cmd‘: ‘read‘, ‘sid‘: sid}62 order =json.dumps(comd)63 s.sendto(bytes(order, encoding="utf-8"), self.ip_port_single)64 data_bytes, addr = s.recvfrom(1024)65 data_dic = json.loads(str(data_bytes, encoding=‘utf-8‘))66 #print(data_dic)
67 ls_sensor_state.append(data_dic)68 s.close()69 returnls_sensor_state70
71 defget_dict_model_sid(self):72 dic_gw=self.whois()73 ls=self.read_all_sid()74 dic_model_sid ={}75 for dic inls:76 model = dic.get(‘model‘)77 sid = dic.get(‘sid‘)78 dic_model_sid[model] =sid79 dic_model_sid[‘gateway‘] = dic_gw.get(‘sid‘)80 returndic_model_sid81
82
83 if __name__==‘__main__‘:84 importtime85 #{‘plug‘: ‘158d0001b84d9a‘, ‘switch‘: ‘158d0001c10bd7‘, ‘sensor_ht‘: ‘158d0001e87bd9‘,
86 #‘magnet‘: ‘158d0001bb3daf‘, ‘motion‘: ‘158d0001c2f110‘, ‘gateway‘: ‘7811dcb38599‘}
87 gw=udp_gw(‘192.168.31.150‘)88 tmp = gw.read_sid(‘158d0001b84d9a‘)89 #print(tmp1)
90 #time.sleep(5)
91 #gw.write_plug(‘off‘)
92 #time.sleep(5)
93 #tmp=gw.read_sid(‘158d0001b84d9a‘)
94
95 print(tmp)