目录

前言

一、esp32刷MicroPython固件库

二、创建阿里云产品

1.注册阿里云账号并登录控制台

2.找到物联网平台中的公共实例进入

3.创建产品及设备

4.编辑物模型并发布

5.最后找到刚创建的产品设备查看DeviceSecret一键复制

6.打开mqtt单片机编程工具将刚才复制的设备证书复制进去得到设备三元组用于后面的编程

三、读取温湿度及光照数据通过mqtt上传阿里云

四、设置产品规则引擎

五、应用层的实现


前言

最近做了个课设有点小心得,在这里记录下。


内容主要是基于esp32读取温湿度以及光照强度然后连接路由器通过mqtt协议上传数据到阿里云服务器,最后显示到微信小程序界面,并且可以通过发布主题达到控制传感层的led以及蜂鸣器。

一、esp32刷MicroPython固件库

1、安装MicroPython开发环境uPyCraft

2.选择固件库的.bin文件和COM口刷固件

3.按住esp32开发板的BOOT按钮,直到出现如下界面,则刷新开始

3.运行如下代码,如果esp32开发板上的led闪烁则成功。

二、创建阿里云产品

1.注册阿里云账号并登录控制台

2.找到物联网平台中的公共实例进入

3.创建产品及设备

4.编辑物模型并发布

5.最后找到刚创建的产品设备查看DeviceSecret一键复制

6.打开mqtt单片机编程工具将刚才复制的设备证书复制进去得到设备三元组用于后面的编程

三、读取温湿度及光照数据通过mqtt上传阿里云

代码如下:

from umqtt.simple import MQTTClient
from machine import ADC, Pin
import network
import time
import machine
import dht
from machine import Timer
#wifi账号密码
SSID="dmx"
PASSWORD="dmx12593"
#阿里云mqtt服务器域名(改成自己的)
SERVER ='a1mryuZf1Md.iot-as-mqtt.cn-shanghai.aliyuncs.com'
#三元组(找到mqtt工具上对应的改)
CLIENT_ID = "esp32|securemode=3,signmethod=hmacsha1,timestamp=789|"
username='esp32&a1mryuZf1Md'
password='91eb97701704ffb99977a313c74a7502b8cecb3e'
#这个topic改成matt工具的属性上报那一行
publish_TOPIC = '/sys/a1mryuZf1Md/esp32/thing/event/property/post'
subscribe_TOPIC ='/a1mryuZf1Md/esp32/user/dmx123'
client=None
mydht=None
def sub_cb(topic, msg):  print(msg)if msg == b'{"Led":1}':led.value(1)elif msg == b'{"Led":0}':led.value(0)elif msg == b'{"Beep":1}':beep.value(1)elif msg == b'{"Beep":0}':beep.value(0)def ConnectWifi(ssid,passwd):   #连接wifiglobal wlanwlan=network.WLAN(network.STA_IF)         #create a wlan objectwlan.active(True)                         #Activate the network interfacewlan.disconnect()                         #Disconnect the last connected WiFiwlan.connect(ssid,passwd)                 #connect wifiwhile(wlan.ifconfig()[0]=='0.0.0.0'):time.sleep(1)print(wlan.ifconfig())def apptimerevent(mytimer):try:wsData=ReadTemHum()Light=ReadLight()Led=led.value()Beep=beep.value()mymessage='{"params": {"Temp": %d ,"Hum": %d ,"Light": %d,"Led":%d,"Beep":%d}, "method": "thing.event.property.post"}'%(wsData[0],wsData[1],Light,Led,Beep)client.publish(topic=publish_TOPIC,msg= mymessage, retain=False, qos=0)except Exception as ex_results2:print('exception',ex_results2)mytimer.deinit()def ReadTemHum():   #获取温湿度mydht.measure()tem=mydht.temperature()hum=mydht.humidity()data=[tem,hum]print(data)return datadef ReadLight():adcData=mylight.read()Lightvalu=10240000/(adcData*1.1)-2500 #adc转换Light=round(Lightvalu)  #取整print(Light)return Lightif __name__=='__main__':try:mydht=dht.DHT11(machine.Pin(4)) mylight=ADC(machine.Pin(34))led=Pin(2,Pin.OUT)beep=Pin(5,Pin.OUT)led.value(0)beep.value(0)ConnectWifi(SSID,PASSWORD)client = MQTTClient(CLIENT_ID, SERVER,0,username,password,60)     #create a mqtt clientprint(client)client.set_callback(sub_cb)                         #set callbackclient.connect()                                    #connect mqttclient.subscribe(subscribe_TOPIC)                   #client subscribes to a topicmytimer=Timer(0)mytimer.init(mode=Timer.PERIODIC, period=5000,callback=apptimerevent)   #初始化回调函数while True:client.wait_msg()                                #wait message          except Exception  as ex_results:print('exception1',ex_results)finally:if(client is not None):client.disconnect()#wlan.disconnect()#wlan.active(False)

注意:这里上传的数据格式因为阿里云物模型上报规定需要加上params及method。还有上传的数据的键值 需要和你设置的物模型的标识符一致

