本日重點與方向 (TAG): Mosquitto、MQTT、Publisher、Subscriber、Publish、Subscribe、Broker、Topic、MQTTX、EMQTT。
今天介紹一下我們的開源雲端機房的一些環境偵測的數據通訊的架構,這次架構起來的環境是用 MQTT 為基底,後面就去做一些訂閱的行為進入資料庫,最後用先前的 Grafana Dashboard 做建構,今天就稍微講一下 MQTT 的通訊 Broker 安裝,然後後用主機上面的軟體去做一些訂閱的訊息確認,只要確認數據有出來,就可以做一些訂閱及資料庫傳入的行為了。
sudo apt update
sudo apt install -y mosquitto
sudo apt install -y mosquitto-clients
sudo netstat -tulpn | grep 1883
這邊的 Broker IP 部分,你的發送跟接收端要是同一個,另外 Topic 部分也是要一樣名稱稱,不然不在同一個 Server 之上也不能連通。
mosquitto_pub -h 127.0.0.1 -t "test" -m "test-message"
mosquitto_sub -h 127.0.0.1 -t "test"
這邊就稍微設定一下 MQTT 為主,Topic 部分會變成
裝置名稱
/傳感器數據名稱
的配置。
預設密碼: Admin
這邊的配置的話 Topic 會變成
Module Name (DL303)
/Sensor Data (CO、CO2、DC、RH......)
前往 MQTTX github Release 網站 (連結)
下載 官方 最新打包的 zip
解壓縮 mqttx zip 包的獲得安裝檔
sudo apt-get install -y snap
sudo snap install snap mqttx
sudo /snap/mqttx/current/mqttx
pip3 install paho-mqtt
發送端基本上就是配置一下你的 server 端的資訊,Topic 部分就是設定一下名字,為了接收端好處理一些,Message 部分可以是設定成 JSON 格式為主,或是給純的數值去傳遞。
import paho.mqtt.client as mqtt
client = mqtt.Client()
client.connect("10.20.0.19", 1883, 60)
while True:
client.publish("nutc", "imac")
time.sleep(5)
這邊就改一下訂閱的 Topic,在
on_connect()
裡面去做添加,它允許你一次訂閱多個 Topic,之後啟動程式代碼python3 subscriber.py
,詳細一些塞入 DB 的操作的話,需要在on_message()
裡面去處理。
subscriber.py
---
import paho.mqtt.client as mqtt
# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("nutc")
def on_message(client, userdata, msg):
print(msg.topic+" "+str(msg.payload))
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("10.20.0.19", 1883, 60)
client.loop_forever()