MQTT mosquitto 订阅 、发布常用命令及示例

目录

 1. mosquitto 

 2. mosquitto_pub

 3. mosquitto_sub


 1. mosquitto 

1. 启动Mosquitto代理服务器

这个命令将启动Mosquitto MQTT代理服务器,默认监听1883端口。

2. 指定监听端口启动Mosquitto代理服务器:

mosquitto -p 1884

这个命令将启动Mosquitto MQTT代理服务器,并监听在1884端口。

3. 指定配置文件启动Mosquitto代理服务器:

mosquitto -c mosquitto.conf

这个命令将使用指定的配置文件(例如mosquitto.conf)启动Mosquitto MQTT代理服务器。

4. 查看Mosquitto代理服务器的日志输出:

mosquitto -v

这个命令将启动Mosquitto MQTT代理服务器,并打印详细的日志输出信息。

5. 发布消息到指定主题:

mosquitto_pub -h broker.hivemq.com -t test/topic -m "Hello, MQTT!"

这个命令将消息 "Hello, MQTT!" 发布到名为 "test/topic" 的主题。

6. 订阅指定主题并接收消息:

mosquitto_sub -h broker.hivemq.com -t test/topic

这个命令将订阅名为 "test/topic" 的主题,并接收该主题下的所有消息。

7. 指定用户名和密码订阅主题:

mosquitto_sub -h broker.hivemq.com -t test/topic -u your_username -P your_password

这个命令将在连接到MQTT代理服务器时使用指定的用户名和密码,并订阅 "test/topic" 主题。

 2. mosquitto_pub

mosquitto_pub 是Mosquitto MQTT客户端工具的一部分,它用于发布(publish)MQTT消息到指定的主题。以下是一些常用的 mosquitto_pub 命令及示例:

1. 发布消息到指定主题:

mosquitto_pub -h broker.hivemq.com -t test/topic -m "Hello, MQTT!"

这个命令将消息 "Hello, MQTT!" 发布到名为 "test/topic" 的主题。

2. 指定用户名和密码发布消息:

mosquitto_pub -h broker.hivemq.com -t test/topic -m "Hello, MQTT!" -u your_username -P your_password

这个命令将在连接到MQTT代理服务器时使用指定的用户名和密码,并发布消息到 "test/topic" 主题。

3. 指定消息的QoS级别:

mosquitto_pub -h broker.hivemq.com -t test/topic -m "Hello, MQTT!" -q 1

这个命令将消息发布到 "test/topic" 主题,并将消息的QoS级别设置为1。

4. 指定消息的保留标志:

mosquitto_pub -h broker.hivemq.com -t test/topic -m "Hello, MQTT!" -r

这个命令将消息发布到 "test/topic" 主题,并设置消息的保留标志为true。

5. 从文件中读取消息内容:

mosquitto_pub -h broker.hivemq.com -t test/topic -f message.txt

这个命令将从名为 "message.txt" 的文件中读取消息内容,并将其发布到 "test/topic" 主题。

 3. mosquitto_sub

以下是一些常用的 mosquitto_sub 命令及示例:

1. 订阅指定主题并接收消息:

mosquitto_sub -h broker.hivemq.com -t test/topic

这个命令将订阅名为 "test/topic" 的主题,并接收该主题下的所有消息。

2. 指定用户名和密码订阅主题:

mosquitto_sub -h broker.hivemq.com -t test/topic -u your_username -P your_password

这个命令将在连接到MQTT代理服务器时使用指定的用户名和密码,并订阅 "test/topic" 主题。

3. 指定消息的QoS级别:

mosquitto_sub -h broker.hivemq.com -t test/topic -q 1

这个命令将订阅 "test/topic" 主题,并将消息的QoS级别设置为1。

4. 打印接收到的消息内容和主题:

mosquitto_sub -h broker.hivemq.com -t test/topic -v

这个命令将订阅 "test/topic" 主题,并打印接收到的消息内容和主题。

5. 指定客户端标识订阅主题:

mosquitto_sub -h broker.hivemq.com -t test/topic -i myclient

这个命令将使用 "myclient" 作为客户端标识连接到MQTT代理服务器,并订阅 "test/topic" 主题。

注意:这些是一些常用的Mosquitto命令及示例,你可以根据自己的需求进行调整和使用。更多关于Mosquitto命令和选项,请参考Mosquitto官方文档。 

以下是 Mosquitto 常用命令的详细示例:

1. mosquitto_sub 订阅主题并接收消息:

- 订阅主题 mytopic 并接收消息:

    mosquitto_sub -t mytopic
     

- 订阅主题 mytopic ,指定 MQTT 代理服务器的主机名为 localhost ,端口号为 1883 ,并显示接收到的消息的详细信息:

    mosquitto_sub -t mytopic -h localhost -p 1883 -v
     

- 订阅主题 mytopic ,连接到 MQTT 代理服务器时使用用户名和密码进行身份验证:

    mosquitto_sub -t mytopic -u myusername -P mypassword
     

2. mosquitto_pub 发布消息到指定主题:

- 发布消息 Hello, MQTT! 到主题 mytopic :

    mosquitto_pub -t mytopic -m "Hello, MQTT!"
     

