Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Tuya Thermostat (_TZE200_hue3yfsn)

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Tuya Thermostat (_TZE200_hue3yfsn)

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      diti @bluefish last edited by

      @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!

      Asgothian B 2 Replies Last reply Reply Quote 1
      • Asgothian
        Asgothian Developer @diti last edited by

        @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.

        D 1 Reply Last reply Reply Quote 0
        • D
          diti @Asgothian last edited by diti

          @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;
          
          serrj-sv created this issue in Koenkk/zigbee-herdsman-converters

          closed Request for support new Tuya/Moes Radiator Valve _TZE200_fhn3negr #1803

          wollo created this issue in Koenkk/zigbee-herdsman-converters

          closed added support for Moes Radiator Thermostat TZE200_fhn3negr #2209

          ? 1 Reply Last reply Reply Quote 1
          • B
            bluefish @diti last edited by

            @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 👍

            B 1 Reply Last reply Reply Quote 1
            • B
              bluefish @bluefish last edited by

              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?

              B 1 Reply Last reply Reply Quote 0
              • ?
                A Former User @diti last edited by

                @diti

                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.:
                20cb0993-5d5b-4af6-b5cc-f867c1859c48-grafik.png

                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.
                Asgothian D 2 Replies Last reply Reply Quote 0
                • Asgothian
                  Asgothian Developer @Guest last edited by

                  @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,

                  amx2203 created this issue in ioBroker/ioBroker.zigbee

                  closed TuYa TS0601_thermostat weekly schedule #1244

                  ? 1 Reply Last reply Reply Quote 0
                  • ?
                    A Former User @Asgothian last edited by A Former User

                    @asgothian

                    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);
                    });
                    
                    Asgothian 1 Reply Last reply Reply Quote 0
                    • Asgothian
                      Asgothian Developer @Guest last edited by

                      @pete0815 sagte in Tuya Thermostat (_TZE200_hue3yfsn):

                      @asgothian

                      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?

                      Zerschiessen kannst du da nichts.
                      Du musst den Code in ein JS Skript (oder dir ein entsprechendes Blockly Skript bauen) einbauen und das Skript einmal laufen lassen.

                      Über den Entwickler Modus geht bei den TuYa wenig.

                      A.

                      ? 1 Reply Last reply Reply Quote 0
                      • ?
                        A Former User @Asgothian last edited by

                        @asgothian
                        Danke, da hätte ich noch lange an falscher Stelle gesucht 😂

                        1 Reply Last reply Reply Quote 0
                        • D
                          diti @Guest last edited by

                          @pete0815 sagte in Tuya Thermostat (_TZE200_hue3yfsn):

                          nur die Target Temperature setzen und nicht die Ventilstellung

                          bei mir geht die Ventilstellung-Steuerung auch nicht laut der Liste
                          DPs.PNG
                          diese Thermostate haben kein Data Point ID um das zu steuern.
                          Die Preset Mode ( 'manual', 'boost', 'complex', 'comfort', 'eco') benutze ich nicht, ich hab noch Werkeinstellungen. Ich hab bei mir einige Blockly Skripte laufen: ein Skript zum Beispiel in Interval 20 min. überprüft ob die Fenster geöffnet oder geschlossen sind, Uhrzeit und steuert entsprechend target_temperatur.

                          Im Bild mit Device Information was du gepostet hast steht manufacturerName: '_TZE200_cwnjrr72 warum?
                          Ich hab bei mir solche:5555.PNG

                          Was hast du geändert oder ist das der originale Name von Thermostat?

                          ? 1 Reply Last reply Reply Quote 0
                          • ?
                            A Former User @diti last edited by

                            @diti said in Tuya Thermostat (_TZE200_hue3yfsn):

                            @pete0815 sagte in Tuya Thermostat (_TZE200_hue3yfsn):

                            nur die Target Temperature setzen und nicht die Ventilstellung

                            ok

                            Die Preset Mode ( 'manual', 'boost', 'complex', 'comfort', 'eco') benutze ich nicht, ich hab noch Werkeinstellungen.

                            Nutzen möchte ich das auch im Moment nicht. Da ich den Sinn noch nicht ganz verstehe dieser Presets, möchte ich wenigstens vermeiden, dass ich mit Blocklys gegen die interne Regelung des Ventils "ankämpfe".

                            Im Bild mit Device Information was du gepostet hast steht manufacturerName: '_TZE200_cwnjrr72 warum?
                            Ich hab bei mir solche:5555.PNG

                            Was hast du geändert oder ist das der originale Name von Thermostat?

                            Das wurde orginal nach dem Pairing so gesetzt. Habe nichts verändert.

                            D 1 Reply Last reply Reply Quote 0
                            • D
                              diti @Guest last edited by

                              @pete0815
                              dann sind deine Thermostate in zigbee2mqtt eingepflegt, du musst gar nicht verändern, probier Mal die in Home Assistant da kannst du eventuell mehr Funktionen herausholen.

                              ? arteck 2 Replies Last reply Reply Quote 0
                              • ?
                                A Former User @diti last edited by

                                @diti
                                bin aufm Sprung in den Urlaub und schaue ich danach mal.

                                Im Moment funktioniert aber eigentlich alles und eine Erklärung um die Programme per Zigbee zu setzen gab es nettwerweise auch. Im Prinzip fehlt mir nix 🙂

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

                                  @diti sagte in Tuya Thermostat (_TZE200_hue3yfsn):

                                  probier Mal die in Home Assistant da kannst du eventuell mehr Funktionen herausholen

                                  was willst du da mehr rausholen.. die greifen auch auf die gleiche Basis drauf.. z2m projekt

                                  1 Reply Last reply Reply Quote 0
                                  • B
                                    bluefish @bluefish last edited by bluefish

                                    Hier die Beantwortung meiner eigenen Frage, vielleicht hat ja noch jemand die Frage zur Einbindung von converter files im iobroker...

                                    1. Man besorgt sich ein converter file für das nicht unterstützte Gerät. Ich habe dieses gefunden: https://github.com/PeWu/tuya-valve-z2m/blob/main/tuya_radiator_valve.js
                                      Funktioniert zwar nicht alles, aber setpoint, mode und child lock funktionieren, mehr hoffentlich bald

                                    2. Man legt das converter file (tuya_radiator_valve.js) zum Beispiel mit ftp irgendwo auf dem Pi ab. Ich habe dies einfach mal ins Verzeichnis /opt/iobroker/iobroker-data/ gelegt.

                                    3. Im iobroker Adapter gibt es unter dem Punkt Einstellungen eine Rubrik "External converters", ganz am Ende der Seite. Dort gibt man den Pfad zur .js Datei an.
                                      Bildschirmfoto 2021-11-02 um 12.03.10.png

                                    4. Adapter neu starten und _TZE200_hue3yfsn neu pairen. Anschließend wird das Gerät gefunden und hinzugefügt:
                                      Bildschirmfoto 2021-11-02 um 12.07.53.png

                                    M.M.n. die bessere Lösung gegenüber der Lösung von @diti mit der Modifikation von /opt/iobroker/node_modules/zigbee-herdsman-converters/devices/tuya.js und /opt/iobroker/node_modules/zigbee-herdsman-converters/lib/tuya.js

                                    1 Reply Last reply Reply Quote 0
                                    • D
                                      diti last edited by

                                      @bluefish danke für deine Anleitung, leider wenn ich externen Converter benutze, bekomme ich von den Thermostaten keine Rückmeldung also keine locale Temperatur, ich hab verschiedene ausprobiert und mit immer gleichem Ergebnis. Auf Bildern von dir current Temperatur auch unbekannt, geht das?

                                      Mittlerweile habe ich andere "Mitfahrgelegenheit" für Thermostat (_TZE200_hue3yfsn) gefunden, und zwar bei TV01-ZB von Moes. Alle Data Point ID sind mit unserem identisch und alle steuerbar, Rückmeldung von TRV ist auch vorhanden, das heißt man muss nicht in /opt/iobroker/node_modules/zigbee-herdsman-converters/lib/tuya.js Anpassungen machen sondern in /opt/iobroker/node_modules/zigbee-herdsman-converters/devices/moes.js Thermostat-Name {modelID: 'TS0601', manufacturerName: '_TZE200_hue3yfsn'} einfügen.

                                      fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_e9ba97vf'}, {modelID: 'TS0601', manufacturerName: '_TZE200_hue3yfsn'}],
                                              model: 'TV01-ZB',
                                              vendor: 'Moes',
                                              description: 'Thermostat radiator valve',
                                              fromZigbee: [fz.moes_thermostat_tv, fz.ignore_tuya_set_time],
                                              toZigbee: [tz.moes_thermostat_tv],
                                      

                                      1111.PNG
                                      11111.PNG
                                      TV01-ZB ist frisch in zigbee4mqtt integriert, deswegen musst ihr Zigbee-Adapter oder zigbee-herdsmann-converters aktualisieren, bei mir steht nämlich v1.6.4.
                                      Nicht vergessen alle gemachte Änderungen und Anpassungen in
                                      /opt/iobroker/node_modules/zigbee-herdsman-converters/devices/tuya.js und in /opt/iobroker/node_modules/zigbee-herdsman-converters/lib/tuya.js wieder rückgängig machen, oder die werden mit Aktualisierung überschrieben.

                                      B 1 Reply Last reply Reply Quote 0
                                      • B
                                        bluefish @diti last edited by

                                        @diti Danke für deinen Tipp mit dem Moes.

                                        Damit lässt sich easy ein externer Converter basteln, der den Vorteil hat, dass man nicht in den node_modules herumwerkeln muss und es überlebt updates...

                                        Hier ein bei mir funktionierender Code auf basis des Moes _TZE200_e9ba97vf Thermostats.
                                        Abspeichern als z.B. tuya_radiator_valve.js, irgendwo auf den Pi speichern und Pfad+Dateiname in den iobroker Einstellungen hinterlegen.

                                        const fz = {...require('zigbee-herdsman-converters/converters/fromZigbee'), legacy: require('zigbee-herdsman-converters/lib/legacy').fromZigbee};
                                        const tz = require('zigbee-herdsman-converters/converters/toZigbee');
                                        const tuya = require('zigbee-herdsman-converters/lib/tuya');
                                        const globalStore = require('zigbee-herdsman-converters/lib/store');
                                        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 device = {
                                            fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_hue3yfsn'}],
                                            model: 'TS0601',
                                            vendor: 'Tuya',
                                            description: 'Thermostat radiator valve',
                                            fromZigbee: [fz.moes_thermostat_tv, fz.ignore_tuya_set_time],
                                            toZigbee: [tz.moes_thermostat_tv],
                                            exposes: [
                                                e.battery(), 
                                                // e.child_lock(), 
                                                // e.window_detection(),
                                                // exposes.binary('frost_detection', ea.STATE_SET, true, false).withDescription('Enables/disables frost detection on the device'),
                                                exposes.binary('heating_stop', ea.STATE_SET, true, false).withDescription('Stop heating'),
                                                exposes.numeric('holiday_temperature', ea.STATE_SET).withDescription('Holiday mode temperature'),
                                                exposes.numeric('comfort_temperature', ea.STATE_SET).withDescription('Comfort mode temperature'),
                                                exposes.numeric('eco_temperature', ea.STATE_SET).withDescription('Eco mode temperature'),
                                                exposes.numeric('open_window_temperature', ea.STATE_SET).withDescription('Open window mode temperature'),
                                                // exposes.numeric('boost_heating_countdown', ea.STATE).withDescription('Boost heating countdown'),
                                                // exposes.numeric('error_status', ea.STATE).withDescription('Error status'),
                                                // exposes.binary('boost_mode', ea.STATE_SET).withDescription('Enables/disables boost mode'),
                                                exposes.climate().withSetpoint('current_heating_setpoint', 5, 29.5, 1, ea.STATE_SET)
                                                    .withLocalTemperature(ea.STATE).withLocalTemperatureCalibration(ea.STATE_SET)
                                                    .withSystemMode(Object.values(tuya.tvThermostatMode), ea.STATE_SET)
                                                    .withPreset(Object.values(tuya.tvThermostatPreset)),
                                            ],
                                            onEvent: tuya.onEventSetLocalTime,
                                        };
                                         
                                        module.exports = device;
                                        
                                        

                                        Ergebnis:
                                        Bildschirmfoto 2021-11-03 um 12.46.29.png

                                        Child_lock, window_detection, frost_detection, boost_mode und error_status funktionieren bei mir nicht, daher habe ich es auskommentiert. Sollten bei deiner Methode @diti eigentlich auch nicht funktionieren oder?

                                        Die local_temperature aktualisiert sich bei mir leider nicht von selbst, wenn man jedoch die local_temperature_calibration aktualisiert, wird auch die aktuelle local_temperature aktualisiert.

                                        D 1 Reply Last reply Reply Quote 0
                                        • D
                                          diti @bluefish last edited by diti

                                          @bluefish bei mir funktioniert von allein die Child_lock, local_temperature, früher musste ich auch mit einem Skript local_temperature_calibration auf 0-Grad jedesmal setzen um die aktuelle Temperatur zu bekommen.

                                          D 1 Reply Last reply Reply Quote 0
                                          • D
                                            diti @diti last edited by

                                            local_temperature funktioniert doch nicht, ich habe immer noch Skript aktiv gehabt. Wie kann man überprüfen ob Thermostat was sendet? Vielleicht mit zigbee.0.info.debugmessages?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            572
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            8
                                            62
                                            12397
                                            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