[ Data Visualization ] Python 串接 Mosquitto MQTT Broker

學習目標

  • 透過 Python 傳送數據到 Mosquitto MQTT Broker

前置準備作業

  1. 一台已連上網路的電腦

  2. 已安裝 Mosquitto MQTT Broker 【 安裝教學 】

  3. 已安裝 Node-RED 【 安裝教學 】

  4. 已設定完成 Node-RED 串接 Mosquitto MQTT Broker 【 設定教學 】


Step 1. 撰寫 Python 串接程式

  • 更新程式中的 MQTT_SERVER,請自行更改為 Mosquitto MQTT Broker 所在位置,亦即是 AWS EC2 Ubuntu Server 所在的 IP 位置
  • 將下方程式存檔為【 檔名.py 】
    • Python 程式的副檔名為【 py 】
    • 檔名的部份請自行命名,本範例命名為【 mosquitto_mqtt.py 】
import paho.mqtt.client as mqtt  
import time  
import json  
import random

# *********************************************************************
# MQTT Config

dataChnId1 = "Temperature"  
MQTT_SERVER = "54.159.81.55"  
MQTT_PORT = 1883  
MQTT_ALIVE = 60  
MQTT_TOPIC1 = "Sensor/" + dataChnId1 + "/Room1" 

# *********************************************************************

mqtt_client = mqtt.Client()  
mqtt_client.connect(MQTT_SERVER, MQTT_PORT, MQTT_ALIVE)    

while True:  
  t0 = random.randint(0,30)
  payload = {"dataChnId":dataChnId1,"value":t0}
  print(dataChnId1 + " : " + str(t0))
  mqtt_client.publish(MQTT_TOPIC1, json.dumps(payload), qos=1)
  time.sleep(10)


Step 3. 安裝 Python 的 paho-mqtt 套件

在 TERMINAL 處輸入下方指令進行安裝套件
pip install paho-mqtt

★ 此指令代表使用 Python 的套件管理工作【 pip 】來安裝【 paho-mqtt 】套件

安裝完成畫面


Step 4. 執行 Python Code

在 TERMINAL 處輸入下方指令執行程式
python 檔名.py

★ 此指令代表使用【 python 】編譯器來執行【 檔名.py 】的程式
★ 本範例程式命名為 mcs_api.py,故此處執行方式為【 python mosquitto_mqtt.py 】


Step 5. TERMINAL 執行畫面


Step 6. 開啟 Node-RED 編輯頁面

❖ 6.1【 debug 】 頁籤 


Step 7. 查看 InfluxDB 是否有資料

❖ 7.1  登入到 AWS EC2
❖ 7.2  在終端機執行下方指令進入到 influxdb 指令模式
       influx

❖ 7.3  在終端機執行下方指令顯示目前的資料庫
       show databases

❖ 7.4  在終端機執行下方指令使用 SensorData 資料庫
       use SensorData

❖ 7.5  在終端機執行下方指令查看目前有多少 measurement
       show measurements

❖ 7.6  在終端機執行下方指令查看 measurement 中的 Temperature 的紀錄
       select * from Temperature

❖ 7.7  在終端機執行下方指令離開 influxdb 指令模式
       exit


Step 8. 查看 Grafana 資料視覺化結果

❖ 8.1  開啟 Grafana
  • IP
    • http://ip:3000
    • 請自行更改為 Grafana 所在位置,亦即是 AWS EC2 Ubuntu Server 所在的 IP 位置
  • 預設帳號
    • admin
  • 密碼
❖ 8.2  Grafana 資料視覺化結果
  • 數值小於 20

  • 數值大於 20


GitHub
List of blogs
ALL RIGHTS RESERVED. COPYRIGHT © 2018. Designed and Coded by Makee.io