esp_mqtt_client_publish的用法
时间: 2023-07-31 13:10:42 浏览: 529
`esp_mqtt_client_publish()` 函数是 ESP-IDF 中 MQTT 客户端库的一个函数,用于向 MQTT 服务器发布消息。其函数原型如下:
```c
int esp_mqtt_client_publish(esp_mqtt_client_handle_t client, const char *topic, const char *data, int len, int qos, int retain);
```
参数说明:
- `client`:MQTT 客户端句柄。
- `topic`:消息主题。
- `data`:消息数据。
- `len`:消息数据长度。
- `qos`:消息的服务质量等级,取值为 0、1 或 2。
- `retain`:是否将消息保留到服务器,取值为 0 或 1。
使用方法如下:
```c
// 假设已经创建了 MQTT 客户端并连接到了服务器
// 发布消息
int msg_id = esp_mqtt_client_publish(client, "test/topic", "Hello, MQTT!", 12, 0, 0);
if (msg_id < 0) {
// 发布消息失败
} else {
// 发布消息成功
}
```
以上代码将向主题为 "test/topic" 的频道发布一条消息,消息内容为 "Hello, MQTT!"。注意,如果 `qos` 参数为非零值,那么 `esp_mqtt_client_publish()` 函数会等待服务器返回确认消息,也就是说,该函数是一个阻塞函数,如果等待超时或者出错,将返回负值。如果 `qos` 参数为 0,则函数立即返回。
阅读全文