ESP8266温湿度项目

MQTT连接,开发踩坑

知识总结

学习一门东西时,先找到一个相关的最容易的东西先,然后类比

​ ESP8266有例程但是官方文档的API介绍少,ESP32其实类似的,所以可以先开发ESP32,最后再类比到ESP8266即可。

关于ESP8266烧录地址

Flash布局

image-20240117132521314

不支持OTA

image-20240117132304583

支持OTA

image-20240117132336171

ESP8266智能配网

​ 智能配网有很多方法。直接拿例程的智能配网就行,把模式改成 SC_TYPE_ESPTOUCH_AIRKISS 就能用安可信公众号进行微信配网。

资料

参考1

踩坑

MQTT平台

OneNet

​ token计算麻烦得一批,连接半天发现是连接的IP错了。。。而且是官方教程?!

好家伙,到最后发现没有APP用,控制不了

好像是新版和旧版之间的关系,新版已经不用ip地址了,改成了域名的形式 :studio-mqtt.heclouds.com

image-20240117174543729

成功案例 ,这个地址也行token计算工具旧版的MQTT文档

res: products/(产品ID)/devices/(设备名称)

et: unix时间戳,网站获取

key: 设备的key

关于如何上传数据到onenet平台

​ 避雷:官方文档就是一坨,还不如直接去CSDN找。官方教程好像是OneJson,而不是”数据流“

clion可以自动自动转义json格式,结果publish了半天发布不了。。。

1
2
3
4
5
6
7
// 关于ESP32的mqtt配置
esp_mqtt_client_config_t mqtt_cfg = {
.broker.address.uri = "mqtt://mqtts.heclouds.com:1883",
.credentials.client_id = "esp826",
.credentials.username = "NQ2cJlHtxu",
.credentials.authentication.password = "version=2018-10-31&res=products%2FNQ2cJlHtxu%2Fdevices%2Fesp8266&et=1732986061&method=md5&sign=7PurO50t0PbE8YIgl2bCGw%3D%3D"
};

数据流一定要是数字,不能包含特殊符号,字符串那些!?

image-20240122180902129

成功的json模板

资料:mpython 成功案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 成功的数据流json
{
"id": 123,
"dp": {
"temperatrue": [{
"v": 30
}],
"power": [{
"v": 4.5
}]
}
}

// 我写的json
{
"id": "123",
// 好吧,最后发现,错误是在这里,123不应该是字符串,字符串应该是OneJson的格式
"dp": {
"value": [{
"v": 111,
}]
}
}

机智云

二次开发麻烦,比较适合那种直接使用AT指令的

EMQX

​ 简单好用且开源,主题没有固定,自定义程度高。需要注意的是:连接默认使用的是SSL,所以要导入证书

创建步骤:

  1. 先部署项目
  2. 在认证那里先创建一个用户
  3. 然后看下图就行

image-20240119170239991

image-20240119170250479

阿里云IOT

教程

address k18mkCEjC96.iot-as-mqtt.cn-shanghai.aliyuncs.com
Client ID

SNT网络时间

https://blog.csdn.net/qq_41741344/article/details/120117151

DHT11误差

出现局部误差

​ 也不知道是算法有问题还是什么,单一测试的时候没问题,整合起来出现的。原来是DHT11测量的时候,校验没过,所以直接就赋值100了,至于为什么没过校验就就不懂了。

​ 后面直接把校验给去了。。。从根源解决问题

image-20240120195654550


ESP8266温湿度项目
https://blog.xsaistudio.cn/单片机/2024/01/17/单片机/ESP8266温湿度项目/
作者
YWM
发布于
2024年1月17日
许可协议