Hallo,
wie verfährt man, wenn man im FHEMWEB mit ,,setlist" in einem MQTT2_DEVICE Wertepaare übergeben will, die durch ,,blank" getrennt sind.
Folgend die Definition meines Devices für ein SONOFF TRVZB, das von der zigbee-bridge angelegt und von mit ergänzt wurde.
define zigbee_0x44e2f8fffe107869 MQTT2_DEVICE zigbee_0x44e2f8fffe107869
attr zigbee_0x44e2f8fffe107869 alias E2_Buero_TRV
attr zigbee_0x44e2f8fffe107869 devicetopic zigbee2mqtt/0x44e2f8fffe107869
attr zigbee_0x44e2f8fffe107869 icon temp_control
attr zigbee_0x44e2f8fffe107869 readingList zigbee2mqtt/0x44e2f8fffe107869:.* { json2nameValue($EVENT) }\
zigbee2mqtt/0x44e2f8fffe107869/set:.* { json2nameValue($EVENT) }
attr zigbee_0x44e2f8fffe107869 room Mq->Zb->Regler
attr zigbee_0x44e2f8fffe107869 setList system_mode:auto,off,heat $DEVICETOPIC/set {"system_mode":" $EVTPART1 "}\
occupied_heating_setpoint:slider,5.0,0.5,30.0,1 $DEVICETOPIC/set {"occupied_heating_setpoint": $EVTPART1 }\
valve_opening_degree:slider,0,10,100,1 $DEVICETOPIC/set {"valve_opening_degree": $EVTPART1 }\
valve_closing_degree:slider,0,10,100,1 $DEVICETOPIC/set {"valve_closing_degree": $EVTPART1 }\
local_temperature_calibration:slider,-10.0,0.5,10.0,1 $DEVICETOPIC/set {"local_temperature_calibration": $EVTPART1 }\
weekly_schedule_sunday: {my $p=$EVTPART1;;$p=~ tr /-/ /;; my $s="$DEVICETOPIC/set {\"weekly_schedule\": {\"sunday\": \"$p\" }}";;;;$s;;}\
weekly_schedule_monday: {my $p=$EVTPART1;;$p=~ tr /-/ /;; my $s="$DEVICETOPIC/set {\"weekly_schedule\": {\"monday\": \"$p\" }}";;;;$s;;}\
weekly_schedule_tuesday: {my $p=$EVTPART1;;$p=~ tr /-/ /;; my $s="$DEVICETOPIC/set {\"weekly_schedule\": {\"tuesday\": \"$p\" }}";;;;$s;;}\
weekly_schedule_wednesday: {my $p=$EVTPART1;;$p=~ tr /-/ /;; my $s="$DEVICETOPIC/set {\"weekly_schedule\": {\"wednesday\": \"$p\" }}";;;;$s;;}\
weekly_schedule_thursday: {my $p=$EVTPART1;;$p=~ tr /-/ /;; my $s="$DEVICETOPIC/set {\"weekly_schedule\": {\"thursday\": \"$p\" }}";;;;$s;;}\
weekly_schedule_friday: {my $p=$EVTPART1;;$p=~ tr /-/ /;; my $s="$DEVICETOPIC/set {\"weekly_schedule\": {\"friday\": \"$p\" }}";;;;$s;;}\
weekly_schedule_saturday: {my $p=$EVTPART1;;$p=~ tr /-/ /;; my $s="$DEVICETOPIC/set {\"weekly_schedule\": {\"saturday\": \"$p\" }}";;;;$s;;}
attr zigbee_0x44e2f8fffe107869 stateFormat system_mode Temp: local_temperature -> occupied_heating_setpoint °C running_state update_state V=valve_opening_degree:valve_closing_degree\
Battery: battery % lqi linkquality
# CID zigbee_0x44e2f8fffe107869
# DEF zigbee_0x44e2f8fffe107869
# FUUID 67822183-f33f-3e5d-4872-c68423ba2faf0e6b
# IODev MQTT2_Server2
# LASTInputDev MQTT2_Server2
# MQTT2_Server2_CONN MQTT2_Server2_192.168.69.43_54242
# MQTT2_Server2_MSGCNT 19320
# MQTT2_Server2_TIME 2025-01-23 21:23:21
# MSGCNT 19320
# NAME zigbee_0x44e2f8fffe107869
# NR 790
# STATE heat Temp: 21.6 -> 20.5 °C idle idle V=17:93
#Battery: 100 % lqi 120
# TYPE MQTT2_DEVICE
# eventCount 28245
# OLDREADINGS:
# READINGS:
# 2025-01-17 14:17:10 IODev MQTT2_Server2
# 2025-01-11 14:48:37 associatedWith MQTT2_zigbee_bridge
# 2025-01-23 21:23:21 battery 100
# 2025-01-23 21:23:21 child_lock UNLOCK
# 2025-01-23 21:23:21 closing_steps 296
# 2025-01-23 21:23:21 frost_protection_temperature 7
# 2025-01-23 21:23:21 idle_steps 293
# 2025-01-23 21:23:21 linkquality 120
# 2025-01-23 21:23:21 local_temperature 21.6
# 2025-01-23 21:23:21 local_temperature_calibration -2
# 2025-01-23 21:23:21 occupied_heating_setpoint 20.5
# 2025-01-23 21:23:21 open_window OFF
# 2025-01-23 21:23:21 running_state idle
# 2025-01-23 21:23:19 state valve_closing_degree
# 2025-01-23 21:23:21 system_mode heat
# 2025-01-23 21:23:21 update_installed_version 4609
# 2025-01-23 21:23:21 update_latest_version 4609
# 2025-01-23 21:23:21 update_state idle
# 2025-01-23 21:23:21 valve_closing_degree 93
# 2025-01-23 21:23:21 valve_closing_limit_voltage 2620
# 2025-01-23 21:23:21 valve_motor_running_voltage 1337
# 2025-01-23 21:23:21 valve_opening_degree 17
# 2025-01-23 21:23:21 valve_opening_limit_voltage 2045
# 2025-01-23 21:23:21 weekly_schedule_friday 00:00/16 07:00/21 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-23 21:23:21 weekly_schedule_monday 00:00/16 07:00/21 10:00/21 10:00/21 17:00/19 23:00/16
# 2025-01-23 21:23:21 weekly_schedule_saturday 00:00/16 07:00/21 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-23 21:23:21 weekly_schedule_sunday 00:00/16 07:00/21 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-23 21:23:21 weekly_schedule_thursday 00:00/16 07:00/21 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-23 21:23:21 weekly_schedule_tuesday 00:00/16 06:00/19 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-23 21:23:21 weekly_schedule_wednesday 00:00/16 06:00/21 10:00/19 10:00/19 17:00/19 23:00/16
#
setstate zigbee_0x44e2f8fffe107869 heat Temp: 21.6 -> 20.5 °C idle idle V=17:93\
Battery: 100 % lqi 120
setstate zigbee_0x44e2f8fffe107869 2025-01-17 14:17:10 IODev MQTT2_Server2
setstate zigbee_0x44e2f8fffe107869 2025-01-11 14:48:37 associatedWith MQTT2_zigbee_bridge
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 battery 100
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 child_lock UNLOCK
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 closing_steps 296
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 frost_protection_temperature 7
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 idle_steps 293
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 linkquality 120
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 local_temperature 21.6
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 local_temperature_calibration -2
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 occupied_heating_setpoint 20.5
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 open_window OFF
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 running_state idle
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:19 state valve_closing_degree
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 system_mode heat
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 update_installed_version 4609
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 update_latest_version 4609
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 update_state idle
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 valve_closing_degree 93
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 valve_closing_limit_voltage 2620
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 valve_motor_running_voltage 1337
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 valve_opening_degree 17
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 valve_opening_limit_voltage 2045
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 weekly_schedule_friday 00:00/16 07:00/21 10:00/19 10:00/19 17:00/19 23:00/16
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 weekly_schedule_monday 00:00/16 07:00/21 10:00/21 10:00/21 17:00/19 23:00/16
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 weekly_schedule_saturday 00:00/16 07:00/21 10:00/19 10:00/19 17:00/19 23:00/16
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 weekly_schedule_sunday 00:00/16 07:00/21 10:00/19 10:00/19 17:00/19 23:00/16
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 weekly_schedule_thursday 00:00/16 07:00/21 10:00/19 10:00/19 17:00/19 23:00/16
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 weekly_schedule_tuesday 00:00/16 06:00/19 10:00/19 10:00/19 17:00/19 23:00/16
setstate zigbee_0x44e2f8fffe107869 2025-01-23 21:23:21 weekly_schedule_wednesday 00:00/16 06:00/21 10:00/19 10:00/19 17:00/19 23:00/16
Die ,,weekly_schedule_monday bis sunday" Readings enthalten die Definition von 6 Schaltpunkten, die untereinander mit Leerzeichen getrennt sind.
Beim "set weekly_schedul_xxxx" steht im $EVPART1 nur die Definition des ersten Schaltpunktes und die restlichen 5 Schaltpunkte werden verschluckt.
Um die Wochenpläne mit set definieren zu können, habe ich mich damit beholfen, 6 Schaltzeiten mit ,,-,, statt Leerzeichen zu trennen und vorm Publish diese wieder durch Leerzeichen zu ersetzen.
Dafür sollte es doch einen einfacheren, banaleren Weg geben die Werte mit Leerzeichen zu übergeben.
Vielleicht habe ich auch Scheuklappen.
Gruß
Ludger
Hallo,
versuch mal so:
weekly_schedule {my @a=split / /,$EVENT;@a=splice(@a, 2);return qq($DEVICETOPIC/set {"$EVTPART0": {"$EVTPART1": @a }})}
in dem setter übergibst auch den Wochentag:
bspw:
sunday 00:00/16 07:00/21 10:00/19 10:00/19 17:00/19 23:00/16
Gruß Thomas
Hallo,
Super!
mit
weekly_schedule_sunday {my @a=split / /,$EVENT;@a=splice(@a, 1);return qq($DEVICETOPIC/set {"weekly_schedule": {"sunday": "@a"}})}
(und analog für die anderen Wochentage) habe ich das gewünschte Ergebnis.
Gruß
Ludger
Zitat(und analog für die anderen Wochentage) habe ich das gewünschte Ergebnis.
Gut möglich das ich nicht alles verstanden. Mein Gedanke war,
ein setter für alle Wochentage.
Warum nicht den Wochentag als 1. Parameter, wie in meinem gezeigten Vorschlag, mitgeben ?
Zitat von: LudgerR am 23 Januar 2025, 21:33:27attr zigbee_0x44e2f8fffe107869 readingList zigbee2mqtt/0x44e2f8fffe107869:.* { json2nameValue($EVENT) }\
zigbee2mqtt/0x44e2f8fffe107869/set:.* { json2nameValue($EVENT) }
Sicher, dass du die 2. Zeile wirklich so haben willst?
(Schon klar, dass darüber was kommt, aber sagt das was dazu aus, ob das beim Device ankam?!?)
Zitatweekly_schedule_sunday {my @a=split / /,$EVENT;@a=splice(@a, 1);return qq($DEVICETOPIC/set {"weekly_schedule": {"sunday": "@a"}})}
Verstehen tu ich es nicht ganz, aber laut Doku gibt man die Werte ohne Anführungszeichen an.
Zitat von: Beta-User am 24 Januar 2025, 12:43:57Zitat von: LudgerR am 23 Januar 2025, 21:33:27attr zigbee_0x44e2f8fffe107869 readingList zigbee2mqtt/0x44e2f8fffe107869:.* { json2nameValue($EVENT) }\
zigbee2mqtt/0x44e2f8fffe107869/set:.* { json2nameValue($EVENT) }
Sicher, dass du die 2. Zeile wirklich so haben willst?
(Schon klar, dass darüber was kommt, aber sagt das was dazu aus, ob das beim Device ankam?!?)
Die Zeile hatte ich leider unreflektiert/unkritisch von einem alten Template für Eutronic Spirit Thermostate übernommen. Damit hast Du vollkomen recht. Es ist noch etwas im Argen.
Melde mich später mit dem endgültigen vollständig getesteten Ergebnis
Da ich für mich einen Workaround gefunden hatte, lief das ganze ersteinmal als "nice to have".
Bin gerade ziemlich mit der Umstellung meiner ThermostatSteuerung beschäftigt.
Hallo,
Nun habe ich das ganze getestet. Z2M Version 1.42 ist dabei sehr restrikt. Es kommt tatsächlich auf
jedes !! Leerzeichen an.
In mosquitto sieht das so aus:
mosquitto_pub -p 1885 -t zigbee2mqtt/0x44e2f8fffe107869/set -m '{"weekly_schedule": {"sunday": "00:00/16 06:00/20 10:00/19 10:00/19 1
7:00/19 23:00/16" }}'
In der "setList" im Device:
weekly_schedule_sunday {my @a=split / /,$EVENT;@a=splice(@a, 1);return qq($DEVICETOPIC/set {"weekly_schedule": {"sunday": "@a" }})}
Läßt man das eine oder andere Blank weg, erhält man sofort die rote Karte.
Mit der obigen setList Definition werden die Tagesplan Daten nicht nur von Z2M akzeptiert sondern auch tatsächlich ans Gerät weitergegeben.
Zitat von: Beta-User am 24 Januar 2025, 12:43:57Zitatattr zigbee_0x44e2f8fffe107869 readingList zigbee2mqtt/0x44e2f8fffe107869:.* { json2nameValue($EVENT) }\
zigbee2mqtt/0x44e2f8fffe107869/set:.* { json2nameValue($EVENT) }
Sicher, dass du die 2. Zeile wirklich so haben willst?
Bis jetzt ja.
Da bin ich konform mit in der Tradition in Z2M in der standardmäßig auch
eine optimistischen Sicht gewählt wird
Vollständigkeitshalber folgend die Definition des Gerätes
Gruß
Ludger
defmod E2_TRV_mq MQTT2_DEVICE zigbee_0x44e2f8fffe107869
attr E2_TRV_mq alias E2_Buero_TRV
attr E2_TRV_mq devicetopic zigbee2mqtt/0x44e2f8fffe107869
attr E2_TRV_mq icon temp_control
attr E2_TRV_mq readingList zigbee2mqtt/0x44e2f8fffe107869:.* { json2nameValue($EVENT) }\
zigbee2mqtt/0x44e2f8fffe107869/set:.* { json2nameValue($EVENT) }
attr E2_TRV_mq room Mq->Zb->Regler
attr E2_TRV_mq setList system_mode:auto,off,heat $DEVICETOPIC/set {"system_mode":" $EVTPART1 "}\
occupied_heating_setpoint:slider,5.0,0.5,30.0,1 $DEVICETOPIC/set {"occupied_heating_setpoint": $EVTPART1 }\
valve_opening_degree:slider,0,10,100,1 $DEVICETOPIC/set {"valve_opening_degree": $EVTPART1 }\
valve_closing_degree:slider,0,10,100,1 $DEVICETOPIC/set {"valve_closing_degree": $EVTPART1 }\
local_temperature_calibration:slider,-10.0,0.5,10.0,1 $DEVICETOPIC/set {"local_temperature_calibration": $EVTPART1 }\
weekly_schedule_monday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"monday": "@a" }})}\
weekly_schedule_tuesday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"tuesday": "@a" }})}\
weekly_schedule_wednesday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"wednesday": "@a" }})}\
weekly_schedule_thursday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"thursday": "@a" }})}\
weekly_schedule_friday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"friday": "@a" }})}\
weekly_schedule_saturday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"sunday": "@a" }})}\
weekly_schedule_sunday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"sunday": "@a" }})}\
attr E2_TRV_mq stateFormat system_mode Temp: local_temperature -> occupied_heating_setpoint °C running_state update_state V=valve_opening_degree:valve_closing_degree\
Battery: battery % lqi linkquality
setstate E2_TRV_mq heat Temp: 21.5 -> 20.5 °C idle idle V=37:73\
Battery: 100 % lqi 116
setstate E2_TRV_mq 2025-01-17 14:17:10 IODev MQTT2_Server2
setstate E2_TRV_mq 2025-01-11 14:48:37 associatedWith MQTT2_zigbee_bridge
setstate E2_TRV_mq 2025-01-24 21:50:21 battery 100
setstate E2_TRV_mq 2025-01-24 21:50:21 child_lock UNLOCK
setstate E2_TRV_mq 2025-01-24 21:50:21 closing_steps 296
setstate E2_TRV_mq 2025-01-24 21:50:21 frost_protection_temperature 7
setstate E2_TRV_mq 2025-01-24 21:50:21 idle_steps 293
setstate E2_TRV_mq 2025-01-24 21:50:21 linkquality 116
setstate E2_TRV_mq 2025-01-24 21:50:21 local_temperature 21.5
setstate E2_TRV_mq 2025-01-24 21:50:21 local_temperature_calibration -2
setstate E2_TRV_mq 2025-01-24 21:50:21 occupied_heating_setpoint 20.5
setstate E2_TRV_mq 2025-01-24 21:50:21 open_window OFF
setstate E2_TRV_mq 2025-01-24 21:50:21 running_state idle
setstate E2_TRV_mq 2025-01-24 21:38:13 state valve_closing_degree
setstate E2_TRV_mq 2025-01-24 21:50:21 system_mode heat
setstate E2_TRV_mq 2025-01-24 21:50:21 update_installed_version 4609
setstate E2_TRV_mq 2025-01-24 21:50:21 update_latest_version 4609
setstate E2_TRV_mq 2025-01-24 21:50:21 update_state idle
setstate E2_TRV_mq 2025-01-24 21:50:21 valve_closing_degree 73
setstate E2_TRV_mq 2025-01-24 21:50:21 valve_closing_limit_voltage 2620
setstate E2_TRV_mq 2025-01-24 21:50:21 valve_motor_running_voltage 1340
setstate E2_TRV_mq 2025-01-24 21:50:21 valve_opening_degree 37
setstate E2_TRV_mq 2025-01-24 21:50:21 valve_opening_limit_voltage 2045
setstate E2_TRV_mq 2025-01-24 21:50:21 weekly_schedule_friday 00:00/16 07:00/20 10:00/19 10:00/20 17:00/30 23:00/16
setstate E2_TRV_mq 2025-01-24 21:50:21 weekly_schedule_monday 00:00/16 06:00/19 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-24 21:50:21 weekly_schedule_saturday 00:00/16 07:00/21 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-24 21:50:21 weekly_schedule_sunday 00:00/16 06:00/25 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-24 11:03:27 weekly_schedule_sunday_00_00/16 07:00/21 10:00/22 10:00/21 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-24 21:50:21 weekly_schedule_thursday 00:00/16 07:00/19 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-24 21:50:21 weekly_schedule_tuesday 00:00/16 06:00/19 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-24 21:50:21 weekly_schedule_wednesday 00:00/16 06:00/21 10:00/19 10:00/19 17:00/19 23:00/16
Zitat von: LudgerR am 24 Januar 2025, 14:46:05von einem alten Template für Eutronic Spirit Thermostate übernommen
Da hätte ich aber einen sehr schlechten Tag haben müssen...
Zitat von: LudgerR am 24 Januar 2025, 22:18:27Da bin ich konform mit in der Tradition in Z2M in der standardmäßig auch eine optimistischen Sicht gewählt wird
Zum einen: Ein Pessimist ist ein Optimist mit Erfahrung ;) .
Zum anderen: Bisher ist mir diese "Tradition" nicht beim Durchstöbern der Doku zu z2m über den Weg gelaufen. Hast du dazu bitte eine Fundstelle?
Generell an eventuelle Mitleser: Ich halte es für eine großen Fehler, "set"-Topics in die readingList zu übernehmen. Bisher jedenfalls ist mir noch keine Konstellation über den Weg gelaufen, in der das sinnvoll gewesen wäre, bei bidirektionalen Systemen (wie ZigBee eines ist), sollte man immer ausschließlich die Rückmeldung vom Gerät (als Ist-Zustand) auswerten, eventuelle Zwischenstände sind als solche zu kennzeichnen. Kommt die Rückmeldung nicht automatisch, kann man ja ein "get" hinterherfeuern.
Ergo muss ich einen wirklich schlechten Tag gehabt haben, wenn mir mal beim Eichecken von attrTemplate ein "set"-Topic in die readingList verrutsch sein sollte...
Nur damit es hier klar und deutlich steht.
Kann natürlich jeder halten wie er will, wir brauchen auch Optimisten ;D .
Hi @Beta-User
Genervt von den vielen ,,Roten Karten" seitens Z2M hatte ich mich am Ende des Tages zu einer etwas ,,flapsigen" Bemerkung verleiten lassen.
Bei Tageslicht betrachtet, würde ich es so formulieren:
Die Antwort vom Gerät nicht abzuwarten ist nicht ungewöhnlich, wenn die allgemeine Standard-Einstellung in Z2M auf Optimistisch steht.
ZitatGeneric device options
Every Zigbee Device supports the following list of option:
:
optimistic
The optimistic mode is a feature that influences how the state of a device is handled in the absence of updates. When optimistic mode is enabled for a device and the last sent command was successful, it updates the device state accordingly, even before receiving confirmation from the device itself (default true)
Quelle: https://www.zigbee2mqtt.io/guide/configuration/devices-groups.html#generic-device-options
Diese Info hatte ich im Hinterkopf.
Inzwischen weiß ich auch, dass die readingList Definition
<devicetopic>/set;.*
in meiner Umgebung per autocreate erzeugt wurden.
Nachdem ich dies nun unterbunden habe, konnte ich jetzt auch das eigentliche Antwortverhalten der Z2M Geräte sehen.
Deine Aussagen kann ich selber voll unterschreiben. So habe ich es bisher bei all meinen ,,Tasmota" Geräten (Sonoff, Shelly) gehandhabt.
Mit Z2M bin ich Ende 2018/2019 mit einem kleinem USB-Stick mit minimaler Antennenleistung eingestiegen. Seitdem habe ich auch an den Zigbee-bridge Definitionen nichts mehr geändert.
Mit dem schlechten Antwortverhalten der Zigbee-Geräte hatte ich bisher gelebt.Anfang 2025 habe ich nun mit dem Umzug auf PI5 meine Systeme wieder (weitestgehend) auf aktuellen Stand gebracht.
Damit kann ich nun die "optimistische Sicht" bei den meisten Geräten hoffentlich aufheben.
Anbei noch die getestete Version für Sonoff TRVZB und AVATTO ME167
Gruß
Ludger
define E5_TRV_mq MQTT2_DEVICE zigbee_0xa4c138ac57b7dd65
attr E5_TRV_mq IODev MQTT2_Server2
attr E5_TRV_mq alias E5_BadU_ME167
attr E5_TRV_mq devicetopic zigbee2mqtt/0xa4c138ac57b7dd65
attr E5_TRV_mq icon temp_control
attr E5_TRV_mq readingList $DEVICETOPIC:.* { json2nameValue($EVENT) }
attr E5_TRV_mq room Mq->Zb->Regler
attr E5_TRV_mq setList system_mode:auto,heat $DEVICETOPIC/set {"system_mode":" $EVTPART1 "} \
current_heating_setpoint:slider,5,1,35,1 $DEVICETOPIC/set {"current_heating_setpoint": $EVTPART1 }\
local_temperature_calibration:slider,-9,1,9,1 $DEVICETOPIC/set{"local_temperature_calibration": $EVTPART1 }\
schedule_monday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"schedule_monday": "@a" })}\
schedule_tuesday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"schedule_tuesday": "@a" })}\
schedule_wednesday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"schedule_wednesday": "@a" })}\
schedule_thursday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"schedule_thursday": "@a" })}\
schedule_friday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"schedule_friday": "@a" })}\
schedule_saturday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"schedule_saturday": "@a" })}\
schedule_sunday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"schedule_sunday": "@a" })}
attr E5_TRV_mq stateFormat system_mode Temp: local_temperature -> current_heating_setpoint °C running_state\
Battery_low: battery_low lqi linkquality
# CID zigbee_0xa4c138ac57b7dd65
# DEF zigbee_0xa4c138ac57b7dd65
# FUUID 677f9f8d-f33f-472b-58f6-3cd284c083fa0171
# IODev MQTT2_Server2
# LASTInputDev MQTT2_Server2
# MQTT2_Server2_CONN MQTT2_Server2_192.168.69.43_34052
# MQTT2_Server2_MSGCNT 15
# MQTT2_Server2_TIME 2025-01-25 15:37:13
# MSGCNT 15
# NAME E5_TRV_mq
# NR 767
# STATE auto Temp: 18 -> 19 °C heat
#Battery_low: false lqi 127
# TYPE MQTT2_DEVICE
# eventCount 21
# OLDREADINGS:
# READINGS:
# 2025-01-25 13:59:29 IODev MQTT2_Server2
# 2025-01-25 13:52:25 associatedWith MQTT2_zigbee_bridge
# 2025-01-25 15:37:13 battery_low false
# 2025-01-25 15:37:13 child_lock UNLOCK
# 2025-01-25 15:37:13 current_heating_setpoint 19
# 2025-01-25 15:37:13 frost_protection OFF
# 2025-01-25 15:37:13 linkquality 127
# 2025-01-25 15:37:13 local_temperature 18
# 2025-01-25 15:37:13 local_temperature_calibration 0
# 2025-01-25 15:37:13 running_state heat
# 2025-01-25 15:37:13 scale_protection ON
# 2025-01-25 15:37:13 schedule_friday 06:00/21.0 08:00/20.0 14:00/19.0 23:00/16.0
# 2025-01-25 15:37:13 schedule_monday 06:00/21.5 08:00/19.5 14:00/19.0 23:00/16.0
# 2025-01-25 15:37:13 schedule_saturday 06:00/21.0 08:00/19.5 14:00/19.0 23:00/16.0
# 2025-01-25 15:37:13 schedule_sunday 06:00/21.0 08:00/19.5 14:00/19.0 23:00/16.0
# 2025-01-25 15:37:13 schedule_thursday 06:00/21.5 08:00/16.5 12:00/21.0 14:00/16.0
# 2025-01-25 15:37:13 schedule_tuesday 06:00/20.0 08:00/19.5 14:00/19.0 23:00/16.0
# 2025-01-25 15:37:13 schedule_wednesday 06:00/21.0 08:00/19.0 14:00/19.0 23:00/16.0
# 2025-01-25 15:37:09 state schedule_sunday
# 2025-01-25 12:37:15 sunday 06:00/22.0 08:00/19.0 14:00/19.0 23:00/16.0
# 2025-01-25 15:37:13 system_mode auto
#
setstate E5_TRV_mq auto Temp: 18 -> 19 °C heat\
Battery_low: false lqi 127
setstate E5_TRV_mq 2025-01-25 13:59:29 IODev MQTT2_Server2
setstate E5_TRV_mq 2025-01-25 13:52:25 associatedWith MQTT2_zigbee_bridge
setstate E5_TRV_mq 2025-01-25 15:37:13 battery_low false
setstate E5_TRV_mq 2025-01-25 15:37:13 child_lock UNLOCK
setstate E5_TRV_mq 2025-01-25 15:37:13 current_heating_setpoint 19
setstate E5_TRV_mq 2025-01-25 15:37:13 frost_protection OFF
setstate E5_TRV_mq 2025-01-25 15:37:13 linkquality 127
setstate E5_TRV_mq 2025-01-25 15:37:13 local_temperature 18
setstate E5_TRV_mq 2025-01-25 15:37:13 local_temperature_calibration 0
setstate E5_TRV_mq 2025-01-25 15:37:13 running_state heat
setstate E5_TRV_mq 2025-01-25 15:37:13 scale_protection ON
setstate E5_TRV_mq 2025-01-25 15:37:13 schedule_friday 06:00/21.0 08:00/20.0 14:00/19.0 23:00/16.0
setstate E5_TRV_mq 2025-01-25 15:37:13 schedule_monday 06:00/21.5 08:00/19.5 14:00/19.0 23:00/16.0
setstate E5_TRV_mq 2025-01-25 15:37:13 schedule_saturday 06:00/21.0 08:00/19.5 14:00/19.0 23:00/16.0
setstate E5_TRV_mq 2025-01-25 15:37:13 schedule_sunday 06:00/21.0 08:00/19.5 14:00/19.0 23:00/16.0
setstate E5_TRV_mq 2025-01-25 15:37:13 schedule_thursday 06:00/21.5 08:00/16.5 12:00/21.0 14:00/16.0
setstate E5_TRV_mq 2025-01-25 15:37:13 schedule_tuesday 06:00/20.0 08:00/19.5 14:00/19.0 23:00/16.0
setstate E5_TRV_mq 2025-01-25 15:37:13 schedule_wednesday 06:00/21.0 08:00/19.0 14:00/19.0 23:00/16.0
setstate E5_TRV_mq 2025-01-25 15:37:09 state schedule_sunday
setstate E5_TRV_mq 2025-01-25 12:37:15 sunday 06:00/22.0 08:00/19.0 14:00/19.0 23:00/16.0
setstate E5_TRV_mq 2025-01-25 15:37:13 system_mode auto
define E2_TRV_mq MQTT2_DEVICE zigbee_0x44e2f8fffe107869
attr E2_TRV_mq alias E2_Buero_TRV
attr E2_TRV_mq devicetopic zigbee2mqtt/0x44e2f8fffe107869
attr E2_TRV_mq icon temp_control
attr E2_TRV_mq readingList $DEVICETOPIC:.* { json2nameValue($EVENT) }
attr E2_TRV_mq room Mq->Zb->Regler
attr E2_TRV_mq setList system_mode:auto,off,heat $DEVICETOPIC/set {"system_mode":" $EVTPART1 "}\
occupied_heating_setpoint:slider,4.0,0.5,35.0,1 $DEVICETOPIC/set {"occupied_heating_setpoint": $EVTPART1 }\
valve_opening_degree:slider,0,10,100,1 $DEVICETOPIC/set {"valve_opening_degree": $EVTPART1 }\
valve_closing_degree:slider,0,10,100,1 $DEVICETOPIC/set {"valve_closing_degree": $EVTPART1 }\
local_temperature_calibration:slider,-10.0,0.5,10.0,1 $DEVICETOPIC/set {"local_temperature_calibration": $EVTPART1 }\
weekly_schedule_monday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"monday": "@a" }})}\
weekly_schedule_tuesday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"tuesday": "@a" }})}\
weekly_schedule_wednesday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"wednesday": "@a" }})}\
weekly_schedule_thursday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"thursday": "@a" }})}\
weekly_schedule_friday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"friday": "@a" }})}\
weekly_schedule_saturday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"saturday": "@a" }})}\
weekly_schedule_sunday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"sunday": "@a" }})}\
attr E2_TRV_mq stateFormat system_mode Temp: local_temperature -> occupied_heating_setpoint °C running_state update_state V=valve_opening_degree:valve_closing_degree\
Battery: battery % lqi linkquality
# CID zigbee_0x44e2f8fffe107869
# DEF zigbee_0x44e2f8fffe107869
# FUUID 67822183-f33f-3e5d-4872-c68423ba2faf0e6b
# IODev MQTT2_Server2
# LASTInputDev MQTT2_Server2
# MQTT2_Server2_CONN MQTT2_Server2_192.168.69.43_34052
# MQTT2_Server2_MSGCNT 86
# MQTT2_Server2_TIME 2025-01-25 15:58:43
# MSGCNT 86
# NAME E2_TRV_mq
# NR 786
# STATE heat Temp: 21.5 -> 19 °C idle idle V=0:100
#Battery: 100 % lqi 127
# TYPE MQTT2_DEVICE
# eventCount 113
# OLDREADINGS:
# READINGS:
# 2025-01-25 13:59:29 IODev MQTT2_Server2
# 2025-01-25 13:53:20 associatedWith MQTT2_zigbee_bridge
# 2025-01-25 15:58:43 battery 100
# 2025-01-25 15:58:43 child_lock UNLOCK
# 2025-01-25 15:58:43 closing_steps 296
# 2025-01-25 15:58:43 frost_protection_temperature 7
# 2025-01-25 15:58:43 idle_steps 293
# 2025-01-25 15:58:43 linkquality 127
# 2025-01-25 15:58:43 local_temperature 21.5
# 2025-01-25 15:58:43 local_temperature_calibration -2
# 2025-01-25 15:58:43 occupied_heating_setpoint 19
# 2025-01-25 15:58:43 open_window OFF
# 2025-01-25 15:58:43 running_state idle
# 2025-01-25 15:58:42 state valve_closing_degree
# 2025-01-25 15:58:43 system_mode heat
# 2025-01-25 15:58:43 update_installed_version 4609
# 2025-01-25 15:58:43 update_latest_version 4609
# 2025-01-25 15:58:43 update_state idle
# 2025-01-25 15:58:43 valve_closing_degree 100
# 2025-01-25 15:58:43 valve_closing_limit_voltage 2620
# 2025-01-25 15:58:43 valve_motor_running_voltage 2224
# 2025-01-25 15:58:43 valve_opening_degree 0
# 2025-01-25 15:58:43 valve_opening_limit_voltage 2045
# 2025-01-25 15:58:43 weekly_schedule_friday 00:00/16 07:00/20 10:00/19 10:00/20 17:00/30 23:00/16
# 2025-01-25 15:58:43 weekly_schedule_monday 00:00/16 06:00/21 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-25 15:58:43 weekly_schedule_saturday 00:00/16 07:00/22 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-25 15:58:43 weekly_schedule_sunday 00:00/16 06:00/20 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-25 15:58:43 weekly_schedule_thursday 00:00/16 07:00/19 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-25 15:58:43 weekly_schedule_tuesday 00:00/16 06:00/19 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-25 15:58:43 weekly_schedule_wednesday 00:00/16 06:00/21 10:00/19 10:00/19 17:00/19 23:00/16
#
setstate E2_TRV_mq heat Temp: 21.5 -> 19 °C idle idle V=0:100\
Battery: 100 % lqi 127
setstate E2_TRV_mq 2025-01-25 13:59:29 IODev MQTT2_Server2
setstate E2_TRV_mq 2025-01-25 13:53:20 associatedWith MQTT2_zigbee_bridge
setstate E2_TRV_mq 2025-01-25 15:58:43 battery 100
setstate E2_TRV_mq 2025-01-25 15:58:43 child_lock UNLOCK
setstate E2_TRV_mq 2025-01-25 15:58:43 closing_steps 296
setstate E2_TRV_mq 2025-01-25 15:58:43 frost_protection_temperature 7
setstate E2_TRV_mq 2025-01-25 15:58:43 idle_steps 293
setstate E2_TRV_mq 2025-01-25 15:58:43 linkquality 127
setstate E2_TRV_mq 2025-01-25 15:58:43 local_temperature 21.5
setstate E2_TRV_mq 2025-01-25 15:58:43 local_temperature_calibration -2
setstate E2_TRV_mq 2025-01-25 15:58:43 occupied_heating_setpoint 19
setstate E2_TRV_mq 2025-01-25 15:58:43 open_window OFF
setstate E2_TRV_mq 2025-01-25 15:58:43 running_state idle
setstate E2_TRV_mq 2025-01-25 15:58:42 state valve_closing_degree
setstate E2_TRV_mq 2025-01-25 15:58:43 system_mode heat
setstate E2_TRV_mq 2025-01-25 15:58:43 update_installed_version 4609
setstate E2_TRV_mq 2025-01-25 15:58:43 update_latest_version 4609
setstate E2_TRV_mq 2025-01-25 15:58:43 update_state idle
setstate E2_TRV_mq 2025-01-25 15:58:43 valve_closing_degree 100
setstate E2_TRV_mq 2025-01-25 15:58:43 valve_closing_limit_voltage 2620
setstate E2_TRV_mq 2025-01-25 15:58:43 valve_motor_running_voltage 2224
setstate E2_TRV_mq 2025-01-25 15:58:43 valve_opening_degree 0
setstate E2_TRV_mq 2025-01-25 15:58:43 valve_opening_limit_voltage 2045
setstate E2_TRV_mq 2025-01-25 15:58:43 weekly_schedule_friday 00:00/16 07:00/20 10:00/19 10:00/20 17:00/30 23:00/16
setstate E2_TRV_mq 2025-01-25 15:58:43 weekly_schedule_monday 00:00/16 06:00/21 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-25 15:58:43 weekly_schedule_saturday 00:00/16 07:00/22 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-25 15:58:43 weekly_schedule_sunday 00:00/16 06:00/20 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-25 15:58:43 weekly_schedule_thursday 00:00/16 07:00/19 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-25 15:58:43 weekly_schedule_tuesday 00:00/16 06:00/19 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-25 15:58:43 weekly_schedule_wednesday 00:00/16 06:00/21 10:00/19 10:00/19 17:00/19 23:00/16
Zitat von: LudgerR am 25 Januar 2025, 16:02:32and the last sent command was successful
OK, das ist auch nur "bedingt optimistisch", denn immerhin hat das Device geantwortet...
Wenn du den set-Topic weiter in der readingList hättest, wäre (bei externem MQTT-Server, intern werden ausgehende Topics nicht ohne weiteres verarbeitet) schon die ausgehende Message Anlass gewesen, irgendwelche Readings* zu aktualisieren, und das wäre "sehr optimistisch", denn zu diesem Zeitpunkt ist noch nicht mal klar, ob z2m den Befehl überhaupt entegengenommen hat - geschweige denn versendet.
Ad*: Vermutlich wäre es sinnvoll, wenn du entweder die setList so anpaßt, dass der "versendete Readingwert" zum Reading-Namen paßt, der mit "einfachem" json2nameValue() ermittelt wird, oder du verwendest jsonMap/$JSONMAP, um die Namen auf der Empfangsseite anzupassen. So läuft das etwas aneinander vorbei.
Ist eher ein Schönheitsfehler, aber eben nicht "perfekt" ;) .
Zitat von: Beta-User am 25 Januar 2025, 17:21:49Zitat von: LudgerR am 25 Januar 2025, 16:02:32and the last sent command was successful
:
:
Ad*: Vermutlich wäre es sinnvoll, wenn du entweder die setList so anpaßt, dass der "versendete Readingwert" zum Reading-Namen paßt, der mit "einfachem" json2nameValue() ermittelt wird, oder du verwendest jsonMap/$JSONMAP, um die Namen auf der Empfangsseite anzupassen. So läuft das etwas aneinander vorbei.
Ist eher ein Schönheitsfehler, aber eben nicht "perfekt" ;) .
Genau dass ist meines Verständnisses nach bei beiden Beispielen (ME167 und Sonoff TRVZB) genau der Fall.
Der
"versendete Readingwert" paßt zum Reading-Namen.
Beim auswahl von "weekly_schedule_sunday werden mir die aktuellen Werte des Readings im FHEMWEB angezeigt.
Ich kann sie ändern und per "set" abschicken.
Ist die Syntax des Zeitplans ok wird dies über Z2M ans Device gesendet und und ich bekomme per JSON die kompletten Werte des TRV Gerätes als Info/Status zurück. Erst dann erfolgt der Update der Readings einschließlich des geänderten für "weekly_schedule_sunday" im "TRV-Gerät" in Fhem
Falls nicht, ist dies ein Hinweis, das Z2M den Zeitplan aus formalen Gründen abgelehnt hat. Bei ME167 sind z.B. 4 Quardupel zwingend vorgeschrieben. Falls ich nicht offensichtlich ist finde ich im Web-Interface von z2M Hinweise darauf wo der Fehler liegt.
Was JSONMAP angeht werde ich dies wahrscheinlich nutzen, das sowohl bei ME167 als TRVZB die selben Readings (z.B. schedule_sunday, schedule_tuesday ...) verwendet werden.
Also deinen obigen Hinweis verstehe ich nicht!
Nebenbei durch den Umstieg auf einen Sonoff Coordinator USB-Stick und den Einsatz von zwei weiteren Routern auf Basis von dem Sonoff Stick im OG und KG erziele ich sehr gute Antwortzeiten in allen Ecken des Hauses, wo die Thermostate zum Einsatz kommen.
Den Umstieg von "Optimistisch" auf "Skeptisch" d.h. auf Rückantwort wartend steht in den meisten Fällen eigentlich nichts mehr im Wege.
Zitat von: LudgerR am 25 Januar 2025, 21:53:39Also deinen obigen Hinweis verstehe ich nicht!
Ah, sorry, da hatte ich einen gedanklichen Mix aus beiden Devices gebastelt mit den setList-Angaben aus dem ersten und den Readingnamen aus dem 2....
Stimme dir zu, einheitliche Namen wären hilfreich :o .
PS: Falls du das zusammen mit "weekprofile" nutzen willst, um die Wochenpläne zu generieren: Es gibt dazu Code für ein paar andere (z2m-) Typen (zu finden entweder über die betr. attrTemplate oder in svn-contrib).
Blöd ist nur, dass jede Type irgendwelche Spezialitäten aufweist, das macht es schwer, sinnvollen allgemeinen Code bereitzustellen. Falls du was erarbeitet hast, checke ich das gerne mit im svn ein :) .
Beim "setList" für SONOFF TVRZB habe ich noch weitere Readings mit aufgenommen und getestet.
Ist somit bald "reif" für ein Template.
define E2_TRV_mq MQTT2_DEVICE zigbee_0x44e2f8fffe107869
attr E2_TRV_mq alias E2_Buero_TRV
attr E2_TRV_mq autocreate 0
attr E2_TRV_mq devicetopic zigbee2mqtt/0x44e2f8fffe107869
attr E2_TRV_mq icon temp_control
attr E2_TRV_mq readingList $DEVICETOPIC:.* { json2nameValue($EVENT) }
attr E2_TRV_mq room Mq->Zb->Regler
attr E2_TRV_mq setList system_mode:auto,manual,off {my $m=$EVTPART1;;$m=~ s/manual/heat/;;return qq($DEVICETOPIC/set {"system_mode": "$m"})}\
get_system_mode: $DEVICETOPIC/get {"system_mode":""}\
open_window:ON,OFF $DEVICETOPIC/set {"open_window": "$EVTPART1"}\
get_occupied_heating_setpoint: $DEVICETOPIC/get {"occupied_heating_setpoint": ""}\
occupied_heating_setpoint:slider,4.0,0.5,35.0,1 $DEVICETOPIC/set {"occupied_heating_setpoint": $EVTPART1 }\
valve_opening_degree:slider,0,1,100,1 $DEVICETOPIC/set {"valve_opening_degree": $EVTPART1 }\
valve_closing_degree:slider,0,1,100,1 $DEVICETOPIC/set {"valve_closing_degree": $EVTPART1 }\
frost_protection_temperature:slider,4.0,0.5,35.0,1 $DEVICETOPIC/set {"frost_protection_temperature": $EVTPART1 }\
local_temperature_calibration:slider,-12.8,0.2,12.7,1 $DEVICETOPIC/set {"local_temperature_calibration": $EVTPART1 }\
weekly_schedule_monday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"monday": "@a" }})}\
weekly_schedule_tuesday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"tuesday": "@a" }})}\
weekly_schedule_wednesday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"wednesday": "@a" }})}\
weekly_schedule_thursday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"thursday": "@a" }})}\
weekly_schedule_friday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"friday": "@a" }})}\
weekly_schedule_saturday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"saturday": "@a" }})}\
weekly_schedule_sunday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"sunday": "@a" }})}\
attr E2_TRV_mq stateFormat system_mode Temp: local_temperature -> occupied_heating_setpoint °C running_state update_state V=valve_opening_degree:valve_closing_degree\
Battery: battery % lqi linkquality
# CID zigbee_0x44e2f8fffe107869
# DEF zigbee_0x44e2f8fffe107869
# FUUID 67822183-f33f-3e5d-4872-c68423ba2faf0e6b
# IODev MQTT2_Server2
# LASTInputDev MQTT2_Server2
# MQTT2_Server2_CONN MQTT2_Server2_192.168.69.43_34052
# MQTT2_Server2_MSGCNT 1269
# MQTT2_Server2_TIME 2025-01-26 20:14:02
# MSGCNT 1269
# NAME E2_TRV_mq
# NR 786
# STATE auto Temp: 20.5 -> 22 °C heat idle V=80:30
#Battery: 100 % lqi 116
# TYPE MQTT2_DEVICE
# eventCount 1707
# OLDREADINGS:
# READINGS:
# 2025-01-25 13:59:29 IODev MQTT2_Server2
# 2025-01-25 13:53:20 associatedWith MQTT2_zigbee_bridge
# 2025-01-26 20:14:02 battery 100
# 2025-01-26 20:14:02 child_lock UNLOCK
# 2025-01-26 20:14:02 closing_steps 296
# 2025-01-26 20:14:02 frost_protection_temperature 6
# 2025-01-26 20:14:02 idle_steps 293
# 2025-01-26 20:14:02 linkquality 116
# 2025-01-26 20:14:02 local_temperature 20.5
# 2025-01-26 20:14:02 local_temperature_calibration -2
# 2025-01-26 20:14:02 occupied_heating_setpoint 22
# 2025-01-26 20:14:02 open_window OFF
# 2025-01-26 20:14:02 running_state heat
# 2025-01-26 20:13:58 state valve_closing_degree
# 2025-01-26 20:14:02 system_mode auto
# 2025-01-26 20:14:02 update_installed_version 4609
# 2025-01-26 20:14:02 update_latest_version 4609
# 2025-01-26 20:14:02 update_state idle
# 2025-01-26 20:14:02 valve_closing_degree 30
# 2025-01-26 20:14:02 valve_closing_limit_voltage 2620
# 2025-01-26 20:14:02 valve_motor_running_voltage 1671
# 2025-01-26 20:14:02 valve_opening_degree 80
# 2025-01-26 20:14:02 valve_opening_limit_voltage 2045
# 2025-01-26 20:14:02 weekly_schedule_friday 00:00/16 07:00/20 10:00/19 10:00/20 17:00/30 23:00/16
# 2025-01-26 20:14:02 weekly_schedule_monday 00:00/16 06:00/21 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-26 20:14:02 weekly_schedule_saturday 00:00/16 07:00/22 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-26 20:14:02 weekly_schedule_sunday 00:00/16 06:00/20 10:00/19 10:00/19 16:45/22 23:00/16
# 2025-01-26 20:14:02 weekly_schedule_thursday 00:00/16 07:00/19 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-26 20:14:02 weekly_schedule_tuesday 00:00/16 06:00/19 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-26 20:14:02 weekly_schedule_wednesday 00:00/16 06:00/21 10:00/19 10:00/19 17:00/19 23:00/16
#
setstate E2_TRV_mq auto Temp: 20.5 -> 22 °C heat idle V=80:30\
Battery: 100 % lqi 116
setstate E2_TRV_mq 2025-01-25 13:59:29 IODev MQTT2_Server2
setstate E2_TRV_mq 2025-01-25 13:53:20 associatedWith MQTT2_zigbee_bridge
setstate E2_TRV_mq 2025-01-26 20:14:02 battery 100
setstate E2_TRV_mq 2025-01-26 20:14:02 child_lock UNLOCK
setstate E2_TRV_mq 2025-01-26 20:14:02 closing_steps 296
setstate E2_TRV_mq 2025-01-26 20:14:02 frost_protection_temperature 6
setstate E2_TRV_mq 2025-01-26 20:14:02 idle_steps 293
setstate E2_TRV_mq 2025-01-26 20:14:02 linkquality 116
setstate E2_TRV_mq 2025-01-26 20:14:02 local_temperature 20.5
setstate E2_TRV_mq 2025-01-26 20:14:02 local_temperature_calibration -2
setstate E2_TRV_mq 2025-01-26 20:14:02 occupied_heating_setpoint 22
setstate E2_TRV_mq 2025-01-26 20:14:02 open_window OFF
setstate E2_TRV_mq 2025-01-26 20:14:02 running_state heat
setstate E2_TRV_mq 2025-01-26 20:13:58 state valve_closing_degree
setstate E2_TRV_mq 2025-01-26 20:14:02 system_mode auto
setstate E2_TRV_mq 2025-01-26 20:14:02 update_installed_version 4609
setstate E2_TRV_mq 2025-01-26 20:14:02 update_latest_version 4609
setstate E2_TRV_mq 2025-01-26 20:14:02 update_state idle
setstate E2_TRV_mq 2025-01-26 20:14:02 valve_closing_degree 30
setstate E2_TRV_mq 2025-01-26 20:14:02 valve_closing_limit_voltage 2620
setstate E2_TRV_mq 2025-01-26 20:14:02 valve_motor_running_voltage 1671
setstate E2_TRV_mq 2025-01-26 20:14:02 valve_opening_degree 80
setstate E2_TRV_mq 2025-01-26 20:14:02 valve_opening_limit_voltage 2045
setstate E2_TRV_mq 2025-01-26 20:14:02 weekly_schedule_friday 00:00/16 07:00/20 10:00/19 10:00/20 17:00/30 23:00/16
setstate E2_TRV_mq 2025-01-26 20:14:02 weekly_schedule_monday 00:00/16 06:00/21 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-26 20:14:02 weekly_schedule_saturday 00:00/16 07:00/22 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-26 20:14:02 weekly_schedule_sunday 00:00/16 06:00/20 10:00/19 10:00/19 16:45/22 23:00/16
setstate E2_TRV_mq 2025-01-26 20:14:02 weekly_schedule_thursday 00:00/16 07:00/19 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-26 20:14:02 weekly_schedule_tuesday 00:00/16 06:00/19 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-26 20:14:02 weekly_schedule_wednesday 00:00/16 06:00/21 10:00/19 10:00/19 17:00/19 23:00/16
Zitat von: Beta-User am 26 Januar 2025, 08:21:33PS: Falls du das zusammen mit "weekprofile" nutzen willst, um die Wochenpläne zu generieren: Es gibt dazu Code für ein paar andere (z2m-) Typen (zu finden entweder über die betr. attrTemplate oder in svn-contrib).
Was die Wochenzeitpläne angeht, tendiere ich dafür den gleichen Ansatz wie bei meinen FHTs vor 12 Jahren zu verfolgen. Bei Rentnern gibt es nämlich keinen Wochenplan. Wir haben immer WE. Der Basis Tagesplan ist sehr schnell eingepflegt.Abweichungen hiervon bestehen eigentlich nur darin, dass man früher oder später zu Bett geht und zu diesem Zeitpunkt bereits abschätzen kann, wie sich die Aufstehzeit am nächsten Morgen (voraussichtlich) ändert. Bei den FHTs hab ich die Tagespläne im Gerät selbst voll genutzt. Beim zu Bett gehen einfach (am Gerät selbst oder per Funkbefehl) in den Nachtmodus gewechselt und per "PartyFunktion" (aber mit Absenktemperatur) den Zeitpunkt des "Heizung- und Heizkörpererwachen" für den kommenden Morgen nach Gusto verschoben. Am Morgen ließ sich die "Partyfunktion" abrechen (ein Knopfdruck am Gerat) oder ein Funkbefehl und man war wieder im "Auto" sprich Tagesplanmodus.
Wegen der schieren Anzahl der FHTS (13 Stck) war dies bei SlowRF das einzige praktikable Verfahren und hat sich über die vergangenen Jahre hin bestens bewährt.
Danke für den Hinweis auf das "weekprofil". Werde ich mir mal ansehen ob es mir nützlich sein kann.
Zitat von: LudgerR am 26 Januar 2025, 20:29:57Ist somit bald "reif" für ein Template.
Dafür hätte ich dann doch noch ein paar Wünsche und Anregungen:
- "occupied_heating_setpoint" ist vermutlich das, was sich in FHEM besser als "desired-temp" integriert, "valve_opening_degree" nennt sich vermutlich üblicherweise "valve"
- "get"-Kommandos gehören imo in getList
Das mit weekprofile ist dann vermutlich nicht so relevant für dich (die Verteilerei ist aber schon cool), eher das Umschalten von verschiedenen Modi. Da vermisse ich eine Option bei dieser setList, um direkt den manual-Mode mit einer bestimmten Temperatur zu fahren. Geht vermutlich, wenn man den JSON aufbohrt?
Was "desired-temp" angeht, dass hatte ich mir bereits gedacht. Bei Sonoff TRVZB weicht "occupied_heating_setpoint" in Z2M von der dort sonst üblichen Bezeichnung "current_heating_setpoint" ab. local-temperature dann ebenfalls nach temperature zu mappen bieted sich dann ebenso an.
"valve_opening_degree" und "valve_closing_degree" sollte man belassen. Falls ich es selber setze, definiere ich das Fenster in dem das TRV selbständig pendelt, wenn es von "heat" auf "idle" und umgekehrt wechselt. Liegt die Summe von beiden exakt bei 100, dann gibt es kein Fenster mehr. Dann hdürfte die "Ventilposition" fest vorgegeben sein. "valve_opening_degree" mit "valve" gleichzusetzten wäre für mich etwas irreführend.
Das beim "system_mode" der Modus "manual" mit "heat" bezeichnet wir, finde ich etwas unglücklich (Beim ME167 ebenfalls). Ich habe den Wert durch "manual" ersetzt. Falls man mit JSONMAP nicht nur Keys sondern auch Values modifizieren kann, dann würde sich JSONMAP wert korrektur des Readingswert anbieten. Bei mir ahbe ich das Helper-Modul "readingsChange" genutzt, um den Wert von system_mode von "heat" durch "manual" bei all meinen ME167 und SONOFF TVRZB zu ersetzen.
Bei vielen anderen TRV Geräte wird von Z2M auch der Modus "manual" geliefert und nicht "heat".
Zitat von: Beta-User am 27 Januar 2025, 09:17:39eher das Umschalten von verschiedenen Modi. Da vermisse ich eine Option bei dieser setList, um direkt den manual-Mode mit einer bestimmten Temperatur zu fahren. Geht vermutlich, wenn man den JSON aufbohrt?
Da Verhalten sich die TRV-Geräte in Z2M unterschiedlich. Sonoff TRVZB scahltet automatisch auf "heat" sprich manual, Bei ME167 bleibt der Modus auf "auto" obwohl sich das Gerät anschließend wie im manuellen Modus verhält. Hier muss man also den Moduswechsel forcieren.
getList habe ich bisher nicht benutzt. Per setList bekomme ich eine Akualisierung aller Readings und somit auch den aktuellen Wert von z.B. "system_mode". Derselbe Befehl mit getLIST bleibt jedoch unbeantwortet.
Folgend die Definition
define E2_TRV_mq MQTT2_DEVICE zigbee_0x44e2f8fffe107869
attr E2_TRV_mq alias E2_Buero_TRV
attr E2_TRV_mq autocreate 0
attr E2_TRV_mq devicetopic zigbee2mqtt/0x44e2f8fffe107869
attr E2_TRV_mq getList desired-temp: $DEVICETOPIC/get {"occupied_heating_setpoint": ""}\
system_mode: $DEVICETOPIC/get {"system_mode": ""}
attr E2_TRV_mq icon temp_control
attr E2_TRV_mq jsonMap occupied_heating_setpoint:desired-temp local_temperature:temperature
attr E2_TRV_mq readingList $DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr E2_TRV_mq room Mq->Zb->Regler
attr E2_TRV_mq setList system_mode:auto,manual,heat,off {my $m=$EVTPART1;;$m=~ s/manual/heat/;;return qq($DEVICETOPIC/set {"system_mode": "$m"})}\
get_system_mode: $DEVICETOPIC/get {"system_mode":""}\
child_lock:LOCK,UNLOCK $DEVICETOPIC/set {"child_lock": "$EVTPART1"}\
open_window:ON,OFF $DEVICETOPIC/set {"open_window": "$EVTPART1"}\
get_desired-temp: $DEVICETOPIC/get {"occupied_heating_setpoint": ""}\
desired-temp:slider,4.0,0.5,35.0,1 $DEVICETOPIC/set {"occupied_heating_setpoint": $EVTPART1 }\
valve_opening_degree:slider,0,1,100,1 $DEVICETOPIC/set {"valve_opening_degree": $EVTPART1 }\
valve_closing_degree:slider,0,1,100,1 $DEVICETOPIC/set {"valve_closing_degree": $EVTPART1 }\
frost_protection_temperature:slider,4.0,0.5,35.0,1 $DEVICETOPIC/set {"frost_protection_temperature": $EVTPART1 }\
local_temperature_calibration:slider,-12.8,0.2,12.7,1 $DEVICETOPIC/set {"local_temperature_calibration": $EVTPART1 }\
weekly_schedule_monday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"monday": "@a" }})}\
weekly_schedule_tuesday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"tuesday": "@a" }})}\
weekly_schedule_wednesday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"wednesday": "@a" }})}\
weekly_schedule_thursday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"thursday": "@a" }})}\
weekly_schedule_friday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"friday": "@a" }})}\
weekly_schedule_saturday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"saturday": "@a" }})}\
weekly_schedule_sunday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"sunday": "@a" }})}\
attr E2_TRV_mq stateFormat system_mode Temp: temperature -> desired-temp °C running_state update_state V=valve_opening_degree:valve_closing_degree\
Battery: battery % lqi linkquality
# CID zigbee_0x44e2f8fffe107869
# DEF zigbee_0x44e2f8fffe107869
# FUUID 67822183-f33f-3e5d-4872-c68423ba2faf0e6b
# IODev MQTT2_Server2
# LASTInputDev MQTT2_Server2
# MQTT2_Server2_CONN MQTT2_Server2_192.168.69.43_57252
# MQTT2_Server2_MSGCNT 2215
# MQTT2_Server2_TIME 2025-01-27 16:34:46
# MSGCNT 2215
# NAME E2_TRV_mq
# NR 786
# STATE manual Temp: 23 -> 20.5 °C idle idle V=80:30
#Battery: 100 % lqi 109
# TYPE MQTT2_DEVICE
# eventCount 2966
# JSONMAP:
# local_temperature temperature
# occupied_heating_setpoint desired-temp
# OLDREADINGS:
# READINGS:
# 2025-01-25 13:59:29 IODev MQTT2_Server2
# 2025-01-25 13:53:20 associatedWith MQTT2_zigbee_bridge
# 2025-01-27 16:34:46 battery 100
# 2025-01-27 16:34:46 child_lock UNLOCK
# 2025-01-27 16:34:46 closing_steps 296
# 2025-01-27 16:34:46 desired-temp 20.5
# 2025-01-27 16:34:46 frost_protection_temperature 6
# 2025-01-27 16:34:46 idle_steps 293
# 2025-01-27 16:34:46 linkquality 109
# 2025-01-27 16:34:46 local_temperature_calibration -2
# 2025-01-27 16:34:46 open_window OFF
# 2025-01-27 16:34:46 running_state idle
# 2025-01-27 16:32:40 state valve_closing_degree
# 2025-01-27 16:34:46 system_mode manual
# 2025-01-27 16:34:46 temperature 23
# 2025-01-27 16:34:46 update_installed_version 4609
# 2025-01-27 16:34:46 update_latest_version 4609
# 2025-01-27 16:34:46 update_state idle
# 2025-01-27 16:34:46 valve_closing_degree 30
# 2025-01-27 16:34:46 valve_closing_limit_voltage 2620
# 2025-01-27 16:34:46 valve_motor_running_voltage 1251
# 2025-01-27 16:34:46 valve_opening_degree 80
# 2025-01-27 16:34:46 valve_opening_limit_voltage 2045
# 2025-01-27 16:34:46 weekly_schedule_friday 00:00/16 07:00/20 10:00/19 10:00/20 17:00/30 23:00/16
# 2025-01-27 16:34:46 weekly_schedule_monday 00:00/16 06:00/21 10:00/19 11:50/20 17:00/19 23:00/16
# 2025-01-27 16:34:46 weekly_schedule_saturday 00:00/16 07:00/22 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-27 16:34:46 weekly_schedule_sunday 00:00/16 06:00/20 10:00/19 10:00/19 16:45/22 23:00/16
# 2025-01-27 16:34:46 weekly_schedule_thursday 00:00/16 07:00/19 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-27 16:34:46 weekly_schedule_tuesday 00:00/16 06:00/19 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-27 16:34:46 weekly_schedule_wednesday 00:00/16 06:00/21 10:00/19 10:00/19 17:00/19 23:00/16
#
setstate E2_TRV_mq manual Temp: 23 -> 20.5 °C idle idle V=80:30\
Battery: 100 % lqi 109
setstate E2_TRV_mq 2025-01-25 13:59:29 IODev MQTT2_Server2
setstate E2_TRV_mq 2025-01-25 13:53:20 associatedWith MQTT2_zigbee_bridge
setstate E2_TRV_mq 2025-01-27 16:34:46 battery 100
setstate E2_TRV_mq 2025-01-27 16:34:46 child_lock UNLOCK
setstate E2_TRV_mq 2025-01-27 16:34:46 closing_steps 296
setstate E2_TRV_mq 2025-01-27 16:34:46 desired-temp 20.5
setstate E2_TRV_mq 2025-01-27 16:34:46 frost_protection_temperature 6
setstate E2_TRV_mq 2025-01-27 16:34:46 idle_steps 293
setstate E2_TRV_mq 2025-01-27 16:34:46 linkquality 109
setstate E2_TRV_mq 2025-01-27 16:34:46 local_temperature_calibration -2
setstate E2_TRV_mq 2025-01-27 16:34:46 open_window OFF
setstate E2_TRV_mq 2025-01-27 16:34:46 running_state idle
setstate E2_TRV_mq 2025-01-27 16:32:40 state valve_closing_degree
setstate E2_TRV_mq 2025-01-27 16:34:46 system_mode manual
setstate E2_TRV_mq 2025-01-27 16:34:46 temperature 23
setstate E2_TRV_mq 2025-01-27 16:34:46 update_installed_version 4609
setstate E2_TRV_mq 2025-01-27 16:34:46 update_latest_version 4609
setstate E2_TRV_mq 2025-01-27 16:34:46 update_state idle
setstate E2_TRV_mq 2025-01-27 16:34:46 valve_closing_degree 30
setstate E2_TRV_mq 2025-01-27 16:34:46 valve_closing_limit_voltage 2620
setstate E2_TRV_mq 2025-01-27 16:34:46 valve_motor_running_voltage 1251
setstate E2_TRV_mq 2025-01-27 16:34:46 valve_opening_degree 80
setstate E2_TRV_mq 2025-01-27 16:34:46 valve_opening_limit_voltage 2045
setstate E2_TRV_mq 2025-01-27 16:34:46 weekly_schedule_friday 00:00/16 07:00/20 10:00/19 10:00/20 17:00/30 23:00/16
setstate E2_TRV_mq 2025-01-27 16:34:46 weekly_schedule_monday 00:00/16 06:00/21 10:00/19 11:50/20 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-27 16:34:46 weekly_schedule_saturday 00:00/16 07:00/22 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-27 16:34:46 weekly_schedule_sunday 00:00/16 06:00/20 10:00/19 10:00/19 16:45/22 23:00/16
setstate E2_TRV_mq 2025-01-27 16:34:46 weekly_schedule_thursday 00:00/16 07:00/19 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-27 16:34:46 weekly_schedule_tuesday 00:00/16 06:00/19 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-27 16:34:46 weekly_schedule_wednesday 00:00/16 06:00/21 10:00/19 10:00/19 17:00/19 23:00/16
Meinen Syntaxfehler bei "getList" habe ich inzwischen gefunden.
Beim get vom "system_mode" erhalte ich nun "heat" im Falle von "manual" da "readingsChange" erst anschließend die Anpassung auf "manual" macht. Bei mir werde ich es dabei belassen, den von der getList habe ich keinen Nutzen, Hatte es nur vollständigkkeitshalber mit aufgenommen.
Du müsstest eigenen Code in readingList verwenden, um die Antwort direkt zu verändern.
Der Weg über getList ist imo in jedem Fall besser, wie das in setList zu belassen....
Nachfolgend die Device-Definition für Sonoff TRVZB
Der system_mode "heat" wurde nun durchgehend durch "manual" ersetzt. Damit grenzt er sich begrifflich besser vom running_state ab, der entweder "heat" oder "idle" ist.
Bei den Readingnamen von den Tagesplänen wird nun das führende "weekly_" entfernt. Damit sind sie gleich mit den automatsich generierten Readingnamen von meinen ME167 Thermostaten.
Die Anpassung von "manual" statt "heat" und das Mappen auf die geläufigen "desired-temp" und "temperature" Readings habe ich dort ebenfalls gemacht
define E2_TRV_mq MQTT2_DEVICE zigbee_0x44e2f8fffe107869
attr E2_TRV_mq IODev MQTT2_Server2
attr E2_TRV_mq alias E2_Buero_TRV
attr E2_TRV_mq autocreate 0
attr E2_TRV_mq devicetopic zigbee2mqtt/0x44e2f8fffe107869
attr E2_TRV_mq getList system_mode:noArg system_mode $DEVICETOPIC/get {"system_mode": ""}\
desired-temp:noArg desired-temp $DEVICETOPIC/get {"occupied_heating_setpoint": ""}\
running_state:noArg running_state $DEVICETOPIC/get {"running_state": ""}
attr E2_TRV_mq icon temp_control
attr E2_TRV_mq jsonMap occupied_heating_setpoint:desired-temp local_temperature:temperature
attr E2_TRV_mq readingList $DEVICETOPIC:.* { my $r = $EVENT;; $r =~ s/"system_mode":"heat"/"system_mode":"manual"/;; $r =~ s/"weekly_schedule"/"schedule"/;; json2nameValue($r,'',$JSONMAP,) }
attr E2_TRV_mq room Mq->Zb->Regler
attr E2_TRV_mq setList system_mode:auto,manual,off {my $m=$EVTPART1;;$m=~ s/manual/heat/;;return qq($DEVICETOPIC/set {"system_mode": "$m"})}\
child_lock:LOCK,UNLOCK $DEVICETOPIC/set {"child_lock": "$EVTPART1"}\
open_window:ON,OFF $DEVICETOPIC/set {"open_window": "$EVTPART1"}\
desired-temp:slider,4.0,0.5,35.0,1 $DEVICETOPIC/set {"occupied_heating_setpoint": $EVTPART1 }\
valve_opening_degree:slider,0,1,100,1 $DEVICETOPIC/set {"valve_opening_degree": $EVTPART1 }\
valve_closing_degree:slider,0,1,100,1 $DEVICETOPIC/set {"valve_closing_degree": $EVTPART1 }\
frost_protection_temperature:slider,4.0,0.5,35.0,1 $DEVICETOPIC/set {"frost_protection_temperature": $EVTPART1 }\
local_temperature_calibration:slider,-12.8,0.2,12.7,1 $DEVICETOPIC/set {"local_temperature_calibration": $EVTPART1 }\
schedule_monday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"monday": "@a" }})}\
schedule_tuesday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"tuesday": "@a" }})}\
schedule_wednesday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"wednesday": "@a" }})}\
schedule_thursday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"thursday": "@a" }})}\
schedule_friday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"friday": "@a" }})}\
schedule_saturday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"saturday": "@a" }})}\
schedule_sunday {my @a=split / /,$EVENT;;@a=splice(@a, 1);;return qq($DEVICETOPIC/set {"weekly_schedule": {"sunday": "@a" }})}\
attr E2_TRV_mq stateFormat system_mode Temp: temperature -> desired-temp °C running_state update_state V=valve_opening_degree:valve_closing_degree\
Battery: battery % lqi linkquality
# CID zigbee_0x44e2f8fffe107869
# DEF zigbee_0x44e2f8fffe107869
# FUUID 67822183-f33f-3e5d-4872-c68423ba2faf0e6b
# IODev MQTT2_Server2
# LASTInputDev MQTT2_Server2
# MQTT2_Server2_CONN MQTT2_Server2_192.168.69.43_59722
# MQTT2_Server2_MSGCNT 169
# MQTT2_Server2_TIME 2025-01-28 11:26:30
# MSGCNT 169
# NAME E2_TRV_mq
# NR 786
# STATE manual Temp: 23.5 -> 20 °C idle idle V=80:30
#Battery: 100 % lqi 123
# TYPE MQTT2_DEVICE
# eventCount 227
# JSONMAP:
# local_temperature temperature
# occupied_heating_setpoint desired-temp
# OLDREADINGS:
# READINGS:
# 2025-01-28 00:16:44 IODev MQTT2_Server2
# 2025-01-28 11:26:30 battery 100
# 2025-01-28 11:26:30 child_lock UNLOCK
# 2025-01-28 11:26:30 closing_steps 296
# 2025-01-28 11:26:30 desired-temp 20
# 2025-01-28 11:26:30 frost_protection_temperature 6
# 2025-01-28 11:26:30 idle_steps 293
# 2025-01-28 11:26:30 linkquality 123
# 2025-01-28 11:26:30 local_temperature_calibration -4
# 2025-01-28 11:26:30 open_window OFF
# 2025-01-28 11:26:30 running_state idle
# 2025-01-28 11:26:30 schedule_friday 00:00/16 07:00/20 10:00/19 10:00/20 17:00/30 23:00/16
# 2025-01-28 11:26:30 schedule_monday 00:00/16 06:00/20 10:00/19 11:50/20 17:00/19 23:00/16
# 2025-01-28 11:26:30 schedule_saturday 00:00/16 07:00/22 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-28 11:26:30 schedule_sunday 00:00/16 06:00/20 10:00/19 10:00/19 16:45/22 23:00/16
# 2025-01-28 11:26:30 schedule_thursday 00:00/16 07:00/19 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-28 11:26:30 schedule_tuesday 00:00/16 06:00/19 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-28 11:26:30 schedule_wednesday 00:00/16 06:00/21 10:00/19 10:00/19 17:00/19 23:00/16
# 2025-01-28 11:22:23 state desired-temp
# 2025-01-28 11:26:30 system_mode manual
# 2025-01-28 11:26:30 temperature 23.5
# 2025-01-28 11:26:30 update_installed_version 4609
# 2025-01-28 11:26:30 update_latest_version 4609
# 2025-01-28 11:26:30 update_state idle
# 2025-01-28 11:26:30 valve_closing_degree 30
# 2025-01-28 11:26:30 valve_closing_limit_voltage 2620
# 2025-01-28 11:26:30 valve_motor_running_voltage 1251
# 2025-01-28 11:26:30 valve_opening_degree 80
# 2025-01-28 11:26:30 valve_opening_limit_voltage 2045
#
setstate E2_TRV_mq manual Temp: 23.5 -> 20 °C idle idle V=80:30\
Battery: 100 % lqi 123
setstate E2_TRV_mq 2025-01-28 00:16:44 IODev MQTT2_Server2
setstate E2_TRV_mq 2025-01-28 11:26:30 battery 100
setstate E2_TRV_mq 2025-01-28 11:26:30 child_lock UNLOCK
setstate E2_TRV_mq 2025-01-28 11:26:30 closing_steps 296
setstate E2_TRV_mq 2025-01-28 11:26:30 desired-temp 20
setstate E2_TRV_mq 2025-01-28 11:26:30 frost_protection_temperature 6
setstate E2_TRV_mq 2025-01-28 11:26:30 idle_steps 293
setstate E2_TRV_mq 2025-01-28 11:26:30 linkquality 123
setstate E2_TRV_mq 2025-01-28 11:26:30 local_temperature_calibration -4
setstate E2_TRV_mq 2025-01-28 11:26:30 open_window OFF
setstate E2_TRV_mq 2025-01-28 11:26:30 running_state idle
setstate E2_TRV_mq 2025-01-28 11:26:30 schedule_friday 00:00/16 07:00/20 10:00/19 10:00/20 17:00/30 23:00/16
setstate E2_TRV_mq 2025-01-28 11:26:30 schedule_monday 00:00/16 06:00/20 10:00/19 11:50/20 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-28 11:26:30 schedule_saturday 00:00/16 07:00/22 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-28 11:26:30 schedule_sunday 00:00/16 06:00/20 10:00/19 10:00/19 16:45/22 23:00/16
setstate E2_TRV_mq 2025-01-28 11:26:30 schedule_thursday 00:00/16 07:00/19 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-28 11:26:30 schedule_tuesday 00:00/16 06:00/19 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-28 11:26:30 schedule_wednesday 00:00/16 06:00/21 10:00/19 10:00/19 17:00/19 23:00/16
setstate E2_TRV_mq 2025-01-28 11:22:23 state desired-temp
setstate E2_TRV_mq 2025-01-28 11:26:30 system_mode manual
setstate E2_TRV_mq 2025-01-28 11:26:30 temperature 23.5
setstate E2_TRV_mq 2025-01-28 11:26:30 update_installed_version 4609
setstate E2_TRV_mq 2025-01-28 11:26:30 update_latest_version 4609
setstate E2_TRV_mq 2025-01-28 11:26:30 update_state idle
setstate E2_TRV_mq 2025-01-28 11:26:30 valve_closing_degree 30
setstate E2_TRV_mq 2025-01-28 11:26:30 valve_closing_limit_voltage 2620
setstate E2_TRV_mq 2025-01-28 11:26:30 valve_motor_running_voltage 1251
setstate E2_TRV_mq 2025-01-28 11:26:30 valve_opening_degree 80
setstate E2_TRV_mq 2025-01-28 11:26:30 valve_opening_limit_voltage 2045
Sry, ich würd gerne mal fragen wollen wo mein Verständnisproblem liegt.
Warum werden hier in dem gezeigten Device Readings zu bspw. den schedule_*-settern ohne der Angabe des Attributs setStateList angelegt.
Oben hab ich noch gedacht Ok, dann wird wohl was bei weekly_schedule_* zur Bestätigung zurückkommen (darum wird auf einen setter für jeden Wochentag bestanden). Jetzt wurden die setter umbenannt in schedule_* und die Readings heissen auch so. Wie geht das denn, das verstehe ich nicht?
attr E2_TRV_mq readingList $DEVICETOPIC:.* { my $r = $EVENT;; $r =~ s/"system_mode":"heat"/"system_mode":"manual"/;; $r =~ s/"weekly_schedule"/"schedule"/;; json2nameValue($r,'',$JSONMAP,) }
Damit aus "system_mode":"heat" system_mode":"manual" wird, habe ich den JSON string, der von Z2M kommt vor der Auswertung durch "json2nameValue" entsprechend angepaßt. Entsprechednd bin ich mit "weekly_schedule" verfahren.
"setStateList" hat damit nichts zu tun.
Zitat von: TomLee am 29 Januar 2025, 18:47:11Oben hab ich noch gedacht Ok, dann wird wohl was bei weekly_schedule_* zur Bestätigung zurückkommen
Das ist immernoch genau der Fall. Von Z2M kommt derselbe JSON string. Nur im "readingList" wird dieser nun vorab passend gemacht.
Oh Mann, hab ich gekonnt übersehen ::) Danke fürs aufklären.
Hier setStateList zu verwenden beschäftigt mich auch, warum auch immer.
Mein Eindruck ist, das es hier Sinnn macht es zu setzen.