小米手机 开发app python_用python实现与小米网关通讯

copycode.gif

1 #!/usr/bin/env python

2 # -*- coding:utf-8 -*-

3 import socket

4 import json

5 from xm_gw import udp_token_key

6

7

8 class udp_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 def whois(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 return data_dic

23

24 def get_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 return data_dic

33

34 def read_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 return data_dic

43

44 def write_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 return data_dic

55

56 def read_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 in ls:

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 return ls_sensor_state

70

71 def get_dict_model_sid(self):

72 dic_gw=self.whois()

73 ls=self.read_all_sid()

74 dic_model_sid = {}

75 for dic in ls:

76 model = dic.get('model')

77 sid = dic.get('sid')

78 dic_model_sid[model] = sid

79 dic_model_sid['gateway'] = dic_gw.get('sid')

80 return dic_model_sid

81

82

83 if __name__=='__main__':

84 import time

85 #{'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)

copycode.gif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值