Das ändert dann auch den Wert. Aber ich habe bei einem zweiten Device nochmal getestet. Statusvariable löschen und dann Geräteinformationen abrufen legt zwar die Variable an, aber weis keinen Wert zu.
Mein kleines Script von oben brauche ich gar nicht mehr. Mittlerweile wird der Wert für „power_on_behavior“ in Z2M bei den Geräteeigenschaften angezeigt. Das war glaube ich früher nicht so.
Habe das jetzt für noch ein Device getestet. Nach Abruf der Geräteeigenschaften wurde die Variable angelegt. Der Wert in Z2M war gesetzt, wurde aber in Symcon erst angezeigt, nachdem ich diesen in Z2M einmal geändert habe.
@KaiS Ich habe das auch schon des Öfteren bei String-Variablen gehabt, dass sie erst beschrieben werden, wenn man im Z2M-Frontend den Wert ändert und der im Payload vorhandene Wert beim Anlegen der Variable nicht gleich mit gesetzt wird. Hast Du eine Idee, warum das so ist oder sein könnte?
Hallo,
und gerade ist mir noch ein Fehler im Log aufgefallen.
Bei Abruf der Geräteinformationen für einen Gledopto GL-C-007 bekomme ich diese Meldung im Log:
27.01.2023, 08:26:44 | FlowHandler | Kann Daten nicht zur Instanz #44265 weiterleiten:
Warning: Cannot find Variable with ident Z2M_ColorTempStartupBGB in /var/lib/symcon/modules/.store/info.schnittcher.ips.zigbee2mqtt/libs/Zigbee2MQTTHelper.php on line 2804
Ich vermute, dass hier ein Tippfehler im Code ist:
Z2M_ColorTempStartupBGB
Das Ident heisst allerdings Z2M_ColorTempStartupRGB.
Im ersten Bild nennst Du die Device im Symcon-Baum um.
In der Instanz nennst Du nicht die Instanz um, sondern das Topic, auf welches die Instanz hören soll. Dies ist entsprechend dem „friendly Name“ in Z2M zu setzen.
Beispiel:
Du erstellst über den Konfigurator eine Instanz (Device). Diese erhält beim anlegen im Symcon-Baum den friendly_name von Zigbee2mqtt. Gleichzeitig setzt der Konfigurator das entsprechende MQTT-Topic auf den Wert von Zigbee2mqtt.
Wenn Du jetzt dem Objekt im Symcon-Baum einen anderen Namen geben willst, tust Du das über den Punkt Objekt umbenennen direkt im Symcon-Baum (rechte Maustaste). Damit ändert sich aber nicht das Topic, auf welches das Objekt über zigbee2mqtt die Daten bekommt.
Wenn Du den friendly_name im Zigbee2mqtt-Frontend änderst, passiert in Symcon erstmal nichts. Dann musst Du das MQTT-Topic in der Device ändern (im Symcon-Baum doppelklick auf das betreffende Objekt) und in der Instanzkonfiguration dann das MQTT-Topic anpassen.
Es sind also zwei Welten, die Du hier vermischen willst. Zum einen den Namen des Objekts im Symcon Baum und zum anderen das MQTT-Topic, welches das Objekt braucht, um die Daten von zigbee2mqtt zu erhalten.
Das ist ein Eurotronic Heizkörperthermostat, Modell SPZB0001.
Für dieses hattest du im April 22 die von mir genannte Codezeile ersetzt:
$Payload[‚occupied_heating_setpoint‘] = number_format($Value, 2, ‚.‘, ‚‘);
Damit funktionierte das setzen der Soll Raumtemperatur auch für Float Werte.
Daher wäre ich auch an einer direkten Implementierung im Modul interessiert. Aktuell übergebe ich Float-Werte auch mit einem Zusatzskript, da ansonsten bei 19,5 erst der Sollwert auf 19 und danach direkt auf 5 Grad gesetzt wird.
Bei mir ist es also eher das Problem, dass per Webfront die Komma-Werte übertragen werden und das Thermostat einen Punkt als Dezimaltrennzeichen erwartet.
Ist gefixt und als PR bei @KaiS, sollte also in Kürze wieder gehen.
Mit diesem Fix werden ALLE Temperatureinstellungen bei TRVs auf eine Nachkommastelle gesetzt.
Den Rahmen (0,5 oder 0,1 oder nur Ganze Schritte, etc.) legt das TRV selber durch zigbee2mqtt fest.
Heißt: Wenn ein TRV keine 0,x-Schritte zulässt, wird automatisch der über Symcon gesetzte Wert auf den nächst höheren Wert aufgerundet (24,5 eingestellt, 25 gesetzt).
Wenn die betreffende Variable eine Integer ist (Z2M_MaxTemperature z.B.), wird im Webfront auch weiterhin nur die Ganzzahl angezeigt und es sind auch nur Ganzzahlen einstellbar.