《快速学会简单的使用Mqtt》

什么是MQTT?

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和制动器(比如通过Twitter让房屋联网)的通信协议,在小的嵌入式里面使用很合适。

对MQTT的理解:

首先使用MQTT,理解它一个远程控制的协议,用户有三个发布用户,代理,订阅用户,这个可以用邮件的机制去理解。

学习使用MQTT可以选用很多Broker列表如下:

emqttd

Mosquitto

hbmqtt

更多的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 HY

错误: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)
小结:
任何东西,没有实际的操作和分析实验那么根本就是不可能会的,在操作中慢慢的随手就可以用,那说明学会了,当自己研究源码并且按照自己的思想实现了才可以说是精通了,如果只是调用别人给的API只能说明是会用而已。

你可能感兴趣的:(物联网)