<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