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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM