我想从同一个 esp32 将数据发布到 2 个不同的设备。我想这样做就像将所有数据发布到一台设备并与第二台设备共享其遥测数据。这可能在 thingsboard 上吗?
我通过 ESP32 实现了这一点,但是当我使用两个不同的令牌发布数据时,我需要切断 wifi 并将 Thingsboard 与其他设备令牌重新连接。这种情况会导致巨大的电池消耗。当我检查 thingsboard 库时,我看不到仅使用 thingsboard 切断网络的功能。可以做些什么来克服这种情况?
任何想法将不胜感激。 谢谢
我能想到的一种方法是使用 ThingsBoard Integrations。其中一个输入有效载荷可以有多个传出有效载荷(甚至适用于多个目标设备或资产): https://thingsboard.io/docs/user-guide/integrations/#converter-output
但这需要在 ESP32 和 TB 之间使用 ThingsBoard PE 和外部 MQTT Broker。
或者您可以尝试 MQTT 网关 API: https://thingsboard.io/docs/reference/gateway-mqtt-api/
我遇到了类似的问题,并认识到有一个非常适合我的 disconnect() 方法。然后我编写了 sendTBdata() 函数以在不切断 WiFi 连接的情况下发送多个设备遥测数据。 (我将 Arduino UNO 与 ESP8266 一起使用,并包含了他们提供的 ThingsBoard.h 库。)
void sendTBdata (token, key, data) {
if (tb.connected()) tb.disconnect();
tb.connect(THINGSBOARD_SERVER, token, THINGSBOARD_PORT);
tb.sendTelemetryFloat(key, data);
}
有简单的(使用 thingsboard 规则链)和困难的(使用 esp32 固件)方法,让我们先从困难的方法开始:
你可以在你的 esp32 固件中制作多个 mqtt 客户端,只要确保每个客户端都有不同的客户端 ID。在这种情况下,您必须同时管理多个 mqtt 客户端,我从事的项目使用同时连接到不同代理的多个 mqtt 客户端,在您的情况下,代理是相同的,但我认为连接不同的客户端不会有问题给同一个经纪人。
现在让我们用简单的方法看看:
例如你的thingsboard有2个设备“Master”和“Slave”,编辑你的master设备的关系:
现在转到您的规则链(正在接收您的设备数据的那个),我们在这里要做的是在您为“Master”保存数据时将相同的数据保存到“Slave”,为此我们需要 3 个新节点,Switch (过滤你的主设备),改变发起者(切换到你的从设备)最后保存数据:
最后只使用相同的节点(保存时间序列)来保存你的数据,你可以对属性做同样的事情。