Tuya Thermostat Verzweiflung

Guten Tag, nach zig Stunden herumprobieren habe ich aufgegeben und brauche Hilfe.
Ich bekomme es nicht hin, das Teil zum Laufen zu bekommen.
Es ist ein Tuya TS0601_thermostat_3 wie es auf der z2m Seite gelistet ist (Klick mich)
von Aliexpress (Klick mich)

Ich habe schon etliche male versucht den external converter einzurichten, leider immer ohne Erfolg. (Ich bin mir auch nicht zu 100% sicher, was da alles rein muss.)

_TZE200_9xfjixap

Ich hatte damals einen Qirrk mit dem Name ts0601_trv_me167.py installiert - erinnere mich nicht mehr woher der kam

Vermutlich von Github: zha_quirks/ts0601_trv_me167.py at main · jacekk015/zha_quirks · GitHub

@klaus123
Hier wird aber doch zigbee2mqtt genutzt, oder?

@Janne112
Ich kann mir nur vorstellen, dass das pairen evtl. nicht erfolgreich war. Lösch das Gerät noch mal und paire es erneut.

Was meinst du damit?

Den man dafür hinzufügen muss und ja es ist z2m.

Wenn es um Z2M geht, was macht dann das ZHA Logo in dem Bild? Oder stehe ich auf’m Schlauch?

Das ist das Zigbee Logo.

Jetzt weiß ich, warum mir der Screen oben so Fred forkam - hat däs Z auch für ZHA gehalten

1 „Gefällt mir“

Ohje, Danke @maxe . Wald und Bäume und so…

1 „Gefällt mir“

Ich würde das grundsätzlich sein lassen, mir irgendwelchen “Quirxen” und dergleichen dort herumzufummeln.
Wenn es als unterstützt gelistet ist, dann funktioniert das üblicherweise auch. Thermostat koppeln, warten … ein paar Minuten. HA neu starten.

Möglicherweise ist die Konfiguration durch die Fummelei aber schon zerschossen.

@Janne112
Ich stehe vor dem selben Problem und wollte mich ran machen das Gerät in die nächste Version zu integrieren.
Nach ein wenig Recherche hat sich herausgestellt, dass sich die Arbeit schon jemand gemacht hat:
https://newreleases.io/project/github/Koenkk/zigbee-herdsman-converters/release/v20.46.0
Hier sind die Anpassungen an der Config:
https://github.com/Koenkk/zigbee-herdsman-converters/commit/14f3c9fcabf62210e817aaa1bc6ffa4c09dec7c9
Vielleicht hilft dir das ja schon für dein Problem mit den Inhalten des External Converters.

Wenn ich das richtig verstanden habe wird die Zigbee Herdsman Konverter Version nicht einzeln hochgezogen, sondern beim nächsten Update von Zigbee2MQTT wird dann der aktuellste Stand der Konverter mit ausgeliefert.
Am 01. Dezember sollte ein neuer Release erscheinen. Theoretisch sollte das Gerät dann richtig erkannt werden.
Ich für meinen Teil werde vorerst auf den 01.12. warten und kann dir somit keine Fertige Lösung für dein Problem bieten.

2 „Gefällt mir“

Danke dir, ich bin gespannt :slight_smile:

Ich habe mich doch noch einmal hingesetzt und einen Konverter gebastelt.
Ich habe allerdings nur alles zusammenkopiert und mangels Zeit noch nichts wirklich getestet.
Auf den ersten Blick sieht es bei mir aber ganz gut aus.
Grundlegend habe ich mich an der üblichen Vorgehensweise orientiert:
https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html

Dabei hatte ich aber nicht alle Besonderheiten für Tuya-Geräte beachtet:
https://www.zigbee2mqtt.io/advanced/support-new-devices/02_support_new_tuya_devices.html

