Hauptmenü

[Gelöst] Aktionsabfolge

Begonnen von MarkoP, 01 April 2020, 09:42:38

Vorheriges Thema - Nächstes Thema

MarkoP

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.
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

xenos1984


Wernieman

Oder per Notify at(s) definieren lassen
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

MarkoP

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).
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

frank

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.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

MarkoP

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.
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

Otto123

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?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MarkoP

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.
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

frober

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.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

Otto123

#9
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz