mqtt 初识

来源:互联网 发布:单片机驱动5v继电器 编辑:程序博客网 时间:2024/05/29 11:53

 MQTT是IBM开发的一个即时通讯协议。MQTT是面向M2M和物联网的连接协议,采用轻量级发布和订阅消息传输机制。Mosquitto是一款实现了 MQTT v3.1 协议的开源消息代理软件,提供轻量级的,支持发布/订阅的的消息推送模式,使设备对设备之间的短消息通信简单易用。

    若初次接触MQTT协议,可先理解以下概念:
【MQTT协议特点】——相比于RESTful架构的物联网系统,MQTT协议借助消息推送功能,可以更好地实现远程控制
【MQTT协议角色】——在RESTful架构的物联网系统,包含两个角色客户端和服务器端,而在MQTT协议中包括发布者,代理器(服务器)和订阅者
【MQTT协议消息】——MQTT中的消息可理解为发布者和订阅者交换的内容(负载),这些消息包含具体的内容,可以被订阅者使用。
【MQTT协议主题】——MQTT中的主题可理解为相同类型或相似类型的消息集合。

Mosquitto

是一个实现了MQTT3.1协议的代理服务器,由MQTT协议创始人之一的Andy Stanford-Clark开发,它为我们提供了非常棒的轻量级数据交换的解决方案。

Mosquitto提供了Windows、Linux以及qnx系统的版本,安装文件可从http://mosquitto.org/files/binary/地址中获取,源码可以从最新的源码可从http://mosquitto.org/files/source/地址中获取。

下载最新版的exe文件


安装后目录


默认端口1883 在.conf文件中可修改

win下测试 开三个


2 简单测试
    一个完整的MQTT示例包括一个代理器,一个发布者和一个订阅者。测试分为以下几个步骤:
【1】启动服务mosquitto。
【2】订阅者通过mosquitto_sub订阅指定主题的消息。
【3】发布者通过mosquitto_pub发布指定主题的消息。
【4】代理服务器把该主题的消息推送到订阅者。

【测试说明】
    测试环境:ubuntu 14.04 虚拟机
    在本例中,发布者、代理和订阅者均为localhsot,但是在实际的情况下三种并不是同一个设备,在mosquitto中可通过-h(--host)设置主机名称(hostname)。为了实现这个简单的测试案例,需要在linux中打开三个控制台,分别代表代理服务器、发布者和订阅者。

图1 示例
2.1 启动代理服务
mosquitto -v
    【-v】打印更多的调试信息

2.2 订阅主题
mosquitto_sub -v -t sensor
    【-t】指定主题,此处为sensor
    【-v】打印更多的调试信息

2.3 发布内容
mosquitto_pub -t sensor  -m 12
    【-t】指定主题
    【-m】指定消息内容

2.4 运行结果
    当发布者推送消息之后,订阅者获得以下内容
broker服务端

下载RSMB,从IBM官方网站可下载,解压后打开其中的"windows"目录,你会分别发现以下三个可执行文件:

https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=d5bedadd-e46f-4c97-af89-22d65ffee070

  • broker.exe     : MQTT协议代理网关(不知这样解释是否正确?)
  • stdinpub.exe  :模拟发布者的客户端程序
  • stdoutsub.exe :模拟订阅者的客户端程序
   stdinpub.exe 与 stdoutsub.exe这两个客户端不是很适合初学者,建议大家下载ia92(也可从IBM官方网站下载到)。ia92.zip中的wmqttSample.jar可以用于客户端模拟。
ia92下载地址:

http://download.csdn.net/detail/uniquerhythm/5353124

http://www-01.ibm.com/support/docview.wss?uid=swg24006006

 2.1 启动broker.exe,如果后面不跟任何参数,即缺省监听端口是1883。broker.exe后面如果跟一个文件名,则表示此文件是配置文件,broker.exe将根据此配置文件中的参数进行工作。

 2.2 启动wmqttSample.jar,命令:

java -jar wmqttSample.jar
上述命令,你可以执行多次,分别来模拟多个订阅者与发布者。



  通过上图可以看到:

    1)broker.exe; 

    2)发布者,发布的主题为:testtopic; 

    3)订阅者,其订阅的主题为系统应用信息哦,也就是说我们可以通过一个订阅者来获取broker的运行信息;

   4)与5) 普通信息订阅者,其订阅的主题为:testtopic

2.3 在图2中输入一些内容,点击"Publish",普通信息订阅者便可以收到相关信息。

三、其它

3.1 越来越发现,把自己想说的,清楚、简单的写出来,对我来说是件很费力的事情,还得多训练训练;

3.2 摸索了二天,终于有点进展,相关界面如下:



3.3 推送的后台,大家可以搜索phpMqttClient,这也是一个开源项目。我只是在它的基础上,改了下界面,目的是学下bootstrap。

3.4 android、php、前台都是刚刚开始学习,自己的目的就是利用这个业余项目来加深对新语言的掌握。

3.5 我会陆陆续续把这块做完,并写出来!


客户端

java ia92下载地址:

http://download.csdn.net/detail/uniquerhythm/5353124

android 


php





0 0
原创粉丝点击