700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 阿里云iot haas Micropython连接esp32;esp32物联网设备上报信息及云端信息获取;远

阿里云iot haas Micropython连接esp32;esp32物联网设备上报信息及云端信息获取;远

时间:2021-09-11 06:41:41

相关推荐

阿里云iot haas Micropython连接esp32;esp32物联网设备上报信息及云端信息获取;远

参考:/HaaSTech/article/details/125975052

https://iot./

/A/x9J2X8nZd6/

首先烧录阿里云iot haas固件:

https://haas./haasapi/index.html#/Python/docs/zh-CN/startup/ESP32_startup

***直接下载后可以通过vscode插件烧录;烧录好后也可以在thony编辑运行代码

1、阿里云iot连接esp32

from aliyunIoT import Device# iot组件是连接阿里云物联网平台的组件import network # 物联网平台连接标志位iot_connected = Falsewlan = None# 三元组信息productKey = ""deviceName = ""deviceSecret = ""# 物联网设备实例device = None# Wi-Fi SSID和Password设置wifiSsid = ""wifiPassword = ""# 等待Wi-Fi成功连接到路由器def get_wifi_status():global wlanwifi_connected = Falsewlan.active(True) #激活界面wlan.scan() #扫描接入点#print("start to connect ", wifiSsid)wlan.connect(wifiSsid, wifiPassword) # 连接到指定的路由器(路由器名称为wifiSsid, 密码为:wifiPassword)while True:wifi_connected = wlan.isconnected() # 获取Wi-Fi连接路由器的状态信息if wifi_connected:print("wifi_connected:", wifi_connected)# Wi-Fi连接成功则退出while循环breakelse:utime.sleep(0.5)print("wifi_connected:", wifi_connected)ifconfig = wlan.ifconfig()#获取接口的IP/netmask/gw/DNS地址print(ifconfig)utime.sleep(0.5)## 连接阿里云物联网平台def connect_lk(productKey, deviceName, deviceSecret):global device, iot_connectedkey_info = {'region': 'cn-shanghai','productKey': productKey,'deviceName': deviceName,'deviceSecret': deviceSecret,'keepaliveSec': 60}# 将三元组信息设置到iot组件中device = Device()# 设定连接到物联网平台的回调函数,如果连接物联网平台成功,则调用on_connect函数device.on(Device.ON_CONNECT, on_connect)# 配置收到云端属性控制指令的回调函数,如果收到物联网平台发送的属性控制消息,则调用on_props函数device.on(Device.ON_PROPS, on_props)# 启动连接阿里云物联网平台过程device.connect(key_info)# 等待设备成功连接到物联网平台while(True):if iot_connected:print('物联网平台连接成功')breakelse:print('sleep for 1 s')utime.sleep(1)print('sleep for 2s')utime.sleep(2)

2、esp32物联网设备上报信息及云端信息获取

参考:https://haas./haasapi/index.html#/?id=haas-python%e7%89%b9%e7%82%b9

https://haas./solution/detail/solution?versionId=800A5A2601C534EA00000002&dataId=800A5A2601C534EA

***post_default_value;可以自定义设备信息日志,上传阿里云

def post_props(data):global deviceif isinstance(data, dict):data = {'params': ujson.dumps(data)}ret = device.postProps(data)return retdef post_default_value():global valuestring = {"on": value}post_props(string)

# 设置props 事件接收函数(当云平台向设备下发属性时)def on_props(request):global valuetry:props = eval(request['params'])# 获取dict状态字段 注意要验证键存在 否则会抛出异常if "on" in props.keys():print(props)value = props["on"]if value==1:led.value(1)else:led.value(0)post_default_value()except Exception as e:print("#"*8,e)

3、阿里云远程控制esp32设备自带led熄灭

**提前要在阿里云iot后台设置好产品和设备,定义好功能定义自定义属性格式发布上线;设置好产品发布后再去绑定设备

**标识符唯一,这是数据传输识别的key值

