咸鱼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’(跟代码发布的主题一致。)在下方空白框输入
在这里插入图片描述
点击发布可在工具中查看收到的信息
在这里插入图片描述

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