Hallo Liebe DOIF Mitstreiter,
ich könnte mal einen kleinen Denkanstoß gebrauchen ;D
Ich möchte mir vor dem Einschalten von Homematic Aktoren, den aktuellen Status merken um ihn hinterher wieder herzustellen.
([Alles_Licht] eq "on") (
setreading LichtHaustuer _last_state [LichtHaustuer],
setreading WZ_Bodenlampe _last_state [WZ_Bodenlampe],
set LichtHaustuer on,
set WZ_Bodenlampe on )
Wenn nun beim Triggern die beiden Devices im state=off sind enthält _laste_state hinterher "set_on" :-[
Ich vermute (habe dazu aber keine Infos gefunden), dass FHEM die 4 Kommandos parallel abarbeitet, der set Befehl den setreading überholt und daher in _last_state nicht mehr "off" steht, sondern gerade "set_on".
Alternativ habe ich es hiermit versucht, und dachte, damit werden die Blöcke jeweils sequentiell abgearbeitet.
([Alles_Licht] eq "on") (
(setreading LichtHaustuer _last_state [LichtHaustuer], set LichtHaustuer on)
(setreading WZ_Bodenlampe _last_state [WZ_Bodenlampe], set WZ_Bodenlampe on) )
Aber das funktioniert gar nicht - habe hinterher im _last_state "off, set WZ_Bodenlampe on" stehen - und der set Befehl wird natürlich nicht ausgeführt :-\
Hat jemand eine Idee, was ich falsch mache?
Vielen Dank im Voraus,
Sascha
Die Befehle werden immer sequentiell abgearbeitet. Der Zustand, den du sicherst, ist der tatsächliche Zustand zu diesem Zeitpunkt bei diesem Gerät. Ein "Überholen" von Befehlen ist mir nicht bekannt.
Bei Homematic-Geräten gibt es (leider) den Zwischenzustand set_on beim Einschalten, bis der Aktor den Einschaltvorgang bestätigt, erst dann geht der Zustand auf on. Der kann aber eigentlich nicht vom späteren Einschalten kommen.
Danke Damian!
Das hat mir super weiter geholfen - Fehler gefunden:
Kurzform: das DOIF wurde versehentlich 2x nahezu zeitgleich aufgerufen.
Langversion:
Das DOIF "Alles Licht an" triggere ich per Homematic Handsender HM-RC-4-3.
Der meldet Zustand "Short" (kurz Drücken) und "Long_*" wobei *=anzahl Sekunden.
Nun habe ich das das obige DOIF getriggert mit
(["SZ_Handsender_*:Short*."]) (
Ich dachte halt, "Short" gibt es eh nur einmal. Falsch gedacht: DOIF bekommt jedes jedes mal zwei Events, die mit "Short" beginnen.
Das DOIF hat "do always" und wird somit auch zweimal ausgeführt. Beim zweiten setreading steht logischerweise im reading gerade "set_on".
???
hiermit geht es jetzt:
(["SZ_Handsender_*:Short 1.*"])
Vielen Dank!
Hey, und insgesamt ein super dickes Dankeschön für DOIF. Das Modul ist wirklich der Hammer.
Ich hatte schon darüber nachgedacht, FHEM gegen etwas anderes zu ersetzen, weil meine ganzen Steuerungen (per dummy, at, diverse temp-dummys usw) zwar gut funktionierte aber praktisch nicht wartbar war.
nach 2 Jahren Ahnungslosigkeit habe ich dann DOIF gefunden (warum habe ich das nicht vorher gefunden?) und mittlerweile fast alles umgestellt.
Es ist einfach genial, unglaublich leistungsfähig, super support durch das Forum und sehr gut wartbar.
Danke, Danke, Danke!!! :-*
Zitat von: swiegmann am 01 November 2019, 09:09:24
Ich hatte schon darüber nachgedacht, FHEM gegen etwas anderes zu ersetzen...
Schön zu hören, dass du dabei geblieben ist, die Anzahl der FHEM-user ist z. Zt. eher stagnierend - die Konkurrenz schläft bekanntlich nicht ;)