Moin zusammen,
ich habe mir einen Dummy als Masterregler für mein Licht gebaut. Wenn ich an dem drehe, dann sollen alle Dimmer parallel angesprochen werden. Dazu habe ich mir ein DOIF gebaut, was den Wert auf allen Dimmern einstellt. Da kam dann aber noch der Wunsch auf, dass ich einzelne Dimmer je nach Tageslaune vom Master ausschließen will. Daher habe ich jetzt pro Dimmer ein DOIF. Das funktioniert auch alles gut, bis mein neues Spielzug aus dem Hause Shelly zu der Party kam. Die 230V-Dimmer schalten sich bei Änderung des Dim-Wertes ein. Aber hey - kein Problem, ich arbeite ja gerade mit dem Schweizer Taschenmesser des FHEM ;-)
Also habe ich eine Bedingung eingebaut, die prüft, ob der Shelly an oder aus ist. Das ganze brav mit Fragezeichen, denn das Einschalten des Dimmers soll ja (erst einmal) nicht triggern. Das funktioniert auch genau 1x, danach erst wieder nach Aus- und Einschalten des Dimmers, also einer Änderung des Reading state. Nun habe ich das Fragezeichen weg gelassen, denn vielleicht wäre es ja auch nicht doof, wenn das 'On' des Dimmers triggert, dann bekommt er nachträglich den Master-Wert verpasst. Aber leider brachte das keine Besserung und ich sehe vermutlich mal wieder den Wald vor lauter Bäumen nicht.
zentralisierte Grüße
Niels
Internals:
DEF ([du_WZ_Licht_Master:"^.*$"] and [mqtt_dim_WZ_Esstisch:state] eq "on")
(set mqtt_dim_WZ_Esstisch pct $EVENT)
FUUID 5ea694c6-f33f-33e8-bf37-bb455afc2b46c3f0
MODEL FHEM
NAME di_Licht_WZ_Master_Esstisch
NOTIFYDEV du_WZ_Licht_Master,global,mqtt_dim_WZ_Esstisch
NR 9034
NTFY_ORDER 50-di_Licht_WZ_Master_Esstisch
STATE cmd_1
TYPE DOIF
VERSION 21224 2020-02-18 18:45:49
READINGS:
2020-04-27 10:55:13 Device du_WZ_Licht_Master
2020-04-27 10:55:09 cmd 1
2020-04-27 10:55:09 cmd_event du_WZ_Licht_Master
2020-04-27 10:55:09 cmd_nr 1
2020-04-27 10:55:13 e_du_WZ_Licht_Master_events 36
2020-04-27 10:55:04 e_mqtt_dim_WZ_Esstisch_state on
2020-04-27 10:38:11 mode enabled
2020-04-27 10:55:09 state cmd_1
Regex:
accu:
cond:
du_WZ_Licht_Master:
0:
&STATE ^du_WZ_Licht_Master$
mqtt_dim_WZ_Esstisch:
0:
state ^mqtt_dim_WZ_Esstisch$:^state:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::EventDoIf('du_WZ_Licht_Master',$hash,'^.*$',1) and ::ReadingValDoIf($hash,'mqtt_dim_WZ_Esstisch','state') eq "on"
do:
0:
0 set mqtt_dim_WZ_Esstisch pct $EVENT
1:
helper:
DEVFILTER ^global$|^mqtt_dim_WZ_Esstisch$|^du_WZ_Licht_Master$
NOTIFYDEV global|mqtt_dim_WZ_Esstisch|du_WZ_Licht_Master
event 36
globalinit 1
last_timer 0
sleeptimer -1
timerdev du_WZ_Licht_Master
timerevent 52
triggerDev du_WZ_Licht_Master
timerevents:
52
timereventsState:
state: 52
triggerEvents:
36
triggerEventsState:
state: 36
internals:
readings:
all mqtt_dim_WZ_Esstisch:state
trigger:
all du_WZ_Licht_Master
uiState:
uiTable:
Attributes:
alias Master regelt Esstisch
devStateIcon disabl.*:general_aus:enable initi.*|cmd.*:general_an:disable .*rro.*:icoTool
do always
group 3-Logik
room Wohnzimmer->Licht
Einen Gedankenfehler habe ich schon gefunden: Wenn der On-State vom Dimmer triggert, habe ich in $EVENT natürlich keine Zahl stehen. Das habe ich angepasst:
([du_WZ_Licht_Master:"^.*$"] and [mqtt_dim_WZ_Esstisch:state] eq "on")
(set mqtt_dim_WZ_Esstisch pct [du_WZ_Licht_Master:state])
korrigierte Grüße
Niels
Gefunden: Warum auch immer, wenn ich auf das Reading light0 des Devices gehe, dann funktioniert es. Warum auch immer - vielleicht hat das State-Reading noch ein nicht sichtbares Zeichen im Value. Da bin ich sicher mit dem 'eq' zu hart unterwegs. Aber wenn das nun so geht, bin ich zufrieden ;)
gelöste Grüße
Niels