FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: MarkoP am 01 April 2020, 09:42:38

Titel: [Gelöst] Aktionsabfolge
Beitrag von: MarkoP am 01 April 2020, 09:42:38
Hallo, ich bin noch Neu und wollte nachfragen ob es eine Möglichkeit gibt von einem notify eine Aktionsabfolge auslösen zu lassen.

Beispiel:
Status schaltet  (Auslöser)
Aktion 1: Lampe 1 ausschalten
Aktion 2: Lampe 2 ausschalten (1 Minuten später)
Aktion 3: Dreambox ausschalten (2 Minuten nach Auslöser)
etc.

Oder muss ich wür jede Aktion ein eigenes Notify schreiben?
Die Möglichkeit über eine Gruppe ist mir bekannt, aber damit lässt sich die zeitliche Verzögerung (sehr wichtig!) nicht realisieren, sondern halt nur alles auf einmal schalten.
Die Suche hat mir bisher leider keine passenden Informationen gebracht.
Titel: Antw:Aktionsabfolge
Beitrag von: xenos1984 am 01 April 2020, 09:55:34
Sowas?

http://fhem.de/commandref.html#sleep
Titel: Antw:Aktionsabfolge
Beitrag von: Wernieman am 01 April 2020, 10:09:45
Oder per Notify at(s) definieren lassen
Titel: Antw:Aktionsabfolge
Beitrag von: MarkoP am 01 April 2020, 11:22:06
Hallo, das mit dem Sleep werde ich mal ausprobieren, klingt ziemlich gut.
Werde dann in ein paar Tagen mal Rückmeldung geben ob es geklappt hat (Läuft ja immer nur einmal pro Tag).
Titel: Antw:Aktionsabfolge
Beitrag von: frank am 01 April 2020, 11:36:57
bedenke immer auch den fall, dass fhem innerhalb der gesammten aktion "sterben" kann (restart, stromausfall, ...).

für diese fälle könnten at's besser sein als sleep's.
Titel: Antw:Aktionsabfolge
Beitrag von: MarkoP am 01 April 2020, 13:41:54
Das ist sicherlich richtig, aber ich rede hier von einem Zeit raum von max. 5 Minuten und würde zur Sicherheit einen Reservebefehl per at zu einem späteren Zeitpunkt (2 oder 3 Uhr Nachts) einbauen.
Mir geht es halt darum, dass alle Aktionen über einen Button am Homestatus ausgelöst werden können, trotzdem nicht alle gleichzeitig passieren (es soll ein reales ausschalten abgebildet werden um Einbrecher abzuschrecken. Alles auf einmal wird heute oft schon als Indiz für eine Abwesenheit interpretiert).

Hab es auch schon ausprobiert und Erfolg gehabt. Allerdigst stimmt die Syntex im Beispiel für den Sleepbefehl nicht, da es nur funktioniert wenn nur ein Semikolon eingesetzt ist.
Titel: Antw:Aktionsabfolge
Beitrag von: Otto123 am 01 April 2020, 14:47:01
Zitat von: MarkoP am 01 April 2020, 13:41:54
Allerdigst stimmt die Syntex im Beispiel für den Sleepbefehl nicht, da es nur funktioniert wenn nur ein Semikolon eingesetzt ist.
Was genau meinst Du jetzt damit? Kannst Du das anhand von Code zeigen?
Titel: Antw:Aktionsabfolge
Beitrag von: MarkoP am 18 April 2020, 09:16:58
Sorry, schaue nicht regelmäßig hier vorbei, deshalb sehe ich die Frage jetzt erst.
Ich habe mir zum testen aus der CommandRef die Zeile
Zitatdefine a3 at +*00:05 set Windsensor 1w_measure;; sleep 2 quiet;; get Windsensor 1w_temp
kopiert und die Bezeichnungen angepasst und sie funktioniert nicht.

Wenn ich jedoch statt der doppelten Semikolon nur ein einzelnes schreibe, dann wird der Befehl ausgeführt es. Anlegen lies es sich in beiden Fällen, aber in der Originalschreibweise wurde es dann nicht ausgeführt. Wie gesagt, die Device-Namen habe ich selbstverständlich angepasst. Und damit keiner Sagen kann das dabei das Problem entstanden ist gleich vorweg, die Devoce-Namen sind in beiden Fällen absolut gleich geschrieben, es sind nur die Anzahl der Semikolon geändert.
Titel: Antw:Aktionsabfolge
Beitrag von: frober am 18 April 2020, 09:27:38
Die doppelten Semikolons sind nur nötig, wenn die Definition in RAW oder in der Cfg. (was man nicht soll!) eingegeben wird.
Beim Bearbeiten der Dev. Im Device oder der Eingabe über die Fhem-Befehlszeile (oben am Bildschirm) werden die Semikolons nur einfach eingegeben. Da macht es Fhem im Hintergrund selbst, das Verdoppeln.
Titel: Antw:Aktionsabfolge
Beitrag von: Otto123 am 18 April 2020, 11:05:32
Ich will das nochmal im Detail beschreiben, es ist in jedem FHEM System nachvollziehbar.

Als Vorbereitung ein Dummy (Raw Definition):
defmod Windsensor dummy

setstate Windsensor 2020-04-18 10:53:01 1w_measure 12
setstate Windsensor 2020-04-18 10:53:28 1w_temp 25

Dieser Befehl:
define a3 at +*00:05 set Windsensor 1w_measure;; sleep 2 quiet;; get Windsensor 1w_temp
steht entweder so in der fhem.cfg oder wird genau so in der FHEM Kommandozeile oder in der Raw Definition eingegeben. Dabei entsteht diese Gerät:
Internals:
   CFGFN     
   COMMAND    set Windsensor 1w_measure; sleep 2 quiet; get Windsensor 1w_temp
   DEF        +*00:05 set Windsensor 1w_measure; sleep 2 quiet; get Windsensor 1w_temp
   FUUID      5e9ac035-f33f-27f7-82a4-ee69624c7d4d2df6
   NAME       a3
   NR         290557
   NTM        10:59:13
   PERIODIC   yes
   RELATIVE   yes
   REP        -1
   STATE      Next: 10:59:13
   TIMESPEC   00:05
   TRIGGERTIME 1587200353.11894
   TRIGGERTIME_FMT 2020-04-18 10:59:13
   TYPE       at
   READINGS:
     2020-04-18 10:54:13   state           Next: 10:59:13
Attributes:

Wie man sieht, steht hier die diskutierte Befehlsfolge mit einem Semikolon getrennt.
Öffnet man den DEF Editor sieht das Ganze so aus:
+*00:05 set Windsensor 1w_measure; sleep 2 quiet; get Windsensor 1w_temp
Wie man sieht, mit einem Semikolon getrennt.

Würde man den define Befehl von oben aus dem Beispiel der commmandref mit einem Semikolon schreiben
defmod a3 at +*00:05 set Windsensor 1w_measure; sleep 2 quiet; get Windsensor 1w_temp
und in die FHEM Kommandozeile eingeben, passiert folgendes:
Die DEF des at sieht nur noch so aus:
+*00:05 set Windsensor 1w_measure
Es fehlen also die Befehle sleep und get? Was ist mit denen passiert? Die werden in Moment der Ausführung sofort ausgeführt. Nach 2 sec wird der get Befehl ausgeführt (Der beim Dummy so nicht funktioniert)

Aufräumen:
delete a3
delete Windsensor


Gruß Otto