Posts Mosquitto 笔记
Post
Cancel

Mosquitto 笔记

1. MQTT

MQTT(MQ Telemetry Transport)是轻量级的消息传输协议,它允许设备高效地通过受限网络与远程系统进行异步通信。

MQTT的特点

  • 发布/订阅模式可以提供一对多的消息发布,解除了应用程序之间的耦合

  • 消息传输屏蔽了报文的内容

  • 使用TCP/IP提供基本的网络连接

  • 三种用于消息分发的质量服务:

    • “至多一次”
    • “至少一次”
    • “只有一次”
  • 传输开销很小(固定长度的报头只有两字节),协议交换最小化,以减少网络流量

  • 使用Last Will和Testament特性来通知相关部分客户端异常断开链接的机制

2. Mosquitto

Mosquitto 是一个开源的消息代理软件,支持 MQTT V3.1 和 V3.1.1 协议。

3. Raspberry Pi 安装 Mosquitto

1
2
3
4
5
6
7
8
$ sudo apt-get install libssl-dev libc-ares-dev uuid-dev
$ wget http://mosquitto.org/files/source/mosquitto-1.4.8.tar.gz
$ tar xvzf mosquitto-1.4.8.tar.gz
$ cd mosquitto-1.4.8
$ make
$ sudo make install
$ sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
$ sudo ldconfig

4. Centos 安装 Mosquitto

1
2
3
4
5
6
7
# wget http://mosquitto.org/files/source/mosquitto-1.4.8.tar.gz
# tar xvzf mosquitto-1.4.8.tar.gz
# cd mosquitto-1.4.8
# make
# make install
# ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
# ldconfig

5. 测试

一个完整的MQTT示例包括代理器、发布者和订阅者。这里打开三个终端,分别代表代理器、发布者和订阅者。

(1) 启动 Mosquitto 服务器(代理器)

1
mosquitto -v

(2) 订阅主题(订阅者)

1
mosquitto_sub -v -t sensor

(3)发布内容(发布者)

1
mosquitto_pub -t sensor -m 12

当发布者推送消息后,订阅者会获得以下内容:

sensor 12

6. 可能遇到的问题

(1) make[1]: cc: Command not found

1
# yum install gcc

(2) error: ares.h: No such file or directory

1
# yum install c-ares-devel

(3) make[2]: g++: Command not found

1
# yum install gcc-c++

(4) error: uuid/uuid.h: No such file or directory

1
# yum install libuuid-devel

7. 其他

需要注意的是,Centos 上的软件包和 debian 上的软件包命名规则不同。编译过程中如果提示缺少某个头文件,可以用 yum search [filename] 命令搜索一下,找到相应的软件包再安装。

This post is licensed under CC BY 4.0 by the author.

触摸屏与LCD坐标转换

MQTT Embeded 学习笔记(发布消息)