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