# Regelkette konfigurieren

## Übersicht

<div data-full-width="true"><figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/vFN1Y1OCxVzsmvIglVTT/Rule%20chain%20konfig.png" alt=""><figcaption></figcaption></figure></div>

<table data-full-width="true"><thead><tr><th width="95"></th><th width="223"></th><th></th></tr></thead><tbody><tr><td><strong>[A]</strong></td><td>Kette Starten/Stoppen</td><td><strong>Startet oder stoppt</strong> die aktuelle Regelkette.</td></tr><tr><td><strong>[B]</strong></td><td>Trigger</td><td>Wählen Sie aus, ob der Trigger <strong>ereignisbasiert</strong> oder <strong>zyklusbasiert</strong> sein soll. <a href="#trigger">-> Trigger</a></td></tr><tr><td><strong>[C]</strong></td><td>Trigger Einstellung</td><td>Hier kann der <strong>Trigger konfiguriert</strong> werden. <a href="#trigger">-> Trigger</a></td></tr><tr><td><strong>[D]</strong></td><td>Code Ansicht</td><td>Zeigt die <strong>Code-Ansicht</strong> an.</td></tr><tr><td><strong>[E]</strong></td><td>Fehler</td><td>Zeigt an, wie viele <strong>Fehler</strong> vorhanden sind. Ein Klick darauf öffnet ein Fenster, das die Fehler im Detail anzeigt.</td></tr><tr><td><strong>[F]</strong></td><td>Rheinfolge festlegen</td><td>Nach einem Klick auf <strong>Reihenfolge festlegen</strong> können Sie durch nacheinander Klicken auf die Elemente in <strong>[L]</strong> die <strong>Abfolge der Blöcke</strong> bestimmen, in der sie ausgeführt werden sollen.</td></tr><tr><td><strong>[G]</strong></td><td>Löschen</td><td>Hier kann die <strong>Regelkette gelöscht</strong> werden.</td></tr><tr><td><strong>[H]</strong></td><td>Speichern</td><td><strong>Speichern Sie Ihre Änderungen</strong>.</td></tr><tr><td><strong>[I]</strong></td><td>Knoten</td><td><strong>Knoten</strong> sind die <strong>Schnittstellen zum Eliona-System</strong>, die verschiedene Aktionen oder Datenverknüpfungen darstellen.</td></tr><tr><td><strong>[J]</strong></td><td>Bedingungen</td><td>Hiermit können <strong>Bedingungen</strong> zwischen den Knoten erstellt werden, einschließlich <strong>zeitlicher Bedingungen</strong>.</td></tr><tr><td><strong>[K]</strong></td><td>Operationen</td><td>Führt <strong>logische Operationen</strong> (z. B. UND, ODER) innerhalb der Regelkette aus.</td></tr><tr><td><strong>[L]</strong></td><td>Verknüpfungsfeld</td><td>Bereich, in dem die <strong>Knoten</strong> und <strong>Verbindungen</strong> platziert und miteinander verknüpft werden.</td></tr></tbody></table>

## Schritt für schritt eine Regelkette erstellen

