(gelöst) DOIF startet trotz Attribut do always nur 1x

Begonnen von Muschelpuster, 27 April 2020, 10:56:57

Vorheriges Thema - Nächstes Thema

Muschelpuster

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
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Muschelpuster

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
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Muschelpuster

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
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF