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
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}) }
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
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
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
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...