# -*- coding: UTF-8 -*-from aliyunIoT import Device# iot组件是连接阿里云物联网平台的组件import network # Wi-Fi功能所在库import ujson # json字串解析库import utime # 延时API所在组件from machine import Pinvalue = 0led = Pin(2, Pin.OUT)led.value(0)# 物联网平台连接标志位iot_connected = Falsewlan = None# 三元组信息productKey = ""deviceName = ""deviceSecret = ""# 物联网设备实例device = None# Wi-Fi SSID和Password设置wifiSsid = ""wifiPassword = ""# 等待Wi-Fi成功连接到路由器def get_wifi_status():global wlanwifi_connected = Falsewlan.active(True) #激活界面wlan.scan() #扫描接入点#print("start to connect ", wifiSsid)wlan.connect(wifiSsid, wifiPassword) # 连接到指定的路由器(路由器名称为wifiSsid, 密码为:wifiPassword)while True:wifi_connected = wlan.isconnected() # 获取Wi-Fi连接路由器的状态信息if wifi_connected:print("wifi_connected:", wifi_connected)# Wi-Fi连接成功则退出while循环breakelse:utime.sleep(0.5)print("wifi_connected:", wifi_connected)ifconfig = wlan.ifconfig()#获取接口的IP/netmask/gw/DNS地址print(ifconfig)utime.sleep(0.5)# 物联网平台连接成功的回调函数def on_connect(data):global iot_connectediot_connected = True# 设置props 事件接收函数(当云平台向设备下发属性时)def on_props(request):global valuetry:props = eval(request['params'])# 获取dict状态字段 注意要验证键存在 否则会抛出异常###on是标识符key值;这里实现云端控制设备灯熄灭if "on" in props.keys(): print(props)value = props["on"]if value==1:led.value(1)else:led.value(0)post_default_value()except Exception as e:print("#"*8,e)def post_props(data):global deviceif isinstance(data, dict):data = {'params': ujson.dumps(data)}ret = device.postProps(data)return retdef post_default_value():global valuestring = {"on": value}post_props(string)def connect_lk(productKey, deviceName, deviceSecret):global device, iot_connectedkey_info = {'region': 'cn-shanghai','productKey': productKey,'deviceName': deviceName,'deviceSecret': deviceSecret,'keepaliveSec': 60}# 将三元组信息设置到iot组件中device = Device()# 设定连接到物联网平台的回调函数,如果连接物联网平台成功,则调用on_connect函数device.on(Device.ON_CONNECT, on_connect)# 配置收到云端属性控制指令的回调函数,如果收到物联网平台发送的属性控制消息,则调用on_props函数device.on(Device.ON_PROPS, on_props)# 启动连接阿里云物联网平台过程device.connect(key_info)# 等待设备成功连接到物联网平台while(True):if iot_connected:print('物联网平台连接成功')breakelse:print('sleep for 1 s')utime.sleep(1)print('sleep for 2s')utime.sleep(2)if __name__ == '__main__' :wlan = network.WLAN(network.STA_IF) #创建WLAN对象# 请替换物联网平台申请到的产品和设备信息,可以参考文章:/HaaSTech/article/details/114360517# global productKey, deviceName, deviceSecret ,on_request, on_playget_wifi_status()connect_lk(productKey, deviceName, deviceSecret)while True:post_default_value()utime.sleep(2)

***可以后台调试测试效果

4、网页界面交互远程控制

参考:https://haas./solution/detail/solution?versionId=800A5A2601C534EA00000002&dataId=800A5A2601C534EA

**https://studio./ 通过 iot studio工具创建页面及关联阿里云iot的产品与设备及创建页面应用;发布后既可以通过网页链接控制

**按钮开关可以知道状态,样式里设置开关数据就可以;状态信息text展示设备信息,在

样式里设置文本数据源就行

手机浏览器打开发布后的链接控制:

阿里云iot haas Micropython连接esp32;esp32物联网设备上报信息及云端信息获取;远程控制设备自带led熄灭;网页界面交互远程控制

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。