我需要转换MQTT主题,这可能吗?

物联网 MQTT 树莓派 蚊子 数据传输 数据可移植性
2021-06-23 13:27:32

我是 MQTT 的新手,我在 Raspberry Pi 上有一个 mosquitto MQTT 代理。

我有一些来自客户的主题,这种格式/topic/lighton可以是truefalse

另一方面,我可以调用一些主题,例如/topic/light_onvaluereplay/topic/light_offvalue replay

如果我得到第一个主题的真假,我只需要推送这两个主题中的一个。是否有任何类型的转换或某些软件客户端订阅了发布第二个主题的第一个主题。

2个回答

你可能想多了。您可以创建一个 MQTT 客户端服务,该服务在 RasPi 上运行,与订阅您要转换的主题的 mosquitto 服务器分开,然后在收到原始主题后发布到新主题。让 MQTT 客户端与 MQTT 服务器在同一台机器上运行是完全没问题的。

因此,MQTT 客户端将订阅/topic/lighton并发布到/topic/light_on/topic/light_off在处理收到的值之后。MQTT 客户端转换服务可以是一个简单的 Python 程序,也可以是使用 MQTT 客户端库的任何您选择的语言。

首先,以前导开始主题是不好的做法/(虽然在规范中允许,但在您开始使用共享订阅等内容时最终会导致问题)。

正如约翰 S 在他的回答中暗示的那样,这不是您真正希望经纪人做的事情,您应该自己与单独的客户一起做。

假设您正在运行完整的 Rasbian (RaspberryPi OS),那么您已经安装了一个名为 Node-RED 的应用程序。这是一个基于图形流的编程环境,实际上是为做这种事情而构建的。

您可以将 MQTT 输入节点与更改或功能节点一起拖到画布上以进行转换并更新主题,然后再将其传递到 MQTT 输出节点以发布新消息。