Hi maybe someone need this one day. I use Tasmota bridge with a Tuya TS0601_soil Sensor and Mosquitto mqqt broker. Here is the code i used in a function node with 4 outputs. With the Alarmvalue i'm not that sure.
This is what i resevied in Tasmota:
14:14:18.909 MQT: tele/ZigbeePro/SENSOR = {"ZbReceived":{"0xA80E":{"Device":"0xA80E","Name":"ErdfeuchteSensor","EF00/0205":27,"Endpoint":1,"LinkQuality":72}}}
14:14:19.060 MQT: tele/ZigbeePro/SENSOR = {"ZbReceived":{"0xA80E":{"Device":"0xA80E","Name":"ErdfeuchteSensor","EF00/0203":0,"Endpoint":1,"LinkQuality":65}}}
14:14:19.209 MQT: tele/ZigbeePro/SENSOR = {"ZbReceived":{"0xA80E":{"Device":"0xA80E","Name":"ErdfeuchteSensor","EF00/020F":60,"Endpoint":1,"LinkQuality":65}}}
14:14:19.609 MQT: tele/ZigbeePro/SENSOR = {"ZbReceived":{"0xA80E":{"Device":"0xA80E","Name":"ErdfeuchteSensor","EF00/040E":1,"Endpoint":1,"LinkQuality":61}}}
// Empfangene Nachricht verarbeiten
const input = msg.payload;
// Falls die Nachricht im "ZbReceived"-Format ankommt
if (input.ZbReceived) {
const deviceKey = Object.keys(input.ZbReceived)[0];
msg.payload = input.ZbReceived[deviceKey]; // Extrahiere Gerätedaten
}
const sensorData = msg.payload;
// Ausgänge vorbereiten (jeder Output bekommt eine eigene msg-Kopie)
const outputs = [];
// Output 1: Temperatur (°C)
if (sensorData["EF00/0205"] !== undefined) {
const msgTemp = {...msg};
msgTemp.payload = sensorData["EF00/0205"];
msgTemp.device = sensorData.Device;
msgTemp.unit = "°C";
msgTemp.linkQuality = sensorData.LinkQuality;
msgTemp.topic = "temperature";
outputs[0] = msgTemp;
} else {
outputs[0] = null;
}
// Output 2: Feuchte (%)
if (sensorData["EF00/0203"] !== undefined) {
const msgHumidity = {...msg};
msgHumidity.payload = sensorData["EF00/0203"];
msgHumidity.device = sensorData.Device;
msgHumidity.unit = "%";
msgHumidity.linkQuality = sensorData.LinkQuality;
msgHumidity.topic = "humidity";
outputs[1] = msgHumidity;
} else {
outputs[1] = null;
}
// Output 3: Batterie (%)
if (sensorData["EF00/020F"] !== undefined) {
const msgBattery = {...msg};
msgBattery.payload = sensorData["EF00/020F"];
msgBattery.device = sensorData.Device;
msgBattery.unit = "%";
msgBattery.linkQuality = sensorData.LinkQuality;
msgBattery.topic = "battery";
outputs[2] = msgBattery;
} else {
outputs[2] = null;
}
// Output 4: Alarm (0/1, dezimal)
if (sensorData["EF00/040E"] !== undefined) {
const msgAlarm = {...msg};
msgAlarm.payload = sensorData["EF00/040E"]; // bleibt 0 oder 1
msgAlarm.device = sensorData.Device;
msgAlarm.linkQuality = sensorData.LinkQuality;
msgAlarm.topic = "alarm";
outputs[3] = msgAlarm;
} else {
outputs[3] = null;
}
// Return der Ausgänge (für 4 Output-Ports in der Function-Node)
return outputs;