连接本地MQTT代理的uri

时间:2017-02-06 20:06:42

标签: networking mqtt mosquitto

我目前有两个MQTT经纪人都工作得非常好。其中一个是本地网络上的 Raspberry Pi 。另一个是CloudMQTT上托管的远程代理。

目标是将两个经纪人彼此同步。当然,对此的简单解决方案是一座桥梁,但我在进行正确的桥接设置时遇到了一些麻烦。

如下图所示,当我尝试在CloudMQTT上设置网桥时,它会要求'连接uri' 。对于远程代理,这将是mqtt://username:password@m20.cloudmqtt.com:1883,但我似乎无法弄清楚如何为本地代理执行此操作。 enter image description here

据我所知,只有当您拥有静态IP并且端口转发到Raspberry Pi时,您才能连接到本地网络,那么我怎样才能解决这个问题呢?这两个代理需要保持永久TCP 连接打开,但远程代理无法自行打开它。本地经纪人无法打开此连接吗?如果是这样,我将如何让两个经纪人同步?

感谢任何帮助,非常感谢您的帮助!

修改

这是我的完整/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

1 个答案:

答案 0 :(得分:1)

您可以使用mosquitto创建桥梁,man页面的“配置桥梁”部分涵盖了所有选项,但您需要的基础是:

connection cloudMQ-Bridge
address m20.cloudmqtt.com
remote_username user
remote_password password
remote_clientid clientid
topic # in 2

棘手的一点是最后的主题行,它控制着如何在两个代理之间映射主题。你必须小心不要创建循环。

在该示例中,所有主题都从远程代理映射到QOS 2上的本地代理,而没有任何主题重新映射。请仔细阅读有关主题映射的手册部分,因为它很容易出错。