[gelöst] zigbee2tasmota Probleme mit Heizkörperthermostat

Begonnen von dieter114, 16 April 2024, 13:51:21

Vorheriges Thema - Nächstes Thema

dieter114

Hallo in die Runde,

ich habe mit eine Zigbee Bridge mit Tasmota geflasht und eingebunden.
Das Ganze war recht problemlos und läuft auch.
Der "billig" Thermostat aus Fernost war ebenfalls sofort sichtbar und wurde automatisch abgelegt.
Dies Teil ist aber offsichtlich wenig kompatibel mit dem Rest der Welt:
https://www.zigbee2mqtt.io/devices/TV01-ZB.html oder ein Nachbau davon.
Er sendet z.b. die Temperatur (sollwert) mit Faktor 10, also 210 für 21 Grad usw.
Ebenfalls sind die Empfangenen Label absolut nicht sofort lesbar:
EF00/0210 = eingestellte Solltemperatur,  EF00/0218 = gemessene Temperatur usw
[code]define MQTT2_z2t_6EF5 MQTT2_DEVICE z2t_6EF5
attr MQTT2_z2t_6EF5 autocreate 1
attr MQTT2_z2t_6EF5 comment Temperaturen *10 zum Regler senden
attr MQTT2_z2t_6EF5 genericDeviceType thermostat
attr MQTT2_z2t_6EF5 icon hm-cc-rt-dn
attr MQTT2_z2t_6EF5 model tasmota_zigbee2tasmota_eigenbau
attr MQTT2_z2t_6EF5 readingList tele/ZigBee2MQTT/6EF5/SENSOR:.* { $EVENT =~ m,^.*(..Device.+)..$, ?  json2nameValue($1,'',$JSONMAP) : $EVENT =~ m,0x6EF5.:(.*).., ?  json2nameValue($1,'',$JSONMAP) : undef }
attr MQTT2_z2t_6EF5 room MQTT2_DEVICE
attr MQTT2_z2t_6EF5 setList EF00/0210:slider,50,5,300 cmnd/ZigBee2MQTT/6EF5/SENSOR/ZbSend {"device":"0x6EF5","Write":{"EF00/0210": $EVTPART1}}
attr MQTT2_z2t_6EF5 setStateList on off
attr MQTT2_z2t_6EF5 stateFormat Gemessene Temp: gemessen°C Soll Temp: temperature°C
attr MQTT2_z2t_6EF5 userReadings temperature { ReadingsVal("MQTT2_z2t_6EF5","EF00/0210",200)/10;; },\
gemessen { ReadingsVal("MQTT2_z2t_6EF5","EF00/0218",200)/10;; }
#   CFGFN     
#   CID        z2t_6EF5
#   DEF        z2t_6EF5
#   FUUID      6619370c-f33f-b48a-80c0-bdb8066a81ddaaf6
#   IODev      MQTT2_PI4_Server
#   LASTInputDev MQTT2_PI4_Server
#   MQTT2_PI4_Server_CONN MQTT2_PI4_Server_192.168.178.14_64846
#   MQTT2_PI4_Server_MSGCNT 610
#   MQTT2_PI4_Server_TIME 2024-04-16 13:29:46
#   MSGCNT     610
#   NAME       MQTT2_z2t_6EF5
#   NR         976
#   STATE      Gemessene Temp: 20.8°C Soll Temp: 21°C
#   TYPE       MQTT2_DEVICE
#   eventCount 731
#   Helper:
#     DBLOG:
#       0000/FFE2:
#         myDbLog:
#           TIME       1713263230.78465
#           VALUE      31
#       0000/FFE4:
#         myDbLog:
#           TIME       1713263230.78465
#           VALUE      0
#       AppVersion:
#         myDbLog:
#           TIME       1713263230.78465
#           VALUE      69
#       Cluster:
#         myDbLog:
#           TIME       1713263489.82607
#           VALUE      10
#       Config_1:
#         myDbLog:
#           TIME       1712931884.8396
#           VALUE      ~01.1
#       Device:
#         myDbLog:
#           TIME       1713266986.82229
#           VALUE      0x6EF5
#       EF00/0210:
#         myDbLog:
#           TIME       1713266372.83129
#           VALUE      210
#       EF00/0218:
#         myDbLog:
#           TIME       1713266986.82229
#           VALUE      208
#       EF00/0268:
#         myDbLog:
#           TIME       1713035813.84685
#           VALUE      210
#       EF00/0269:
#         myDbLog:
#           TIME       1713035812.51775
#           VALUE      170
#       EF00/0402:
#         myDbLog:
#           TIME       1713199697.60973
#           VALUE      1
#       Endpoint:
#         myDbLog:
#           TIME       1713266986.82229
#           VALUE      1
#       Endpoints_1:
#         myDbLog:
#           TIME       1712931884.8396
#           VALUE      1
#       IEEEAddr:
#         myDbLog:
#           TIME       1712931884.8396
#           VALUE      0x50325FFFFE7A448F
#       LastSeen:
#         myDbLog:
#           TIME       1712931884.8396
#           VALUE      213
#       LastSeenEpoch:
#         myDbLog:
#           TIME       1712931884.8396
#           VALUE      1712931671
#       LinkQuality:
#         myDbLog:
#           TIME       1713266986.82229
#           VALUE      200
#       Manufacturer:
#         myDbLog:
#           TIME       1712931884.8396
#           VALUE      _TZE200_e9ba97vf
#       ModelId:
#         myDbLog:
#           TIME       1712931884.8396
#           VALUE      TS0601
#       Reachable:
#         myDbLog:
#           TIME       1712931884.8396
#           VALUE      true
#       ReadNames_LocalTime:
#         myDbLog:
#           TIME       1713263489.82607
#           VALUE      true
#       Read_1:
#         myDbLog:
#           TIME       1713263489.82607
#           VALUE      7
#       SENSOR_ZbReceived_0x6EF5_Device:
#         myDbLog:
#           TIME       1712930397.56498
#           VALUE      0x6EF5
#       SENSOR_ZbReceived_0x6EF5_EF00/0210:
#         myDbLog:
#           TIME       1712928780.35623
#           VALUE      200
#       SENSOR_ZbReceived_0x6EF5_EF00/0218:
#         myDbLog:
#           TIME       1712930397.56498
#           VALUE      241
#       SENSOR_ZbReceived_0x6EF5_EF00/0402:
#         myDbLog:
#           TIME       1712928774.11536
#           VALUE      0
#       SENSOR_ZbReceived_0x6EF5_Endpoint:
#         myDbLog:
#           TIME       1712930397.56498
#           VALUE      1
#       SENSOR_ZbReceived_0x6EF5_LinkQuality:
#         myDbLog:
#           TIME       1712930397.56498
#           VALUE      189
#       attrTemplateVersion:
#         myDbLog:
#           TIME       1712930678.44179
#           VALUE      20210811
#       desired-temp:
#         myDbLog:
#           TIME       1713197885.19991
#           VALUE      set 19.5
#       gemessen:
#         myDbLog:
#           TIME       1713266986.82229
#           VALUE      20.8
#       state:
#         myDbLog:
#           TIME       1712930688.27978
#           VALUE      attrTemplate speechcontrol_siri_specials RADIO_KEEPsiriNAME=0 RADIO_SETsiriNAME=0 RADIO_DoNotSetsiriName=1 RADIO_Delete_gDT=0
#       temp-offset:
#         myDbLog:
#           TIME       1712930730.32245
#           VALUE      set temp-offset 0.0
#       temperature:
#         myDbLog:
#           TIME       1713266986.82229
#           VALUE      21
#   OLDREADINGS:
#   READINGS:
#     2024-04-16 12:27:10   0000/FFE2       31
#     2024-04-16 12:27:10   0000/FFE4       0
#     2024-04-16 12:27:10   AppVersion      69
#     2024-04-16 12:31:29   Cluster         10
#     2024-04-16 13:29:46   Device          0x6EF5
#     2024-04-16 13:19:32   EF00/0210       210
#     2024-04-16 13:29:46   EF00/0218       208
#     2024-04-15 18:48:17   EF00/0402       1
#     2024-04-16 13:29:46   Endpoint        1
#     2024-04-16 13:29:46   LinkQuality     200
#     2024-04-16 12:31:29   ReadNames_LocalTime true
#     2024-04-16 12:31:29   Read_1          7
#     2024-04-16 13:29:46   gemessen        20.8
#     2024-04-16 13:29:46   temperature     21
#
setstate MQTT2_z2t_6EF5 Gemessene Temp: 20.8°C Soll Temp: 21°C
setstate MQTT2_z2t_6EF5 2024-04-16 12:27:10 0000/FFE2 31
setstate MQTT2_z2t_6EF5 2024-04-16 12:27:10 0000/FFE4 0
setstate MQTT2_z2t_6EF5 2024-04-16 12:27:10 AppVersion 69
setstate MQTT2_z2t_6EF5 2024-04-16 12:31:29 Cluster 10
setstate MQTT2_z2t_6EF5 2024-04-16 13:29:46 Device 0x6EF5
setstate MQTT2_z2t_6EF5 2024-04-16 13:19:32 EF00/0210 210
setstate MQTT2_z2t_6EF5 2024-04-16 13:29:46 EF00/0218 208
setstate MQTT2_z2t_6EF5 2024-04-15 18:48:17 EF00/0402 1
setstate MQTT2_z2t_6EF5 2024-04-16 13:29:46 Endpoint 1
setstate MQTT2_z2t_6EF5 2024-04-16 13:29:46 LinkQuality 200
setstate MQTT2_z2t_6EF5 2024-04-16 12:31:29 ReadNames_LocalTime true
setstate MQTT2_z2t_6EF5 2024-04-16 12:31:29 Read_1 7
setstate MQTT2_z2t_6EF5 2024-04-16 13:29:46 gemessen 20.8
setstate MQTT2_z2t_6EF5 2024-04-16 13:29:46 temperature 21

