樹莓派學習筆記:MQTT協議的簡單應用

前言

基於MQTT的協議,將外網手機發送的字符通過樹莓派輸出。
PC上搭建MQTT服務器,樹莓派和手機作爲客戶端,發佈和訂閱消息。

MQTT簡介

MQTT 是輕量級基於代理的發佈/訂閱的消息傳輸協議,設計思想是開放、簡單、輕量、易於實現。這些特點使它適用於受限環境。該協議的特點有:

使用發佈/訂閱消息模式,提供一對多的消息發佈,解除應用程序耦合。
對負載內容屏蔽的消息傳輸。
使用 TCP/IP 提供網絡連接。
小型傳輸,開銷很小(固定長度的頭部是 2 字節),協議交換最小化,以降低網絡流量。
使用 Last Will 和 Testament 特性通知有關各方客戶端異常中斷的機制。
有三種消息發佈服務質量:
“至多一次”,消息發佈完全依賴底層 TCP/IP 網絡。會發生消息丟失或重複。這一級別可用於如下情況,環境傳感器數據,丟失一次讀記錄無所謂,因爲不久後還會有第二次發送。
“至少一次”,確保消息到達,但消息重複可能會發生。
“只有一次”,確保消息到達一次。這一級別可用於如下情況,在計費系統中,消息重複或丟失會導致不正確的結果。

MQTT服務器的搭建:

選擇Apollo搭建MQTT服務器
下載地址:http://activemq.apache.org/apollo/download.html

步驟:
1.下載Apollo服務器並解壓,在CMD環境運行其工作目錄下的 bin\apollo.cmd,命令後面帶上參數「create mybroker」,創建服務器實例。這裏需要Java環境,系統環境變量下要有JAVA_HOME。

2.進入 mybroker\bin\ 目錄,在CMD輸入命令「apollo-broker.cmd run」

這裏寫圖片描述

3.mybroker文件夾中 etc\apollo.xml 是配置服務器信息的文件etc\users.properties 文件包含連接MQTT服務器時用到的用戶名和密碼,初始默認帳號是admin,密碼password;

登錄接口:https://127.0.0.1:61681/http://127.0.0.1:61680/

樹莓派訂閱:

3.1 安裝paho-mqtt
使用pip工具安裝paho-mqtt,輸入以下指令即可:
sudo pip install paho-mqtt

3.2 樹莓派訂閱代碼——client.py

# File Name:mqtt_chat_client.py
# Python Version:3.5.1

import paho.mqtt.client as mqtt

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.subscribe("gpio")


def on_message(client, userdata, msg):
    print(msg.payload)


if __name__ == '__main__':
    client = mqtt.Client()
    client.username_pw_set("admin", "password")
    client.on_connect = on_connect
    client.on_message = on_message

    HOST = "192.168.0.105"
    client.connect(HOST, 61613, 60)

    user = raw_input("enter name:")
    client.user_data_set(user)

    client.loop_start()

    while True:
        str = raw_input()
        if str:
            client.publish("gpio", str)

手機端發佈訂閱

下載mqtt的app軟件,輸入MQTT代理服務器的IP地址,賬號 密碼登錄。
這裏寫圖片描述

樹莓派運行mqtt代碼 python client.py
app輸入訂閱主題和消息內容,最後點擊Publish,此時樹莓派的串口就會輸出消息內容了

這裏寫圖片描述

樹莓派輸出:
這裏寫圖片描述

最後:

paho-mqtt擴展庫的更多功能的請參考:paho-mqtt 1.1 : Python Package Index

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章