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

Bedingungen Verknüpfung Aktion Sensor Temperatur Kammer A größer als 30 °C Hysterese 2 K mindestens 5 min Tag und Nacht Tag ohne Verschiebung Verknüpfung und beide wahr Ausgang setzen Lüfter A Stellwert 100 % Dauer 5 min auf Pegel
Beispiel: Ist es in Kammer A fünf Minuten lang wärmer als 30 °C und nicht Nacht, läuft der Lüfter mit 100 %.

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?“.

    Durchsucht alle Seiten. Die Suche läuft im Browser, nichts wird übertragen.