MQTT 遺囑使用


大部分人應該有這個需求:

 

我想讓我的APP或者上位機或者網頁一登錄的時候獲取設備的狀態   在線還是離線

設備端只需要這樣設置

注意:MQTT本身有遺囑設置

所以大家可以設置遺囑 ,注意哈,發布的主題自己隨意哈,假設是aaaaa  假設設置的遺囑是   {data:state,state:offline}   注意遺囑的retain 必須設置為1 ,即讓服務器保留這個消息

如果這樣設置了,那么只要 設備掉線了,服務器就會向訂閱aaaaa主題的APP或者上位機或者網頁發送{data:state,state:offline} 

 

但是只這樣設置還不行,因為你會發現每次APP或者上位機或者網頁只要一啟動就會收到{data:state,state:offline} 

 

所以需要下一步

在設備成功連接MQTT的時候主動發個消息,發送的主題必須和上面一樣哈aaaaa  假設消息是 {data:state,state:online}  注意消息的retain 必須設置為1 ,即讓服務器保留這個消息

 

這樣的話,就可以了,只要APP或者上位機或者網頁一啟動,那么所有設備的當前狀態都會主動的上來了

可以看一下我ESP8266 設置的,無論用的啥子語言開發的,自行找API實現就可以

 

 然后說明一點

MQTT都有心跳包時間實際上就是每隔多少時間向服務器 發送C0 00

服務器判斷客戶端掉線是:

假設設置的心跳包是 5S

那么如果超過 5*1.5 = 7.5S 服務器沒有接收到心跳包,那么服務器就認為設備掉線了

此時服務器會把掉線的那台設備的遺囑發給 相應的上位機

 


免責聲明!

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



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