Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Hardware
    4. TS0601 Zigbee

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    TS0601 Zigbee

    This topic has been deleted. Only users with topic management privileges can see it.
    • Asgothian
      Asgothian Developer @peterfido last edited by

      @peterfido unter der Bedingung das das Gerät in dem Projekt so ist wie deins:

      • pass den beiliegenden Code so an das der Fingerprint zu deinem Gerät passt.
      • speicher den Code im Datenverzeichnis des zigbee Adapters (üblicherweise /opt/iobroker/iobroker-data/zigbee_0)
      • trag den Dateinamen als "externen Konverter" in den Einstellungen ein
      • Start den Zigbee-Adapter neu und prüfe das log auf Fehlermeldungen.

      Der Code ist ohne Gewähr - ich hab da nichts getestet.

      "use strict";
      //const fromZigbee_1 = (require("../converters/fromZigbee"));
      //const toZigbee_1 = (require("../converters/toZigbee"));
      const constants_1 = require("../lib/constants");
      const exposes = (require("../lib/exposes"));
      const legacy = (require("../lib/legacy"));
      const logger_1 = require("../lib/logger");
      const modernExtend_1 = require("../lib/modernExtend");
      const reporting = (require("../lib/reporting"));
      const globalStore = (require("../lib/store"));
      const tuya = (require("../lib/tuya"));
      const NS = 'zhc:tuya';
      const { tuyaLight, tuyaBase, tuyaMagicPacket, dpBinary, dpNumeric, dpEnumLookup } = tuya.modernExtend;
      const e = exposes.presets;
      const ea = exposes.access;
      const definitions = [
         {
             fingerprint: tuya.fingerprint('TS0601', [
                 '_TZE200_yjjdcqsq',
                 '_TZE200_9yapgbuv',
                 '_TZE200_utkemkbs',
                 '_TZE204_utkemkbs',
                 '_TZE204_9yapgbuv',
                 '_TZE204_upagmta9',
                 '_TZE200_cirvgep4',
                 '_TZE200_upagmta9',
                 '_TZE204_yjjdcqsq',
                 '_TZE204_cirvgep4',
             ]),
             model: 'TS0601_temperature_humidity_sensor_2',
             vendor: 'Tuya',
             description: 'Temperature and humidity sensor',
             fromZigbee: [tuya.fz.datapoints],
             toZigbee: [tuya.tz.datapoints],
             onEvent: tuya.onEvent({ queryOnDeviceAnnounce: true }),
             configure: async (device, coordinatorEndpoint) => {
                 await tuya.configureMagicPacket(device, coordinatorEndpoint);
                 // Required to get the device to start reporting
                 await device.getEndpoint(1).command('manuSpecificTuya', 'dataQuery', {});
             },
             exposes: [e.temperature(), e.humidity(), tuya.exposes.batteryState(), tuya.exposes.temperatureUnit()],
             meta: {
                 tuyaDatapoints: [
                     [1, 'temperature', tuya.valueConverter.divideBy10],
                     [2, 'humidity', tuya.valueConverter.raw],
                     [3, 'battery_state', tuya.valueConverter.batteryState],
                     [9, 'temperature_unit', tuya.valueConverter.temperatureUnitEnum],
                 ],
             },
             whiteLabel: [
                 tuya.whitelabel('Tuya', 'ZTH01', 'Temperature and humidity sensor', ['_TZE200_yjjdcqsq', '_TZE204_yjjdcqsq']),
                 tuya.whitelabel('Tuya', 'SZTH02', 'Temperature and humidity sensor', ['_TZE200_utkemkbs', '_TZE204_utkemkbs']),
                 tuya.whitelabel('Tuya', 'ZTH02', 'Temperature and humidity sensor', ['_TZE200_9yapgbuv', '_TZE204_9yapgbuv']),
                 tuya.whitelabel('Tuya', 'ZTH05', 'Temperature and humidity sensor', ['_TZE204_upagmta9', '_TZE200_upagmta9']),
                 tuya.whitelabel('Tuya', 'ZTH08-E', 'Temperature and humidity sensor', ['_TZE200_cirvgep4', '_TZE204_cirvgep4']),
             ],
         },
      
      ];
      exports.default = definitions;
      module.exports = definitions;
      //# sourceMappingURL=tuya.js.map
      

      1 Reply Last reply Reply Quote 0
      • P
        peterfido last edited by

        @asgothian

        Die Datei habe ich angelegt. Er stolpert allerdings über eine fehlende lib:

        External converter /opt/iobroker/iobroker-data/zigbee_0/tuya_twc.js contains an unsupported reference to '/lib/legacy' - external converter not loaded.
        
        Asgothian 1 Reply Last reply Reply Quote 0
        • Asgothian
          Asgothian Developer @peterfido last edited by

          @peterfido dann schmeiss die Zeile mit /lib/legacy aus dem code und schau ob es dann geht.

          A.

          P 1 Reply Last reply Reply Quote 0
          • P
            peterfido @Asgothian last edited by peterfido

            @asgothian

            habe ich erledigt. Jetzt kommt folgender Fehler:

            Unable to apply converter from module: /opt/iobroker/iobroker-data/zigbee_0/tuya_twc.js - the code does not run: Error: Cannot find module '../lib/exposes' Require stack: - /opt/iobroker/node_modules/iobroker.zigbee/main.js
            

            Schmeisse ich die Zeile mit esposes auch raus, kommt der nächste Fehler:

            Unable to apply converter from module: /opt/iobroker/iobroker-data/zigbee_0/tuya_twc.js - the code does not run: Error: Cannot find module '../lib/reporting' Require stack: - /opt/iobroker/node_modules/iobroker.zigbee/main.js
            

            passt da was mit dem Pfad nicht?

            Was mich überrascht ist, dass man die Zeilen wirklich rausscheissen muss.
            Auskommentieren mittels // scheint nicht zu funkionieren, da die Fehlermeldungen identisch sind.

            Asgothian 1 Reply Last reply Reply Quote 0
            • Asgothian
              Asgothian Developer @peterfido last edited by

              @peterfido Du wirst probieren müssen. Weiter Zeilen rauswerfen in der Hoffnung das sie nicht benötigt werden. Wenn das nicht klappt dann liegt es daran das das Gerät den neuen Herdsman braucht - wie schon auf GitHub geschrieben.

              A.

              1 Reply Last reply Reply Quote 0
              • P
                peterfido last edited by peterfido

                @asgothian ok, danke. Ich hatte die relativen Pfade vermutet. Zumindest von dort, wo die Datei sizt, laufen die ins Leere. Den neuen Herdsmann gibt es noch nicht? Oder müsste ich da z.B. auf zigbee2mqtt gehen?

                Das wäre dann wohl auch ein umfangreicher Aufwand, alle Geräte umzuziehen und die Skripte anpassen. Ich probiere noch bis zum Wochenende und, wenn es nicht will, schicke ich die Teile zurück.

                Optisch passt dieser hier genau.

                Asgothian JLeg 2 Replies Last reply Reply Quote 0
                • Asgothian
                  Asgothian Developer @peterfido last edited by

                  @peterfido den neuen Herdsman gibt es schon. Du kannst auch probieren was der für Dich bedeutet. Allerdings werden dann viele Datenpuntke insbesondere bei Tastern und Schaltern umbenannt - da gibt es also extra Arbeit wenn du den nutzen willst.

                  Solltest du das probieren wollen, dann kann ich Dir diesen Thread empfehlen:
                  https://forum.iobroker.net/topic/78969/iobroker-zigbee-1-11-x-tester-gesucht/11

                  P 1 Reply Last reply Reply Quote 0
                  • JLeg
                    JLeg @peterfido last edited by

                    @peterfido …ich hab von nodejs wenig Ahnung, bin aber fast sicher, dass relative Pfade in require() immer vom aktuellen Pfad der aufrufenden Datei ausgehen. D.h. „../lib…“ dürfte dann in zigbee.0 nicht funktionieren.
                    Bei mir liegen diese Module in node_modules - ich würde einfach mal absolute Pfade ausprobieren, kost‘ ja nix 😉
                    Also z.B.
                    require(“/opt/iobroker/node_modules/zigbee-herdsman-converters/lib/exposes“)

                    P 1 Reply Last reply Reply Quote 0
                    • P
                      peterfido @JLeg last edited by

                      @jleg Danke für den Tipp. Das hatte ich bereits probiert.

                      Ich habe einen lxc Container auf dem Proxmox Server installiert, wo zigbee2mqtt drauf ist. Scheint allerdings nicht die Version 2 zu sein. Da muss ich am Wochenende mal schauen. Im Log tauchte einmal eine Meldung mit Version 21 und 23 auf. Allerdings war das Log nach dem Neustart leer und die Meldung taucht nicht mehr auf.

                      Das Gerät wird aktuell nicht unterstützt. Ich mache mich wohl am Wochenende auf die Suche nach der Datei, wo der tuya zth08-e drin ist, und ergänze mal die Kennung von dem Thermometer. Mal schauen, was passiert.

                      1 Reply Last reply Reply Quote 0
                      • P
                        peterfido @Asgothian last edited by

                        @asgothian von zigbee2mqtt wird das Teil nicht unterstützt. Allerdings bin ich mir nicht sicher, ob ich für zigbee2mqtt 2.x eine andere Installation durchführen muss.

                        Ich teste jetzt, wie Du oben vorgeschlagen hast, mit dem neuen herdsman. Allerdings lief die Installation nicht sauber durch Bei drei ioBroker Testsystemen gab es die Fehlermeldung, dass der port nicht gelockt werden konnte. (zwei mal lxc und einmal VM unter Proxmox) Auf dem vierten (VM) habe ich dann erst den "normalen" Zigbee-Adapter installiert, da war dann das Fenster vom Admin leer. Dann die Testversion mit der Katze installiert, daraufhin war der Admin wie gewohnt und auch der USB-Stick wurde einwandfrei erkannt.

                        Also mache ich dann in dem Test-Thread weiter.

                        arteck 1 Reply Last reply Reply Quote 0
                        • arteck
                          arteck Developer Most Active @peterfido last edited by

                          @peterfido sagte in TS0601 Zigbee:

                          von zigbee2mqtt wird das Teil nicht unterstützt. Allerdings bin ich mir nicht sicher, ob ich für zigbee2mqtt 2.x eine andere Installation durchführen muss.

                          wenns da nicht unterstützt wird dann wird es auch bei zigbee NICHT GEHEN

                          und nien für z2m 2.0 brauchst keine neue installation..

                          P 1 Reply Last reply Reply Quote 0
                          • P
                            peterfido @arteck last edited by peterfido

                            @arteck @Asgothian :

                            Ich habe das Teil zum Laufen bekommen. In der Datei tuya.js habe ich zwei Zeilen ergänzt. (Zeilen 13 und 41)

                               {
                                    fingerprint: tuya.fingerprint('TS0601', [
                                        '_TZE200_yjjdcqsq',
                                        '_TZE200_9yapgbuv',
                                        '_TZE200_utkemkbs',
                                        '_TZE204_utkemkbs',
                                        '_TZE204_9yapgbuv',
                                        '_TZE204_upagmta9',
                                        '_TZE200_cirvgep4',
                                        '_TZE200_upagmta9',
                                        '_TZE204_yjjdcqsq',
                                        '_TZE204_cirvgep4',
                            			'_TZE204_jygvp6fk',
                                    ]),
                                    model: 'TS0601_temperature_humidity_sensor_2',
                                    vendor: 'Tuya',
                                    description: 'Temperature and humidity sensor',
                                    fromZigbee: [tuya.fz.datapoints],
                                    toZigbee: [tuya.tz.datapoints],
                                    onEvent: tuya.onEvent({ queryOnDeviceAnnounce: true }),
                                    configure: async (device, coordinatorEndpoint) => {
                                        await tuya.configureMagicPacket(device, coordinatorEndpoint);
                                        // Required to get the device to start reporting
                                        await device.getEndpoint(1).command('manuSpecificTuya', 'dataQuery', {});
                                    },
                                    exposes: [e.temperature(), e.humidity(), tuya.exposes.batteryState(), tuya.exposes.temperatureUnit()],
                                    meta: {
                                        tuyaDatapoints: [
                                            [1, 'temperature', tuya.valueConverter.divideBy10],
                                            [2, 'humidity', tuya.valueConverter.raw],
                                            [3, 'battery_state', tuya.valueConverter.batteryState],
                                            [9, 'temperature_unit', tuya.valueConverter.temperatureUnitEnum],
                                        ],
                                    },
                                    whiteLabel: [
                                        tuya.whitelabel('Tuya', 'ZTH01', 'Temperature and humidity sensor', ['_TZE200_yjjdcqsq', '_TZE204_yjjdcqsq']),
                                        tuya.whitelabel('Tuya', 'SZTH02', 'Temperature and humidity sensor', ['_TZE200_utkemkbs', '_TZE204_utkemkbs']),
                                        tuya.whitelabel('Tuya', 'ZTH02', 'Temperature and humidity sensor', ['_TZE200_9yapgbuv', '_TZE204_9yapgbuv']),
                                        tuya.whitelabel('Tuya', 'ZTH05', 'Temperature and humidity sensor', ['_TZE204_upagmta9', '_TZE200_upagmta9']),
                                        tuya.whitelabel('Tuya', 'ZTH08-E', 'Temperature and humidity sensor', ['_TZE200_cirvgep4', '_TZE204_cirvgep4']),
                            			tuya.whitelabel('Tuya', 'ZTH07-E', 'Temperature and humidity sensor', ['_TZE201_jygvp6fk', '_TZE204_jygvp6fk']),
                                    ],
                            

                            Die Uhrzeit stimmt und die Werte trudeln ein:

                            40345e70-696e-449a-a738-7c3ee8a3b7f9-image.png

                            Jetzt probiere ich es auf meinem Produktivsystem.

                            Asgothian 1 Reply Last reply Reply Quote 0
                            • Asgothian
                              Asgothian Developer @peterfido last edited by

                              @peterfido sagte in TS0601 Zigbee:

                              Jetzt probiere ich es auf meinem Produktivsystem.

                              Wichtiger Hinweis: diese Anpassung wird verloren gehen sobald du den Zigbee-Adapter aktualisierst / neu installierst. Darüber musst du dir im klaren sein. ggf. musst du diese Anpassung wiederholen.

                              Ein Einspielen bei den zigbee-herdsman-converters ist ausgeschlossen, da diese Änderung da bereits vorhanden ist, aber erst in einer 21.x Version, die nicht mit dem Zigbee-Adapter 1.10 funktioniert.

                              A

                              P 2 Replies Last reply Reply Quote 0
                              • P
                                peterfido @Asgothian last edited by peterfido

                                @asgothian Ist mir bewusst. Wie müsste denn in diesem Fall eine eigene Converter-Datei aussehen?

                                Edit: Bei der 1.11.x ist das Gerät noch unbekannt. Da hatte ich die Änderung zuerst auf meinem Testsystem durchgeführt.

                                1 Reply Last reply Reply Quote 0
                                • P
                                  peterfido @Asgothian last edited by

                                  @asgothian im Github unter zigbee-herdsman-converters/.../tuya.ts

                                  wird das Gerät noch nicht aufgeführt. Müsste dort ab Zeile 1100 stehen. Gibt es für die 21.x Version eine andere Quelle?

                                  P 1 Reply Last reply Reply Quote 0
                                  • P
                                    peterfido @peterfido last edited by peterfido

                                    Ich habe jetzt eine wohl gute Lösung gefunden.

                                    In Proxmox habe ich eine VM erstellt, auf welcher ich zusätzlich curl, mosquitto, zigbee2mqtt und vsftpd installiert habe.

                                    Geht man nach der Anleitung von zigbee2mqtt vor, dann verschwinden bei jedem Neustart die Rechte, den USB-Stick zu nutzen. Ist mir jetzt allerdings egal, da ich heute Morgen mein LAN-Gateway vom Zigbee-Adapter auf zigbee2mqtt umgezogen habe.

                                    Der Umzug war etwas trickreich, da die Konfiguration bei z2m die ext. Pan ID und den Transport-Key in einzelnen dezimalen Zahlen haben möchte. Obendrein ist die ext. Pan ID rückwärts einzutragen. Also die letzte Zahl zuerst und zuletzt die erste Zahl.

                                    Dann noch die Konfigurations-Dateien nach /opt/zigbee2mqtt/data kopieren und umbenennen. Das habe ich dann mit FileZilla über ftp gemacht. Die shepherd.db muss in database.db umbenannt werden.

                                    Dann noch im data Ordner einen Unterordner external_converters erstellen und da die selbst erstellte (ok - zusammenkopierte) Datei reinkopieren.

                                    var __importStar = (this && this.__importStar) || (function () {
                                        var ownKeys = function(o) {
                                            ownKeys = Object.getOwnPropertyNames || function (o) {
                                                var ar = [];
                                                for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
                                                return ar;
                                            };
                                            return ownKeys(o);
                                        };
                                        return function (mod) {
                                            if (mod && mod.__esModule) return mod;
                                            var result = {};
                                            if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
                                            __setModuleDefault(result, mod);
                                            return result;
                                        };
                                    })();
                                    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 ota = require('zigbee-herdsman-converters/lib/ota');
                                    const utils = require('zigbee-herdsman-converters/lib/utils');
                                    const globalStore = require('zigbee-herdsman-converters/lib/store');
                                    const e = exposes.presets;
                                    const ea = exposes.access;
                                    const tuya = __importStar(require("zigbee-herdsman-converters/lib/tuya"));
                                    
                                    const definition = {
                                    	fingerprint: tuya.fingerprint('TS0601', [
                                    		'_TZE204_jygvp6fk',
                                    	]),	
                                        zigbeeModel: ['lumi.sens'],
                                        model: 'TS0601_temperature_humidity_sensor_2',
                                        vendor: 'EMOS',
                                        description: 'Temperature and humidity sensor',
                                        extend: [],
                                        /**
                                         * Clusters reporting "from zigbee"
                                         */
                                        fromZigbee: [tuya.fz.datapoints],
                                        /**
                                         * Clusters to send commands "to zigbee"
                                         */
                                        toZigbee: [tuya.tz.datapoints],
                                        /**
                                         * Defines which fields are exposed in the definition message to configure a frontend
                                         * (e.g. Z2M frontend, Home Assistant, Domoticz)
                                         */
                                    	onEvent: tuya.onEvent({ queryOnDeviceAnnounce: true }),
                                    	configure: async (device, coordinatorEndpoint) => {
                                    		await tuya.configureMagicPacket(device, coordinatorEndpoint);
                                    		// Required to get the device to start reporting
                                    		await device.getEndpoint(1).command('manuSpecificTuya', 'dataQuery', {});
                                    	},
                                    	exposes: [e.temperature(), e.humidity(), tuya.exposes.batteryState(), tuya.exposes.temperatureUnit()],
                                            meta: {
                                                tuyaDatapoints: [
                                                    [1, 'temperature', tuya.valueConverter.divideBy10],
                                                    [2, 'humidity', tuya.valueConverter.raw],
                                                    [3, 'battery_state', tuya.valueConverter.batteryState],
                                                    [9, 'temperature_unit', tuya.valueConverter.temperatureUnitEnum],
                                                ],
                                            },
                                    	whiteLabel: [
                                    		tuya.whitelabel('Tuya', 'EGS0101', 'Temperature and humidity sensor', ['_TZE200_jygvp6fk', '_TZE204_jygvp6fk']),
                                    	],
                                    };
                                    
                                    module.exports = definition;
                                    

                                    Danach können die Thermometer mit Uhr genutzt werden. Es gibt zwar beim Anlernen eine Meldung, dass diese nur von einer älteren Zigbee-Revision unterstützt werden, läuft aber trotzdem.

                                    info 2025-01-12 09:23:39zh:controller:device: Device '0xa4c1385f24e9365e' is only compliant to revision '21' of the ZigBee specification (current revision: 23).
                                    info 2025-01-12 09:23:43zh:controller: Succesfully interviewed '0xa4c1385f24e9365e'
                                    info 2025-01-12 09:23:43z2m: Successfully interviewed '0xa4c1385f24e9365e', device has successfully been paired
                                    info 2025-01-12 09:23:43z2m: Device '0xa4c1385f24e9365e' is supported, identified as: Tuya Temperature and humidity sensor (EGS0101)
                                    

                                    4d3f10d0-2cf9-48c5-aa17-6a1ad956c0c9-image.png

                                    und taucht im ioBroker mit Werten auf.
                                    78935a03-ac98-4d3e-b607-d1fbf60b4658-image.png

                                    P 1 Reply Last reply Reply Quote 0
                                    • P
                                      peterfido @peterfido last edited by

                                      Ich hatte ein Issue auf Github eröffnet, und Koenkk hat das Gerät im dev branch hinzugefügt.

                                      Das ging echt flott.

                                      1 Reply Last reply Reply Quote 0
                                      • First post
                                        Last post

                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      977
                                      Online

                                      31.6k
                                      Users

                                      79.6k
                                      Topics

                                      1.3m
                                      Posts

                                      12
                                      60
                                      8173
                                      Loading More Posts
                                      • Oldest to Newest
                                      • Newest to Oldest
                                      • Most Votes
                                      Reply
                                      • Reply as topic
                                      Log in to reply
                                      Community
                                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                      The ioBroker Community 2014-2023
                                      logo