MQTT代表MQ遥测传输。它是一种发布/订阅,极其简单和轻量级的消息传递协议,专为受限设备和低带宽,高延迟或不可靠的网络而设计。设计原则是最小化网络带宽和设备资源要求,同时还试图确保可靠性和一定程度的交付保证。这些原则也使该协议成为新兴的“机器到机器”(M2M)或“物联网”世界的连接设备,以及带宽和功率要求非常高的移动应用的理想选择。
MQTT实现对比(摘自Wikipedia)
名字 | 开发者 | 开发语言 | 类型 | 初次发布日期 | 最新发布版本 | 最新发布日期 | 许可证 |
---|---|---|---|---|---|---|---|
Adafruit IO | Adafruit | Ruby on Rails, Node.js | 客户端 | ? | 2.0.0 | ? | ? |
EMQX | Feng Lee | Erlang | 中间件 | 2016/4/13 | 3 | 2018/10/27 | Apache许可证 2.0 |
M2Mqtt | Eclipse基金会 | C# | 客户端 | 2017/5/20 | 4.3.0.0 | 2017/5/20 | Eclipse公共许可证 1.0 |
Machine Head | ClojureWerkz 团队 | Clojure | Client | 2013/11/3 | 1.0.0 | 2017/3/5 | 知识共享署名 3.0 Unported 许可证 |
moquette | Selva, Andrea | Java | 中间件 | 2015/7/8 | 0.1 | 2017/6/30 | Apache许可证 2.0 |
Mosquitto | Eclipse基金会 | C语言, Python | 中间件和客户端 | 2009/12/3 | 1.4.15 | 2018/2/27 | Eclipse公共许可证 1.0, Eclipse发行许可证 1.0 (BSD) |
Paho MQTT | Eclipse基金会 | C语言, C++, Java, Javascript, Python, Go | 客户端 | 2014/5/2 | 1.3.0 | 2017/6/28 | Eclipse公共许可证 1.0, Eclipse发行许可证 1.0 (BSD) |
wolfMQTT | wolfSSL | C语言 | 客户端 | 2015/11/6 | 0.14 | 2017/11/22 | GNU通用公共许可协议, version 2 |
MQTTRoute | Bevywise Networks | C语言, Python | 中间件 | 2017/4/25 | 1 | 2017/12/19 | 专有许可证 |
安装Mosquitto
sudo apt install mosquitto mosquitto-clients
- 测试Mosquitto(摘自博客)
启动两个终端,分别执行
mosquitto_sub -t topic1
#订阅者,订阅主题topic1
mosquitto_pub -t topic1 -h localhost -m "hi"
#发布者,关于topic1发布内容
可以观察到订阅者可以正常接收消息。否则应当检查树莓派其他相关设置。