Notify: Unterschied zwischen den Versionen
K (Info "Modulersteller" vervollständigt) |
Krikan (Diskussion | Beiträge) K (Regexp(?) wizard aufgenommen (Rohfassung)) |
||
Zeile 9: | Zeile 9: | ||
}} | }} | ||
__TOC__ | __TOC__ | ||
{{Todo|generelle Überarbeitung, Fehlerkontrolle, Formatierung | {{Todo|generelle Überarbeitung, Fehlerkontrolle, Formatierung}} | ||
{{Randnotiz|RNTyp=[g|Info|RNText=Weitere grundlegende Informationen/Beispiele zu notify enthält [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit Fhem] | {{Randnotiz|RNTyp=[g|Info|RNText=Weitere grundlegende Informationen/Beispiele zu notify enthält [http://fhem.de/Heimautomatisierung-mit-fhem.pdf Heimautomatisierung mit Fhem] | ||
"Um Ihren Perlcode zu testen, verwenden Sie das [http://fhem.de/commandref#trigger trigger-Kommando]. [...] Wenn Sie also z.B. ein <code>define Testcode notify Schalter1:on {Perlcode}</code> testen möchten, können Sie Ihren Code mit <code>trigger Schalter1 on</code> testen. trigger simuliert das Eintreten eines Ereignisses [...]" (Tipp von S. 38 der Version 4.0)}} | "Um Ihren Perlcode zu testen, verwenden Sie das [http://fhem.de/commandref#trigger trigger-Kommando]. [...] Wenn Sie also z.B. ein <code>define Testcode notify Schalter1:on {Perlcode}</code> testen möchten, können Sie Ihren Code mit <code>trigger Schalter1 on</code> testen. trigger simuliert das Eintreten eines Ereignisses [...]" (Tipp von S. 38 der Version 4.0)}} | ||
== Notify, das mächtige Tool == | == Notify, das mächtige Tool == | ||
Die nachfolgenden Beispiele beziehen sich hauptsächlich auf [[EIB / KNX|KNX (EIB)]]. Sie sind aber auf alle anderen | Die nachfolgenden Beispiele beziehen sich hauptsächlich auf [[EIB / KNX|KNX (EIB)]]. Sie sind aber auf alle anderen Systeme übertragbar. | ||
Was ist notify? | Was ist notify? | ||
Das Hilfsmodul notify dient dazu, Aktionen abhängig von einem anderen Ereignis/Event (siehe [[Event_monitor|Event monitor]] auszulösen. Es ist damit möglich, Logikfunktionen im Fhem abzubilden. | Das Hilfsmodul notify dient dazu, Aktionen abhängig von einem anderen Ereignis/Event (siehe [[Event_monitor|Event monitor]]) auszulösen. Es ist damit möglich, Logikfunktionen im Fhem abzubilden. | ||
Z.B.: das Licht in der Küche wird eingeschaltet ====> draus folgt, dass auch das Radio eingeschaltet wird. | Z.B.: das Licht in der Küche wird eingeschaltet ====> draus folgt, dass auch das Radio eingeschaltet wird. | ||
=== Syntax von notify === | === Syntax von notify === | ||
define <name> notify <Suchmuster> <command> | define <name> notify <Suchmuster> <command> | ||
Zeile 37: | Zeile 36: | ||
Suchmuster/Regex kann man im Internet beispielsweise auf [http://regexpal.com/| http://regexpal.com/] testen. | Suchmuster/Regex kann man im Internet beispielsweise auf [http://regexpal.com/| http://regexpal.com/] testen. | ||
=== Regexp wizard - FHEMWEB-unterstützte Anlage eines notify === | |||
<!-- Warum Regex'''p''' wizard und nicht Regex wizard--> | |||
Die Erstellung eines notify und insbesondere die korrekte Angabe des Suchmusters (Regex) führt gerade bei Einsteigern immer wieder zu Schwierigkeiten. Zur Fehlerminimierung empfiehlt es sich einmal die [[Konfiguration]] nicht direkt zu bearbeiten, sondern die "Befehl-Eingabezeile" und die "Objektdetails" zur Bearbeitung zu nutzen. Zudem enthält Fhem einen Regexp wizard mit dem Regex anhand der in Fhem vorhandenen Devices und deren Events aus einer Auswahlbox selektiert werden können. Voraussetzungen sind: | |||
* Aktivierung des Hilfsmoduls [[eventTypes]] (bei allen Neuinstallationen Standard) | |||
* das gesuchte Ereignis (Event) ist nach Aktivierung des Hilfsmoduls bereits mindestens einmal eingetreten | |||
Schrittweise Darstellung der Nutzung des Regexp wizard zur Anlage eines "notify": | |||
In das [[Konfiguration#Befehl-Eingabefeld|Befehls-Eingabefeld]] eingeben und mit {{Taste|Enter}} bestätigen: | |||
define ntest notify a b | |||
Als Beispiel wird ein notify mit <name> "ntest" angelegt. "a" und "b" sind beliebige Platzhalter für <Suchmuster> und <Command>, die bei der weiteren Bearbeitung mit dem endgültigen Werten ersetzt werden. | |||
Der Regexp wizard öffnet sich: | |||
[[Datei:Regexp wizard1.JPG|400px|thumb|center]] | |||
Nun in der Auswahlbox das auslösende Event (Ereignis) auswählen; zunächst das Device und dann das gewünschte Regex. Hier soll das notify bei jeder Veränderung der Temperatur (temperature.*) des Device BTHR918N reagieren. Abschließend mit einem Mausklick auf {{Taste|set}} bestätigen. Wählt man mehrere Regex in dieser Weise aus, so wird das "notify" bei Eintritt jedes dieser Events ausgeführt: | |||
[[Datei:Regexp wizard2.JPG|400px|thumb|center]] | |||
Anschließend den Platzhalter "a" mit Klick auf den Link "removeRegexpPart" löschen: | |||
[[Datei:Regexp wizard3.JPG|400px|thumb|center]] | |||
Den Link "DEF" anklicken, damit sich der DEF-Editor öffnet: | |||
[[Datei:Regexp wizard4.JPG|400px|thumb|center]] | |||
Jetzt den auszuführenden Befehl im "DEF"-Bereich durch Überschreiben des Platzhalters "a" eintragen und mit Klick auf {{Taste|modify ntest}} abschließen: | |||
[[Datei:Regexp wizard5.JPG|400px|thumb|center]] | |||
Das fertige und sofort aktive "notify" sieht abschließend folgendermaßen aus: | |||
[[Datei:Regexp wizard6.JPG|400px|thumb|center]] | |||
Am Schluss das Speichern über {{Taste|Save config}} nicht vergessen. | |||
=== Etwas schalten, wenn ein anderes Gerät geschaltet wird === | === Etwas schalten, wenn ein anderes Gerät geschaltet wird === | ||
Zeile 101: | Zeile 125: | ||
Danach folgt der set Befehl. | Danach folgt der set Befehl. | ||
Wenn also das Licht1 oder Licht2 den Wert "on" hat, dann hat auch die Steckdose den Wert "on" | Wenn also das Licht1 oder Licht2 den Wert "on" hat, dann hat auch die Steckdose den Wert "on" | ||
Alternative: [[structure]] | |||
=== Einfache UND Funktion === | === Einfache UND Funktion === | ||
Zeile 145: | Zeile 171: | ||
Danach erfolgt ein normales "if then else" Konstrukt. Die Zeile »($r1 eq "on" && $r2 eq "on" && $r3 eq "on")« kann man so lesen: Wenn $r1 den Wert "on" und (&&) $r2 den Wert "on" und $r3 den Wert "on" dann schalte die LEDalleRolloZu ein {fhem("set LEDalleRolloZu on")} | Danach erfolgt ein normales "if then else" Konstrukt. Die Zeile »($r1 eq "on" && $r2 eq "on" && $r3 eq "on")« kann man so lesen: Wenn $r1 den Wert "on" und (&&) $r2 den Wert "on" und $r3 den Wert "on" dann schalte die LEDalleRolloZu ein {fhem("set LEDalleRolloZu on")} | ||
ansonsten else schalte die LED aus. {fhem("set LEDalleRolloZu off") | ansonsten else schalte die LED aus. {fhem("set LEDalleRolloZu off") | ||
Alternative: [[structure]] | |||
=== Zeitverzögert schalten === | === Zeitverzögert schalten === | ||
Zeile 254: | Zeile 282: | ||
== Weiterführende Links == | == Weiterführende Links == | ||
* [[Escapen in Perlbefehlen]] | * [[Escapen in Perlbefehlen]] | ||
* [[Klammerebenen]] | * [[Klammerebenen]] | ||
* [[DOIF]] als Alternative vereinigt die Funktionalität des notify-, at-, watchdog-Befehls in Kombination mit logischen Abfragen unter einem Dach | * [[DOIF]] als Alternative vereinigt die Funktionalität des notify-, at-, watchdog-Befehls in Kombination mit logischen Abfragen unter einem Dach |
Version vom 7. April 2015, 15:53 Uhr
notify | |
---|---|
Zweck / Funktion | |
Ausführung von Anweisung(en) als Reaktion auf Ereignisse | |
Allgemein | |
Typ | Hilfsmodul |
Details | |
Dokumentation | EN / DE |
Support (Forum) | Automatisierung |
Modulname | 91_notify.pm |
Ersteller | rudolfkoenig (Forum / Wiki) |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
Todo: generelle Überarbeitung, Fehlerkontrolle, Formatierung |
define Testcode notify Schalter1:on {Perlcode}
testen möchten, können Sie Ihren Code mit trigger Schalter1 on
testen. trigger simuliert das Eintreten eines Ereignisses [...]" (Tipp von S. 38 der Version 4.0)Notify, das mächtige Tool
Die nachfolgenden Beispiele beziehen sich hauptsächlich auf KNX (EIB). Sie sind aber auf alle anderen Systeme übertragbar.
Was ist notify? Das Hilfsmodul notify dient dazu, Aktionen abhängig von einem anderen Ereignis/Event (siehe Event monitor) auszulösen. Es ist damit möglich, Logikfunktionen im Fhem abzubilden.
Z.B.: das Licht in der Küche wird eingeschaltet ====> draus folgt, dass auch das Radio eingeschaltet wird.
Syntax von notify
define <name> notify <Suchmuster> <command>
Das Suchmuster (auch Regexp = regulärer Ausdruck) ist sehr wichtig. Es ist entweder der Name des auslösenden ("triggernden") Gerätes oder die Kombination aus Gerät und auslösendem Ereignis (Event) Gerätename:Event. Die Events kann man dem Event-Monitor entnehmen. Wenn da z.B. Rollo1 steht, dann reagiert notify auf Rollo1 on und off und was es sonst noch alles gibt.
Wenn man mehrere Suchmuster möchte, kann man diese in Klammer schreiben (Rollo1|Rollo2|Steckdose5) als Trenner wird dann Pipe (|) genutzt.
Man kann auch mit Platzhaltern arbeiten.
- Rollo. ==> das notify reagiert auf alles was mit Rollo und einem weiteren beliebigen Zeichen anfängt. Also auf Rollo1 wie auch auf RolloG, aber nicht auf Rollo_wischundweg
- Rollo.* ==> das notify reagiert auf alles das mit Rollo beginnt.
- .*isch ==>; Reagiere auf alles das mit isch aufhört (Tisch, Fisch)
Suchmuster/Regex kann man im Internet beispielsweise auf http://regexpal.com/ testen.
Regexp wizard - FHEMWEB-unterstützte Anlage eines notify
Die Erstellung eines notify und insbesondere die korrekte Angabe des Suchmusters (Regex) führt gerade bei Einsteigern immer wieder zu Schwierigkeiten. Zur Fehlerminimierung empfiehlt es sich einmal die Konfiguration nicht direkt zu bearbeiten, sondern die "Befehl-Eingabezeile" und die "Objektdetails" zur Bearbeitung zu nutzen. Zudem enthält Fhem einen Regexp wizard mit dem Regex anhand der in Fhem vorhandenen Devices und deren Events aus einer Auswahlbox selektiert werden können. Voraussetzungen sind:
- Aktivierung des Hilfsmoduls eventTypes (bei allen Neuinstallationen Standard)
- das gesuchte Ereignis (Event) ist nach Aktivierung des Hilfsmoduls bereits mindestens einmal eingetreten
Schrittweise Darstellung der Nutzung des Regexp wizard zur Anlage eines "notify":
In das Befehls-Eingabefeld eingeben und mit Enter bestätigen:
define ntest notify a b
Als Beispiel wird ein notify mit <name> "ntest" angelegt. "a" und "b" sind beliebige Platzhalter für <Suchmuster> und <Command>, die bei der weiteren Bearbeitung mit dem endgültigen Werten ersetzt werden. Der Regexp wizard öffnet sich:
Nun in der Auswahlbox das auslösende Event (Ereignis) auswählen; zunächst das Device und dann das gewünschte Regex. Hier soll das notify bei jeder Veränderung der Temperatur (temperature.*) des Device BTHR918N reagieren. Abschließend mit einem Mausklick auf set bestätigen. Wählt man mehrere Regex in dieser Weise aus, so wird das "notify" bei Eintritt jedes dieser Events ausgeführt:
Anschließend den Platzhalter "a" mit Klick auf den Link "removeRegexpPart" löschen:
Den Link "DEF" anklicken, damit sich der DEF-Editor öffnet:
Jetzt den auszuführenden Befehl im "DEF"-Bereich durch Überschreiben des Platzhalters "a" eintragen und mit Klick auf modify ntest abschließen:
Das fertige und sofort aktive "notify" sieht abschließend folgendermaßen aus:
Am Schluss das Speichern über Save config nicht vergessen.
Etwas schalten, wenn ein anderes Gerät geschaltet wird
Wenn man das obige mit KNX abbilden möchte, benötigt man auf der KNX Seite:
Vorbereitung
- Gruppenadresse (GA) für die Steckdose vom Radio (0/0/10)
- GA vom Licht (0/0/20)
Auf der Fhem Seite wird benötigt:
define RadioKueche EIB 0/0/10 define LichtKueche EIB 0/0/20
notify Befehl
define LichtamRadioan notify LichtKueche { fhem "set RadioKueche $EVENT" }
oder besser
define LichtamRadioan notify LichtKueche set RadioKueche $EVENT
Erklärung
- Der Begriff "LichtamRadioan" ist nur ein Platzhalter, damit das notify in Fhem verwaltet werden kann.
- "$EVENT" ist ein Platzhalter für den Zustand vom Pattern. $EVENT enthält ein "off" wenn das LichtKueche aus ist und ein "on" wenn das Licht eingeschaltet ist.
- "{ <perlcode> }" alles was zwischen {} steht ist Perl code. Perl kennt das Schlüsselwort Fhem. Das Schlüsselwort Fhem dient dazu, Fhem Befehle auszuführen. Es wird also der Fhem Befehl "set RadioKueche on/off" ausgeführt. on oder off ist abhängig vom Pattern. Der eigentliche Fhem Befehl muss in " " stehen.
- Warum ist die 2. Variante besser? In der 1. Variante wechselt man von Fhem-Ebene des notify mittels {} auf Perl-Ebene, wo man mit dem Schlüsselwort Fhem "" wieder einen Befehl auf Fhem-Ebene ausführt. In der 2. Variante werden diese unnötigen, resourcenverschwendenden Ebenen-Wechsel vermieden. Alles wird auf der Fhem-Ebene ausgeführt.
Einschalten von mehreren Geräten/Lampen, wenn das Licht eingeschaltet wird
Vorbereitung
KNX:
- 3 GAs für drei Geräten bzw Lampen (0/0/30 0/0/31 0/0/32)
Fhem:
define LichtWZ EIB 0/0/30 define Steckdose1 EIB 0/0/31 define Steckdose2 EIB 0/0/32
notify Befehl
define SteckdoseWZein notify LichtWZ { fhem "set Steckdose1 $EVENT;;set Steckdose2 $EVENT " }
oder besser
define SteckdoseWZein notify LichtWZ set Steckdose1,Steckdose2 $EVENT
Erklärung
Wenn das LichtWZ eingeschaltet wird, dann werden auch die Steckdosen (1 und 2) eingeschaltet.
Einfache ODER Funktion
Eine einfache ODER Funktion kann sehr einfach realisiert werden
Vorbereitung
KNX:
- 3x GAs der abzufragende Werte (0/0/40 0/0/41 0/0/42)
Fhem:
define Licht1 EIB 0/0/40 define Licht2 EIB 0/0/41 define Steckdose EIB 0/0/42
notify Befehl
define SteckdoseWZein notify (Licht1|Licht2) set Steckdose $EVENT
oder
define SteckdoseWZein notify (Licht.) set Steckdose $EVENT
Erklärung
Die Werte in der Klammer (wichtig ist das »|«) sind die Rückgabewerte. Alternativ kann in diesem Beispiel auch »Licht.« (zu beachten ist der Punkt) geschrieben werden. Der Punkt ist ein Platzhalter für (genau) ein beliebiges Zeichen.
Danach folgt der set Befehl. Wenn also das Licht1 oder Licht2 den Wert "on" hat, dann hat auch die Steckdose den Wert "on"
Alternative: structure
Einfache UND Funktion
Ob man dieses Konstrukt noch als einfach bezeichnen kann, wage ich mal zu bezeifeln. In Fhem fehlen Loggingfunktionen, die man alle selber mit Perl Code erstellen kann (Danke an MAZ). Dadurch ist Fhem zwar mächtig, wird aber für viele sehr kompliziert.
In diesem Beispiel soll - wenn drei Rollos geschlossen sind - am Taster eine LED eingeschaltet werden.
Vorbereitung
KNX:
- 3x GDs für die Rückgabewert Rollo geschlossen == 1 (0/0/50 0/0/51 0/0/52)
- GD LED am Lichtschalter (0/0/106)
Fhem:
define R1ZU EIB 0/0/50 attr R1ZU dummy 1 define R2ZU EIB 0/0/51 attr R1ZU dummy 1 define R3ZU EIB 0/0/52 attr R1ZU dummy 1 define LEDalleRolloZu EIB 0/0/106
Durch das Atribut dummy werden keine Schaltfunktion angeboten. Es kann nur Werte anzeigen.
notify Befehl
define nt.allerolloszu notify (R1ZU|R2ZU|R6ZU) { my $r1 = $value{"R1ZU"};; my $r2 = $value{"R2ZU"};; my $r3 = $value{"R6ZU"};; if ($r1 eq "on" && $r2 eq "on" && $r3 eq "on") { fhem "set LEDalleRolloZu on" } else { fhem "set LEDalleRolloZu off" } }
Erklärung
Es werden die drei Rückgabewerte R1ZU, R2ZU und R3ZU ausgewertet. Danach folgt Perl Code, deswegen beginnt das ganze mit einer { und endet mit }
my $r1 => Variable $r1 definieren = $value{"R1ZU"};; ==> weist den Rückgabewert (on oder off) von R1ZU der Variable $r1 zu
Der doppelte ;; ist ein Fhem Thema. Eigentlich würde für Perl ein ; reichen. Aber Fhem nutzt selbst das ; und daher wird ein ;; benötigt. Mit den ersten drei my Zeilen werden die Rückgabewerte den Variabeln zugewiesen.
Danach erfolgt ein normales "if then else" Konstrukt. Die Zeile »($r1 eq "on" && $r2 eq "on" && $r3 eq "on")« kann man so lesen: Wenn $r1 den Wert "on" und (&&) $r2 den Wert "on" und $r3 den Wert "on" dann schalte die LEDalleRolloZu ein {fhem("set LEDalleRolloZu on")} ansonsten else schalte die LED aus. {fhem("set LEDalleRolloZu off")
Alternative: structure
Zeitverzögert schalten
Aufgabe: | Zeitverzögert schalten |
Beschreibung: | Mit einem Notify zeitverzögert eine Aktion auslösen. |
Vorbereitung: | Gerät "Lampe" ist definiert und es gibt eine Situation, die ein Ereignis "Fernbedienung:.*" generiert. |
Befehl: | define ntfy1 notify Fernbedienung:.* sleep 7.5;; set Lampe $EVENT
|
Erläuterungen: | Bei Eintreten eines Ereignisses "Fernbedienung*" wird nach einer Pause von siebeneinhalb Sekunden der Befehl <set Lampe ??> ausgeführt, wobei der eigentliche Befehl aus dem auslösenden Ereignis übernommen wird.
|
Eine PV-Anlage (Solarstrom) zur Steuerung der Rollos nutzen (optional Zeit und Datums abhängig)
Hier ein kleines Beispiel, wie man mit Hilfe einer PV-Anlage die Sonneneinstrahlung auf der Südseite ermittelt und dies zur Rolladensteuerung nutzt. Optional: Die Funktion soll allerdings nur zwischen 9:30 und 17:00 stattfinden. (zweites Beispiel) Optional: Die Funktion soll nur zwischen dem 6. und 9. Monat funktioneren. (drittes Beispiel)
Vorbereitung
PV Anlage mit SolarView abfragen. Per Hand ermitteln, ab wieviel erzeugtem Strom es sinnvoll ist die Rollos zu schließen.
notify Syntax
Fhem:
define sv SolarView solarview 15000 wr1 wr2 wr3 wr4 <----vier Wechselrichter attr sv event-on-change-reading currentPower
define nt.sonnenlichtpersolar notify (sv:currentPower.*) { if ($EVTPART1 < 3000 ) { fhem('set Flur1 Auf'); }else { if ($EVTPART1 > 5000 ) { fhem('set Flur1 Ab'); } } }
Optional 1: Zeitabhängig
(sv:currentPower.*) { my $hm = sprintf("%%02d:%%02d", $hour, $min); if ( $hm gt "09:30" && $hm lt "17:00") { if ($EVTPART1 < 5000 ) { fhem('set Flur1 Auf'); }else { if ($EVTPART1 > 8000 ) { fhem('set Flur1 Ab'); } } } }
Optional 2: Zeit und Datum
(sv:currentPower.*) { my $hm = sprintf("%%02d:%%02d", $hour, $min); if ($month >= 6 && $month <= 9) { if ( $hm gt "09:30" && $hm lt "17:00") { if ($EVTPART1 < 5000 ) { fhem('set Flur1,RBUERO1,RBUERO2 Auf'); }else { if ($EVTPART1 > 8000 ) { fhem('set Flur1,Flur2,RBUERO1,RBUERO2 Ab'); } } } } }
Erklärung
- Das define wird in der Kommandozeile im Webbrowser eingegeben.
- Anschliessend wird im Webbrowser die DEF bearbeitet, das erspart uns Probleme mit Perl
- define sv SolarView ... <==== ist die Schnittstelle vom SolarView
- define nt.sonnenlichtpersolar notify (sv:currentPower.*) { <==== hier wird ein notify angelegt, der auf das "define sv" Wert "currentPower.*" (.* ist irgendwas) reagiert
if ($EVTPART1 < 3000 ) { fhem('set Flur1 Auf'); }else { if ($EVTPART1 > 5000 ) { fhem('set Flur1 Ab'); } } }
Diese if-Funktion wertet den Rückgabewert von currentPower aus. Hierbei muss man wissen, dass $EVTPART1 das Splitergebnis vom Rückgabewert ist
Beispiel: Der Rückgabewert (wie im Beispiel) ist "currentPower: 6000". Jetzt steht im "$EVTPART0 == currentPower:" und im "$EVTPART1 == 6000" Das bedeutet, dass man sich nicht selbst den richtigen split (Perl Befehl) Aufruf ausdenken muss, dies übernimmt vielmehr Fhem.
Ergebnis: Das Rollo wird abhängig von der erzeugten IST_Strommenge auf und zu gefahren. Damit dies nicht dauernd hin und her pendelt, wurde der Auf Wert sehr klein und den Ab Wert sehr groß gewählt.
Optional 1: Der Block "my $hm = sprintf("%%02d:%%02d", $hour, $min);" erzeugt die String-Variable $hm mit dem Inhalt $hour:$min. %02d (wegen Fhem Besonderheit: %%02d) begrenzt die Ausgabe auf zwei Stellen. Danach wird mit "if ( $hm gt "09:30" && $hm lt "17:00")" mit stringvergleichende Operatoren geprüft, ob die Uhrzeit zwischen 9:30 und 17:00 liegt (lt = kleiner als; gt = größer als). Es wäre auch ein le und ge möglich: le = kleiner/gleich als, ge = größer/gleich als.
Optional 2:if( $month >= 6 && $month <= 9) {
Hier wird die numerische Fhem-Standard-Variable $month (Monat) auf größer/gleich bzw kleiner/gleich mit den binären Operatoren überprüft. Die Funktion arbeitet also nur zwischen dem 6. und dem 9. Monat und dann auch nur zwischen 9:31 und 16:59.
Hinweise
- Wird der Perl-Code in einem
notify
immer länger, lagere den Code wegen der Übersichtlichkeit in eine eigene Programmdatei aus, wie in 99_myUtils anlegen beschrieben. - Achtung! Wenn man das Skript für den notify-Befehl über mehrere Zeilen schreibt, muss man anscheinend darauf achten, dass keine abschliessende Leerzeile mitgespeichert wird. Sonst wird der notify-Befehl ignoriert.
Weiterführende Links
- Escapen in Perlbefehlen
- Klammerebenen
- DOIF als Alternative vereinigt die Funktionalität des notify-, at-, watchdog-Befehls in Kombination mit logischen Abfragen unter einem Dach