找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5106|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

在英特爾Edison上創(chuàng)建并運(yùn)行Mosquitto MQTT

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:81203 發(fā)表于 2015-5-26 18:44 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
簡(jiǎn)介
英特爾(R) Edison 開(kāi)發(fā)板的一大特性是它不僅能夠兼容 Arduino*,同時(shí)還是一款 Linux* 單板計(jì)算機(jī),能夠全面訪問(wèn) Arduino 草案的底層 Linux 功能。
在本系列博客中,我將介紹將 Linux 功能集成至 Arduino 草案的各種方法,以及如何利用現(xiàn)有代碼簡(jiǎn)化物聯(lián)網(wǎng)開(kāi)發(fā)。
首先,我們先來(lái)構(gòu)建一個(gè)包含溫度傳感器、光線敏元件、LED 和開(kāi)關(guān)的簡(jiǎn)單傳感器節(jié)點(diǎn)。 然后,我們使用 MQTT 將該數(shù)據(jù)發(fā)布至互聯(lián)網(wǎng)。 使用 Node-Red 演示一些基本的數(shù)據(jù)分析,觸發(fā)活動(dòng)并將命令傳回傳感器節(jié)點(diǎn)。
Edison 開(kāi)發(fā)板隨附的 Linux 分發(fā)版來(lái)自 Yocto 項(xiàng)目 (http://www.yoctoproject.org)。 Yocto 是一個(gè)小型的 Linux 內(nèi)核,專門針對(duì)資源有限的嵌入式系統(tǒng)設(shè)計(jì)。
MQTT
MQTT 是一個(gè)輕型協(xié)議,專門用于機(jī)器對(duì)機(jī)器 (M2M) 通信。 MQTT 使用基于 TCP/IP 協(xié)議的發(fā)布/訂閱消息轉(zhuǎn)發(fā)模式。 MQTT 協(xié)議的中心是 MQTT 服務(wù)器或代理,支持發(fā)布程序和訂閱程序進(jìn)行訪問(wèn)。 用戶可以使用 MQTT 構(gòu)建一個(gè)傳感器網(wǎng)絡(luò),其中各種傳感器都能夠以其傳感器獨(dú)有的消息形式發(fā)布傳感器值。 制動(dòng)器能夠訂閱不同的消息,以據(jù)此采取措施。 MQTT 代理將處理從發(fā)布程序到訂閱程序的轉(zhuǎn)發(fā)消息。
示例:
微處理器 A 能夠讀取開(kāi)關(guān)的狀態(tài),并以 "switch = on" 形式的消息將開(kāi)關(guān)狀態(tài)發(fā)布至 MQTT 服務(wù)器。 互聯(lián)網(wǎng)某處的微處理器 B 訂閱 MQTT 消息 "switch"。 現(xiàn)在,無(wú)論用戶何時(shí)觸發(fā)開(kāi)關(guān),微處理器 A 都會(huì)向 MQTT 代理發(fā)布一條消息。 代理將把消息轉(zhuǎn)發(fā)至訂閱程序列表。 當(dāng)微處理器 B 收到消息時(shí),將會(huì)對(duì)內(nèi)容進(jìn)行解析,確定開(kāi)關(guān)的狀態(tài),并相應(yīng)地開(kāi)啟或關(guān)閉指示燈。
如欲了解更多有關(guān) MQTT的信息,請(qǐng)?jiān)L問(wèn) http://mqtt.org
Edison Yocto 操作系統(tǒng)配備名為 RSMB (Really Small Message broker) 的小型 MQTT 代理。 很遺憾,我們沒(méi)有大量 MQTT 客戶端進(jìn)行測(cè)試。 在本文中,我們將構(gòu)建另一個(gè) MQTT 代理 Mosquitto,主要針對(duì)客戶端。 在后續(xù)文章中,我們將使用這些客戶端連接至 Arduino 草案。
在 Edison 上構(gòu)建 Mosquitto
假定讀者已經(jīng)安裝了 Edison 開(kāi)發(fā)板,并且了解標(biāo)準(zhǔn)的 Linux 操作。
構(gòu)建 Mosquitto 非常簡(jiǎn)單。 以下是在 Edison 上構(gòu)建 Mosquitto 的步驟:
  • 從 mosquitto.org 下載 mosquitto                 view sourceprint?
    1$> wget http://mosquitto.org/files/source/mosquitto-1.3.5.tar.gz


  • 解壓檔案                 view sourceprint?
    1$> tar xzf mosquitto-1.3.5 $> cd mosquitto-1.3.5


  • 構(gòu)建                 view sourceprint?
    1$> make WITH_SRV=no


  • 測(cè)試和安裝 mosquitto 編譯                 view sourceprint?
    1# Create user mosquitto $> add user mosquitto # Test $> cd test/broker $> make test $> cd ../../ # Install $> cp client/mosquitto_pub /usr/bin $> cp client/mosquitto_sub /usr/bin $> cp lib/libmosquitto.so.1 /usr/lib $> cp src/mosquitto /usr/bin



