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:

  1. DURATION beginnt DURATION vor der aktuellen Zeit und endet zum aktuellen Zeitpunkt.

  2. DATETIME+DURATION beginnt zum Zeitpunkt DATETIME und dauert DURATION.

  3. 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.6. !mucJoin

Einem MUC beitreten

mucJoin bla@conference.host.org nickname!

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.


Letzte Änderung: 25.07.2023 07:06
Jens W. Wulf

Impressum
Datenschutzerklärung