Koenkk / Koenkk/zigbee2mqtt

[External Converter]: TS0601 from _TZE284_y40tvzbu Vexa "Smart Radiator Controller" LDERV-B Tuya

Open
#33,122 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

external converter
Dominant language
TypeScript
Stars
15.7k
Forks
2k
Avg merge
18h 55m
Merged PRs (30d)
35

Description

Link

https://www.amazon.de/VEXA-Heizk%C3%B6rperthermostat-Smart-Home-Fernbedienung-Sprachsteuerung-Gruppensteuerung/dp/B0FZR1TH6V/ref=asc_df_B0FZR1TH6V?mcid=ad2fbda4d37530cba71216f128b42ad5&th=1&tag=googshopde-21&linkCode=df0&hvadid=789193950366&hvpos=&hvnetw=g&hvrand=13103147516021627838&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9042090&hvtargid=pla-2468526770384&hvocijid=13103147516021627838-B0FZR1TH6V-&hvexpln=0

Database entry

{ "battery": 71, "child_lock": "UNLOCK", "current_heating_setpoint": 15, "last_seen": "2026-09-13T21:42:09+02:00", "linkquality": 184, "local_temperature": 26.5, "system_mode": "auto" }

Zigbee2MQTT version

2.14.1 (unknown)

External converter
//  External Converter fuer Zigbee2MQTT
//  Vexa "Smart Radiator Controller" LDERV-B
//  TS0601 / _TZE284_y40tvzbu
//
//  v2: climate hat jetzt eine local_temperature (Ist-Temperatur),
//      damit Home Assistant die Thermostat-Discovery sauber anlegt.
//
//  Belegung (aus Discovery-Log abgeleitet):
//    dp 4  = Solltemperatur (÷10)
//    dp 2  = Modus (enum)          -> ggf. noch feinjustieren
//    dp 5  = Ist-Temperatur (÷10)
//    dp 6  = Batterie %
//    dp 7  = Kindersicherung
//
//  Einbinden: Datei nach /config/zigbee2mqtt/ , in configuration.yaml
//    external_converters:
//      - trv_vexa_lderv_b.js
//  dann Z2M neu starten + beim Geraet "Reconfigure".
// ============================================================
 
const exposes = require('zigbee-herdsman-converters/lib/exposes');
const tuya = require('zigbee-herdsman-converters/lib/tuya');
const e = exposes.presets;
const ea = exposes.access;
 
module.exports = {
    fingerprint: tuya.fingerprint('TS0601', ['_TZE284_y40tvzbu']),
    model: 'LDERV-B',
    vendor: 'Vexa',
    description: 'Smart Radiator Controller (TRV)',
    fromZigbee: [tuya.fz.datapoints],
    toZigbee: [tuya.tz.datapoints],
    onEvent: tuya.onEventSetTime,
    configure: tuya.configureMagicPacket,
    exposes: [
        e.battery(),
        e.child_lock(),
        e.climate()
            .withLocalTemperature(ea.STATE)
            .withSetpoint('current_heating_setpoint', 5, 35, 0.5, ea.STATE_SET)
            .withSystemMode(['off', 'auto', 'heat'], ea.STATE_SET),
    ],
    meta: {
        tuyaDatapoints: [
            // dp 4: Solltemperatur, Rohwert = °C x10
            [4, 'current_heating_setpoint', tuya.valueConverter.divideBy10],
            // dp 5: Ist-Temperatur, Rohwert = °C x10
            [5, 'local_temperature', tuya.valueConverter.divideBy10],
            // dp 2: Modus  -- Zuordnung ggf. nach Test anpassen
            [2, 'system_mode', tuya.valueConverterBasic.lookup({
                'auto': tuya.enum(0), 'heat': tuya.enum(1), 'off': tuya.enum(2),
            })],
            // dp 6: Batterie in %
            [6, 'battery', tuya.valueConverter.raw],
            // dp 7: Kindersicherung
            [7, 'child_lock', tuya.valueConverter.lockUnlock],
        ],
    },
};
What does/doesn't work with the external definition?

=> Set Temperatur
=> Get actual Temperatur
=> Child lock
=> Battery status
=> System mode
=> Climate is supported

Notes

software_build_id: undefined
date_code: ``
endpoints:

{"1":{"clusters":{"input":["genGroups","genScenes","manuSpecificTuya","genBasic","60672"],"output":["genOta","genTime"]}}}

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue provides a complete external JavaScript converter but no repository file or test path. Start by reviewing existing TS0601 device converters and the supplied fingerprint, exposes, and Tuya datapoint mappings. Done means the Vexa LDERV-B is recognized natively and its temperature, mode, child lock, and battery values work without an external converter.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
embedded-iot
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
67/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.