目录
单片机控制ESP8266连接阿里云物联平台
MQTT协议简介
订阅和发布
cJSON简介
云平台搭建
注册和登录
实例的开通和创建
产品和设备的创建
创建产品
添加设备
功能定义
发布上线
MQTTFX工具使用
发布和订阅
订阅
发布
MQTT固件烧录
AT指令验证
调试验证订阅
单片机控制ESP8266连接阿里云物联平台
思路梳理
将温湿度上传至阿里云
MX配置
代码编写
单片机控制ESP8266连接阿里云物联平台
需要了解的新知识点
MQTT(一种基于TCP实现的应用层网络通信协议)
CJSON(json是一种数据格式,C语言实现的)
AT指令(使用MQTT固件的)
MQTT协议简介
【腾讯文档】MQTTMQTThttps://docs.qq.com/doc/DQUxLVEdyeG1PV0RG
订阅和发布
MQTT是基于topic来发布消息的,发布者在发布消息时需要指定该消息发布在哪个topic下。
topic最容易的理解方式是文件夹路径。如果有成千上万的不同类型的文件要保存,为了合理放置这些文件,需要创建一系列有层次性的文件夹来管理它们。发布消息就好比把文件保存到不同的文件夹下。
和文件夹类似,topic有主题级别,各级别之间是以斜杠(/)来分隔的。
例如: rensanning/home/room1/light/brightness 就有5个级别。
第1层:用户
第2层:场所
第3层:位置
第4层:物件
第5层:数据指标
/sys/k0snmQNV0Hn/${deviceName}/thing/event/property/post
cJSON简介
JSON(详解)-CSDN博客文章浏览阅读6k次,点赞15次,收藏22次。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它以易于阅读和编写的文本格式来存储和表示数据,通常用于在不同的系统之间进行数据交换。JSON数据以键-值对的形式组织,可以包含对象、数组、字符串、数字等基本数据类型。它经常在Web开发、API通信等领域被广泛使用。_jsonhttps://blog.csdn.net/m0_56694518/article/details/134084820?ops_request_misc=%257B%2522request%255Fid%2522%253A%252253FAFE38-AB79-4F94-8205-0BB18C023736%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=53FAFE38-AB79-4F94-8205-0BB18C023736&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-134084820-null-null.nonecase&utm_term=json&spm=1018.2226.3001.4450
云平台搭建
注册和登录
第一步,先找到阿里云平台官网。
阿里云-计算,为了无法计算的价值阿里云——阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司之一。提供免费试用、云服务器、云数据库、云安全、云企业应用等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。免费备案,7x24小时售后支持,助企业无忧上云。https://www.aliyun.com/
点击右上角的注册登录完成之后,进行实名认证,任选一种认证方式。
认证完成之后找到左上角的三条横杠(或者首页左上角的产品),
实例的开通和创建
然后找到物联网然后右侧找到物联网平台
点进去然后点击管理控制台第一次用会让你开通物联网平台,然后点击开通
进去之后点击我已阅读那个服务协议然后点击立即开通会提示购买成功,
2021年07.30之前开通的公共实例是永久,此时间之后开通的是公共实例试用
然后点击管理控制台,会进入到实例概览界面,如果没有公共实例就先等阿里云给创建好,然后点开通公共实例点击开通的时候会有一个类似警告⚠的说明然后点我已理解以上内容然后点确认开通.
产品和设备的创建
后期可直接从此网址进入
阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台欢迎登录阿里云,全球领先的云计算及人工智能科技公司,阿里云为200多个国家和地区的企业、开发者和政府机构提供云计算基础服务及解决方案。阿里云云计算、安全、大数据、人工智能、企业应用、物联网等云计算服务。https://iot.console.aliyun.com/
开通好之后,点进去左侧找到设备管理,点产品
创建产品
输入产品名称,现在做项目的时候是点击自定义品类,标准品类后期看具体需求
然后节点类型:普通设备(灯开关,温湿度,二氧化碳浓度等等显示类和控制类的都是选择直连设备),网关设备就选网关设备,看后期具体需求
联网方式首选WiFi如果需要别的协议就选对应的,数据格式最常用的就是JSON,然后校验级别默认弱校验,认证方式默认设备密钥,产品描述可以自己添加对该产品的描述。
产品创建成功后,你可以选择前往添加设备,可以选择查看产品详情等。
也可以返回产品列表点查看,查看自己的产品所有信息。
添加设备
然后在左侧导航栏选择设备管理>设备,在设备列表中添加页下点击添加设备。
在弹出的对话框内选择你之前创建的产品名称,并填写DeviceName为你自己起的名字(比如智能温湿度可以写smartTemperature1,备注名称为“智能温湿度01号”(也就是你自己对设备的一个备注。
点击确定之后点击完成。确定后可以在设备详情页中看到增加的设备。如果有多个设备,也可按上述方法继续添加。
功能定义
发布上线
确认完成之后点发布上线
MQTTFX工具使用
mqtt.fx | 一款超级好用的Mqtt客户端软件(下载、安装、使用详解)-CSDN博客文章浏览阅读10w+次,点赞101次,收藏472次。文章目录1. mqtt.fx2. 下载3. 安装4. 使用主页面通用设置界面用户信息设置安全证书设置网络代理设置遗嘱设置1. mqtt.fxMQTT.fx是一款基于Eclipse Paho,使用Java语言编写的MQTT客户端工具。支持通过Topic订阅和发布消息,用来前期和物理云平台调试非常方便。2. 下载访问官方下载地址,选择最新版本下载:选择32位或者64位下载,这里我下载64..._mqtt.fxhttps://blog.csdn.net/Mculover666/article/details/103799033
发布和订阅
订阅
发布
物模型属性、事件、服务的Alink JSON数据格式和Topic_物联网平台(IoT)-阿里云帮助中心当您为产品定义物模型后,设备需要按照Alink JSON格式上报属性或事件,如果使用其他格式需要通过消息解析功能转化,服务端设置属性或调用服务同样要满足Alink JSON格式。本文为您介绍物模型数据的Alink JSON格式和Topic。https://help.aliyun.com/zh/iot/user-guide/device-properties-events-and-services?spm=a2c4g.11186623.0.0.36d91789UWYDmy#section-g4j-5zg-12b
{"id": "123","version": "1.0","params": {"temperature": {"value": 12.34},"Humidity": {"value": 56.78}},"method": "thing.event.property.post"}
{
"id": "123",
"version": "1.0",
"params": {
"temperature": {
"value": 11.22
},
"Humidity": {
"value": 12.34
}
},
"method": "thing.event.property.post"
}
MQTT固件烧录
资料中或者官网找到固件压缩包并解压
以下为官网固件下载地址
AT固件汇总 | 安信可科技https://docs.ai-thinker.com/%E5%9B%BA%E4%BB%B6%E6%B1%87%E6%80%BB
ESP8266 SDK发布 | 安信可科技https://docs.ai-thinker.com/esp8266/sdk
找到烧录工具并打开
开发板上将WIFI模块切换为下载模式串口连接8266,在设备管理器中查看usb端口号
选择固件程序配置地址,点击烧录程序
亲~~~,别忘了拨回运行模式哦。只拨S4开关,其他不用动
最好自己验证一下
AT指令验证
MQTT AT Commands — ESP-AT 用户指南 文档https://docs.espressif.com/projects/esp-at/zh-cn/release-v2.2.0.0_esp8266/AT_Command_Set/MQTT_AT_Commands.html
打开串口调试助手,按顺序发送AT指令给WIFI模组,记得替换自己的参数
1.AT+RST //测试
2.AT+CWMODE=1 //设置模式
3.AT+CWJAP="WiFi名字","WiFi密码" //连接路由器
4.AT+CIPSNTPCFG=1,8,"ntp1.aliyun.com" //配置 MQTT 用户属性
5.AT+MQTTUSERCFG=0,1,"NULL","username","passwd",0,0,"" //
6.AT+MQTTCLIENTID=0,"clientId" //clientId第二个参数注意每个逗号前加分隔符“\”
7.AT+MQTTCONN=0,"mqttHostUrl",1883,1 //自己的Url
8.AT+MQTTSUB=0,"订阅的主题",1 //订阅的主题可在云端设备的“自定义Topic列表”复制进去
9.AT+MQTTPUB=0,"/sys/k0snmQNV0Hn/E001/thing/event/property/post","{\"id\":\"123\"\,\"version\":\"1.0\"\,\"params\":{\"temperature\":{\"value\":11.11}\,\"Humidity\":{\"value\":22.22}}\,\"method\":\"thing.event.property.post\"}",0,0
AT+MQTTPUB=0,"/sys/k0snmQNV0Hn/E001/thing/event/property/post","{\"id\":\"123\"\,\"version\":\"1.0\"\,\"params\":{\"temperature\":{\"value\":11.11}\,\"Humidity\":{\"value\":22.22}}\,\"method\":\"thing.event.property.post\"}",0,0
注意:订阅主题(替换自己的设备名字)
调试验证订阅
单片机控制ESP8266连接阿里云物联平台
思路梳理
程序需要改的地方
建议是基于昨天的工程进行修改
亲~~~~, 一定要改(里面信息是我的,哇呜)
如果是自己搭建,需注意以下问题
将温湿度上传至阿里云
MX配置
代码编写
1.添加SHT20代码到工程
2、定义变量接收温湿度
3、外部引用
4、因为json解析需要使用堆空间
5、编写代码;注意:控制必须实时,上报可以定时(可自己实现时间片轮转)
if(USART5_RxCounter==1){Ali_Yun_GetRCV();USART5_RxCounter=0;memset(USART5_RxBuff,0,sizeof(USART5_RxBuff));printf("JIAYU\r\n");}HAL_Delay(5);
time++;BSP_SHT20_GetData();if(time == 100){sprintf(message,"AT+MQTTPUB=0,\"/sys/k0snmQNV0Hn/E001/thing/event/property/post\",\"{\\\"id\\\":\\\"123\\\"\\,\\\"version\\\":\\\"1.0\\\"\\,\\\"params\\\":{\\\"temperature\\\":{\\\"value\\\":%.2f}\\,\\\"Humidity\\\":{\\\"value\\\":%.2f}}\\,\\\"method\\\":\\\"thing.event.property.post\\\"}\",0,0",T,H);ESP8266_USART("%s\r\n", message);
time=0;HAL_Delay(20);USART5_RxCounter=0;memset(USART5_RxBuff,0,sizeof(USART5_RxBuff));}