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

 

posted on 2021-01-04 16:50  广源时代  阅读(718)  评论(0编辑  收藏  举报

导航

支付宝 QQ群