mqtt是什么意思
消息隊列遙測傳輸(MQTT)是一種ISO標(biāo)準(zhǔn)消息傳遞協(xié)議,旨在通過不可靠的網(wǎng)絡(luò)連接傳感器。它在TCP/IP互聯(lián)網(wǎng)協(xié)議之上工作。
兩位工程師Andy Stanford-Clark和Arlen Nipper在1999年創(chuàng)建了協(xié)議。他們正在開發(fā)一個系統(tǒng)來監(jiān)控不可靠衛(wèi)星上的遠(yuǎn)程石油管道網(wǎng)絡(luò),并且需要低功耗,易于實現(xiàn)且非??煽康南鬟f系統(tǒng)。
自開發(fā)以來,MQTT已發(fā)展成為許多物聯(lián)網(wǎng)系統(tǒng)中使用的關(guān)鍵消息傳遞協(xié)議,是家庭自動化,水培或遠(yuǎn)程氣象站的理想選擇。
MQTT的主要優(yōu)勢
效率
MQTT消息帶寬小,設(shè)計合理在低功率系統(tǒng)上實施。這使其成為任何電池供電傳感器的理想選擇。使用MQTT作為消息傳遞協(xié)議可以延長項目的電池壽命。
輕松實現(xiàn)
實現(xiàn)MQTT非常簡單遠(yuǎn)程傳感器系統(tǒng)上的消息。由于大部分復(fù)雜工作都是在中央服務(wù)器上實現(xiàn)的,因此遠(yuǎn)程系統(tǒng)可以在其他地方使用其資源。
可靠性
MQTT用于任務(wù)關(guān)鍵型傳感器系統(tǒng),其中發(fā)送的任何消息都得到確認(rèn)和接收至關(guān)重要。 MQTT允許您通過聲明其服務(wù)質(zhì)量(QOS)級別來定義消息的重要性。在項目中使用MQTT可以讓您高枕無憂,即可以收到所有重要信息。
數(shù)據(jù)不可知
此協(xié)議允許您以消息,數(shù)字,單詞,甚至可擴(kuò)展標(biāo)記語言(XML)或JavaScript對象表示法(JSON)發(fā)送任何類型的文本數(shù)據(jù)。
MQTT如何工作
MQTT遵循發(fā)布/訂閱原則,由兩個元素組成:經(jīng)紀(jì)人和客戶。
MQTT包含兩個元素:經(jīng)紀(jì)人和客戶。
任何MQTT系統(tǒng)的核心都是一個名為broker的應(yīng)用程序,它可以接收和傳輸MQTT消息。當(dāng)代理從客戶端收到消息時,它可以將消息發(fā)送到訂閱該消息主題的任何其他客戶端。常用的MQTT代理是Mosquitto,可用于許多平臺,如Windows,Linux或Raspberry Pi。甚至還有一個可供任何人使用的在線經(jīng)紀(jì)人。
MQTT系統(tǒng)的第二個組件是客戶端,它連接到代理并可以發(fā)布或訂閱MQTT消息。對于基于ESP8266的項目,PubSubClient經(jīng)常被用作MQTT客戶端的基礎(chǔ)。
MQTT消息按主題分類,主題是編碼到每個消息中的字符串??蛻舳擞嗛喼黝},當(dāng)代理收到消息時,它會將其傳輸給訂閱它的任何客戶端。 MQTT主題具有與文件系統(tǒng)類似的結(jié)構(gòu),并使用/字符作為分隔符。一些示例主題是:
home/kitchen/light
home/lounge/lamp
home/lounge/light
通配符(#)可用于訂閱級別上的所有消息。例如,訂閱home/lounge/#的客戶將收到家庭/休息室/燈和家庭/休息室/燈光消息。訂閱home/#的客戶將收到以上所有訂閱。
MQTT提供簡易消息系統(tǒng)
MQTT可以為制造商提供強(qiáng)大的功能,易于實現(xiàn),可靠的消息系統(tǒng)。它適用于需要在設(shè)備之間進(jìn)行通信的任何項目,例如家庭監(jiān)控系統(tǒng),并且可以在以后階段輕松調(diào)整以合并其他傳感器。
有關(guān)基于MQTT的系統(tǒng)的示例ESP8266客戶端和運(yùn)行Mosquitto代理的Raspberry Pi,請查看如何在Raspberry Pi上安裝Mosquitto MQTT Broker。