什么是MQTT?
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和制动器(比如通过Twitter让房屋联网)的通信协议,在小的嵌入式里面使用很合适。
对MQTT的理解:
首先使用MQTT,理解它一个远程控制的协议,用户有三个发布用户,代理,订阅用户,这个可以用邮件的机制去理解。
学习使用MQTT可以选用很多Broker列表如下:
更多的broker链接
在这里为了练习选用c/c++开发的mosquitto,下面对这个进行安装练习
mosquitto安装方法如下:
下载:wget http://mosquitto.org/files/source/mosquitto-1.4.5.tar.gz 解压:tar zxvf mosquitto-1.4.5.tar.gz 进入文件夹中 cd mosquitto-1.4.5 看看文件的结构tree -L 1 -d 对文件结构大概有个了解 执行make (下面是缺少了必要的库出错,依次安装就好) 错误:fatal error: openssl/ssl.h: No such file or directory 原因是少了libssl 解决办法:sudo apt-get install libssl-dev 继续 make 错误:fatal error: ares.h: No such file or directory 原因是缺少了libc-ares 解决办法:sudo apt-get install libc-ares-dev 继续 make 错误:fatal error: uuid/uuid.h: No such file or directory 原因是缺少uuid-dev 解决办法:sudo apt-get install uuid-dev 继续make发现没有问题 执行make install 错误: Permission denied 解决办法sudo make install
安装完成以后发现命令会有下面几个:mosquitto mosquitto_passwd mosquitto_pub mosquitto_sub 在这里就不一一介绍了
mosquitto简单的使用方法如下:
为了快速的理解在本地中简单对mosquitto进行使用如下:
在开始的介绍中讲了MQTT分为三部分:
(1)用户
(2)代理
(3)发布者
首先:启动代理 执行: mosquitto -v (-v打开打印信息) 打印如下: 1510560760: mosquitto version 1.4.5 (build date 2017-11-13 00:06:09-0800) starting 1510560760: Using default config. 1510560760: opening ipv4 listen socket on port 1883. 1510560760: opening ipv6 listen socket on port 1883. 然后:启用用户 执行:mosquitto_sub -v -t sensor 错误:libmosquitto.so.1: cannot open shared object file: No such file or directory 解决方法:sudo cp /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
在代理中打印如下1510561967: New connection from 127.0.0.1 on port 1883. 1510561967: New client connected from 127.0.0.1 as mosqsub/11139-ubuntu (c1,k60). 1510561967: Sending CONNACK to mosqsub/11139-ubuntu (0,0) 1510561967: Received SUBSCRIBE from mosqsub/11139-ubuntu 1510561967: HY (QoS 0) 1510561967: mosqsub/11139-ubuntu 0 HY 1510561967: Sending SUBACK to mosqsub/11139-ubuntu 最后:启用发布者 执行:mosquitto_pub -t HY -m xiaobaiyu (让发布者给用户发一句话:xiaobaiyu)