这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 物联网技术 » 【Joytag 香蕉派】Mosquitto, mosquitto-clients

共2条 1/1 1 跳转至

【Joytag 香蕉派】Mosquitto, mosquitto-clients 初接触

专家
2016-06-05 18:11:09     打赏
简介

上篇文章《【Joytag 香蕉派】在香蕉派M3上安装和使用Mosquitto》中我们探讨了如何在香蕉派M3上安装Mosquitto, mosquitto-clients. 本文将对如何使用做一个简单的了解。


关于MQTT

如果你清楚MQTT是啥,那么可以参考如下两个链接
https://en.wikipedia.org/wiki/MQTT
http://mqtt.org/faq
笔者英语水平有限,就不献丑翻译,误导大家啦。

消息代理(Broker): 作为服务器接受订阅、处理和分发消息。
客户端(Client): 订阅消息、发布消息。


本地测试

(一) 启动Broker

本例中我们使用Mosquitto作为Broker, 参考前文, 启动mosquitto:
  1. mosquitto -c /etc/mosquitto/mosquitto.conf -d
复制代码
(二) 订阅消息

mosquitto-clients中,包含两个工具
mosquitto_sub,用于订阅消息
mosquitto_pub,用于发布消息

我们使用mosquitto_sub订阅一个主题下的消息
  1. mosquitto_sub -v -t "topic/joytag/bananapi" -h localhost &
复制代码
(三) 发布消息

我们使用mosquitto_pub发布一条新消息
  1. mosquitto_pub -t "topic/joytag/bananapi" -m "Hello Joytag BPI" -h localhost
复制代码
现在我们就可以在终端收到我们发送的消息喽。
  1. topic/joytag/bananapi Hello Joytag BPI
复制代码
上述例子,我们在一个终端窗口下使用如下例子,但实际上消息从发布者-》Broker-》订阅者。
所以我们可以开启两个终端(可以是不同的用户),一个作为订阅者,一个作为发布者,来观察消息的传递情况。


局域网内测试


我们可以在局域网内使用三台设备来进行如下测试:
设备1:作为Broker
设备2:作为订阅者
设备3:作为发布者

与之前测试的区别在于,我们需要在订阅和发布命令中之指定Broker的地址。
在我的局域网中,使用香蕉派M3作为Broker,局域网IP地址为192.168.249.82

所以,我们分别在三台设备上执行如下命令:

设备一:启动mosquittoBroker
  1. mosquitto -c /etc/mosquitto/mosquitto.conf -d
复制代码
设备二:订阅主题

  1. mosquitto_sub -v -t "topic/joytag/bananapi" -h 192.168.249.82 &
复制代码
设备三:发布消息
  1. mosquitto_pub -t "topic/joytag/bananapi" -m "Hello Joytag BPI" -h 192.168.249.82

复制代码
发布成功后我们可以在设备二上收到上述消息。


公网测试

在公网上我们测试订阅和发布消息,来进一步理解MQTT的消息传递机制。
由于将香蕉派M3放到公网上涉及DDNS以及NAT等,本例暂不做讨论。

我们使用eclipse提供的sandbox,详情参考:
http://iot.eclipse.org/getting-started#sandboxes

设备二:订阅主题
  1. mosquitto_sub -v -t "topic/joytag/bananapi" -h iot.eclipse.org &
复制代码
设备三:发布消息
  1. mosquitto_pub -t "topic/joytag/bananapi" -m "Hello Joytag BPI" -h iot.eclipse.org

复制代码
与我们上述例子的区别就在于-h后的地址使用iot.eclipse.org


发现的问题

在之后的一系列测试中,我们发现在(iot.eclipse.org)的订阅连接,每两秒就被踢出,需要对其进行判断并进行重连。
(通过esp8266 arduino MQTT client测试发现)
估计是为了保证所有测试者可以正常连接,eclipse煞费苦心啊。

我在Amazon的ec2上安装了Mosquitto,测试发现并不存在此问题。
如果使用esp8266 arduino MQTT client,以及如何在Amazon的ec2上安装了Mosquitto,就不在本文讨论了。


更进一步

如果想了解mosquitto_sub, mosquitto_pub的更深入用法,请参考对应手册。
  1. man mosquitto_sub
  2. man mosquitto_pub
复制代码

总结

本文简单介绍了Mosquitto,mosquitto_sub, mosquitto_pub的使用,分别在同一台主机上,局域网内,以及公共网(Internet)上进行了测试。
并介绍了eclipse提供的sandbox。
谨以本文抛砖引玉,希望大家折腾出更好玩的东西


专家
2016-06-06 06:25:28     打赏
2楼
谢谢分享

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]