平台建立和
esp8266-3-连接物联网云平台上传数据 是相同的,我们只需要建立一个执行器即可
由于esp8266接收数据一直是阻态(卡在这里,一直等待数据),但云服务器90内无通信就会踢掉esp8266,所以我们使用超时异常来定时发送心跳包给云平台。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54import socket,time import json,onewire from machine import ADC,Pin ip='121.37.241.174' port=8600 my_device = "esp8266_wang" my_key = "44f0d2ac207b44eea5ebb6d5799d45ee" s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect((ip,port)) time.sleep(1) login_dict ={"t":1,"device":"esp8266_wang","key":"44f0d2ac207b44eea5ebb6d5799d45ee","ver":"v0.0.0.0"} login_dict['device']=my_device login_dict['key']=my_key login_json = json.dumps(login_dict) s.send(login_json.encode('utf-8')) msg = s.recv(256) print(msg.decode('utf-8')) print('WIFI成功登录新大陆云平台') led=Pin(16,Pin.OUT,value=1) while True: try: s.settimeout(10) recv_bytes=s.recv(256) recv_str=recv_bytes.decode('utf-8') recv_dict=json.loads(recv_str) if recv_dict['t']==5: print("云平台下发的控制命令") print(recv_str) if recv_dict['apitag'] == 'xmf_ctl': if recv_dict['data']==1: led.value(0) print("灯亮") if recv_dict['data']==0: led.value(1) print("灯灭") except:#超时异常 s.send(b'$OK##')#发送的心跳包 msg=s.recv(256) print(msg.decode('utf-8'))
连接以后可以看见控制esp8266的开关了
下面是读取数据和LED控制集合在一起的代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70import socket,time import json,onewire from machine import ADC,Pin ip='121.37.241.174' port=8600 my_device = "esp8266_wang" my_key = "44f0d2ac207b44eea5ebb6d5799d45ee" s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect((ip,port)) time.sleep(1) login_dict ={"t":1,"device":"esp8266_wang","key":"44f0d2ac207b44eea5ebb6d5799d45ee","ver":"v0.0.0.0"} login_dict['device']=my_device login_dict['key']=my_key login_json = json.dumps(login_dict) s.send(login_json.encode('utf-8')) msg = s.recv(256) print(msg.decode('utf-8')) print('WIFI成功登录新大陆云平台') led=Pin(16,Pin.OUT,value=1) adc=ADC(0) ow=onewire.OneWire(Pin(12)) data_dict = {"t":3,"datatype":1,"datas":{"xmf_guang":367,"xmf_temp":26.77},"msgid":001} m=0 while True: try: s.settimeout(2) recv_bytes=s.recv(256) recv_str=recv_bytes.decode('utf-8') recv_dict=json.loads(recv_str) if recv_dict['t']==4: print("云平返回") if recv_dict['t']==5: print("云平台下发的控制命令") print(recv_str) if recv_dict['apitag'] == 'xmf_ctl': if recv_dict['data']==1: led.value(0) print("灯亮") if recv_dict['data']==0: led.value(1) print("灯灭") except:#超时异常,完成数据上报 m=m+1 adc_value=adc.read() adc_volt=adc_value*(1000/1023) data_dict['datas']['xmf_guang']=adc_volt data_dict['datas']['xmf_temp']=25.5 data_json = json.dumps(data_dict) s.send(data_json.encode('utf-8')) msg=s.recv(256) str = '上报数据成功,第 %d 个数据'%m print(str) print(msg.decode('utf-8'))
最后
以上就是潇洒泥猴桃最近收集整理的关于ESP8266-4-云平台下发指令控制LED的全部内容,更多相关ESP8266-4-云平台下发指令控制LED内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复