Tuya TS0601_soil

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;
1 Like

Thanks for your contribution @c3poSAW

Just a small edit I made.
I moved this from Share Your Nodes to Share Your Projects

Share Your Nodes : Sharing/Developing Nodes you have coded, that users can install from the palette menu/npm (Extra Nodes)
Share Your Projects : Sharing flows/workflows/solutions that can be imported & used by others

thanks for that, i was not aware. Next Time i will do it right.