NEWS
Tuya Thermostat (_TZE200_hue3yfsn)
-
@asgothian vielleicht nur bei iobroker, bei der anderen Systemen überhaupt kein Problem. Wie gesagt, wenn ich kurz auf Reset tippe, senden die aktuelle Status entweder offen oder geschlossen, sonst bleibt letzte Zustand, egal ob ich die zusammen mache oder auseinander. Wie kann ich Mqtt-Explorer mit Zigbee-Adapter verbinden, um genau zu wissen was da abläuft?
-
@diti sagte in Neue Tuya Thermostat Zigbee 3.0:
@asgothian
Wie kann ich Mqtt-Explorer mit Zigbee-Adapter verbinden, um genau zu wissen was da abläuft?garnicht - der zigbee Adapter nutzt kein MQTT.
Du kannst die IEEE des Gerätes in "zigbee.0.info.debugmessages" eintragen um zu sehen ob der zigbee-herdsman eine Nachricht vom Gerät an den ioBroker weiter leitet.
A.
Nachtrag: Du schreibst "nur beim ioBroker". Ist die verwendete Hardware (zigbee Stick, Rechner) sowie deren Positionierung und Anschluss bei den anderen Systemen identisch ?
-
Alle Komponente und Positionierung bleiben gleich es wird nur SD-Karte mit andere System ausgetauscht. Ich werde weiter versuchen das hin zu kriegen, als erstes möchte ich wissen, ob zigbee-herdsman Statusänderung empfängt wenn nicht warum und wenn doch wo bleibt es hängen.
-
@asgothian sagte in Neue Tuya Thermostat Zigbee 3.0:
die IEEE des Gerätes in "zigbee.0.info.debugmessages" eintragen
Wo kann ich das eintragen, in Einstellungen von Adapter und in Protokoll. Wenn ich in Protokoll in Spalte Quelle zigbee. 0 auswähle und in Nachricht nach IEEE filtre, da kommt nur Info über Paring aber nicht über Kommunikation
-
@diti Es gibt in den Objekten einen State zigbee.0.info.debugmessages
Da gehört die ieee addresse (ohne führendes 0x) hinein um die Meldungen zu erzeugen
Du kannst auch mehrere eintragen, dann aber mit ; getrennt, also z.Bsp.
00158de00076a57e8;000b3cfffef7ad5f
A.
-
@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;