[/code]
Dieser Eigenbau funktioniert eigentlich nur hätte ich gern z.b. die Temperatur mit 21 und nicht mit 210 eigegeben.
Das Attribut setList temperature:slider,50,5,300 cmnd/ZigBee2MQTT/6EF5/SENSOR/ZbSend {"device":"0x6EF5","Write":{"EF00/0210": $EVTPART1}} sendet auch richtig.
Nun müsste nur noch der Inhalt von $EVTPART1 *10 und alles wäre wieder normal.
Nur das bekomme ich so einfach nicht hin, habt ihr nen Tip dazu?

Grüße Wolfdieter
RPi II+III+IV,OWX,div.1W Module,HM Zisterne,div. CUL, sduino MAPLEMINI, div ESPEasy, div Tasmota, MQTT2Server,WU-Upload,TabletUI, Indego,Poolsteuerung mit fhem

Beta-User

Hallo,
du kannst sowohl in setList wie in readingList Perl verwenden, von daher würde ich empfehlen, sowohl die Umrechnung und Umbenennung der Temperatur-Readings (in "temperature" und "desired-temp" (?, was "allgemeingültiges" für "gute Reading-Namen" halt)) via readingList zu machen (siehe dazu im Wiki "Schritt für Schritt"), wie auch "desired-temp" als setter in die readingList aufzunehmen. Sowas gibt es z.B. in zigbee2mqtt_thermostat_with_weekrofile.
attr MQTT2_z2t_6EF5 setList desired-temp:slider,5.0,0.5,30.0,1 { my $payload = $EVENT;$payload =~ s/$EVTPART0 //;  $payload =  $payload*10;  qq( cmnd/ZigBee2MQTT/6EF5/SENSOR/ZbSend {"device":"0x6EF5","Write":{"EF00/0210":
  $payload}) }
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

