雜亂大全36-pi4 MQTT簡介+交握過程

  • 前言:介紹樹莓派4MQTT簡介+交握過程
tags: 六角學院

主題:雜亂大全36-pi4 MQTT簡介+交握過程

本篇重點:

  • 樹莓派4MQTT簡介
  • 自己設計的APP實際交握過程

MQTT 簡介

MQTT 是一種物聯網的通訊協定,
已在 2014 年成為OASIS國際標準
開發的目的是為了在窄寬帶以及
低耗能條件下傳送與接收處理訊息
採用 Publish/Subscribe 的方式
透過 Broker 做訊息溝通。
參考資料:維基百科
https://zh.wikipedia.org/zh-tw/MQTT

使用圖示


安裝 Mosquitto-實現MQTT

1
$ apt-get install mosquitto mosquitto-clients
  • 啟動
    1
    $ service mosquitto status

使用 mosquitto_sub 指令來訂閱指定的主題

  • 參數 -t 就是指定要訂閱的主題(topic)
  • 後面的 gtwang/test 就是主題的名稱。
    1
    $ mosquitto_sub -t gtwang/test

推撥訊息給server

接著再開啟另外一個虛擬終端機視窗
作為訊息的發送者,
使用 mosquitto_pub 將訊息發送
至 gtwang/test 這個主題

1
$ mosquitto_pub -t gtwang/test -m "Hello, world!"
  • 此時訂閱者就會收到server推出的 “Hello, world!”

如果想從自製網頁控制Pi4

由前端按鈕(RWD、app)搭配後端工程->控制Pi4

方式:

1
2
3
若需使用網頁控制(後端工程),建議使用SSL網頁加密 (port 開443)
*傳統HTTP 使用port 80,部分舊的協定(交握)無法在SSL下傳遞
*若要用後端工程(如PHP)控制,通常會搭配MQTT協定,可用TLS加密

交握過程:

1
2
3
4
5
6
我是使用PHP、Python
經由MQTT和API傳遞指令(字串)到MQTT主機
再由主機推撥(客戶需監聽主機) 給Pi4客戶端,
客戶端收到後,由python多工處理收到的指令,
執行相對應的shell指令
可達成通電、開關、回傳信號、mail、開啟視訊鏡頭...等等功能

提醒:

==以上步驟,若要從外網實作,需開啟分享器的port與指定特定IP==

交握舉例:

1
2
3
4
5
6
7
8
1.當 控制者 從 響應式前端網頁 介面上按下"開啟鏡頭"
2.網頁後端會傳遞 "open-camera-pi-001"
3.MQTT主機收到 密碼(雙方先溝通好加密模式)、指命
4.經過解密確認,主機推撥出 "open-camera-pi-001"
5.客戶的pi4監聽到 "open-camera-pi-001"
6.由Python(多工)檢測,是否為自己這台,並下達對應的shell
7.客戶端Pi4開啟鏡頭,並回傳鏡頭已經開啟的代碼給網頁後端主機
8.網頁前端由AJAX顯示,已經開啟鏡頭,並顯示相對應的畫面

參考資料

[1]Day19 - 物聯網基礎傳輸協議 - MQTT
https://ithelp.ithome.com.tw/articles/10224407
[2]樹莓派安裝 Mosquitto 輕量級 MQTT Broker 教學
https://blog.gtwang.org/iot/raspberry-pi/raspberry-pi-mosquitto-mqtt-broker-iot-integration/