如何将 mqtt 值重新映射到 mosquitto 中的其他一些主题

物联网 MQTT 蚊子
2021-06-04 14:01:27

我在 下有一个值milight/states/0x1/fut089/1

我要做的是将其复制到 milight/states/0x[2..4]/fut089/1

mqtt结构说明

我已经尝试过以下配置:

connection milight-forwarder
address localhost:1883
cleansession true
topic # out 0 milight/states/0x1/ milight/states/0x2/
topic # out 0 milight/states/0x1/ milight/states/0x3/
topic # out 0 milight/states/0x1/ milight/states/0x4/

第一个似乎以某种方式工作,但它复制了所有值(1,2,4)。如果我将 1 附加到源并且目标 mosquitto 会引发这些错误:

1591289258: Connecting bridge (step 1) milight-forwarder (localhost:1883)
1591289258: Connecting bridge (step 2) milight-forwarder (localhost:1883)
1591289258: New connection from ::1 on port 1883.
1591289258: New bridge connected from ::1 as RasPi.milight-forwarder (p2, c1, k60).
1591289258: Invalid unsubscription string from RasPi.milight-forwarder, disconnecting.
1591289258: Socket error on client RasPi.milight-forwarder, disconnecting.
1591289258: Socket error on client local.RasPi.milight-forwarder, disconnecting.

我正在使用 mosquitto 版本 1.6.8。

文档对我没有帮助:/

这里有什么帮助吗?

1个回答

我没有收到取消订阅错误,但我确实得到了只有第一个映射生效的相同效果。

在不深入研究代码的情况下,我将假设桥在第一个匹配模式处停止,在这种情况下,#它匹配所有内容。

这是有道理的,尤其是当我们记得环回桥接到同一个代理真的只是一个讨厌的黑客时。

我在 Ubuntu 上使用 1.6.8 而不是 raspbian,但它应该是一样的。