iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 25
0

Day 25 開源機房通訊架構環境建置 - Mosquitto MQTT 通訊建置與使用

本日重點與方向 (TAG): Mosquitto、MQTT、Publisher、Subscriber、Publish、Subscribe、Broker、Topic、MQTTX、EMQTT。
今天介紹一下我們的開源雲端機房的一些環境偵測的數據通訊的架構,這次架構起來的環境是用 MQTT 為基底,後面就去做一些訂閱的行為進入資料庫,最後用先前的 Grafana Dashboard 做建構,今天就稍微講一下 MQTT 的通訊 Broker 安裝,然後後用主機上面的軟體去做一些訂閱的訊息確認,只要確認數據有出來,就可以做一些訂閱及資料庫傳入的行為了。

本次使用設備資訊

Network Switch

  • 數量: 1
  • 型號: D-Link 1210-28 (L2 Switch)

Recive MQTT Node

MacOS

  • Macbook Pro: 2011 17.3 inch
  • 數量: 1
  • MacOS 10.14 Mojave
  • CPU: i7-2760QM
  • RAM: 16GB
  • Disk: 250 GB (SSD)
  • Network: 1Gbps

Ubuntu

  • HP Z230
  • 數量: 1
  • Ubuntu: 16.04 / 18.04
  • CPU: E3-1230_V3 ^ 1
  • RAM: 16GB
  • Disk: 250 GB (HDD)
  • Network: 1Gbps

Bare Metal

Broker Node

  • 數量: 1
  • Ubuntu: 16.04 / 18.04
  • Docker Version: 19.03
  • CPU: E3-1230_V3 ^ 1
  • RAM: 16GB
  • Disk: 120 GB (SSD)
  • Network: 1Gbps

Environment Detection Device

ICPDAS DL303 工業級環境偵測記錄器

  • 數量: 1
  • 型號: DL303 CR
  • POE 供電設備: CERIO CS-2208G-8P
  • IP: 10.0.0.164

Mosquitto 建置

安裝 Mosquitto

sudo apt update
sudo apt install -y mosquitto
sudo apt install -y mosquitto-clients

檢查 Broker 環境

sudo netstat -tulpn | grep 1883

測試一下 Pub/Sub 狀態

這邊的 Broker IP 部分,你的發送跟接收端要是同一個,另外 Topic 部分也是要一樣名稱稱,不然不在同一個 Server 之上也不能連通。

Publish 傳送資料

mosquitto_pub -h 127.0.0.1 -t "test" -m "test-message"

Subscribe 接收資料

mosquitto_sub -h 127.0.0.1 -t "test"

測試結果 (開兩個 Terminal 做測試)

ICPDAS DL303 配置

這邊就稍微設定一下 MQTT 為主,Topic 部分會變成 裝置名稱/傳感器數據名稱的配置。

登入

預設密碼: Admin

配置一下 MQTT 的 Topic

  • 這邊選 MQTT

  • 設定一下 Topic 資訊

這邊的配置的話 Topic 會變成 Module Name (DL303)/Sensor Data (CO、CO2、DC、RH......)

MqttX 安裝 (github)

OSX

  1. 前往 MQTTX github Release 網站 (連結)

  2. 下載 官方 最新打包的 zip

  3. 解壓縮 mqttx zip 包的獲得安裝檔

Ubuntu

sudo apt-get install -y snap
sudo snap install snap mqttx
sudo /snap/mqttx/current/mqttx

MQTTX 操作

服務啟動

添加 Broker

  1. 點選 建立新的連線

  1. 配置 Broker 連線資訊 與 在 MQTTX 中的識別名稱

  1. Broker 完成配置

訂閱 Topic

  1. 點選增加訂閱內容

  1. 配置 Topic 相關資訊

  1. 接收 Topic 上的資訊

推送資料到 Topic 之上

  1. 設定 送出 (Publish) 的資料內容與格式

  1. 查看送出的訊息

Python3 接收發送 MQTT

裝套件

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()

上一篇
Day 24 開源機房主機視覺化軟體 - Grafana Dashboard 建置與使用
下一篇
Day 26 SR-IOV on Kubernetes
系列文
基於付費公有雲與開源機房自建私有雲之雲端應用服務測試兼叢集與機房託管服務實戰之勇者崎嶇波折且劍還掉在路上的試煉之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言