MQTT 實作


MQTT(message queuing telemetry transport) protocol

  1. 針對網路品質不佳、資源吃緊的嵌入、行動設備
  2. Pub/Sub,一對多
  3. TCP/IP
  4. header 長度固定,只有 2bytes
  5. 有 Last Will 機制,告知異常斷開
  6. 可能節省用電量
QoS Level
  • 0 - 最多發一次,可能會遺失或重複訊息,適合連續發送的Sensor,沒很要求可靠性(預設)
  • 1 - 最少發一次,保證訊息會送到,但可能重複
  • 2 - 只發一次,對訊息品質最要求,不可多或少,如計費裝置

Mosquitto

  • 最輕量
  • 可與其他 MQTT 服務整合
  • Client 建議使用 Paho

RabbitMQ


Paho 專案 (link)

Client Solution,可連接支援 MQTT 協定的其他 MQ 服務
  • Javascript - mqttws31.js
  • 另外支援 Java、Python、Go、C、.Net、Android、Embedded C/C++
  • 沒有 PHP,可改用 Mosquitto-PHP (tutorial)

Hello World (Mosquitto)

  • Mac brew + cmd
  • $ brew install mosquitto
    $ ln -sfv /usr/local/opt/mosquitto/*.plist ~/Library/LaunchAgents
    $ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mosquitto.plist
    #第一個視窗,訂閱 topic
    $ mosquitto_sub -t topic/vvvvv
    #開第二個 terminal 視窗,並發布
    $ mosquitto_pub -t topic/vvvvv -m "Hello World"
    
    
  • docker + mqtt-spy
  • $ docker run -itd -p 1883:1883 -p 9001:9001 eclipse-mosquitto
    #需要 websocket 可使用下面這套,ws port 為 9001
    $ docker run -d -p 1883:1883 -p 9001:9001 --name=mosquitto sourceperl/mosquitto
    #下載 mott-spy GUI
    https://github.com/eclipse/paho.mqtt-spy/wiki/Downloads
    
    

GUI (mac)




retained 將訊息持久化


參考文獻
http://cheng-min-i-taiwan.blogspot.tw/2015/03/raspberry-pimqtt-android.html
MQTT 實作 MQTT 實作 Reviewed by Wild on 2/27/2017 06:24:00 下午 Rating: 5

沒有留言:

沒有Google帳號也可發表意見唷!

技術提供:Blogger.