Software
Eigene Regeln
Regeln sind die vierte Ebene der Logik. Sie überstimmen den Regler, aber nie einen Menschen im Handbetrieb und nie die Sicherheitsschicht.
Auf dieser Seite
Eine Regel ist ein Graph
Links stehen Bedingungen, in der Mitte Verknüpfungen, rechts Aktionen. Eine Regel hat höchstens 64 Knoten und 128 Verbindungen.
Bedingungen
| Bedingung | Gilt, wenn |
|---|---|
| Sensor | der Wert eines Kanals die Schwelle erreicht. Mit Hysterese, Mindestdauer und Verhalten bei fehlendem Wert. |
| Vergleich | Kanal A gegen Kanal B plus Abstand, etwa „innen mindestens 3 K wärmer als außen“ |
| Zeitfenster | Ortszeit im Fenster, an den gewählten Wochentagen und Monaten |
| Tag und Nacht | Tag oder Nacht, optional verschoben gegen Sonnenauf- und -untergang |
| Betriebsmodus | der Modus einer aus der Liste ist |
| Ausgang | ein Ausgang an oder aus ist, über oder unter einer Schwelle liegt oder einen bestimmten Zustand hat |
| Alarm | ein aktiver Alarm passt |
| Wetter | eine Kennzahl der Vorhersage für die nächsten Stunden die Schwelle erreicht |
| Ausdruck | der Ausdruck wahr ist |
Verknüpfungen
| Verknüpfung | Verhalten |
|---|---|
| und | wahr, wenn alle Eingänge wahr sind |
| oder | wahr, wenn mindestens einer wahr ist |
| nicht | kehrt um |
| Verzögerung | Einschalt- und Ausschaltverzögerung |
| Speicher | setzen und rücksetzen. Bei Gleichstand gewinnt voreingestellt das Rücksetzen. |
Aktionen
| Aktion | Wirkung |
|---|---|
| Ausgang setzen | Ausgang auf einen Wert, für eine Dauer. Voreingestellt 5 Minuten. |
| Modus setzen | Betriebsmodus des Standorts, einmal beim Eintreten |
| Sollwert verschieben | Sollwert eines Reglers für eine Dauer ändern, absolut oder als Versatz |
| Meldung | Meldung mit Titel, Text und Schwere, einmal beim Eintreten |
Eine Aktion wirkt auf Pegel oder auf Flanke. Bei Pegel wird der Befehl erneuert, solange die Bedingung gilt. Bei Flanke geht er einmal hinaus und läuft nach seiner Dauer ab.
Jede Regel hat außerdem eine Sperrzeit und eine Tagesgrenze. „Tank leer, höchstens einmal am Tag“ meldet also täglich einmal, solange der Tank leer bleibt.
Genau festgelegt
Hysterese
Die Hysterese ist ein Rückschaltabstand in der Einheit des Kanals. „Größer als 30, Hysterese 2“ wird bei 30,1 erfüllt und endet erst bei 28 oder weniger.
Fehlende Werte
Ein Wert fehlt, wenn es ihn nicht gibt, wenn der Sensor ausgefallen ist oder wenn der Wert älter als 10 Minuten ist. Je Bedingung lässt sich wählen, was dann gilt: nicht erfüllt, erfüllt oder der letzte Stand bleibt stehen.
Zeitumstellung
Zeitfenster rechnen in der Ortszeit des Standorts. Am Tag der Umstellung auf Sommerzeit gibt es die Stunde von 2 bis 3 Uhr nicht, ein Fenster dort gilt dann nie. Bei der Rückstellung gilt es zwei Stunden. Ein Fenster über Mitternacht gehört zu dem Tag, an dem es begonnen hat.
Handbetrieb
Schaltet ein Mensch einen Ausgang von Hand, sendet die Regel für diesen Ausgang nichts. Die Auslösung bleibt anstehen und kommt, sobald der Handbetrieb endet und die Bedingung noch gilt.
Ausdrücke
Für alles, was der Editor nicht abdeckt, gibt es eine eigene Ausdruckssprache mit deutschen Namen.
wert("k-innen") > 28 und guete("k-innen") == "ok"
wert("k-innen") - wert("k-aussen") >= 3
mittel("k-innen", 30) > 25 oder aenderung("k-innen", 10) > 4
vpd(wert("k-temp"), wert("k-feuchte")) > 1.2 und nicht nacht()
vorhersage_min(12) < 0 und modus() != "urlaub"
Die Sprache hat einen eigenen Parser mit Typprüfung. Sie nutzt weder eval noch eine andere Art,
fremden Code auszuführen. Ein Ausdruck kommt an nichts heran außer an die vorgesehenen Funktionen
und Werte.
| Funktion | Ergebnis |
|---|---|
wert, guete |
aktueller Wert und Güte eines Kanals |
mittel, min, max, aenderung |
Auswertung über die letzten Minuten |
abs, runden, begrenzen, wenn |
Rechnen und Auswählen |
stunde, minute, wochentag, tag, monat, nacht |
Ortszeit |
modus, ausgang, zustand |
Betriebsmodus, Stellwert und Zustand eines Ausgangs |
vpd, taupunkt |
Dampfdruckdefizit in kPa, Taupunkt in °C |
vorhersage_min, vorhersage_max, regen_wahrscheinlichkeit, regen_menge |
Wettervorhersage |
bekannt, ersatz |
Umgang mit unbekannten Werten |
Unbekannt
Ein Ergebnis kann unbekannt sein, etwa weil ein Sensor ausgefallen ist oder durch null geteilt
wurde. Unbekannt pflanzt sich fort. Als Bedingung gilt unbekannt als nicht erfüllt. Auch
nicht (wert("x") > 5) ist bei fehlendem Wert nicht erfüllt.
Fehler kommen mit Stelle: „Zeile 1, Zeichen 14: Klammer zu erwartet“. Ein Komma als Dezimaltrenner meldet der Parser mit einem verständlichen Hinweis.
Prüfen vor dem Scharfschalten
Eine Regel mit Fehlern lässt sich nicht scharf schalten.
| Stufe | Befund |
|---|---|
| Fehler | Kreis in den Verbindungen, Aktion ohne Eingang, Verweis auf etwas, das es nicht gibt, fehlerhafter Ausdruck |
| Warnung | Knoten ohne Verbindung, Wert außerhalb des Messbereichs, zwei Aktionen setzen dasselbe Ziel unterschiedlich |
Testlauf
Der Testlauf wertet eine Regel gegen aufgezeichnete Daten aus, so wie der Server es getan hätte. Er nennt jede Auslösung mit Zeitpunkt und Begründung und gibt Hinweise: nie ausgelöst, löst sehr oft aus, flattert, Daten fehlen.
Vorlagen
- Stoßlüften am Morgen
- Bei Frostgefahr Deckel zu und melden
- Licht aus, wenn es draußen hell genug ist
- Melden, wenn der Tank seit einer Stunde leer ist
- Nachts leiser lüften
- Weniger gießen, wenn Regen angesagt ist
Begründungen
Jede Aktion bekommt einen deutschen Satz, gebaut aus den Bedingungen, die das Ergebnis tragen:
Ausgang „Lüfter“ auf Stellwert 100 gesetzt, weil Temperatur Kammer A mit 31,2 °C über 30 °C liegt (seit 5 min).
Das ist die Grundlage für die Frage „Warum ging der Lüfter um 14:03 an?“.