const fz = require('zigbee-herdsman-converters/converters/fromZigbee');
const tz = require('zigbee-herdsman-converters/converters/toZigbee');
const exposes = require('zigbee-herdsman-converters/lib/exposes');
const reporting = require('zigbee-herdsman-converters/lib/reporting');
const modernExtend = require('zigbee-herdsman-converters/lib/modernExtend');
const e = exposes.presets;
const ea = exposes.access;
const tuya = require('zigbee-herdsman-converters/lib/tuya');

const definition = {
    zigbeeModel: ['TS0601'],
    fingerprint: tuya.fingerprint('TS0601', [
        '_TZE200_9xfjixap' /* model: 'ME167', vendor: 'AVATTO' */,
    ]),

    model: 'ME167',
    vendor: 'Tuya',
    description: 'Thermostatic radiator valve',
    extend: [],
    meta: {},
    fromZigbee: [tuya.fz.datapoints],
    toZigbee: [tuya.tz.datapoints],
    whiteLabel: [
        tuya.whitelabel('AVATTO', 'ME167', 'Thermostatic radiator valve', ['_TZE200_9xfjixap']),
    ],
    onEvent: tuya.onEventSetTime,
    configure: tuya.configureMagicPacket,
    exposes: [
        e.child_lock(),
        e.battery_low(),
        e
            .climate()
            .withSetpoint('current_heating_setpoint', 5, 35, 1, ea.STATE_SET)
            .withLocalTemperature(ea.STATE)
            .withSystemMode(['auto', 'heat', 'off'], ea.STATE_SET)
            .withRunningState(['idle', 'heat'], ea.STATE)
            .withLocalTemperatureCalibration(-9, 9, 1, ea.STATE_SET),
        ...tuya.exposes.scheduleAllDays(ea.STATE_SET, 'HH:MM/C HH:MM/C HH:MM/C HH:MM/C HH:MM/C HH:MM/C'),
        e
            .binary('scale_protection', ea.STATE_SET, 'ON', 'OFF')
            .withDescription(
                'If the heat sink is not fully opened within ' +
                    'two weeks or is not used for a long time, the valve will be blocked due to silting up and the heat sink will not be ' +
                    'able to be used. To ensure normal use of the heat sink, the controller will automatically open the valve fully every ' +
                    'two weeks. It will run for 30 seconds per time with the screen displaying "Ad", then return to its normal working state ' +
                    'again.',
            ),
        e
            .binary('frost_protection', ea.STATE_SET, 'ON', 'OFF')
            .withDescription(
                'When the room temperature is lower than 5 °C, the valve opens; when the temperature rises to 8 °C, the valve closes.',
            ),
        e.numeric('error', ea.STATE).withDescription('If NTC is damaged, "Er" will be on the TRV display.'),
    ],
    meta: {
        tuyaDatapoints: [
            [2, 'system_mode', tuya.valueConverterBasic.lookup({auto: tuya.enum(0), heat: tuya.enum(1), off: tuya.enum(2)})],
            [3, 'running_state', tuya.valueConverterBasic.lookup({heat: tuya.enum(0), idle: tuya.enum(1)})],
            [4, 'current_heating_setpoint', tuya.valueConverter.divideBy10],
            [5, 'local_temperature', tuya.valueConverter.divideBy10],
            [7, 'child_lock', tuya.valueConverter.lockUnlock],
            [28, 'schedule_monday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(1)],
            [29, 'schedule_tuesday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(2)],
            [30, 'schedule_wednesday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(3)],
            [31, 'schedule_thursday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(4)],
            [32, 'schedule_friday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(5)],
            [33, 'schedule_saturday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(6)],
            [34, 'schedule_sunday', tuya.valueConverter.thermostatScheduleDayMultiDPWithDayNumber(7)],
            [35, null, tuya.valueConverter.errorOrBatteryLow],
            [36, 'frost_protection', tuya.valueConverter.onOff],
            [39, 'scale_protection', tuya.valueConverter.onOff],
            [47, 'local_temperature_calibration', tuya.valueConverter.localTempCalibration2],
        ],
    },
};

module.exports = definition;