在 mosquitto 根目錄中還有一個(gè)測(cè)試目標(biāo)。 但是,該目標(biāo)需要 Python3,Edison 操作系統(tǒng)上無(wú)法使用 Python3,因此后來(lái)的一些測(cè)試失敗。 測(cè)試/代理中的目標(biāo)不需要 Python3,并包含所有基本的 MQTT 操作。
測(cè)試 mosquitto 客戶端和服務(wù)器
Edison 操作系統(tǒng)配置為自動(dòng)啟動(dòng) rsmb 代理。 rsmb 已經(jīng)設(shè)置為使用默認(rèn) TCP 端口 1883。 我們將使用默認(rèn) MQTT 端口在 rsmb 代理上測(cè)試 mosquitto 客戶端。 然后,我們將配置 mosquitto 代理在其他端口上運(yùn)行,同時(shí)對(duì)其進(jìn)行測(cè)試。
如要測(cè)試客戶端,請(qǐng)打開(kāi) Edison 的兩個(gè) ssh 連接。 在第一個(gè)連接中,運(yùn)行一個(gè)在 rsmb 代理上訂閱 'test' 主題并在 Edison 本地運(yùn)行的 mosquitto_sub 客戶端

在第二個(gè) ssh 連接中,向同一臺(tái)本地服務(wù)器的 test 主題發(fā)布一條 'Hello World!' 消息。
您應(yīng)可看到窗口中的消息運(yùn)行 mosquitto_sub 程序。 請(qǐng)注意,mosquitto_sub 客戶端是持久的,將持續(xù)偵聽(tīng)來(lái)自服務(wù)器的新消息,直至其停止。

上述測(cè)試展示了我們所構(gòu)建的能夠與本地 rsmb MQTT 服務(wù)器正常兼容的 mosquitto_sub 和 mosquitto_pub 客戶端。
我們可以使用在其他端口 (1993) 上運(yùn)行的mosquitto 代理運(yùn)行相同的測(cè)試

使用上述命令,但是使用 -p 1993 參數(shù)來(lái)運(yùn)行 mosquitto_sub 和 mosquitto_pub,在端口 1993 上測(cè)試 mosquitto 代理。


總結(jié)我們?cè)谟⑻貭?Edison 上構(gòu)建并運(yùn)行了 mosquitto 服務(wù)器和客戶端。 在后續(xù)的文章中,我將開(kāi)始開(kāi)發(fā)能夠利用本文構(gòu)建的 MQTT 客戶端的 Arduino 草案。
參考資料:
如欲了解 Mosquitto 文檔,請(qǐng)參閱 http://mosquitto.org/documentation
如欲了解有關(guān)英特爾 Edison 開(kāi)發(fā)板的詳情,請(qǐng)?jiān)L問(wèn): http://www.intel.com/edison


有關(guān)編譯器優(yōu)化的更完整信息,請(qǐng)參閱優(yōu)化通知。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表