狗趴(GodPub),开源硬件学习与实践

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 10123|回复: 0
打印 上一主题 下一主题

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

[复制链接]

84

主题

143

帖子

725

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
725
QQ
跳转到指定楼层
楼主
发表于 2016-6-5 18:09:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原文信息

标题:【Joytag 香蕉派】Mosquitto, mosquitto-clients 初接触
连接:http://forum.godpub.com/thread-122-1-1.html
备注:狗趴论坛首发,转载请注明出处。


简介

上篇文章《【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。
谨以本文抛砖引玉,希望大家折腾出更好玩的东西。

后续更多精彩内容,请关注狗趴论坛:http://www.godpub.com
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
天理路上甚宽,稍游心,胸中便觉广大宏朗;
人欲路上甚窄,才寄迹,眼前俱是荆棘泥涂。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|狗趴(GodPub) Arduino&Raspberry Pi开源硬件学习与实践[QQ群:20085629]  

GMT+8, 2024-4-25 10:29 , Processed in 0.067891 second(s), 35 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表