- 发布消息 Hello, MQTT! 到主题 mytopic ,指定 MQTT 代理服务器的主机名为 localhost ,端口号为 1883 :

    mosquitto_pub -t mytopic -m "Hello, MQTT!" -h localhost -p 1883
     

- 发布消息 Hello, MQTT! 到主题 mytopic ,连接到 MQTT 代理服务器时使用用户名和密码进行身份验证:

    mosquitto_pub -t mytopic -m "Hello, MQTT!" -u myusername -P mypassword
     

3. mosquitto_passwd 管理 Mosquitto 的用户密码:

- 创建新用户 myuser 并设置密码,将其保存到名为 passwordfile 的密码文件中:

    mosquitto_passwd -c passwordfile myuser
     

- 为现有用户 myuser 设置密码,将密码保存到名为 passwordfile 的密码文件中:

    mosquitto_passwd -b passwordfile myuser mypassword
     

- 删除名为 myuser 的用户,从名为 passwordfile 的密码文件中:

    mosquitto_passwd -D passwordfile myuser
     

4. mosquitto_ctrl 控制 Mosquitto 代理程序的运行:

- 显示 Mosquitto 代理程序的运行状态:

    mosquitto_ctrl status
     

- 启动 Mosquitto 代理程序:

    mosquitto_ctrl start
     

- 停止 Mosquitto 代理程序:

    mosquitto_ctrl stop
     

- 重启 Mosquitto 代理程序:

    mosquitto_ctrl restart
     

这些示例可以帮助您更好地理解如何使用 Mosquitto 的常用命令。根据您的需求,您可以根据这些示例进行相应的修改和调整。

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mosquitto订阅端解析MQTT消息的JSON格式,你可以使用C语言中的标准库和第三方库来实现。以下是一个示例代码,演示了如何使用Mosquitto订阅MQTT主题,并解析接收到的JSON消息: ```c #include <stdio.h> #include <stdlib.h> #include <mosquitto.h> #include <cJSON.h> #define MQTT_ADDRESS "mqtt.example.com" #define MQTT_PORT 1883 #define MQTT_TOPIC "sensors" // Mosquitto回调函数,用于处理连接成功、消息接收和连接断开时的事件 void on_connect(struct mosquitto *mosq, void *userdata, int result) { if(result == 0) { printf("Connected to MQTT broker\n"); mosquitto_subscribe(mosq, NULL, MQTT_TOPIC, 0); } else { fprintf(stderr, "Connect failed: %s\n", mosquitto_strerror(result)); } } void on_message(struct mosquitto *mosq, void *userdata, const struct mosquitto_message *message) { if(message->payloadlen > 0) { // 解析JSON消息 cJSON *root = cJSON_Parse(message->payload); if(root == NULL) { fprintf(stderr, "Failed to parse JSON message\n"); return; } // 从JSON中提取数据 cJSON *file_content = cJSON_GetObjectItem(root, "file_content"); if(file_content != NULL && file_content->type == cJSON_String) { printf("Received file content: %s\n", file_content->valuestring); } // 释放JSON对象 cJSON_Delete(root); } } void on_disconnect(struct mosquitto *mosq, void *userdata, int rc) { printf("Disconnected from MQTT broker\n"); } int main() { // 初始化Mosquittomosquitto_lib_init(); // 创建Mosquitto客户端实例 struct mosquitto *mosq = mosquitto_new(NULL, true, NULL); if(mosq == NULL) { fprintf(stderr, "Failed to create Mosquitto instance\n"); mosquitto_lib_cleanup(); return 1; } // 设置连接、消息接收和连接断开的回调函数 mosquitto_connect_callback_set(mosq, on_connect); mosquitto_message_callback_set(mosq, on_message); mosquitto_disconnect_callback_set(mosq, on_disconnect); // 连接到MQTT代理服务器 int rc = mosquitto_connect(mosq, MQTT_ADDRESS, MQTT_PORT, 0); if(rc != MOSQ_ERR_SUCCESS) { fprintf(stderr, "Connect failed: %s\n", mosquitto_strerror(rc)); mosquitto_destroy(mosq); mosquitto_lib_cleanup(); return 1; } // 循环处理MQTT事件 while(mosquitto_loop(mosq, 0, 1) == MOSQ_ERR_SUCCESS) {} // 释放资源 mosquitto_destroy(mosq); mosquitto_lib_cleanup(); return 0; } ``` 在上述示例中,我们使用Mosquitto订阅了一个MQTT主题,并设置了连接、消息接收和连接断开的回调函数。 在`on_message`回调函数中,我们首先将收到的MQTT消息的payload(即消息内容)解析为JSON对象。然后,我们可以使用cJSON库从JSON对象中提取所需的数据。在示例中,我们提取了名为`file_content`的字符串键值对。 最后,我们在`main`函数中循环处理MQTT事件,以保持与MQTT代理服务器的连接。当收到订阅的主题上的消息时,将触发`on_message`回调函数进行解析和处理。 请确保在编译和运行代码之前,你已正确安装了所需的Mosquitto库和cJSON库,并将相关的头文件和库文件包含到你的项目中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值