dieter114

#2
Danke Beta-User für die schnelle antwort.
Ich glaube das keine Script habe ich verstanden.
Meine Perl Kenntnisse sind leider nur rudimentär....
Nur es sendet nix an den Thermostat.
In den Readings steht desired-temp:  set desired-temp 12.0 (Beispiel)
aber nix wird geschrieben.
MQTT Trafic: {"ZbSend":"Invalid JSON"}
Hat sich da noch ein Fehler einggeschichen ?
Gesetzt setList :   
desired-temp:slider,5.0,0.5,30.0,1 { my $payload = $EVENT;$payload =~ s/$EVTPART0 //; $payload = $payload*10; qq( cmnd/ZigBee2MQTT/6EF5/SENSOR/ZbSend {"device":"0x6EF5","Write":{"EF00/0210": $payload}) }

Und welches Wiki "Schritt für Schritt" meinst du?

Grüße Wolfdieter
RPi II+III+IV,OWX,div.1W Module,HM Zisterne,div. CUL, sduino MAPLEMINI, div ESPEasy, div Tasmota, MQTT2Server,WU-Upload,TabletUI, Indego,Poolsteuerung mit fhem

Beta-User

Zitat von: dieter114 am 16 April 2024, 19:59:15Hat sich da noch ein Fehler einggeschichen ?
Ja, hatte mich mit den Klammern verzählt, der letzte Teil mit "qq" sollte so lauten:
qq(cmnd/ZigBee2MQTT/6EF5/SENSOR/ZbSend {"device":"0x6EF5","Write":{"EF00/0210": $payload}})
Zitat von: dieter114 am 16 April 2024, 19:59:15aber nix wird geschrieben.
Was vom IO (MQTT2_SERVER?) MQTT-seitig versendet wird, kann man dort über "Show MQTT traffic" sichtbar machen. Bitte selbst checken, ob meine obige Zeile dann im Ergebnis das tut, was erforderlich ist....

Zitat von: dieter114 am 16 April 2024, 19:59:15Und welches Wiki "Schritt für Schritt" meinst du?
In der Regel ist hier mit "Wiki" das FHEM-Wiki gemeint, und da es um MQTT2.* geht, hätte ich gedacht, dass es nicht besonders schwierig ist, das hier zu finden: https://wiki.fhem.de/wiki/MQTT2_DEVICE_-_Schritt_f%C3%BCr_Schritt
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

dieter114

Das wars !  :)
Herzlichen Dank, nun läuft es so wie geplant.
Das Wiki mit MQTT2 DEVICE werde ich mir einmal genau ansehen.
Möglicherweise brauche ich dann nicht mehr solche Anfängerfragen zu stellen.

