物联网通信之——Mqtt

总述

Mqtt是目前物联网使用最广泛的通信之一,底层是基于TCP连接进行数据通信,采用订阅/发布的通信协议,非常适合低带宽、低开销的硬件终端场景使用。

设备: 可发布,可订阅到主题
代理服务器: 缓存消息数据,接收发布消息并转发给订阅的设备

Linux搭建Mqtt服务器

1、 安装mosquitto

  • sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
  • sudo apt-get update
  • sudo apt-get install mosquitto

2、查看运行状态

  • sudo service mosquitto status

3、停止与运行

  • sudo service mosquitto start
  • sudo service mosquitto stop

4、用户配置

  • /etc/mosquitto/conf.d/default.conf 此文件为用户与密码保存的路径设置
  • allow_anonymous false 不允许匿名登录
    password_file /etc/mosquitto/passwd
    复制以上至第一步路径文件
  • sudo mosquitto_passwd -c /etc/mosquitto/passwd 用户名

5、本地模拟设备

  • 安装客户端 sudo apt-get install mosquitto-clients
参数 作用
-h 代理服务器主机地址
-t 指定主题
-u 用户名
-P 用户密码
-i 客户端ID
-m 发布消息内容
-q 消息等级 0最多发一次 1最少发一次 2仅发一次(保证设备端有且接收到一次)
  • 发布示例

  • mosquitto_sub -h localhost -t “test” -u test1 -P 1 -i “client1”

  • 订阅示例
    mosquitto_pub -h localhost -t “test” -u test1 -P 1 -i “client2” -m “hello, world!”

在这里插入图片描述

xr808、xr872连接

使用例程mqtt

1、添加联网操作
在这里插入图片描述
连接路由成功后,会在事件里创建mqtt线程

2、连接参数修改

#define MQTT_DEMO_HOST_NAME 你的电脑ip
#define MQTT_DEMO_USERNAME 非匿名登录填写,登录用户名
#define MQTT_DEMO_PASSWORD 非匿名登录填写,登录用户密码

3、实验结果
订阅与发布的都是同一Topic,故设备端接收的数据就是发布的
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/tulongyongshi/article/details/108181149