002-STM32+ESP8266+AIR202基本控制方案-关于阿里云物联网平台上的自定义,物模型,基础通信Topic使用说明
<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_A/aly.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
Topic说明
一.点击产品,查看
二.阿里云提供了三种类型的Topic
先说一下自定义Topic
一.自定义Topic是说这个Topic可以自定义
而且消息格式也随意.
a1m7er1nJbQ 是产品的ProductKey
${deviceName} 是指让你用产品下设备的名字代替
后面的操作权限是告诉用户这个主题是用来发布的还是用来订阅
列如:
我上一节注册的设备的名字是 Mqtt
所以我这个设备发布的主题为:
/a1m7er1nJbQ/Mqtt/user/update
和
/a1m7er1nJbQ/Mqtt/user/update/error
我设备订阅的主题为:
/a1m7er1nJbQ/Mqtt/user/get
二.测试发布主题
三.测试订阅主题
四.注
用户只需要知道使用自定义的主题发布的消息可以随意,
在后面的章节会用到里面的消息.
物模型Topic(属性上报和设置)
一.平台提供了一个展示设备数据的页面
使用属性上报的主题,然后按照规定的协议上报数据就可以把数据展示在网页上.
二.假设显示工作电压值(在产品的功能定义可以看到具体的定义)
提示:一个产品下面的所有设备都有这些功能,因为下面的设备隶属于这个产品嘛.
这是阿里云默认添加的功能,咱先看怎么使用.
三.显示Mqtt这个设备的电压值(ProductKey 和 deviceName 根据自己的修改)
发布的主题: /sys/a1m7er1nJbQ/${deviceName}/thing/event/property/post
消息: {"method":"thing.event.property.post","id":"1111","params":{"LightVolt":1},"version":"1.0"}
四.关于消息格式为啥那样写
参考阿里云文档
https://help.aliyun.com/document_detail/89301.html?spm=a2c4g.11186623.6.735.24096486HbmRhg
五.假设这个产品下的设备都需要个温度展示,自己添加个温度
1.编辑草稿
2.添加自定义功能
3.按照下面的填写
4.发布
六.测试 (ProductKey 和 deviceName 根据自己的修改)
发布的主题: /sys/a1m7er1nJbQ/${deviceName}/thing/event/property/post
消息: {"method":"thing.event.property.post","id":"1111","params":{"temp":25},"version":"1.0"}
七.再添加个湿度
八.同时上报温湿度数据 (ProductKey 和 deviceName根据自己的修改)
发布的主题: /sys/a1m7er1nJbQ/${deviceName}/thing/event/property/post
消息: {"method":"thing.event.property.post","id":"1111","params":{"temp":25,"humi":60},"version":"1.0"}
九.订阅属性设置的主题
1.(ProductKey 和 deviceName)根据自己的修改
/sys/${ProductKey}/${deviceName}/thing/service/property/set
2.订阅
3.找到在线调试,选择要调试的设备
4.随便找一个可以设置的功能
5.提示
如果是真实的设备,可以用作开灯和关灯.
6.可以设置温度
如果是真实的设备,可以用来设置温度的阈值,然后用来做温度报警
物模型Topic(事件上报)
一.现在看下这个
二,添加一个事件
1.编辑草稿
2.添加自定义功能
3.按照下图添加
4.发布
三,测试
发布的主题: /sys/{productKey}/{deviceName}/thing/event/{tsl.event.identifier}/post
发布的消息: {"method":"thing.event.{tsl.event.identifier}.post","id":"1111","params":{},"version":"1.0"}
替换自己的 productKey, deviceName, tsl.event.identifier(事件的标识符)
/sys/a1m7er1nJbQ/Mqtt/thing/event/tempH/post
{"method":"thing.event.tempH.post","id":"1111","params":{},"version":"1.0"}
注:
结合前面的那个设置属性,加上这个事件可以做一个设置阈值和报警的事情.
基础通信Topic(只简单介绍一下我已经使用过的)
一.基础通信Topic(OTA升级)
OTA升级的Topic是在设备运维里面的OTA升级使用
其实就是把固件放到服务器上,然后通过对应的Topic上报版本和获取固件版本,下载地址
咱在升级篇里面会使用到.
二,时钟同步
1.如果本身设备没有时钟,想获取时间戳,{productKey}/{deviceName}根据自己的修改
/ext/ntp/{productKey}/{deviceName}/request
发布的主题 : /ext/ntp/a1m7er1nJbQ/Mqtt/request
发布的消息: {"deviceSendTime":"0"}
提示:获取的时间戳是Ms ,误差10ms左右
2.获取精准时间
https://help.aliyun.com/document_detail/102509.html?spm=a2c4g.11186623.6.718.922d6486p633oV
注:其它参数都有,我只说一下这个 deviceRecvTime 是咋回事.
其实自己设备首先应该跑着时钟,不管你时钟跑的对不对,
你发送的数据其实是: {"deviceSendTime":"获取设备时钟的时间戳"}
然后你接收到消息后再获取一下设备的当前的时钟的时间戳就是 deviceRecvTime
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-01-04 ESP8266 SDK开发: 准备工作-硬件说明
2017-01-04 ESP8266刷AT固件与nodemcu固件