Schöne Grüße
Wolfdieter
RPi II+III+IV,OWX,div.1W Module,HM Zisterne,div. CUL, sduino MAPLEMINI, div ESPEasy, div Tasmota, MQTT2Server,WU-Upload,TabletUI, Indego,Poolsteuerung mit fhem

Beta-User

Zitat von: dieter114 am 17 April 2024, 15:46:38Möglicherweise brauche ich dann nicht mehr solche Anfängerfragen zu stellen.
Na ja, m.E. ist alles, was mit zigbee2tasmota zu tun hat keine wirkliche "Anfängerfrage" mehr - allenfalls das "gelieferte drumrum" ist ggf. nach der Lektüre etwas anders...

Noch ein paar allgemeine Anmerkungen:
- zigbee2tasmota ist schwierig, u.a., weil nicht nur die JSON-Blobs sehr "basic" sind, sondern v.a., weil sich die Geräteidentifikation ggf. ändert, wenn du das Gerät - warum auch immer - mal neu anlernen musst. Würde daher empfehlen, möglichst umfassend mit "devicetopic" zu arbeiten, damit Du ggf. dann später nur an einer Stelle was ändern mußt.
- "desired-temp" als setter ist deswegen interessant, weil dann weekdayTimer (iVm. weekprofile) das Ding als Heiz-Gerät identifizieren kann. Auch nicht so einfach zu verstehen, aber nach dem Einstieg erleichtert das vieles.
- Wenn du die readingList überarbeitet hast (was ich weiter empfehlen würde), wäre es super, wenn du den myUtils-Code teilen würdest. Ggf. übernehme ich den auch in die MQTT2-utils für Heizgeräte; da ist derzeit v.a. einiges drin, was zu zigbee2mqtt gehört (und m.E. für (fortgeschrittene) Einsteiger einfacher zu handhaben ist als zigbee2tasmota).... Im "contirb"-Zweig im svn sind übrigens einige myUtils-Files zu MQTT2 zu finden, da bediene ich mich auch immer wieder...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files