鹹魚ESP32實例—MQTT

由於特殊的發佈/訂閱機制,服務器不需要存儲數據(當然也可以在服務器的設備上建立一個客戶端來訂閱保存信息),因此非常適合海量設備的傳輸。MicroPython 已經封裝好了 MQTT 客戶端的庫文件。直接用就完了~!點擊查看MQTT簡介


ZTWF開發板
在這裏插入圖片描述

構造函數
client=simple. MQTTClient (client_id, server, port)
構建 MQTT 客戶端對象。
client_id: 客戶端 ID,具有唯一性;server: 服務器地址,可以是 IP 或者網址;port:服務器端口。(服務器通常採用的端口,可以自定義。)
使用方法
client.connect()
連接到服務器。
client.publish(TOPIC,message)
發佈。TOPIC:主題編號;message: 信息內容,例:‘Hello~’
client.subscribe(TOPIC)
訂閱。TOPIC:主題編號。
client.set_callback(callback)
設置回調函數。callback:訂閱後如果接收到信息,就執行相名稱的回調函數。
client.check_msg()
檢查訂閱信息。如收到信息就執行設置過的回調函數 callback。

爲了方便測試,我們可以使用 MQTT 網絡助手進行調試。這裏推薦一個在線MQTT 網絡調試助手:http://mqtt.p2hp.com/websocket/打開上面網址,即可看到 MQTT 在線調試助手。可以配置基本信息,這裏默認即可,點擊連接。

發佈者(publish)參考代碼:
import network
from machine import Timer
from mqttclient import MQTTClient
wifi = network.WLAN(network.STA_IF)#一般都是STA
wifi.active(True)
wifi.connect('xianyu','密碼')     #你要連接的wifi賬號密碼
print(wifi.ifconfig())  #輸出wifi 的ip地址等信息  
#發佈數據任務
def MQTT_Send(tim):
  client.publish(TOPIC, 'Hello xianyu!')

SERVER = 'mqtt.p2hp.com'
PORT = 1883
CLIENT_ID = 'xianyu' # 客戶端 ID
TOPIC = 'xianyu' # TOPIC 名稱
client = MQTTClient(CLIENT_ID, SERVER, PORT) 
client.connect()
tim = Timer(-1)
 #開啓RTOS定時器,編號爲-1,週期1000ms,執行socket通信接收任務
tim.init(period=1000, mode=Timer.PERIODIC,callback=MQTT_Send)

在這裏插入圖片描述
連接成功後顯示connected,然後點擊訂閱新主題
在這裏插入圖片描述
Topic設置好,點擊訂閱
在這裏插入圖片描述

每秒傳一次數據
在這裏插入圖片描述

訂閱者(subscribe)參考代碼:
import network
from machine import Timer
from mqttclient import MQTTClient
wifi = network.WLAN(network.STA_IF)#一般都是STA
wifi.active(True)
wifi.connect('xianyu','密碼')  #你要連接的wifi賬號密碼
print(wifi.ifconfig())  #輸出wifi 的ip地址等信息  
#設置 MQTT 回調函數,有信息時候執行
def MQTT_callback(topic, msg):
  print('topic: {}'.format(topic))
  print('msg: {}'.format(msg))
#接收數據任務 
def MQTT_Rev(tim):
  client.check_msg()
SERVER = 'mqtt.p2hp.com'
PORT = 1883
CLIENT_ID = 'xianyu' # 客戶端 ID
TOPIC = 'xianyu' # TOPIC 名稱
client = MQTTClient(CLIENT_ID, SERVER, PORT) #建立客戶端對象
client.set_callback(MQTT_callback) #配置回調函數
client.connect()
client.subscribe(TOPIC) #訂閱主題
tim = Timer(-1)
tim.init(period=300, mode=Timer.PERIODIC,callback=MQTT_Rev)

“訂閱者”代碼測試方法跟“發佈者”相反。將“訂閱者”代碼下載到開發板,然後在電腦 MQTT 助手中發佈主題修改爲:‘xianyu’(跟代碼發佈的主題一致。)在下方空白框輸入
在這裏插入圖片描述
點擊發布可在工具中查看收到的信息
在這裏插入圖片描述

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