eg:{"params":

{"Temp": %d ,

"Hum": %d ,

"Light": %d,

"Led":%d,

"Beep":%d},

"method": "thing.event.property.post"}

四、设置产品规则引擎

规则引擎中的云产品流转主要是为了实现两个设备之间的通信,从一个设备的topic转发到另一个设备的topic,从而实现数据的传输。也就是说可以将感知层获得的数据转发到应用层显示。下面开始设置云产品流转规则:

1.首先需要在同一个产品中继续创建一个设备phone代表应用端拿到esp32发过来的数据

2.然后创建规则引擎用于转发数据

处理数据

转发数据到phone设备的topic上

3.然后用阿里云的mqtt调试助手模拟应用端接收数据

4.最后订阅云流转中转发的topic

5.成功收到数据

6.最后最后,在同理创建一个由phone设备转发到esp32设备的规则引擎,用于转发数据控制传感层的led和蜂鸣器。

测试

7.成功亮灯!!!!

五、应用层的实现

前面用的mqtt模拟器成功实现了数据的传输,接下来就可以开始编写微信小程序实现数据的显示及底层的控制

小程序端的具体实现代码等下次有空在搞

未完待续。。。。。。。

Esp32读取温湿度数据通过mqtt上传阿里云平台相关推荐

  1. GSM模块联网 GPRS上传物联网云平台调试笔记

    <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...

  2. java利用iText写pdf并上传阿里云OSS并下载

    iText是用于生成pdf的一个类库,通过它可以生成pdf或者将XML , HTML转换城pdf模版:阿里云的oss对象存储存储的类型比较多了,可以存储音频 图片 pdf excel 等资源,oss本 ...

  3. Arduino-ESP8266检测温湿度上传阿里云

    Arduino-ESP8266检测温湿度上传阿里云 硬件准备 Arduino IDE环境 阿里云端 实物接线 IDE库文件配置 ArduinoJson AliyunIoTSDK PubSubClien ...

  4. 通过一键配网,上传阿里云数据

    #include <DHT.h> #include<ESP8266WiFi.h> #include <PubSubClient.h> #include <Wi ...

  5. ESP8266获取传感器数值,上传阿里云

    #include <DHT.h> #include<ESP8266WiFi.h> #include <PubSubClient.h> #include <Wi ...

  6. 文件分片上传阿里云OSS

    本文参考其他博客并结合自身编写 博客原作者:程序猿谢哥哥 博客原地址:https://blog.csdn.net/weixin_42825651/article/details/108792264 注 ...

  7. base64格式的图片上传阿里云

    base64格式的图片上传阿里云 上传图片的时候,除了普通的图片上传,还有一张图片信息是以base64格式发送到后台的. 后台接受base64格式的图片,上传至阿里云代码:(主要是将base64转化成 ...

  8. 微信 开发 图片 上传 阿里云 oss 服务器

    在做微信开发时,我需要将图片上传至阿里云OSS,思路是服务端下载微信图片再转存至OSS. wx.chooseImage({count: 1, // 默认9sizeType: ['original', ...

  9. 科陆电表通过卓岚无线串口模块上传智能云平台

    科陆电表通过卓岚无线串口模块上传智能云平台 1.概述 随着目前无线通讯领域的快速发展,远程实时监控电表数据已经成为发展的趋势,无线远程监控在应用领域运用这一块,更是尤为重要.卓岚无线串口模块ZLAN7 ...

最新文章

  1. nginx conf 文件配置
  2. C# Levenshtein计算字符串的相似度
  3. mysql带BETTEEN ADN 关键字的查询
  4. [公告]博客园新服务器照片
  5. PyQt5 图形界面-用Qt Designer来设计UI界面,并转化为python代码运行实例演示
  6. C语言 泛型链表的实现
  7. Yii获取指定URL路径字符串
  8. Git之深入解析工作流程、常用命令与Reset模式分析
  9. 简要分析ZooKeeper基本原理及安装部署
  10. python 字符编码处理_浅析Python 字符编码与文件处理
  11. 乘方运算中的“次幂”和“次方”有什么区别?
  12. sql中全文检索的具体细节
  13. 戴尔服务器阵列卡的更换
  14. Ubuntu 全部命令
  15. 游戏开发之C++异常(C++)
  16. linux下 mysql 学习(一)
  17. Vuex_Todos
  18. 自然辩证法与计算机科学与技术,自然辩证法与计算机科学技术.docx
  19. Linux文件归档与压缩命令
  20. [CentOS] 防止rm误操作

热门文章

  1. 从那些高调注销人人又回来的货们,来分析一下微博和人人的区别……
  2. 六月集训(第20天) —— 二叉搜索树
  3. 华为openEuler 20.03 LTS SP3 安装Docker
  4. 一种企业办公系统中表单数据的分级别加密传输方法-交底书
  5. android 多态按钮,PM撸代码之Android【武侠篇:封装、继承、多态】
  6. 浅析预算管理在建筑工程中的重要性
  7. oracle怎么 查询表名,oracle查询表名
  8. 如何打包成.ipa文件
  9. ONNX-Simpler报错:Graph must be in single static assignment (SSA) form
  10. java4android视频下载_《Java4android》视频学习笔记——面向对象的应用(一)