桥接mqtt经纪人hivemq和mosquitto

时间:2015-06-04 09:01:49

标签: mqtt bridge mosquitto hivemq

我正在尝试在同一系统MosquittoHiveMQ上桥接两个MQTT代理。 1884正在使用端口Mosquitto,而1883正在mosquitto_pub上运行。但是,当我使用mosquitto命令发布到端口1883上的1884代理时,它不会显示在端口MQTT.fx上(使用1884作为客户订阅端口mosquitto上的所有主题)

这时我只用HiveMQ代理配置了一个桥。 当我同时配置unable to connect to Bridge1, disconnected时,它仅在HiveMQ命令窗口中显示mosquitto.config消息。我已经包含了以下配置。有人请帮忙。

bridges文件中,我在 connection hivemq address 127.0.0.1:1884 start_type automatic clientid clientno1 notifications true 下完成了以下内容。

HiveMQ bridges.xml

与此同时,我还编辑了<?xml version="1.0" encoding="UTF-8"?> <bridges xsi:noNamespaceSchemaLocation="http://www.hivemq.com/bridges/bridge.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <bridge> <connectionName>Bridge1</connectionName> <addresses> <address> <host>localhost</host> <port>1883</port> </address> </addresses> <clientId>bridgeClient</clientId> <topicPatterns> <topicPattern> <topic>#</topic> <qos>1</qos> <direction>both</direction> <localPrefix>local/</localPrefix> <remotePrefix>remote/</remotePrefix> </topicPattern> </topicPatterns> <cleanSession>true</cleanSession> <idleTimeout>10</idleTimeout> <notificationsEnabled>true</notificationsEnabled> <tryPrivate>true</tryPrivate> </bridge> 文件来阅读

for value in fine.items()::
    unpacked_value = [elem for lst in value for elem in lst]
    w.writerow(unpacked_value)

The image below is when I tried the same process on another system. Here, the brokers are bridged. Comparing this to what I was doing earlier, the only difference is that on my original system there is no statement saying opening ipv4 listen socket on 1883. Is this the problem?

显示的图像是我在另一个系统上尝试相同的过程。在这里,经纪人被桥接。将此与我之前所做的相比,唯一的区别是在我的原始系统上没有声明在1883年打开ipv4 listen socket。这是问题吗?

2 个答案:

答案 0 :(得分:0)

您应该只需要在其中一个代理中配置网桥,为两者配置网桥会导致问题,很可能是消息循环

对于您的mosquitto配置,您需要在mosquitto网桥上添加主题行,以便知道要向配置代理发送(和接收)的主题

有关topic指令的完整详细信息可以在mosquitto.conf手册页(http://mosquitto.org/man/mosquitto-conf-5.html)中找到,但基本知识是:

  

主题模式[[[out |在|两个] qos-level] local-prefix remote-prefix]

要在两个方向上镜像所有主题

b = 0000 0000 1111 1111 = 255D

答案 1 :(得分:0)

只应在发布者/客户端设置桥接(在您的情况下为mosquitto),在Hivemq(服务器)上保留默认设置应该没问题

尝试更改mosquitto.conf

connection bridge-mosquitto-to-hivemq
address 127.0.0.1:1884 
topic room1/# both 2 sensor/ myhouse/
bridge_protocol_version mqttv311
notifications true
cleansession true
try_private true

重新启动经纪人后,在mosquitto经纪人处尝试发布下面的示例消息

mosquitto_pub -t sensor/room1/temperature -m '26.3'