micropython下,如何使用mqtt对两个MQTT服务器发送和订阅消息,需要调用.wait_msg()吗
时间: 2023-01-11 20:55:36 浏览: 60
在 micropython 中使用 mqtt 库连接 MQTT 服务器并发送或订阅消息,可以参考如下步骤:
1. 安装 mqtt 库:
首先,需要将 mqtt 库下载到设备上,可以使用如下命令:
```python
import upip
upip.install('micropython-umqtt.simple')
```
2. 导入 mqtt 库并连接 MQTT 服务器:
```python
import ubinascii
import urequests
import umqtt.simple
def connect(client_id, host, port=1883):
client = umqtt.simple.MQTTClient(client_id, host, port)
client.connect()
return client
```
3. 发送消息到 MQTT 服务器:
```python
def publish(client, topic, payload):
client.publish(topic, payload)
```
4. 订阅 MQTT 服务器的消息:
```python
def subscribe(client, topic):
client.subscribe(topic)
return client.wait_msg()
```
在这个例子中,我们使用了 `wait_msg()` 方法来等待订阅的消息。如果你希望在收到消息时执行一些操作,可以使用 `set_callback()` 方法设置一个回调函数,当收到消息时会自动执行。
```python
def set_callback(client, callback):
client.set_callback(callback)
```
回调函数的签名应该是 `callback(topic, payload)`,其中 `topic` 是消息的主题,`payload` 是消息的内容。
示例代码:
```python
def on_message(topic, payload):
print('Received message:', topic, payload)
client = connect('client_id', 'mqtt.example.com')
client.set_callback(on_message)
client.subscribe('my/topic')
while True:
client.wait_msg()