NEWS
Tuya Thermostat (_TZE200_hue3yfsn)
-
@asgothian . Da sind die Meldungen, es passiert einfach nichts wenn ich die Sensoren zusammen und auseinander tue oder System bekommt keinen Wert. Es ist so als ob der zigbee-herdsman-converter nicht richtig mit Sensor arbeitet.
Beim Reset-Drücken passiert folgendes:
Ich muss wohl mit anderen Sensoren probieren von anderen Hersteller, oder Stick noch mal flashen, ich habe aktuell letzte zStack3x0 ,womit kann man noch flashen? -
Ich habe es hinbekommen, SD-Karte mit langsamer Geschwindigkeit formatiert, ioBroker noch mal installiert, Browser-cookies gelöscht und eingestellt dass die nicht für diese Adresse nicht gespeichert werden. Alles läuft die Thermostate sind erkannt und steuerbar, Reedschalter senden Status ohne Verzögerung und werden von System schnell verarbeitet.
@asgothian großen Dank für Unterstützung
-
@diti
Hi, die Thermostate finde ich nicht uninteressant. Kannst Du nochmal kurz sagen, ob die jetzt doch "out of the box" laufen in der neusten Adapterversion oder hast Du hier manuell noch eingegriffen? Thx. -
@pete0815
die laufen lokal bei mir, die sind noch nicht in zigbee2mqtt-Liste der unterstützten Geräte eingetragen. -
@diti said in Neue Tuya Thermostat Zigbee 3.0:
@pete0815
die laufen lokal bei mir, die sind noch nicht in zigbee2mqtt-Liste der unterstützten Geräte eingetragen.verstehe ich nicht wirklich mit Deinen gezeigten Bildern. Diese zeigen doch Bilder des Zigbee-Adapters unter IOBroker wo die angelernten Devices gelistet sind, oder habe ich etwas falsch verstanden?
Bei mir läuft auch ein CC2652P mit dem Zigbee Adapter von IObroker. Beim "einfachen" Pairing werden die Thermostate also derzeit nicht gefunden bzw. sind noch nicht hinterlegt? -
@pete0815
Das war Anfang der Geschichte, als ich noch 0 Ahnung gehabt welche Unterschied gibt zwischen unterstützen und nicht unterstützen Geräten, für mich war so das alle Tuya-Geräten laufen mit USB-Stick -
@diti said in Neue Tuya Thermostat Zigbee 3.0:
Also dies ist (leider) nicht ein Zustand wie er über das "normale" Pairing erreichbar ist?
-
@diti
Ich schreibe dir eine Anleitung wie du die zum laufen bringst, aber morgen, jetzt muss ich leider zur Arbeit. -
@diti kein Stress, Danke. Ich muß erstmal welche kaufen/bestellen bzw. lasse ich das wenn es nicht sinnvoll ist. Deswegen frage ich
Möchte mir ja auch keinen "Einzelfall" basteln den ich nacher nur als Problem mitschleppe und nicht handeln kann. -
@diti sagte in Neue Tuya Thermostat Zigbee 3.0:
@pete0815
die laufen lokal bei mir, die sind noch nicht in zigbee2mqtt-Liste der unterstützten Geräte eingetragen.Wenn du die durch Modifikationen zum laufen bekommen hast wäre es nett diese auch hier bzw. besser noch am zigbee-herdsman-converters projekt auf GitHub zu posten, dann können die offiziell unterstützt werden.
A.
-
@diti Hi Diti, ich würde mich auch interessieren, da es kälter wird und drei Thermostaten dieser Art aktuell nutzlos liegen... Wird Deine Anleitung hier gepostet, bzw. könntest Du bitte den Link auf andere Seite hier posten (googlen hat mir bisher nicht geholfen). Dankeschön im Voraus!
-
@diti würde mich auch über eine Anleitung freuen. Bekomme das Thermostat aktuell auch nicht zum Laufen
Danke im Voraus! -
@bluefish
Idealerweise um volle Funktionalität von diesen Thermostaten zu haben, man muss einen "externen Converter" für die Dinge schreiben, leider bin ich nicht so weit in Programmierung oder ehrlich zu sagen gar nicht so weit. Das einzige was mir eingefallen ist, die Namen von Thermostaten zu bestehenden beizumischen und Datenpunkten anzupassen. Dadurch es ist möglich geworden: gewünschte Temperatur zusetzen, lokale Temp. auszulesen, mehr brauche ich nicht.
Also zu Sache.
Eine Datei tuya.js finden.
/opt/iobroker/node_modules/zigbee-herdsman-converters/devices/tuya.js
Thermostat-Name {modelID: 'TS0601', manufacturerName: '_TZE200_hue3yfsn'}
Zu den anderen einfügen ungefähr Zeile 650 und speichern.zigbeeModel: ['kud7u2l'], fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_ckud7u2l'}, {modelID: 'TS0601', manufacturerName: '_TZE200_ywdxldoj'}, {modelID: 'TS0601', manufacturerName: '_TZE200_cwnjrr72'}, {modelID: 'TS0601', manufacturerName: '_TZE200_hue3yfsn'}], model: 'TS0601_thermostat', vendor: 'TuYa',
Nächste Datei finden unter:
/opt/iobroker/node_modules/zigbee-herdsman-converters/lib/tuya.js
Und Data Point ID anzupassen.const dataPoints = { // Common data points // Below data points are usually shared between devices state: 1, heatingSetpoint: 16, coverPosition: 2, dimmerLevel: 3, localTemp: 24, coverArrived: 3, occupancy: 3, mode: 4, fanMode: 5, motorDirection: 5, config: 5, childLock: 40, coverChange: 7, runningState: 14, valveDetection: 20, battery: 35, tempCalibration: 27, // Data points above 100 are usually custom function data points waterLeak: 101, minTemp: 118, maxTemp: 119, windowDetection: 8, boostTime: 105, coverSpeed: 105, forceMode: 106, comfortTemp: 104, ecoTemp: 105, valvePos: 109, batteryLow: 35, weekFormat: 111, scheduleWorkday: 112, scheduleHoliday: 113, awayTemp: 32, autoLock: 116, awayDays: 31,
Ich habe nicht alle Data Points geändert nur die, die ich brauche, ihr könnt mit den anderen ausprobieren vielleicht bekommt noch mehr Funktionen.
Datei speichern, Ziegbee-Adapter neu starten und mit Kopplung anfangen.
Viel Erfolg! -
@diti sagte in Neue Tuya Thermostat Zigbee 3.0:
@bluefish
Idealerweise um volle Funktionalität von diesen Thermostaten zu haben, man muss einen "externen Converter" für die Dinge schreiben, leider bin ich nicht so weit in Programmierung oder ehrlich zu sagen gar nicht so weit. Das einzige was mir eingefallen ist, die Namen von Thermostaten zu bestehenden beizumischen und Datenpunkten anzupassen. Dadurch es ist möglich geworden: gewünschte Temperatur zusetzen, lokale Temp. auszulesen, mehr brauche ich nicht.
Also zu Sache.
Eine Datei tuya.js finden.
/opt/iobroker/node_modules/zigbee-herdsman-converters/devices/tuya.js
Thermostat-Name {modelID: 'TS0601', manufacturerName: '_TZE200_hue3yfsn'}
Zu den anderen einfügen ungefähr Zeile 650 und speichern.zigbeeModel: ['kud7u2l'], fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_ckud7u2l'}, {modelID: 'TS0601', manufacturerName: '_TZE200_ywdxldoj'}, {modelID: 'TS0601', manufacturerName: '_TZE200_cwnjrr72'}, {modelID: 'TS0601', manufacturerName: '_TZE200_hue3yfsn'}], model: 'TS0601_thermostat', vendor: 'TuYa',
Nächste Datei finden unter:
/opt/iobroker/node_modules/zigbee-herdsman-converters/lib/tuya.js
Und Data Point ID anzupassen.const dataPoints = { // Common data points // Below data points are usually shared between devices state: 1, heatingSetpoint: 16, coverPosition: 2, dimmerLevel: 3, localTemp: 24, coverArrived: 3, occupancy: 3, mode: 4, fanMode: 5, motorDirection: 5, config: 5, childLock: 40, coverChange: 7, runningState: 14, valveDetection: 20, battery: 35, tempCalibration: 27, // Data points above 100 are usually custom function data points waterLeak: 101, minTemp: 118, maxTemp: 119, windowDetection: 8, boostTime: 105, coverSpeed: 105, forceMode: 106, comfortTemp: 104, ecoTemp: 105, valvePos: 109, batteryLow: 35, weekFormat: 111, scheduleWorkday: 112, scheduleHoliday: 113, awayTemp: 32, autoLock: 116, awayDays: 31,
Ich habe nicht alle Data Points geändert nur die, die ich brauche, ihr könnt mit den anderen ausprobieren vielleicht bekommt noch mehr Funktionen.
Datei speichern, Ziegbee-Adapter neu starten und mit Kopplung anfangen.
Viel Erfolg!Dieses Vorgehen ist gefährlich - es kann dazu führen das andere Thermostate nicht mehr funktionieren wenn data-point id’s umgeschrieben werden.
In diesem Fall sind weitere Anpassungen notwendig um neue data-point id’s hinzufügen.
A.
-
@asgothian
Ich weiß, habe nur diese, rückgängig kann man auch machen habe ich schon probiert.
ich habe im Github Forum externen Converter von kvazis gefunden die Data Points sind identisch, der Converter aber für HA gemacht. Ich habe da kleine Anpassungen gemacht , Temperatur einstellen funktioniert zwar aber Rückmeldung von TRV kommt nicht, was ist falsch ?/// Based on: // https://gist.github.com/basveeling/96ff0f16cd7185b0277a26c8d9305633 // https://github.com/Koenkk/zigbee-herdsman-converters/issues/1803 // https://github.com/Koenkk/zigbee-herdsman-converters/pull/2209 //https://gist.github.com/serrj-sv/af142b25de2d7ac54c3a2eb2623d9a6d#file-moes_radiator_alt-js-L328 //// Credits: // @serrj-sv, @wollo, @basveeling //// Usage: // zzonesmart_tvg01zg.js in the root of your zigbee2mqtt data folder (as stated in data_path, e.g. /config/zigbee2mqtt_data) // In your zigbee2mqtt hassio addon configuration, add the following two lines: // ... // external_converters: // - zzonesmart_tvg01zg.js // ... const fz = require('zigbee-herdsman-converters/converters/fromZigbee'); const tz = require('zigbee-herdsman-converters/converters/toZigbee'); const tuya = require('zigbee-herdsman-converters/lib/tuya'); const exposes = require('zigbee-herdsman-converters/lib/exposes'); const reporting = require('zigbee-herdsman-converters/lib/reporting'); const e = exposes.presets; const ea = exposes.access; const tuyaLocal = { dataPoints: { // ZONNSMART zsHeatingSetpoint: 16, zsFrostDetection: 10, zsWindowDetection: 8, zsChildLock: 40, zsTempCalibration: 27, zsLocalTemp: 24, zsBattery: 35, zsHeatingBoostCountdown: 101, zsComfortTemp: 104, zsEcoTemp: 105, zsAwayTemp: 32, zsErrorStatus: 45, zsMode: 2, zsHeatingStop: 107, }, }; const fzLocal = { zs_thermostat: { cluster: 'manuSpecificTuya', type: ['commandGetData', 'commandSetDataResponse'], convert: (model, msg, publish, options, meta) => { const dp = msg.data.dp; const value = tuya.getDataValue(msg.data.datatype, msg.data.data); // if (dp >= 101 && dp <=107) return; // handled by tuya_thermostat_weekly_schedule switch (dp) { case tuya.dataPoints.state: // on/off return !value ? {system_mode: 'off'} : {}; case tuyaLocal.dataPoints.zsChildLock: return {child_lock: value ? 'LOCK' : 'UNLOCK'}; case tuyaLocal.dataPoints.zsHeatingSetpoint: return {current_heating_setpoint: (value / 10).toFixed(1)}; case tuyaLocal.dataPoints.zsLocalTemp: return {local_temperature: (value / 10).toFixed(1)}; case tuyaLocal.dataPoints.zsBattery: return {battery: value}; case tuyaLocal.dataPoints.zsTempCalibration: return {local_temperature_calibration: value > 55 ? ((value - 0x100000000)/10).toFixed(1): (value/ 10).toFixed(1)}; case tuyaLocal.dataPoints.zsHeatingBoostCountdown: return {heating_boost_countdown: value}; case tuyaLocal.dataPoints.zsWindowDetection: return {window_detection: value ? 'ON' : 'OFF'}; case tuyaLocal.dataPoints.zsComfortTemp: return {comfort_temperature: (value / 10).toFixed(1)}; case tuyaLocal.dataPoints.zsEcoTemp: return {eco_temperature: (value / 10).toFixed(1)}; case tuyaLocal.dataPoints.zsAwayTemp: return {away_preset_temperature: (value / 10).toFixed(1)}; case tuyaLocal.dataPoints.zsMode: switch (value) { case 1: // manual return {system_mode: 'heat', away_mode: 'OFF', preset: 'manual'}; case 3: // away return {system_mode: 'heat', away_mode: 'ON', preset: 'vacation'}; case 0: // auto return {system_mode: 'auto', away_mode: 'OFF', preset: 'schedule'}; default: meta.logger.warn('zigbee-herdsman-converters:zsThermostat: ' + `preset ${value} is not recognized.`); break; } break; case tuya.dataPoints.runningState: return {running_state: value ? 'heat' : 'idle'}; default: meta.logger.warn(`zigbee-herdsman-converters:zsThermostat: Unrecognized DP #${ dp} with data ${JSON.stringify(msg.data)}`); } }, }, }; const tzLocal = { zs_thermostat_child_lock: { key: ['child_lock'], convertSet: async (entity, key, value, meta) => { await tuya.sendDataPointBool(entity, tuyaLocal.dataPoints.zsChildLock, value === 'LOCK'); }, }, zs_thermostat_window_detection: { key: ['window_detection'], convertSet: async (entity, key, value, meta) => { await tuya.sendDataPointBool(entity, tuyaLocal.dataPoints.zsWindowDetection, value === 'ON'); }, }, zs_thermostat_current_heating_setpoint: { key: ['current_heating_setpoint'], convertSet: async (entity, key, value, meta) => { const temp = Math.round(value * 10); await tuya.sendDataPointValue(entity, tuyaLocal.dataPoints.zsHeatingSetpoint, temp); }, }, zs_thermostat_comfort_temp: { key: ['comfort_temp_preset'], convertSet: async (entity, key, value, meta) => { const temp = Math.round(value * 10); await tuya.sendDataPointValue(entity, tuyaLocal.dataPoints.zsComfortTemp, temp); }, }, zs_thermostat_away_temp: { key: ['away_preset_temperature'], convertSet: async (entity, key, value, meta) => { const temp = Math.round(value * 10); await tuya.sendDataPointValue(entity, tuyaLocal.dataPoints.zsAwayTemp, temp); }, }, zs_thermostat_eco_temp: { key: ['eco_temp_preset'], convertSet: async (entity, key, value, meta) => { const temp = Math.round(value * 10); await tuya.sendDataPointValue(entity, tuyaLocal.dataPoints.zsEcoTemp, temp); }, }, zs_thermostat_system_mode_preset: { key: ['preset'], convertSet: async (entity, key, value, meta) => { const lookup = {'schedule': 0, 'manual': 1, 'holiday': 3}; await tuya.sendDataPointEnum(entity, tuyaLocal.dataPoints.zsMode, lookup[value]); }, }, zs_thermostat_local_temperature_calibration: { key: ['local_temperature_calibration'], convertSet: async (entity, key, value, meta) => { if (value > 0) value = value*10; if (value < 0) value = value*10 + 0x100000000; await tuya.sendDataPointValue(entity, tuyaLocal.dataPoints.zsTempCalibration, value); }, }, }; const device = { // Moes Tuya Alt Thermostat zigbeeModel: ['TS601'], fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_e9ba97vf'}], model: 'TV01-ZG', vendor: 'ZONNSMART', description: 'Radiator valve with thermostat', fromZigbee: [ fz.ignore_basic_report, fz.ignore_tuya_set_time, // handled in onEvent fzLocal.zs_thermostat, // fz.tuya_data_point_dump, ], toZigbee: [ tzLocal.zs_thermostat_current_heating_setpoint, tzLocal.zs_thermostat_child_lock, tzLocal.zs_thermostat_comfort_temp, tzLocal.zs_thermostat_eco_temp, tzLocal.zs_thermostat_system_mode_preset, tzLocal.zs_thermostat_local_temperature_calibration, tzLocal.zs_thermostat_away_temp, tzLocal.zs_thermostat_window_detection, tzLocal.zs_thermostat_heatingBoostCountdown, tz.tuya_data_point_test ], onEvent: tuya.onEventSetLocalTime, meta: { configureKey: 1, }, configure: async (device, coordinatorEndpoint, logger) => { const endpoint = device.getEndpoint(1); await reporting.bind(endpoint, coordinatorEndpoint, ['genBasic']); }, exposes: [ e.battery(), e.window_detection(), e.child_lock(), e.comfort_temperature(), e.eco_temperature(), e.away_preset_temperature(), exposes.climate().withSetpoint('current_heating_setpoint', 0.5, 29.5, 0.5) .withLocalTemperature() .withLocalTemperatureCalibration() .withSystemMode(['off', 'heat', 'auto'], ea.STATE_SET) //system mode only: off, heat, auto .withPreset(['schedule', 'manual', 'holiday']), exposes.numeric('heating_boost_countdown', ea.STATE) ], }; module.exports = device;
-
@diti sagte in Neue Tuya Thermostat Zigbee 3.0:
atei speichern, Ziegbee-Adapter neu starten und mit Kopplung anfangen.
Danke, auch wenn es vielleicht nicht die beste Lösung ist, aber es funktioniert bei mir auch. Habe sonst auch keine Tuya Thermostate, daher kein Problem mit den data-point id's
Danke für deine Anleitung
-
Weiß jemand, wie man ein converter file (z.B. https://github.com/PeWu/tuya-valve-z2m/blob/main/tuya_radiator_valve.js) im iobroker hinzufügt?
-
Thx. Konnte nun endlich mein Thermostat in Betrieb nehmen und bisher bin ich voll zufrieden und kann eigentlich nicht finden was nicht funktioniert. Nach dem Pairing ging alles "Out of the Box" mit Adapter 1.6.3.:
An 2 Punkten habe ich noch Fragezeichen:
- Wo liegt der Unterschied im Preset Mode "Manual" oder z.B. "Comfort"?
In Beiden kann ich nur die Target Temperature setzen und nicht die Ventilstellung. - Wenn ich über den Preset Punkt "schedule" nachdenke ihn zu nutzen, gibt es die Möglichkeit die Programme/Einstellungen per Zigbee zu programmieren und auszulesen? Am Ventil dies einzustellen ist ja richtig fummelig.
- Wo liegt der Unterschied im Preset Mode "Manual" oder z.B. "Comfort"?
-
@pete0815 sagte in Tuya Thermostat (_TZE200_hue3yfsn):
Wenn ich über den Preset Punkt "schedule" nachdenke ihn zu nutzen, gibt es die Möglichkeit die Programme/Einstellungen per Zigbee zu programmieren und auszulesen? Am Ventil dies einzustellen ist ja richtig fummelig.
Lies mal hier: https://github.com/ioBroker/ioBroker.zigbee/issues/1244
Die genaue Syntax der Daten die du hin schickst must Du dir bei zigbee2mqtt.io anschauen.
A,
-
Vielen Dank! Da kann ich mir viel abgucken. Da ich mir nichts "zerschießen" möchte und ich es noch nicht gemacht habe, wie schicke ich die Daten zum Gerät?
Über das Developer Menü im Adapter und z.B. diese Daten dann im Experten-Modus bei JSON versenden?sendTo('zigbee.0', 'SendToDevice', {'device':'5c0272fffedc3017', 'payload':{ "schedule": { "workdays": [ { "hour": 6, "minute": 0, "temperature": 19 }, { "hour": 8, "minute": 0, "temperature": 21 }, { "hour": 18, "minute": 0, "temperature": 21 }, { "hour": 20, "minute": 30, "temperature": 20 }, { "hour": 22, "minute": 0, "temperature": 19 }, { "hour": 23, "minute": 0, "temperature": 17 } ] } }}, function(res) { if (res.success) console.log("success") else console.log(res.error); });