UPGRADE IP 9 verfügbar!
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ

NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074

4.6.1_ Einleitung zum Logikeditor und -engine

Beschreibung: Allgemeines zu Logik am TWS

Kategorie: Logiken

Link zu diesem Beitrag: Alles auswählen

[url=https://forum.timberwolf.io/app.php/kb/viewarticle?a=91&sid=b472095d50084e9eb39b701d0f7f0188]Knowledge Base - 4.6.1_ Einleitung zum Logikeditor und -engine[/url]

Wiki: https://elabnet.atlassian.net/l/cp/Ba5Z2Xe7

Der Timberwolf Logikeditor hat vielseitige Funktionen, die in diesem und den folgenden Kapiteln beschrieben werden, wie zb:
  • Erstellen von einfachen Logiken inkl. Benennung und Beschreibungstexten
  • Verknüpfen der Logikzellen mit beliebigen (geeigneten) Objekten
  • Kombination von Standard-Logikbausteinen mittels Custom-Logik
  • Umfassende Analysemöglichkeiten mittels Doctor-Modus und Grafana
Jede der angelegten Logiken lässt sich unabhängig von allen anderen Logikzellen einzeln stoppen, starten und verändern. Zusätzlich kann man das Trigger- bzw. Sendeverhalten der Logik konfigurieren, Ein- und Ausgänge live abkoppeln und im Doktormodus umfangreiche Analysemöglichkeiten inkl. Datenaufzeichnung nützen, was ebenfalls Alleinstellungsmerkmale sind.

  1. Erstellen einer einfachen UND-Logik

    Im Logik-Übersichtsmenü kann mittels "+Add Logic" eine Logik hinzugefügt werden:

    Bild
      Es öffnet sich ein Fenster in dem der gewünschte Logikbaustein ausgewählt werden kann:

      Bild
        Nach der Auswahl kann die Logik mit Namen und Beschreibungstext versehen werden. Die Eingaben können später jederzeit editiert und ergänzt werden. Das Erstellen wird mit dem Button "+Create Logic" abgeschlossen.

        Bild
          Danach erscheint eine Logikzelle mit entsprechenden Ein- und Ausgängen im Status NEW (blaues Feld).

          Bild
            Hinweis: Direkt nach der Anlage empfiehlt sich ein erstes Speichern, da ansonsten die Logikzelle beim Seitenreload verloren geht. Der Status wechselt dann auf OK (in grün) und es wird eine ID für die Logik vergeben, siehe nächste Abbildung.
            • Verknüpfen der Ein- und Ausgänge mit Objekten

              Nach dem Anlegen der Logikzelle müssen die entsprechenden Ein- und Ausgänge mit Objekten verknüpft werden. Nach dem Anklicken eines Ein- oder Ausganges öffnet sicher der DOS (Dispatcher Object Selector), mit dem ein beliebiges Objekt zugeordnet werden kann.
              Die Suche erfolgt dynamisch bei Eingabe im gewählten Quellsystem (KNX, 1-wire, Modbus, DMX, etc.). Durch Auswahl eines Objektes in den Suchergebnissen und Bestätigung wird das Objekt verknüpft.

              Hinweise:
              • Die Logik Engine legt automatisch für jeden Ausgang ein "LE"-Objekt an, welches direkt als Eingang in weiteren Logiken verwendet werden kann (Verknüpfung mittels DOS). Um einen Ausgangswert LE-intern weiter zu verarbeiten, ist es also kein "Muss", selber ein Ausgangsobjekt anzulegen und oder einen Umweg über ein KNX-Objekt zu gehen. Nur wenn ein Ausgangswert außerhalb der Logikengine verwendet werden soll (z. B. an KNX senden oder in eine Time Series schreiben) muss ein entsprechendes Objekt verknüpft werden.
              • 1-wire Objekte können direkt am TWS angelegt und editiert werden (siehe xxx Object Editor), jedes KNX Objekt muss über die ETS angelegt und programmiert werden (aufgrund der zertifizierten KNX Schnittstelle am TWS). Zusätzlich empfiehlt sich der Projektimport, damit die Beschreibungen richtig angezeigt werden.
              Bild
                Weitere Eingänge können mit dem "+"-Zeichen ergänzt werden. Dazu auf + klicken und Input für einen zusätzlichen Eingang auswählen.

                Bild
                  Der Ausgang der Logik wird mit dem gleichen Vorgehen zugewiesen. Nach dem erneuten Speichern sollte die Logikzelle wie folgt aussehen.

                  ACHTUNG: Standardmäßig wird eine Logikzelle direkt mit dem Speichern aktiviert und reagiert entsprechend den Einstellungen auf eingehen Telegramme und sendet gegebenenfalls auf die Ausgangsobjekte!!!

                  Bild
                  • Optionen für Eingänge festlegen
                    Für jedes Eingangsobjekt stehen je nach Art des Einganges verschiedene Optionen zur Verarbeitung vor der Übergabe in die Logikzelle zur Verfügung:
                    • Parameter: Definiert für einen Eingang einen Konstanten Wert.
                    • Innerhalb Bereich: Prüft ob der Eingangswert im Bereich liegt (wenn ja, dann bekommt der Eingang den Zustand "true", sonst "false").
                    • Schwellwert unter: Wird der Schwellwert unterschritten, dann nimmt der Eingang den Zustand "true" an.
                    • Schwellwert über: Wird der Schwellwert überschritten, dann nimmt der Eingang den Zustand "true" an.
                    • Schwellwert mit Hysterese: Wird die obere Grenze überschritten, dann nimmt der Eingang den Zustand "true" an, beim Unterschreiten des unteren Grenze schaltet der Eingang auf "false". Dazwischen verbleibt der Eingang im bisherigen Zustand.
                    Bild
                    • Optionen für Ausgänge festlegen
                      Für jedes Ausgangsobjekt stehen je nach Art des Ausganges verschiedene Optionen zur Verarbeitung nach der Berechnung vor Ausgabe an die Ausgangsobjekte zur Verfügung:
                      • Mapping: Damit kann den Werten true/false ein beliebiger Wert zB Szenennummer oder Float-Zahl zugeordnet werden.
                      • Einschaltverzögerung: Das Einschalten von 0 auf 1 wird um eine definierte Zeit verzögert gesendet.
                      • Ausschaltverzögerung: Das Ausschalten von 1 auf 0 wird um eine definierte Zeit verzögert gesendet.
                      • Ein- und Ausschaltverzögerung: Das Umschalten von 0 auf 1 und 1 auf 0 wird verzögert. Es können getrennte Verzögerungszeiten für das Ein- bzw. Ausschalten definiert werden.
                      Bild
                      • Ausführungsverhalten der Logik

                        Die Neuberechnung der Logik wird ausgelöst, wenn:
                        • sich mindestens ein Eingangssignal ändert (abhängig von der festgelegten Trigger-Option am jeweiligen Eingang), oder
                        • mindestens ein eigener Triggereingang betätigt wird
                        Hinweis:
                        Parameter haben keinen Trigger, der die die Ausführung der Logik anstoßen könnte. Daher führt eine Wertänderung eines Parameters im Doktor-Modus auch nicht zu einer Neuberechnung der Logikzelle.
                        Die korrekte Vorgehensweise ist die Anpassung des Wertes in der Eingabemaske des Parameters und speichern der Logik.

                        Die Trigger-Optionen an den Eingängen bestimmen, wann ein Signal am Eingang die Berechnung der Logikzelle anstößt. Durch Anklicken
                        des Buchstabens kann aus den möglichen Optionen gewählt werden:
                        • "a" (always): Jedesmal wenn ein Telegramm am Eingang empfangen wird.
                        • "c" (on change): wenn ein Telegramm mit geändertem Wert empfangen wurde
                        • "u" (update only): kein Trigger der Logikzelle, aber der Wert wird in die Logik übernommen. Wird die Logik durch einen anderen Eingang oder Trigger später ausgeführt, wird der letzte an diesem Eingang empfangene Wert verwendet.
                          "u" ist eigentlich selten notwendig, insbesondere aber, wenn ein Objekt mehrfach an eine Zelle angeschlossen ist zB. Eingang + Inhibit.
                        Die Sende-Optionen bestimmen, wann ein Wert am Ausgang gesendet wird. Die Umschaltung erfolgt wiederum durch Klick auf den Buchstaben. Mögliche Optionen:
                        • "a": jedesmal (always)
                        • "c": nur bei Wertänderung
                        • "t": wenn ein Timer abgelaufen ist (on timer)
                        Die Option "t" ist nicht selektiv, d.h. werden mehrere Timer in einer Custom Logik verwendet, dann führt jeder abgelaufene Timer dazu, dass der Ausgang gesendet wird. Zu beachten ist, dass bei Verwendung eines Timers die Berechnungen weiterhin durchgeführt werden (abhängig von der Optionen der Eingänge), nur eben nichts gesendet wird. Mögliche Timer-Module sind:
                        • Monoflop (single shot timer): Triggert nach Ablauf der Zeitdauer
                        • Clock (zyklischer Timer) : Triggert jedesmal nach Wechsel des Taktzustandes
                        • Cron (Uhrzeit abhängiger Timer): Triggert jedesmal bei erreichen der eingestellten Zeit(en)
                        Mit den o.g. Optionen können die meisten Anwendungsfälle abgedeckt werden.
                        • Erstellung eines Triggers

                          In manchen Fällen (zB Logikzelle ohne Eingangsobjekt) ist die Ausführung der Logikzelle durch einen Zeit-Trigger erwünscht. Dieser wird mit dem "+"-Symbol angelegt:

                          Bild
                            Danach muss am Triggereingang das entsprechenden Verhalten festgelegt werden. Es stehen folgende Optionen zur Verfügung:
                            • Intervall: zyklisches Senden
                            • Data Value: Zusätzliches Eingangsobjekt, dass als Trigger dient.
                            • Zeit: Trigger zu einem bestimmten Zeitpunkt (auswählbar Wochentage und Uhrzeit)
                            Bild
                              Spätestens an dieser Stelle sollte die Logik erneut gespeichert werden.
                              • Bearbeiten und Löschen von Triggern oder Eingängen

                                Durch Anklicken der Benennung des Einganges kann dieser zB invertiert werden. Zusätzlich kann ein manuell hinzugefügter Eingang oder Trigger jederzeit wieder gelöscht werden.

                                Bild
                                • Aktivieren und Pausieren der Logik

                                  Jede der angelegten Logiken lässt sich unabhängig von allen anderen Logikzellen einzeln stoppen, starten und verändern.
                                  Durch drücken des Play/Pause Buttons kann die Logik aktiviert bzw. pausiert werden. Nach dem Aktivieren ist die Logik unmittelbar scharf und reagiert auf eintreffende Telegramme entsprechend dem gewählten Ausführungsverhalten des jeweiligen Einganges.

                                  Wenn die Logik angehalten ist, werden keine Werte mehr an den Eingängen übernommen, d.h. die Logik hat nach der "Pause" dieselben Werte, wir vor der "Pause". Die Logikzelle wird nicht mehr berechnet und natürlich werden keine Werte gesendet.

                                  Will man die Logik "anhalten", aber die Werte an den Eingängen sollen zwischenzeitlich aktualisiert werden, geht das mit dem "Inhibit"-Eingang, der durch Drücken des "+" (auch mehrfach) hinzugefügt werden kann.

                                  Bild
                                  • Temporäres Abkoppeln von Ein- und Ausgängen von der Logikzelle

                                    Jeder Ein- und Ausgang kann durch einen Klick auf das Stecker-Symbol vom Quell- oder Zielobjekt abgekoppelt werden.

                                    Gekoppelt: Bild / Abgekoppelt: Bild (Zum Wechseln der Zustände auf das Symbol klicken)

                                    Damit kann Beispielsweise das Verhalten der Logik im Doktormodus beobachtet werden, ohne dass das Ergebnis der Logikzelle auf das Zielobjekt geschrieben wird. Gleiches gilt für abgekoppelte Eingänge. In diesem Fall triggert ein eintreffender Wert die Ausführung der Logik nicht bzw. wird der empfangene Wert auch nicht in die Logik übernommen.

                                    Ein Beispiel mit abgekoppelten Ausgang ist im Bild des nachfolgenden Abschnittes "Doktormodus" zu sehen.
                                    • Doktormodus

                                      Durch Anklicken des Stethoskop-Symbols wird der Doktormodus der Logikzelle aktiviert. Damit werden die aktuellen Eingangs- und Ausgangswerte live dargestellt, durch Klick auf das Vergrößerungssymbol wird für jeden Wert auch der zeitliche Verlauf dargestellt.

                                      Bild
                                        ACHTUNG: für versierte Anwender:
                                        Im Doktormodus können zu Analysezwecke alle Ein- und Ausgänge händisch überschrieben werden. Da dies am laufenden System erfolgt, ist entsprechende Vorsicht geboten. Weiters liegt es im Ermessen des Anwenders, ob dies bei an- oder abgekoppelten Ein- oder Ausgängen geschieht bzw. ob nach dem Überschreiben ein Wert vor dem Beenden des Doktormodus wieder manuell auf den Ursprungswert gesetzt wird oder der gesetzte Wert erst durch den nächsten empfangenen Wert überschrieben wird.


                                        Bild

                                        ACHTUNG: für versierte Anwender:
                                        Weiters ist zu beachten, dass Konstanten an Eingängen nur beim Speichern in die Logikberechnung übernommen werden. Dies gilt inbesondere auch für den Doktormodus.
                                        Werden im Doktormodus Werte Live überschrieben (mittels Vergrößerungssymbol), so muss der gewünschte Wert am Ende in das grüne Feld manuell übernommen werden und die Logik gespeichert werden.


                                        Bild