【发布时间】:2017-02-06 20:06:42
【问题描述】:
我目前有两个 MQTT 代理都运行良好。其中之一是我的 本地 网络上的 Raspberry Pi。另一个是托管在CloudMQTT 上的远程 代理。
目标是使两个代理相互同步。当然,最简单的解决方案是使用网桥,但我在设置正确的网桥时遇到了一些麻烦。
如下图所示,当我尝试在CloudMQTT 上设置网桥时,它会要求'Connection uri'。对于远程代理,这将是mqtt://username:password@m20.cloudmqtt.com:1883,但我似乎无法弄清楚如何为本地代理执行此操作。
据我所知,只有当您拥有静态 IP 并且端口转发到 Raspberry Pi 时,您才能连接到本地网络,那么我该如何解决这个问题?两个broker需要保持一个permanent TCP连接打开,但是远程broker自己不能打开。本地代理不能打开这个连接吗?如果是这样,我将如何让两个代理同步?
感谢您的帮助,非常感谢您提前提供的帮助!
编辑:
这是我完整的 /etc/mosquitto/mosquitto.conf 文件:
pid_file /var/run/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d
connection CloudMQTT-Bridge
topic # both 2 local/testing remote/testing
bridge_protocol_version mqttv311
address m20:cloudmqtt.com:17001
remote_username jcw******
remote_password p-fO*****
remote_clientid RaspberryPiBroker
【问题讨论】:
-
地址开头的地址行中有一个
:而不是. -
哦,感谢您指出这一点!我修复了这个错误,但仍然无法发布或子到本地代理..
-
检查日志以获取输出,这些详细信息对我来说很好(希望我没有获得授权,因为我没有证书)。如果您作为服务运行,您可以停止它并使用
mosquitto -c /path/to/config手动运行它 -
哇,感谢这个非常方便的手动运行技巧!通过这种方式,我能够在出错的地方获得一些反馈。原来log_dest不存在,我不得不使用用户名而不是remote_username
标签: networking mqtt mosquitto