Diese Texte wurden automatisch aus dem Bot extrahiert und nicht besonders für die Darstellung im Browser aufbereitet.
1. Allgemeine Hilfethemen
1.1. DURATION
DURATION ist ein bei manchen Frage- oder Kommandoscripten optionaler oder verpflichtender Parameter.
Es wird eine Zeit eingegeben, d.h. eine Zahl ohne Leerzeichen gefolgt von einem der Buchstaben s, m, h, d, w, die für Sekunden, Minuten, Stunden, Tage und Wochen stehen.
1.2. MUC
Um mich in einem MUC (einer XMPP/Jabber-Chatgruppe) zu benutzen, muss ich mit meinem Nickname angesprochen werden, d.h. der Nachricht muss NICKNAME ' oder 'NICKNAME: vorangestellt werden. Nachdem ein Nutzer mich einmalig direkt angesprochen hat, kann diese Ansprache von genau diesem Benutzer für eine bestimmte Zeit unterbleiben. Sollte ich mich dabei fälschlicherweise angesprochen fühlen, kann man mir mit ruhe, stop oder klappe anzeigen, dass ich mich nicht mehr angesprochen fühlen soll.
1.3. REGEX
REGEX bezeichnet einen regulären Ausdruck, zur Syntax siehe https://docs.python.org/3/library/re.html
Anstelle einer REGEX kannst Du natürlich auch direkt einen korrekten Namen angeben, auch der Anfang eines vorhandenen Namens ist bereits ein gültiger regulärer Ausdruck.
Die Suche mit regulären Ausdrücken beachtet Groß- und Kleinschreibung normalerweise nicht; das Verhalten kann mit
uSet user_u_SearchCaseSensitive 1!
uSet user_u_SearchCaseSensitive 0!
umgeschaltet werden.
An manchen Stellen versuche ich automatisch zu erkennen, ob Du mir eine REGEX oder einen bestimmten Namen sagen möchtest, denn manchmal ist der Unterschied wichtig. Wenn eines der Zeichen +*[] darin vorkommt, halte ich es für eine REGEX, andernfalls vielleicht nicht. Falls ich eine REGEX nicht als solche erkenne, kannst Du versuchen re: voranzustellen.
1.4. TIMESPAN
TIMESPAN ist die Definition einer Zeitspanne mit Start- und Endzeitpunkt, wobei es verschiedene Möglichkeiten gibt:
-
DURATION beginnt DURATION vor der aktuellen Zeit und endet zum aktuellen Zeitpunkt.
-
DATETIME+DURATION beginnt zum Zeitpunkt DATETIME und dauert DURATION.
-
DATETIME-DATETIME beginnt zum ersten definierten Zeitpunkt und dauert bis zum zweiten.
Für die Erklärung von DURATION siehe hilfe duration.
DATETIME ist [[[CC]YY]MMDD]hhmm, d.h. Stunde und Minute müssen immer (vierstellig) definiert sein, optional können Monat und Tag vorangestellt werden, ebenso das Jahr (auch nur zweistellig).
1.5. bot
Dieser Bot ist eine öffentliche Beispielimplementierung von http://www.jwwulf.de/en/progelec/pymsgbot_base/
Abgesehen von der Basisfunktionalität empfängt er ein paar Daten per mqtt und Du kannst sie ansehen, mit den vorhandenen Regeln überwachen, herunterladen und plotten.
Die derzeit verfügbaren Daten stammen aus Karlsruhe.
Außerhalb meines Hauses:
K3Lueft_T_0 Temperatur, °C
K3Lueft_T_TP_0 Taupunkt, °C. Der Wert ist üblicherweise zu groß
K3Lueft_RH_0 Relative Luftfeuchtigkeit, Prozent. Der Wert ist üblicherweise zu groß
K3Lueft_u12_3 Regensensor. <1950 bedeutet, dass er nass ist
Logger_P_PV Aktuelle Leistung der Photovoltaik-Anlage
Mome1_T_LUBW Temperatur
Mome1_T_LUBW_TP Taupunkt
Mome1_RH_LUBW Relative Luftfeuchtigkeit
Mome1_RegenSum_LUBW Niederschlagsmenge (Summe, die jeden Tag zurückgesetzt wird)
Beispielanwendung: der Bot soll eine Nachricht senden, wenn die Luftfeuchtigkeit einen bestimmten Grenzwert unter- oder überschreitet, damit man weiß, wann der feuchte Keller gelüftet werden könnte. Dazu vergleicht man jedoch nicht die Werte der Luftfeuchtigkeit innen und außen, sondern besser den Taupunkt.
Dazu wird ein Komparator benutzt (hilfe regel, hilfe .vComp), aber weil man dessen Syntax nicht auswendig kennt, erstellt man ihn mit wie folgt (Dialog zwischen Benutzer ibikk und dem Bot bex aufgezeichnet mit der Version vom 18.09.2021):
ibikk: vcomp!
bex: Ich stelle jetzt ein paar Fragen um den gewünschten Befehl ausführen zu können. Du kannst jederzeit durch Senden von abbruch abbrechen.
Instanziieren einer Komparator-Regel.
Name der neuen Komparator-Regel?
ibikk: kellerLueften
bex: Welcher Wert soll überwacht werden? Du kannst einen einzelnen aus den vorhandenen auswählen (siehe vlist) oder einen regulären Ausdruck verwenden um mehrere Werte gleichzeitig zu bearbeiten (siehe hilfe regex).
ibikk: K3Lueft_T_TP_0
bex: Der Wert K3Lueft_T_TP_0 bewegte sich in der letzten Woche zwischen 9.142 und 20.39, Mittelwert 15.45, aktueller Wert 14.29
Mit welcher Schwelle soll der Wert verglichen werden?
Du kannst die Schwelle später mit rSet ..kellerLueften.fTreshold SCHWELLE ! verändern.
ibikk: 14
bex: Wie groß soll die Hysterese sein? Auch sie kann nachträglich verändert werden.
ibikk: 3
bex: Alle Parameter sind bestimmt, jetzt wird
vComp kellerLueften K3Lueft_T_TP_0 14 3!
ausgeführt.
Erstelle einen Komparator, siehe hilfe .vComp: .vComp.kellerLueften K3Lueft_T_TP_0 14 3!
Die Regel .vComp.kellerLueften wurde angelegt.
Mit der Nachricht .vComp.kellerLueften K3Lueft_T_TP_0 14 3! wäre das auch ohne die ganze Unterhaltung gegangen.
Von nun an wird diese Regel immer eine Nachricht senden, wenn der neue Werte diese Schwelle (inkl. Hysterese) überschreitet. Schwelle und Hysterese können wie oben beschrieben verändert werden. Wenn man dazu die Syntax nicht kennt, sendet man einfach rSet! und wird durch den Prozess geführt.
Zusätzlich zu der Nachricht kann z.B. auch ein Plot erzeugt werden, wenn die Schwelle überschritten wird.
Das geht wieder per rSet! geführt oder auch direkt:
rSet ..kellerLueften.strCmd vPlot 24h K3Lueft_T_TP_0!
Auch mehrere Nachrichten/Befehle können automatisch abgesetzt werden,
indem eine einzelne Nachricht mit Zeilenwechseln gesendet wird:
rSet ..kellerLueften.strCmd
vPlot 24h K3Lueft_T_TP_0
vMin 8h K3Lueft_T_TP_0
vMax 8h K3Lueft_T_TP_0!
Mit ..kellerLueften.testcmd! kann man ausprobieren, ob diese Befehle wie gewünscht funktionieren ohne auf die Bedingung zu warten.
1.6. einstellungen
Die aktuellen Einstellungen kannst Du mit vList user_ anzeigen.
Mit uSet user_str_Emphasize *! kann man einstellen, dass manche Ausgaben hervorgehoben werden, mit uSet user_str_Emphasize ! kann es abgeschaltet werden.
Weitere Benutzereinstellungen kannst Du mit hilfe user_ finden.
1.7. frage
Alle verfügbaren Fragescripte kannst Du mit list q anzeigen lassen.
Im Gegensatz zu einem Kommandoscript hat die Ausführung eines Fragescriptes keine Änderung von irgendetwas zur Folge, Du bekommst lediglich eine Antwort.
Die Hilfe zu einem Fragescript mit dem Namen NAME erhältst Du mittels hilfe ?NAME, also z.B. hilfe ?list.
1.8. fragerunde
Manche Frage- und Kommandoscripte eröffnen einen einfachen Dialog, wenn sie ohne gültig erscheinende Parameter aufgerufen werden.
In diesem Dialog werden die Parameter abgefragt und wenn er beendet ist, wird das Script automatisch mit den ermittelten Parametern aufgerufen.
An jeder Stelle kann der Nutzer anstelle der gefragten Antwort auch mit abbruch den Dialog beenden. Falls dieses Wort an der Stelle auch eine gültige Antwort sein könnte, wird gefragt ob abgebrochen werden soll.
Ebenso wird nach mehreren aufeinanderfolgenden ungültigen Antworten gefragt, ob abgebrochen werden soll. Nach der Frage wird nur abgebrochen, wenn mit ja geantwortet wurde.
1.9. kommando
Alle verfügbaren Kommandoscripte kannst Du mit list c anzeigen lassen.
Ein Kommandoscript verändert üblicherweise irgendeinen Zustand des Bots oder anderswo, die entsprechende Nachricht muss mit einem Ausrufezeichen abgeschlossen werden.
Die Hilfe zu einem Kommandoscript mit dem Namen NAME erhältst Du mittels hilfe !NAME, also z.B. hilfe !vSub.
1.10. makro
Du hast die Möglichkeit Makros zu definieren. Dazu sendest Du zunächst die Nachrichten, die im Makro enthalten sein sollen und anschließend mSave!, was Dich interaktiv durch die Erstellung des Makros führt.
Ein Makro kann auch Argumente/Parameter haben.
Benutze ?mList um Makros aufzulisten/anzuzeigen und !mDel um sie zu Löschen.
Vorsicht: Makros können Fragen und Kommandos verdecken.
1.11. nachrichten
Wer der Nachrichtenübertragung seines Messengers nicht traut, kann jeder Nachricht Zusatzdaten anhängen. Mit
uSet user_u_MsgAddTXCnt 1!
wird eine Zahl (0..9, dann wieder ab 0 usw) in eckigen Klammern angehängt. Mit
uSet user_u_MsgAddTime 1!
kommt noch die Uhrzeit dazu, falls seit der letzten Nachricht mindestens eine Minute vergangen ist. Mit
uSet user_u_MsgAddInFrontOf 1!
kann man die Daten stattdessen vor die Nachricht stellen. Üblicherweise sind alle drei Werte 0 (ausgeschaltet).
1.12. regel
Regeln sind mächtiger als Frage- und Kommandoscripte, weil sie auch automatisch zeitgesteuert oder bei Veränderung von Werten aktiv werden können.
Die für Dich verfügbaren Klassen von Regeln kannst Du mit rList a sehen, die von Dir gestarteten mit rList r.
Sende .KLASSENNAME um alle aktiven Regeln dieser Klasse anzuzeigen.
Von den meisten Regeln kannst Du mehrere Instanzen anlegen, die sich jedoch eindeutig durch ihre Namen unterscheiden müssen. Eine Regel der Klasse KLASSENNAME mit dem Namen REGELNAME wird angelegt durch
.KLASSENNAME.REGELNAME !
Es kann sein, dass eine Regel beim Anlegen Parameter verlangt; es wird in ihrer Hilfe (hilfe .KLASSENNAME) beschrieben.
Du kannst eine Regel mit
.KLASSENNAME.REGELNAME.delete!
oder
..REGELNAME.delete!
löschen.
Viele Regeln haben Parameter, die auch nach dem Anlegen noch veränderbar sind. Mit
.KLASSENNAME.REGELNAME
oder
..REGELNAME
kannst Du Dir zeigen lassen, welche Parameter und aufrufbare Kommandos eine Regel kennt.
Einen Regelparameter kannst Du mittels
rSet ..REGELNAME.PARAMETERNAME WERT !
oder
rSet!
setzen. Wie bei den vorher gezeigten Befehlen ist KLASSENNAME optional, wenn es um eine bestimmte Instanz einer Regel geht.
Parameter der Regeln lassen sich nicht so wie Werte/Messgrößen einzeln oder per regex abfragen, auch haben sie keine Vergangenheitswerte.
Zu vielen Regeln gibt es gleichnamige Kommandoscripte, welche durch Fragen geführt beim Anlegen einer Regel helfen, so dass die Syntax dazu nicht bekannt sein muss.
1.13. sprache
Du kannst meine Sprache verstellen, z.B. durch
uSet user_str_Language en!
1.14. totp
Als Sicherung vor unbeabsichtigten Veränderungen am System kann eine Art Schreibschutz aktiviert werden, der vor der Ausführung von Kommandoscripten und der Instanziierung von Regeln abgefragt wird.
Es wird eingeschaltet mit
uSet user_str_TOTPSecret GEHEIMNIS force!
wobei GEHEIMNIS base32-kodiert sein muss (Gruppen aus acht Zeichen A-Z und 2-7). Bei Bedarf wird dann ein Passcode abgefragt, der aus diesem Geheimnis abgeleitet ist (TOTP, 6 Zeichen, SHA1, Intervall 30 Sekunden).
Wenn eine systemweite Regel installiert wurde, ist danach die Codeabfrage für eine bestimmte Zeit unterdrückt, Änderungen also freigegeben. Ohne diese Regel sind Änderungen ohne Codeabfrage möglich, bis userTOTPExpire ausgeführt wird.
Die Sicherung wird durch
uSet user_str_TOTPSecret 0 force GEHEIMNIS!
wieder abgeschaltet.
Eine App wie FreeOTP+ (https://f-droid.org/de/packages/org.liberty.android.freeotpplus/) kann benutzt werden um Passcodes zu erzeugen.
1.15. wert
Dieser Bot kennt Werte/Messgrößen, die sich durch ihren Namen, den aktuellen Wert und Werte aus der Vergangenheit auszeichnen.
Alle derzeit bekannten kannst Du Dir mittels vList oder vList .+ anzeigen lassen. Im letzten Fall wird dabei ein regulärer Ausdruck benutzt, siehe hilfe regex.
Weitere Frage- und Kommandoscripte, die direkt mit Werten umgehen, kannst Du dir mit list v.+ anzeigen lassen.
Es gibt Werte die jedem Benutzer einzeln zugeordnet sind; ihre Namen beginnen mit user_. Du kannst sie mit vList user_ anzeigen lassen. Sie haben keine Vergangenheitswerte und dienen dazu, irgendwelches Verhalten des Bots einzustellen.
Wenn Du sehr häufig Werte abfragst und keine Schwierigkeiten mit der Benutzung des Bots hast, kannst Du den Befehl vList als zu benutzen eintragen lassen, wenn der Bot ansonsten nichts mit Deiner Nachricht anzufangen weiß:
uSet user_str_DefaultQuestion vList!
Dann kannst Du anstelle vList .+, vList user_ und anderer Befehle einfach .+ oder user_ senden.
2. scr_question
2.1. ?adminHelp
Zeigt Informationen für den Admin des Bots
2.2. ?adminHelpExport
Sämtliche Hilfe in eine Datei exportieren.
2.3. ?adminTestPlotLimits
Vorsicht, die Ausführung ist aufwendig und dauert lange! Erzeugt viele Plots mit verschiedenen Einstellungen um Grenzen zu bestimmen. Um alle Tests auszuführen, muss es mit dem Parameter -1 aufgerufen werden.
2.4. ?extRead
Zeigt Dateiinhalte an
Beispiele:
extRead .vSub
extRead ?help
extRead !vSet
Als optionalen zweiten Parameter kann man das Encoding der Datei angeben, z.B. latin1.
2.5. ?help
Hilfe zur Benutzung dieses Bots
2.6. ?hilfe
Hilfe zur Benutzung dieses Bots
2.7. ?list
Listet Frage- und Kommandoscripte
list [q] [c] [REGEX]
Optional nur Frage- oder nur Kommandoscripte und/oder welche, deren Name zu einer bestimmten REGEX passt. Beispiele:
list
list q
list c
list q v.+
list c .Set
2.8. ?mList
Listet Makros
mList [REGEX]
Listet Makros auf oder zeigt welche an, deren Name auf die optionale REGEX passt.
2.9. ?pLuft
Plotten mancher Aussenmesswerte, Zeit als Argument.
2.10. ?ptp
Zeigt Taupunktverlauf, Zeit als Argument.
2.11. ?rList
Listet Regeln
rList [r] [a] [REGEX]
Optional nur verfügbare (*a*vailable) oder laufende (*r*unning). Optional mit einer REGEX filtern. Beispiele:
rList
rList r
rList a
rList a timer.+
2.12. ?userInfo
Zeigt Informationen über Benutzer
Aufruf mit oder ohne Benutzername als Argument. Bei Angabe eines unbekannten Nutzers wird die Liste der Nutzer ausgegeben.
2.13. ?userTOTPExpire
Beendet eine vorübergehende Schreiberlaubnis
Siehe hilfe totp. Diese Funktion ist bewusst als Fragescript ausgeführt, obwohl sie einen Zustand verändert.
2.14. ?vDatafile
Sendet Werteverläufe als Textdateien
Die Syntax und Bedeutung der Parameter ist wie bei vPlot, see hilfe ?vPlot
2.15. ?vExplore
Verfügbare Geräte und Größen erkunden
vExplore devices [REGEX]
Zeige Geräte an, deren Name auf die optionale REGEX passt.
vExplore values [REGEX [REGEX]]
Zeige die Werte von Geräten an, wobei der Gerätename auf die erste optionale REGEX passt. Die zweite REGEX schränkt die anzuzeigenden Werte ein.
Es wird die Liste der gefundenen Geräte angezeigt und dann eine Liste der Werte, die bei mindestens einem der Geräte vorkommen, zusammen mit der Anzahl der Geräte, bei welchen dieser Wert vorkommt.
2.16. ?vInfo
Zeigt Detailinfos über Werte an.
vInfo REGEX
2.17. ?vList
Zeigt Werte
vList [REGEX]
Zeigt den aktuellen Zahlenwert von einem oder mehreren Werten, der Namen auf REGEX passen.
2.18. ?vMax
Zeigt den Maximalwert innerhalb eines definierten Zeitraums
vMax TIMESPAN REGEX
2.19. ?vMin
Zeigt den Minimalwert innerhalb eines definierten Zeitraums
vMin TIMESPAN REGEX
2.20. ?vPlot
Zeichnet einen Graphen eines Werteverlaufs
vPlot [zip] [to TARGET] TIMESPAN REGEX […] [ ; REGEX […] ]
zip führt zur Lieferung der Dateien in einem zip-Archiv
TIMESPAN siehe hilfe timespan
Mehrere Werte können in einem Graphen dargestellt werden. Ein Semikolon beginnt einen neuen Graphen.
Außer den rohen Daten (REGEX) können auch modifizierte Daten geplottet werden, dazu gibt es folgende Funktionen (die nicht geschachtelt werden können):
none(REGEX) erzwingt unveränderte Daten
stairauto(REGEX) automatische Darstellung von Treppenstufen abhängig von der Anzahl der Datenpunkte
staircase(REGEX) um Treppenstufen zu erzwingen
diffinterval(REGEX,DURATION) ist keine wirkliche Ableitung...
chgvis(REGEX,LEVEL) zeigt einen unveränderten Wert als LEVEL an, eine Änderung als LEVEL+1. Bei dieser Funktion wird man in der Regel nur einen Wert pro LEVEL benutzen, damit man auch noch etwas erkennen kann.
3. scr_cmd
3.1. !adminReload
Möglichst viele Dateien erneut einlesen ohne den Bot neu zu starten.
3.2. !echo
Antwortet mit dem, was Du schreibst
echo BLA BLUBB UND ÜBERHAUPT!
3.3. !extWrite
(Über)schreibt oder löscht eine Erweiterungsdatei
Dazu muss eine Nachricht mit Newlines versendet werden, der Dateiinhalt steht ab der zweiten Zeile. Beispiel:
extWrite .neueRegel
erste Zeile
zweite Zeile
letzte Zeile!
Wie üblich beginnen rules mit ., Fragescripte mit ? und Kommandoscripte mit !, siehe hilfe extRead.
Das abschließende Ausrufezeichen wird nicht in die Datei geschrieben, es ist das Zeichen für den Kommandoaufruf.
Damit die Datei wieder überschrieben werden kann, sollte folgende Methode nicht vergessen werden (zweiter Rückgabewert True!).
def GetAccessInfo(self):
return (['admin'], True, 1)
Der dritte Rückgabewert ist nur für rules von Bedeutung und gibt die für einen Benutzer erlaubte Anzahl von Instanzen dieser Rule an.
Wenn man eine Datei löschen möchte übergibt man keinen Inhalt. Beispiel:
extWrite ?rList!
3.4. !mDel
Ein Makro löschen
mDel MACRONAME!
3.5. !mSave
Interaktiv ein Makro aus vorherigen Nachrichten erstellen
3.7. !rSet
Beschreibt eine Eigenschaft einer Regel
rSet!
rSet ..REGELNAME.EIGENSCHAFTSNAME WERT!
rSet .REGEL_KLASSENNAME.REGELNAME.EIGENSCHAFTSNAME WERT!
3.8. !su
Als anderer Benutzer handeln
su USERNAME !
3.9. !timerDaily
Hilft bei der Instanziierung einer Timer-Regel .timerDaily
3.10. !timerPeriod
Hilft bei der Instanziierung einer Timer-Regel .timerPeriod
3.11. !uSet
Setzt den Wert einer Benutzervariablen
uSet EIGENSCHAFTSNAME WERT!
Wenn es sich bei der Variablen um eine Zeichenkette handelt, kann man sie auch durch Weglassen des zweiten Parameters löschen, z.B. uSet user_str_Emphasize!
3.12. !userAdd
Einen Benutzer anlegen
Zum Beispiel userAdd xmpp:heinz@mustermann.de! Eine Einladung wird an diesen Benutzer gesendet.
3.13. !userDel
Einen Benutzer löschen
Zum Beispiel userDel xmpp:heinz@mustermann.de!
3.14. !userPermission
Benutzerrechte editieren
Erstes Argument: Benutzername
Zweites Argument: Rechteänderung. - entfernt alle Berechtigungen, + fügt alle des aufrufenden Nutzers hinzu. Mehrere Änderungen können in einem Aufruf durchgeführt werden.
Beispiel: userPermission xmpp:user@host -,+vSet,+extRead!
+admin erlaubt alles.
3.15. !vComp
Hilft beim Instanziieren eines Komparators
Siehe hilfe .vComp
3.16. !vDelete
Löscht einen Wert
vDelete REGEX !
3.17. !vSet
Einen Wert beschreiben.
Beschreibt einen Wert mittels
vSet WERT_NAME WERT!
3.18. !vSub
Hilft beim Instanziieren/Verändern einer Subscription
vSub REGEX [BEDINGUNG] [RUHEZEIT] as REGELNAME
Dieses Kommando erzeugt eine Subscription .vSub.REGELNAME oder sorgt dafür, dass eine bestehende Regel mit dem Namen REGELNAME bestimmte Einstellungen aufweist.
Siehe hilfe .vSub
4. rules
4.1. .TOTP_decAllowedTics
Periodic timer tic for TOTP token expiry
This is needed in context of help totp. Calls GD.TOTP_decAllowedTics() every ten seconds, which makes a temporary write permission expire after 10 seconds multiplied by nInitAfterTOTP (taken from the config file, section writeenable).
4.2. .adminSaveHistory
Regelmäßig die Werte-Historie speichern
Ohne Parameter instanziieren oder mit einer Zeiten-Liste: .adminSaveHistory.REGELNAME 1:30,7:30,13:30,19:30!
..REGELNAME.save! sichert die Daten sofort.
4.3. .adminSaveUsers
Regelmäßig Benutzerdaten speichern
Ohne Parameter instanziieren oder mit einer Zeiten-Liste: .adminSaveUsers.REGELNAME 1:30,7:30,13:30,19:30!
..REGELNAME.save! sichert die Daten sofort.
4.4. .ping
Regelmäßig eine Nachricht senden
Bei der Instanziierung kann ein optionaler Parameter die Zeit zwischen zwei Nachrichten angeben. Die Nachricht kann nicht parametriert werden. Siehe hilfe .timerPeriod für mehr Funktionalität.
4.5. .sendPresence
Sendet eine Nachricht bei Änderung der XMPP presence
4.6. .timerDaily
Zu einer Uhrzeit einen Befehl ausführen und optional an folgenden Tagen wiederholen
Erstes Argument: Zeit als hh:mm
Zweiter Parameter: Anzahl der Ausführungen (-1 für unendlich)
Weitere Parameter: der auszuführende Befehl
Alle Eigenschaften können hinterher verändert werden. Beispiel:
.timerDaily.test 13:12 1 echo This is a test.!
..test.set 12:13!
rSet ..test.nDays 31!
Die Eigenschaft nDays ist die Summe aus 1,2,4,8,16,32,64, die für Montag, Dienstag, …, Sonntag stehen. Somit bedeutet 1+2+4+8+16=31 Montag bis Freitag, 32+64=96 steht für Samstag und Sonntag.
Siehe hilfe .timerPeriod wie der auszuführende Befehl definiert und getestet werden kann und wie man mehrere Befehle definiert.
Das Kommando timerDaily! bietet interaktive Hilfestellung zum Erzeugen einer Regel dieser Klasse.
4.7. .timerPeriod
Verzögerte Ausführung eines Befehls mit optionaler Wiederholung
Erstes Argument: Zeit bis zur Ausführung
Zweiter Parameter: Anzahl der Ausführungen (-1 für unendlich)
Weitere Parameter: der auszuführende Befehl
Alle Eigenschaften können hinterher verändert werden. Eine veränderte Zeit wird erst nach einer Ausführung oder nach ..REGELNAME.reset! wirksam. Letzteres setzt den Timer zurück.
Der auszuführende Befehl kann mittels
rSet ..REGELNAME.strCmd NEUER_BEFEHL!
gesetzt werden.
Es kann mehr als ein Befehl zur Ausführung definiert werden, indem eine mehrzeilige Nachricht gesendet wird. Beispiel:
rSet ..REGELNAME.strCmd
echo Hallo Welt!
vList!
oder
rSet ..REGELNAME.strCmd
vList
echo Hallo Welt!!
Das letzte Ausführungszeichen gehört zu rSet.
Die Befehlsausführung kann mit ..REGELNAME.testcmd! getestet werden.
Ein weiteres Beispiel: ein verzögerter Plot nachdem ein Wert eine Schwelle überschritten hat:
.vComp.ShowWarmDelayed K3Lueft_T_0 20 3!
rset ..ShowWarmDelayed.strCmd .timerPeriod.DelayedPlot 30m 1 vPlot 3h K3Lueft_T_0!!
Das Kommando timerPeriod! bietet interaktive Hilfestellung zum Erzeugen einer Regel dieser Klasse.
4.8. .vComp
Eine Aktion ausführen wenn ein Wert eine Schwelle überschreitet
Für diese Regel gibt es noch keinen Hilfetext, aber ein hilfreiches Kommandoscript vComp!.
Einen Befehl zur Ausführung setzen/testen: siehe hilfe .timerPeriod:
..REGELNAME.vList zeigt die überwachten Werte
Das Kommando vComp! bietet interaktive Hilfestellung zum Erzeugen einer Regel dieser Klasse.
4.9. .vSub
Eine Aktion bei Änderung eines Wertes
Instanziierung mit .vSub.REGELNAME REGEX [BEDINGUNG] [RUHEDAUER] !
Diese Regel überwacht einen oder mehrere Werte (durch REGEX definiert) und sendeteine Nachricht, wenn ihre Änderung BEDINGUNG entspricht. Eine Änderung innerhalb von RUHEZEIT nach einer vorigen Nachricht führt nicht zu einer Aktion.
Wenn BEDINGUNG nicht gegeben ist, wird . angenommen:
. Bei jeder Änderung wird benachrichtigt.
= Es wird auch benachrichtigt, wenn der Wert nur beschrieben wird ohne sich dabei zu verändern.
<WERT Wenn der neue Wert kleiner als WERT ist.
>WERT Wenn der neue Wert größer als WERT ist.
<<WERT Wenn der neue Wert kleiner als WERT ist und der vorige größer war.
>>WERT Wenn der neue Wert größer als WERT ist und der vorige kleiner war.
RUHEZEIT: siehe hilfe duration
Einen Befehl zur Ausführung setzen/testen: siehe hilfe .timerPeriod:
..REGELNAME.vList zeigt die überwachten Werte
Wenn ..REGELNAME.liststrOnlySendWhenPresence nicht leer ist, wird die Aktion nur ausgeführt, wenn die XMPP presence einem der gelisteten Werte entspricht, z.B. rSet ..REGELNAME.liststrOnlySendWhenPresence available,away!
Die Regel kann vorübergehend mit rSet ..REGELNAME.nMuted 1! ruhiggestellt werden.
Das Kommando vSub! bietet interaktive Hilfestellung zum Erzeugen einer Regel dieser Klasse.