學習目標
- 透過 Python 傳送數據到 Mosquitto MQTT Broker
前置準備作業
一台已連上網路的電腦
已安裝 Mosquitto MQTT Broker 【 安裝教學 】
已安裝 Node-RED 【 安裝教學 】
已設定完成 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
- macOS 登入 AWS EC2 教學
- Windows 登入 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
- 密碼
- 請輸入 在 AWS EC2 安裝 Grafana 教學文章中的【 第 3.1 重設密碼 】步驟中所設定的密碼
❖ 8.2 Grafana 資料視覺化結果
- 數值小於 20
- 數值大於 20