1. Stellen Sie sicher das Sie sich ein der Konfiguration der gewünschten Regelkette befinden.[ -> Die Konfiguration einer bestehenden Regelkette öffnen.](https://docs.buildings.ability.abb/collection/german-14.2-freezed/dokumentation/alarme-regeln-und-eskalationen/regelketten/die-konfiguration-einer-bestehenden-regelkette-offnen)
2. **Trigger auswählen**\
   Entscheiden Sie, ob die Regel ereignis- oder zyklusbasiert ausgelöst wird und konfigurieren Sie das *Asset* oder das Zeitintervall. [-> Trigger](#trigger)
3. **Bausteine hinzufügen**\
   Ziehen Sie die benötigten Bausteine per *Drag-and-Drop* auf das Arbeitsfeld \[L]. [-> Bausteine hinzufügen](#bausteine-hinzufugen)
4. **Bausteine konfigurieren**\
   Klicken Sie auf das Zahnrad-Symbol im Baustein, um spezifische Einstellungen wie *Asset*, Attribut oder Bedingungen vorzunehmen. [-> Bausteine konfigurieren](#baustein-konfigurieren)
5. **Bausteine verbinden**\
   Verbinden Sie die Bausteine, indem Sie eine Linie von einem **Output-Pin** zu einem **Input-Pin** ziehen (gleiche Farben beachten). [-> Bausteine verbinden](#bausteine-verbinden)
6. **Fehler prüfen**\
   Nutzen Sie das Error-Fenster, um Fehler zu lokalisieren und zu beheben. [-> Fehler](#fehler)
7. **Reihenfolge festlegen**\
   Bestimmen Sie die Ausführungsreihenfolge der Bausteine im „Reihenfolge setzen“-Modus. [-> Rheinfolge festlegen](#reihenfolge-festlegen)
8. **Änderungen speichern**

   Vergessen Sie nicht Ihre Änderungen zu speichern **\[H]**

***

## Trigger

Beim **Trigger \[B]** können Sie auswählen, ob die Regelkette **ereignisbasiert** oder **zyklusbasiert** ausgelöst werden soll:

* **Ereignisbasiert**: In diesem Fall muss in **\[C]** ein **Asset und sein Attribut** ausgewählt werden. Jedes Mal, wenn neue Daten in dieses Attribut geschrieben werden, wird die Regelkette automatisch ausgelöst.

  <div align="left"><figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/CZr8xUaxy595zdND1epm/image.png" alt="" width="324"><figcaption></figcaption></figure></div>
* **Zyklusbasiert**: Wenn die Regelkette zyklisch ausgelöst werden soll, können Sie in **\[C]** die Anzahl der **Sekunden** festlegen, nach denen die Regelkette in regelmäßigen Abständen ausgeführt wird.

  <div align="left"><figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/tAMMMk7tkVmuqRa1ckdH/image.png" alt="" width="375"><figcaption></figcaption></figure></div>

{% hint style="info" %}
Output-Nodes werden nur ausgelöst, wenn sich der eingehende Wert ändert.
{% endhint %}

***

## Code Ansicht

In der **Code-Ansicht** können Sie den erstellten **JSON-Code** Ihrer Regelkette einsehen und bearbeiten. Um die **Code-Ansicht** zu aktivieren, klicken Sie auf **\[D]**. Sobald diese aktiviert ist, wird der JSON-Code der Regelkette angezeigt, der die Konfiguration und Abfolge der Knoten und Bedingungen enthält. Sie haben die Möglichkeit, den Code direkt zu ändern, um spezifische Anpassungen vorzunehmen, anstatt die visuelle Benutzeroberfläche zu verwenden.

<figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/9NU1aTc5CB3qKV4yuNRl/image.png" alt="" width="563"><figcaption></figcaption></figure>

***

## Fehler

Wenn Sie auf **Errors \[E]** klicken, öffnet sich ein Fenster, das alle vorhandenen Fehler detailliert anzeigt.

<figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/yQL9oqZscuFXxcesQHp8/image.png" alt=""><figcaption></figcaption></figure>

Durch Klicken auf das **Lokalisierungs-Icon** <img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/UrWtInFESlG11Hanr1Rh/image.png" alt="" data-size="line"> können Sie direkt im **Verknüpfungsfeld \[L]** zu dem Element springen, das den Fehler verursacht hat.

***

## **Reihenfolge festlegen**

Klicken Sie auf **Rheinfolge setzen \[F]**, um die **Ausführungsreihenfolge** der Knoten in der Regelkette festzulegen.

* Sobald dieser Modus aktiviert ist, können Sie die Knoten im **Verknüpfungsfeld \[L]** der Reihe nach anklicken, um die Reihenfolge ihrer Ausführung zu bestimmen.
* Die **Reihenfolgenummer** wird dabei automatisch hochgezählt und erscheint oben rechts an jedem Knoten. So sehen Sie direkt, in welcher Reihenfolge die Knoten ausgeführt werden.

***

## Bausteine Hinzufügen

Um eine Regel zu erstellen, können die gewünschten Bausteine per *Drag-and-Drop* von der rechten Leiste auf das Feld **\[L]** gezogen werden. Jeder Baustein repräsentiert eine spezifische Funktion, die in der Regelkette verwendet werden kann.

<figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/nfZFLUC1rgannOsB5rJh/GIF%2014.10.2024%2007-47-15.gif" alt=""><figcaption></figcaption></figure>

## Baustein konfigurieren

Um einen Baustein zu konfigurieren, klicken Sie auf das Zahnrad-Symbol oben rechts im Baustein. Dadurch öffnet sich ein Fenster, in dem die individuellen Einstellungen des Bausteins angepasst werden können, z.B. die Anzahl der Eingabe und Output Pins, das zu verwendende *Asset*, die Attribute oder die Bedingungen.

<figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/gMsBxn1p40JKw1MAOoqx/Rule%20chain%20konfig%20(3).png" alt="" width="375"><figcaption></figcaption></figure>

## Bausteine verbinden&#x20;

Bausteine werden miteinander verbunden, indem Sie eine Linie per *Drag-and-Drop* von einem Output-Pin zu einem Input-Pin eines anderen Bausteins ziehen. Achten Sie dabei darauf, dass die Output- und Input-Pins dieselbe Farbe haben:

* **Rot** steht für numerische Werte.
* **Blau** steht für boolesche Werte (wahr/falsch).

Nur Pins mit der gleichen Farbe können miteinander verbunden werden, um eine korrekte Datenübergabe sicherzustellen.

**Dynamische Pin-Erweiterung**

Falls bereits alle vorhandenen Pins eines Bausteins belegt sind, erscheint beim hovern über einen belegten Pin ein  neuer Pin. Dieser kann genutzt werden, um eine Verbindung zu einem weiteren Eingang herzustellen. Sobald die Verbindung erstellt wurde, wird der neue Pin automatisch aktiviert und dauerhaft hinzugefügt.

<figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/brnoTMoklW7Sp3QHYEWj/DynamischePin-Erweiterung.gif" alt=""><figcaption></figcaption></figure>

### Visualisierung der Werte nach Ausführung

Nachdem eine Regelkette gespeichert und mindestens einmal ausgeführt wurde, werden die aktuellen Werte an den Ein- und Ausgangspins der Bausteine in der Farbe Lila sichtbar. Diese Werte zeigen an, welche Daten durch die Regelkette fließen und ermöglichen eine direkte Überprüfung der Logik.

{% hint style="info" %}
Die angezeigten Werte werden bei jeder erneuten Ausführung aktualisiert und helfen bei der Fehlersuche sowie Optimierung der Regelkette.
{% endhint %}

***

## Die Bausteine

Bausteine sind die grundlegenden Elemente einer Regelkette. Jeder Baustein übernimmt eine bestimmte Funktion, z. B. das Abrufen von Daten, das Setzen von Bedingungen oder das Ausführen von Aktionen wie das Senden von Alarmen oder E-Mails.

Bausteine können miteinander verbunden werden, um komplexe Abläufe zu steuern. Dabei wird der Datenfluss über Ein- und Ausgangspins geregelt, wobei nur kompatible Pins miteinander verbunden werden können.

In der Konfiguration eines Bausteins kann zusätzlich eine **Notiz** hinterlegt werden. Diese dient dazu, wichtige Informationen oder Erklärungen direkt im Baustein zu dokumentieren und erleichtert das Verständnis der Regelkette.

<div align="left"><figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/kEpIsrYnxtSuO5beW4Ld/image.png" alt="" width="211"><figcaption></figcaption></figure></div>

### **Nodes**

#### **Daten abrufen**

<div align="left"><figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/kWyIwxpqZP3DgrWkh07y/image.png" alt=""><figcaption></figcaption></figure></div>

**Funktion**: Dieser Baustein liest Heap Daten von einem bestimmten *Asset* und seinem Attribut aus.

**Konfigurierbare Einstellungen**:

* ***Output-Pins*****:** Sie können mehrere Ausgangspins konfigurieren, um die daten an verschiedene weitere Bausteine zu senden.
* ***Asset und Attribut*****:** Das spezifische *Asset* und das zugehörige Attribut, dessen Daten abgefragt werden sollen.

#### **Daten schreiben**

<div align="left"><figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/FCuL25bHSRlKcpp1o6Z0/image.png" alt="" width="330"><figcaption></figcaption></figure></div>

**Funktion**: Sendet Daten an ein definiertes *Asset* und schreibt den angegebenen Wert in ein bestimmtes Attribut.

**Konfigurierbare Einstellungen**:

* **Eingangspins:**
  * **Trigger-Pin:** Löst das Schreiben des Wertes aus.
  * **Wert-Pin (optional):** Wenn dieser Pin genutzt wird, wird der Wert aus der verbundenen Quelle übernommen. Andernfalls kann der Wert manuell eingegeben werden.
* **Asset, Attribut:** Auswahl des Assets und des zugehörigen Attributs, in das die Daten geschrieben werden sollen.
* **Wert:** Falls kein Wert-Pin verwendet wird, kann hier ein fester Wert definiert werden.

#### **Alarm**

<div align="left"><figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/94K7fknRyjxZruZEHAvC/image.png" alt="" width="331"><figcaption></figcaption></figure></div>

**Funktion**: Löst einen Alarm für ein bestimmtes *Asset* aus, wenn bestimmte Bedingungen erfüllt sind.

**Konfigurierbare Einstellungen**:

* ***Asset*****:** Das *Asset*, für das der Alarm ausgelöst wird.
* ***Priorität*****:** Die Dringlichkeit des Alarms (z.B. hoch, mittel, niedrig).
* ***Quittierung*****:** Es kann festgelegt werden, ob der Alarm manuell quittiert werden muss.

### **Ticket**

<div align="left"><figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/t39QUsouitl7m1HXIYUd/image.png" alt="" width="328"><figcaption></figcaption></figure></div>

**Funktion**: Erstellt ein Ticket zur Nachverfolgung von Problemen oder Aufgaben, die mit einem *Asset* verbunden sind.

**Konfigurierbare Einstellungen**:

* **Asset:** Auswahl des Assets, auf das sich das Ticket bezieht.
* **Priorität:** Festlegung der Dringlichkeit des Tickets (z. B. niedrig, mittel, hoch).
* **Zugewiesene Person:** Auswahl des Empfängers, der für die Bearbeitung des Tickets zuständig ist.
* **Grund:** Auswahl des Grundes für das Ticket aus vordefinierten Kategorien.
* **Titel:** Eingabe eines aussagekräftigen Titels für das Ticket.
* **Beschreibung:** Detaillierte Beschreibung des Problems oder der Aufgabe.

#### **E-Mail senden**

<div align="left"><figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/dNU9HyxJCPCUxuTD5Ola/image.png" alt=""><figcaption></figcaption></figure></div>

**Funktion**: Versendet eine E-Mail-Benachrichtigung an eine bestimmte Person oder Gruppe.

**Konfigurierbare Einstellungen**:

* ***Betreff*****:** Der Betreff der E-Mail.
* ***An*****:** Die E-Mail-Adresse(n) des Empfängers.
* ***Text*****:** Der eigentliche Inhalt der E-Mail.

#### Script

<div align="left"><figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/ewSQjzl8gRRU7YtCbxO2/image.png" alt=""><figcaption></figcaption></figure></div>

**Funktion:** Der **Script-Baustein** ermöglicht die Ausführung eines Skripts aus der [-> *Script Engine* ](https://docs.buildings.ability.abb/collection/german-14.2-freezed/dokumentation/engineering/skript-engine)innerhalb der Regelkette. Die Ausführung wird durch einen booleschen Eingabewert gesteuert.

**Konfigurierbare Einstellungen:**

* **Script:** Auswahl des auszuführenden Skripts aus der *Script Engine*.

{% hint style="warning" %}
WICHTIG: Sctipt muss im Raster auf "Event triggered" eingestellt sein
{% endhint %}

***

### **Bedingungen**

### **Bedingung**

<div align="left"><figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/logpFQk6zVAaH8S4QHxn/image.png" alt="" width="329"><figcaption></figcaption></figure></div>

**Funktion**: Stellt eine Bedingung dar, die überprüft wird, bevor die Regelkette weiter ausgeführt wird und gibt den booleschen Wert der Überprüfung aus. Diese kann numerische Vergleiche zwischen Eingängen durchführen.

**Konfigurierbare Einstellungen**:

* ***Anzahl Eingangs- und Ausgangspins*****:** Sie können die Anzahl der Pins konfigurieren, um mehrere Bedingungen zu verknüpfen.
* ***Vergleichsoperationen*****:** Wählen Sie aus „gleich“, „größer als“, „kleiner als“, „größer gleich“, „kleiner gleich“.
* ***Wert*****:** Wenn nur ein Eingangs-Pin verwendet wird, kann ein fester Wert eingegeben werden, mit dem verglichen wird. Bei mehreren Eingangs-Pins werden die Eingänge miteinander verglichen.

#### **Zeit**

<div align="left"><figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/JOWXGuPMZPNcfo0TeANn/image.png" alt="" width="327"><figcaption></figcaption></figure></div>

**Funktion**: Fügt Verzögerungen in die Regelkette ein, um Ereignisse entweder zeitlich verzögert auszuführen oder abzubrechen.

**Konfigurierbare Einstellungen**:

* ***Anzahl Eingangs- und Ausgangspins*****:** Bestimmen Sie, wie viele Verzögerungen eingerichtet werden können.
* ***Bedingung*****:** TON (Einschaltverzögerung) und TOFF (Ausschaltverzögerung).
* ***Verzögerungszeit*****:** Die Verzögerung in Sekunden, die angewendet werden soll.

#### Schedule

<div align="left"><figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/7q3bPbwIdWqFRL1pPz1d/image.png" alt="" width="328"><figcaption></figcaption></figure></div>

**Funktion:** Der **Schedule-Baustein** ermöglicht es, eine Regelkette basierend auf einem definierten Zeitplan auszulösen. Innerhalb des festgelegten Zeitfensters gibt der Baustein ein **"true"** Signal aus, außerhalb dieses Zeitraums bleibt der Ausgang auf **"false"**.

**Konfigurierbare Einstellungen:**

* **Schedule type:** Auswahl des Zeitplans, z. B.
  * **Time Schedule** – Steuerung basierend auf einer definierten Uhrzeit.
  * **Days Schedule** – Steuerung basierend auf bestimmten Wochentagen.
* **Begin time:** Startzeit des aktiven Zeitraums (hh:mm) (*nur bei Time Schedule*).
* **End time:** Endzeit des aktiven Zeitraums (hh:mm) (*nur bei Time Schedule*).
* **Active days:** Auswahl der Wochentage, an denen die Regel aktiv sein soll (*nur bei Days Schedule*).

***

### **Operation**

#### **Oder**

<div align="left"><figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/hhCCZ1IBrYxxi9k4D4kH/image.png" alt="" width="329"><figcaption></figcaption></figure></div>

**Funktion**: Überprüft, ob eine der Eingangsbedingungen wahr oder falsch ist und gibt den booleschen Wert dieser Überprüfung  aus.

**Konfigurierbare Einstellungen**:

* ***Anzahl Eingangs- und Ausgangspins*****:** Bestimmen Sie die Anzahl der Bedingungen, die überprüft werden sollen.

#### **Und**

<div align="left"><figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/Zqi4IxdbsijNSfgOz5E1/image.png" alt="" width="329"><figcaption></figcaption></figure></div>

**Funktion**: Überprüft, ob alle Eingangsbedingungen wahr sind, und gibt den booleschen Wert dieser Überprüfung  aus.

**Konfigurierbare Einstellungen**:

* ***Anzahl Eingangs- und Ausgangspins*****:** Bestimmen Sie die Anzahl der Bedingungen, die gleichzeitig wahr sein müssen.

#### **Arithmetik**

<div align="left"><figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/nMGrYtN2Tr65MydEF9d7/image.png" alt=""><figcaption></figcaption></figure></div>

**Funktion**: Führt mathematische Berechnungen mit den Eingangsparametern durch, um einen neuen Wert zu erzeugen.

**Konfigurierbare Einstellungen**:

* ***Anzahl Eingangs-Pins*****:** Bestimmen Sie, wie viele Werte in die Berechnung eingehen.
* ***Operation*****:** Wählen Sie zwischen Addition, Subtraktion, Multiplikation und Division.
* ***Wert*****:** Ein optionaler fester Wert, der in die Berechnung einbezogen wird.

### Andere

#### Notiz

<div align="left"><figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/1BsacWC1fhtcIvUs1OZC/image.png" alt=""><figcaption></figcaption></figure></div>

**Funktion:** Der **Note-Baustein** dient als reines Informationselement innerhalb der Regelkette. Er ermöglicht das Hinzufügen von Notizen oder Kommentaren, um die Übersichtlichkeit der Regelkette zu verbessern.

**Konfigurierbare Einstellungen:**

* **Textfeld:** Eingabe einer beliebigen Notiz oder Beschreibung.
