通過(guò)LoRa/LoRaWAN網(wǎng)絡(luò)監(jiān)控服務(wù)器機(jī)房
掃描二維碼
隨時(shí)隨地手機(jī)看文章
SerVision是一種緊湊高效的基于LoRa的物聯(lián)網(wǎng)系統(tǒng),用于監(jiān)控服務(wù)器機(jī)房的關(guān)鍵環(huán)境參數(shù)。它通過(guò)使用物聯(lián)網(wǎng)(TTN)將實(shí)時(shí)數(shù)據(jù)傳輸?shù)街醒肫脚_(tái),確保及早發(fā)現(xiàn)潛在風(fēng)險(xiǎn),如過(guò)熱、濕度峰值或火災(zāi)。收集到的數(shù)據(jù)將被存儲(chǔ)、可視化,并用于在超過(guò)閾值時(shí)觸發(fā)警報(bào)。我們?cè)赨nilasalle Amiens進(jìn)行了這個(gè)項(xiàng)目。
電子產(chǎn)品
該系統(tǒng)主要由兩塊主控板組成:
?帶有以太網(wǎng)屏蔽和LCD顯示屏的Arduino Leonardo,
?用于LoRa通信的SODAQ Explorer板。
一個(gè)定制的PCB連接兩個(gè)板,以及外部傳感器(火焰,濕度,溫度,亮度)。它包括一個(gè)可切換的UART線路、電源管理和3d打印外殼,用于在服務(wù)器機(jī)房環(huán)境中安全集成。專用開(kāi)口可以方便地訪問(wèn)電纜和連接器。
嵌入代碼
SerVision系統(tǒng)使用兩個(gè)協(xié)同工作的微控制器:Arduino Leonardo和SODAQ Explorer。
Arduino Leonardo處理本地傳感和數(shù)據(jù)準(zhǔn)備。它讀取溫度,濕度(DHT11),光(光敏電阻),火焰(數(shù)字傳感器)和模擬溫度。每隔1分鐘,它構(gòu)建一個(gè)結(jié)構(gòu)化的串行幀,如下所示:
它還ping三個(gè)預(yù)定義的IP地址,并在幀中包含它們的可達(dá)性。數(shù)據(jù)顯示在16x2 LCD上,并通過(guò)串行發(fā)送到SODAQ板。
SODAQ Explorer解析接收到的幀,將值轉(zhuǎn)換為緊湊的二進(jìn)制有效載荷,并通過(guò)LoRaWAN傳輸?shù)轿锫?lián)網(wǎng)(TTN)。它還檢查下行消息:如果收到一個(gè),它提取第一個(gè)字節(jié)并將其轉(zhuǎn)發(fā)給Arduino。
Arduino解釋這個(gè)字節(jié)來(lái)遠(yuǎn)程啟用或禁用IP監(jiān)控邏輯,允許從TTN平臺(tái)進(jìn)行基本的遠(yuǎn)程控制。
LoRa
?MQTT:
我們通過(guò)物聯(lián)網(wǎng)(TTN)間接使用MQTT,它依賴于這個(gè)輕量級(jí)協(xié)議在連接的對(duì)象和第三方服務(wù)之間傳輸消息。TTN負(fù)責(zé)從對(duì)象接收LoRa數(shù)據(jù),然后在MQTT中發(fā)布它。然后,我們的Node-RED服務(wù)連接到TTN的MQTT代理以實(shí)時(shí)檢索數(shù)據(jù)。
?TTN:
上行:
連接對(duì)象(Sodaq Explorer)通過(guò)LoRaWAN發(fā)送64位編碼的數(shù)據(jù)。使用自定義JavaScript腳本在TTN上對(duì)原始數(shù)據(jù)進(jìn)行解碼。解碼器將二進(jìn)制有效負(fù)載轉(zhuǎn)換為結(jié)構(gòu)化對(duì)象(您可以在下面的代碼部分中看到解碼器)。
下行:
從我們的web界面,用戶可以配置3個(gè)不同的IP地址進(jìn)行ping測(cè)試。這些ip被轉(zhuǎn)換成十六進(jìn)制,然后用Base64編碼,并通過(guò)TTN v3 HTTP API發(fā)送給TTN:
下行鏈路由Sodaq Explorer接收后,通過(guò)串口將信息傳輸給Arduino Leonardo,重新配置網(wǎng)絡(luò)測(cè)試ip。
服務(wù)器(集裝箱岸吊)
我們的基礎(chǔ)架構(gòu)托管在一個(gè)Linux虛擬機(jī)上,在這個(gè)虛擬機(jī)上安裝了Portainer,一個(gè)圖形化的Docker管理界面。我們運(yùn)行三個(gè)對(duì)項(xiàng)目至關(guān)重要的服務(wù):
NodeRed
流程A: Node-RED是我們應(yīng)用程序邏輯的核心。它通過(guò)MQTT接收來(lái)自TTN的數(shù)據(jù),對(duì)其進(jìn)行處理,實(shí)時(shí)顯示并執(zhí)行一些操作:將數(shù)據(jù)發(fā)送到InfluxDB和觸發(fā)警報(bào)(發(fā)送電子郵件)。
流程B:使用自定義功能,例如,發(fā)送電子郵件,我們使用SMTP Gmail服務(wù)器(需要認(rèn)證到谷歌帳戶),如果火焰被檢測(cè)到,或者如果溫度超過(guò)臨界閾值,或者如果我們失去了網(wǎng)關(guān)連接。
InfluxDB
InfluxDB是一個(gè)面向時(shí)間序列的數(shù)據(jù)庫(kù),非常適合存儲(chǔ)我們的傳感器測(cè)量值。它存儲(chǔ)以下數(shù)據(jù)的歷史記錄:溫度,濕度,亮度,網(wǎng)絡(luò)連接(本地,網(wǎng)關(guān),公共),火焰檢測(cè)
數(shù)據(jù)通過(guò)HTTP API或直接從網(wǎng)站請(qǐng)求,用于動(dòng)態(tài)圖形顯示。
Apache
apache服務(wù)器提供了一個(gè)清晰且響應(yīng)迅速的儀表板來(lái)監(jiān)視環(huán)境條件。用php編寫(xiě)的web應(yīng)用程序連接到存儲(chǔ)通過(guò)LoRaWAN接收到的所有傳感器數(shù)據(jù)的InfluxDB數(shù)據(jù)庫(kù)。一個(gè)界面顯示它們的所有值。它還顯示了三個(gè)被監(jiān)控IP地址的網(wǎng)絡(luò)狀態(tài),可由用戶在“下行”形式中設(shè)置。整個(gè)系統(tǒng)提供了從任何web瀏覽器對(duì)服務(wù)器機(jī)房環(huán)境的完全可見(jiàn)性和控制。
本文編譯自hackster.io