# Grundlagen
> Symcon Dokumentation · Deutsch · erzeugt am 2026-09-26
> Index: https://www.symcon.de/de/llms.txt
Quelle: https://www.symcon.de/de/service/dokumentation/grundlagen/
### Objekte
Bei IP-Symcon gibt es sieben verschiedene Objektarten.
__Objekte können Kategorien, Instanzen, Variablen, Automationen, Ereignisse, Medien oder Links sein.__
> **Hinweis:** Jedes Objekt besitzt eine feste und nicht änderbare ID (Identifikationsnummer). Dadurch ergeben sich viele Vorteile:
>
> * Jedes Objekt ist einzigartig und eindeutig bestimmbar.
> * Der Name kann jederzeit frei verändert werden.
> * Größere Projekte können schneller abgearbeitet werden.
> * Umfangreiche Funktionen der Objektverwaltung
> * Performante Verknüpfung innerhalb der Software
### Eigenschaften eines Objekts
Die Eigenschaften bzw. Einstellungen eines Objekts können durch einen Doppelklick oder via "Rechtsklick" -> "Objekt bearbeiten" aufgerufen werden.

__ObjektID__
Jedes Objekt bei IP-Symcon besitzt eine Identifikationsnummer (ObjektID), die einmalig und nicht veränderbar ist. Somit ist jedes Objekt eindeutig bestimm- und ansprechbar.

__Name__
Ist der Name des Objekts. Der Name wird auch zur Darstellung in den [Visualisierungen](components/tile-visualization.md) genutzt.
__Ort__
Der Ort ist das übergeordnete Objekt im Objektbaum und bestimmt sowohl die Position im Objektbaum als auch im WebFront.
> **Hinweis:** Bestimmte Instanzen, wie z.B. I/O, Konfiguratoren, werden in den jeweiligen Bereichen I/O Instanzen, Konfigurator Instanzen angelegt. Diese Instanzen können nicht verschoben werden.
#### Visuelle Einstellungen
Diese Einstellungen steuern das Verhalten im WebFront.
__Icon__
Symbol welches in den [Visualisierungen](components/tile-visualization.md) genutzt werden soll. Weitere Informationen sind unter [Icons](components/icons.md) einsehbar.
__Objekt anzeigen__
Regelt ob ein Objekt in den Visualisierungen angezeigt werden soll oder versteckt bleiben soll.
__Titel anzeigen (ab Symcon 9.1)__
Regelt ob bei der Kachel des Objekts in der Visualisierung der Titel angezeigt werden soll oder versteckt wird.
__Maximieren-Button anzeigen (ab Symcon 9.1)__
Regelt ob bei der Kachel des Objekts in der Visualisierung der Maximieren-Button angezeigt werden soll oder versteckt wird.
__Objekt aktivieren__
Diese Einstellung steuert ob ein Objekt überhaupt aktiv ist oder nicht. Ist es deaktiviert, so wird das Objekt in den Visualisierungen ausgegraut und ist nicht steuerbar.
#### Weitere Einstellungen
Zusätzliche Einstellungen, welche optional sind.
__Beschreibung__
Eine Beschreibung des Objekts. Kann genutzt werden um wichtige Notizen zu hinterlassen und somit eine direkte Beschreibung zu liefern. Die Beschreibung kann unter dem Punkt "Weitere Einstellungen" gefunden werden.
__Ident__
Als zusätzlicher Identifikator besitzen Objekte einen Ident. Die Besonderheit des Ident im Gegensatz zum Namen ist, dass innerhalb einer Kategorie in der logischen Baumansicht jeder Ident einmalig ist. Dieser ist z.B. in der Modulentwicklung wichtig.
### Kontextmenü
Das Kontextmenü im [Objektbaum](components/management-console.md) beinhaltet verschiedene Funktionalitäten.
> **Hinweis:** Jede Objektart hat, zusätzlich zu den beschriebenen Funktionalitäten, typspezifische und erweiternde Optionen. Siehe: [Objektartspezifische Kontexteinträge](concepts.md)
#### Objekt hinzufügen
Fügt ein neues Objekt hinzu. Es öffnet sich ein Dialog bei dem Schrittweise alle wichtigen Einstellungen getätigt werden können.
Weiter Informationen sind auch unter [Objekt hinzufügen](how-to.md) nachzulesen.

#### Objekt öffnen
Sofern das Objekt eine objektspezifische Aktion besitzt, wird diese aufgerufen. Dies bedeutet bei Instanzen wird die Konfiguration geöffnet, bei Skripten der Skripteditor, bei Medien wird eine Vorschau angezeigt. Sollte es keine objektspezifische Aktion geben wird die Option deaktiviert und ausgegraut dargestellt.
> **Hinweis:** Ein Doppelklick auf ein Objekt öffnet den Dialog "Objekt öffnen". Sollte die Option ausgegraut und somit keine objektspezifische Aktion vorhanden sein, öffnet der Doppelklick den Dialog "Objekt bearbeiten".
#### Objekt umbenennen
Ändert den Namen des Objekts. Lässt die ObjektID und den Ident unberührt. Es kann unter allen Objekten mehrfach den gleichen Namen geben.
#### Objekt bearbeiten
Jedes Objekt hat die Option "Objekt bearbeiten". Es öffnet den objektabhängigen Dialog. Hier können verschiedene Informationen entnommen und Einstellungen gemacht werden.

#### Objekt sortieren
Bestimmt die Reihenfolge der Objekte über den Positionswert. Einhergehend wird auch die Position in den Visualisierungen darüber gesteuert.

> **Hinweis:** Über die "Spalten"-Option kann die Positionsspalte dauerhaft eingeblendet werden. Mit dieser können Objekte via Doppelklick auf den Positionswert schneller einsortiert werden, ohne jedesmal den "Objekt sortieren"-Menüpunkt anzuklicken.
#### ObjektID kopieren
Dies kopiert die ObjektID des Objekts in die Zwischenablage. Dies ist nützlich um ID's in Skripten einzufügen. ("Rechtsklick->einfügen" oder "STRG + V" im Editor).
#### Objekt verlinken
Erstellt von dem Objekt eine Verlinkung. Es können mehrere Links auf das selbe Objekt verweisen. Im Dialogfenster kann die Position des Link-Objekts ausgewählt werden.

#### Objekt duplizieren
Erstellt ein identisches Objekt mit eigener einmaligen ObjektID.
#### Objekt verschieben
Öffnet einen Dialog um den Ort des Objekts auszuwählen unter dem es platziert wird.
#### Objekt löschen
Löscht das Objekt und alle seine Unterobjekte, falls vorhanden.
### Objektartspezifische Kontexteinträge
#### Nach Referenz suchen (Alle außer Kategorien)
Öffnet einen Dialog, welcher entweder besagt, dass es keine Referenzen gibt oder alle gegebenen Referenzen auflistet.
Folgende Kriterien werden je nach Objektart durchsucht:
| Objektart | Wo/Was wird nach Referenz/ID gesucht? |
| ---------- | --------------------------------------------------------------------------------- |
| Variable | Es werden die ID's für "VariableAction" und "VariableCustomAction" durchsucht. |
| PHP-Skript | Der Inhalt eines PHP-Skriptes wird nach der ID durchsucht. |
| Ereignis | Der Inhalt und der Auslöser werden nach der ID durchsucht. |
| Link | Die TargetID/Wert wird durchsucht. |
| Instanz | IDs von möglichen Objekten, welche auf der Konfigurationsseite ausgewählt wurden. |
#### Befehle testen (Nur Instanzen)
Öffnet einen Dialog zum Testen der wichtigsten [Aktionen](concepts/automations.md) einer Instanz.
__Für Experten:__ Mit der Tastenkombination Strg+C kann der eingestellte Befehl als PHP-Code kopiert werden und im Skripteditor eingefügt werden.
#### Variable verändern (Nur Variablen)
Öffnet den Dialog zum Setzen eines Variablenwertes.
#### Automation ausführen (nur Automationen)
Führt das Skript aus ohne es zu öffnen.
Mögliche Ausgaben werden in einem Dialog ausgegeben.
#### Zum Quellobjekt springen (nur Links)
Springt innerhalb des Objektbaums zum Ursprungsobjekt des Links.
## Kategorien
Quelle: https://www.symcon.de/de/service/dokumentation/grundlagen/kategorien/
Um eine einfache Bedienung der verschieden agierenden Geräte zu gewährleisten und um einen Überblick über die Vielzahl der Instanzen zu behalten, bietet IP-Symcon eine Funktion zum einsortieren. Im Objektbaum können die Instanzen der Geräte verschiedenen Kategorien zugeordnet werden.
### Einrichtung
Über das "+" unten Rechts im Objektbaum oder über "Rechtsklick" -> "__Objekt hinzufügen__" und folgend "Kategorie" kann eine Kategorie erstellt werden. Im folgenden Dialog wird die neue Kategorie konfiguriert und unter anderem Name und Ort definiert. Zur Namensgebung eignet sich beispielsweise der Bereich in dem sich einzusortierende Geräte befinden. _In einem Einfamilienhaus bietet sich z.B. die Bezeichnung des Stockwerks an._
> **Achtung:** Es ist unbedingt zu beachten, dass beim Löschen einer Kategorie alle Unterkategorien und alle hier eingeordneten Geräte im Objektbaum ebenfalls gelöscht werden.
### Konfiguration
Die erstellte Kategorie befindet sich jetzt im [Objektbaum](components/management-console.md). Auf diese Art und Weise können noch weitere Oberkategorien erstellt werden, z.B. Erdgeschoss, 1. Stock, 2. Stock...
Über einen Rechtsklick im Objektbaum auf eine ausgewählte Oberkategorie und "Objekt hinzufügen -> Kategorie hinzufügen" können Kategorien erstellt werden, bei denen die Oberkategorie standardmäßig als Ort eingestellt ist. Dann kann ein Name (z.B. Wohnzimmer) für die Unterkategorie ausgewählt werden. Dies lässt sich beliebig oft auch für jegliche Unterkategorie wiederholen.
Die Reihenfolge der Kategorien kann durch "Rechtsklick->Objekt sortieren" bestimmt werden.
Die Verschachtelung ineinander ist durch einfaches Drag and Drop möglich.
> **Hinweis:** Es wird empfohlen, die Bezeichnung der __Kategorien/Unterkategorien/Geräte__ wie folgt zu verwenden:
> __Etage / Zimmer / Gerät__
### Tipps & Tricks
Zum Überblick sollte diese Bezeichnungsart von Anfang an genutzt werden, da im Laufe der Zeit immer mehr Geräte hinzukommen.
Jeder Gerätename sollte nur sich selbst erklären und keine Komponenten enthalten, die vorher schon benannt wurden.
Z.B.: Erdgeschoss / Wohnzimmer / Deckenlampe (Nordseite)
### WebFront
Ein weiterer Vorteil an dieser Struktur ist die automatische Eins zu Eins Visualisierung innerhalb des WebFronts.
Sofern die angezeigte Oberkategorie sichtbare Unterkategorien hat, wird automatisch eine Kategorie-Navigationsleiste angezeigt.
Wird über die Navigation eine Unterkategorie ausgewählt, so wird im Objektbereich deren Inhalt dargestellt.
Besitzt eine so angezeigte Kategorie ebenfalls sichtbare Unterkategorien, so wird die Navigation automatisch erweitert.
Per "Link"-Objekt verknüpfte Kategorien werden ebenfalls in der Navigationsleiste angezeigt. Über die Eigenschaft “Zeige Navigation” lässt sich die Kategorieleiste bei Bedarf ausblenden.
## Instanzen
Quelle: https://www.symcon.de/de/service/dokumentation/grundlagen/instanzen/
Instanzen repräsentieren im Normalfall Geräte, die an IP-Symcon angeschlossen sind. Zusätzlich können Instanzen auch virtuelle Geräte wie z. B. "Text To Speech" oder "Mediaplayer" repräsentieren, welche nicht physikalisch vorhanden sind. Die Zustände von Geräten werden in der [Verwaltungskonsole](components/management-console.md) und im [WebFront](components/webfront-visualization.md) über [Variablen](concepts.md) dargestellt.
### Einbindung
Über den "Instanz hinzufügen" Dialog oder über die Konfiguratoren in der Verwaltungskonsole können neue Geräte hinzugefügt werden. Zusätzlich zu dem vom Benutzer hinzugefügten Gerät erstellt IP-Symcon, falls benötigt, weitere Instanzen, welche die Kommunikation zwischen Gerät und IP-Symcon aufbauen. Diese Instanzen (auch "übergeordnete Instanzen" genannt) sind dabei austauschbar bzw. umkonfigurierbar, ohne dass das Gerät neu eingebunden werden muss. Soll zum Beispiel das Protokoll mit dem kommuniziert wird oder die Anschlussart des Geräts von Funk auf Seriell geändert werden, kann dies in der passenden Gateway- oder I/O-Instanz umgestellt werden. Diese Änderung gilt anschließend für alle an diese Gateway Instanz angeschlossenen Geräte, beinflusst aber in keiner Weise die Zustandsvariablen, eingerichtete Skripte oder die ursprünglich erstellte Instanz des Geräts selbst.
### Übergeordnete Instanzen
Übergordnete Instanzen kennen und nutzen sowohl die benötigten Protokolle als auch Eigenschaften für einen Verbindungsaufbau zwischen Geräten und IP-Symcon. Diese Instanzen können somit nur Gateway- oder I/O-Instanzen sein.
Falls übergeordneten Instanzen zur Verbindung benötigt werden, richtet IP-Symcon diese vollkommen automatisch ein. Gegebenfalls wird noch eine Konfiguration dieser benötigt (z.B. Das Einstellen der IP-Adresse).
Die übergeordnete Instanz für ein Gerät/Instanz ist am schnellsten über das Zahnrad innerhalb des jeweiligen Konfigurationsreiters erreichbar.
Wie unten im Beispiel zu sehen, kommunizieren die beiden Geräte "AKM-868" und "LGS-868" via Funk mit der übergeordneten Instanz "ProJet Gateway". Das Gateway kommuniziert seinerseits mit der übergeordneten I/O Instanz "Client Socket IPS 868" via LAN.
Es wäre nun problemlos möglich die I/O Instanz von einer LAN-basierenden zu einer seriellen Kommunikation umzustellen (dies macht natürlich nur Sinn wenn das neue Gateway über ein serielles Kabel mit IP-Symcon kommuniziert). Dazu wird im "ProJet Gateway" der Modus auf "Connection via: Serial" umgestellt. Automatisch richtet IP-Symcon eine Serial Port Instanz ein, welche mit dem Gateway verknüpft ist. Nun wäre über das Zahnrad auf der Gateway-Konfigurationsseite die übergeordnete Instanz "Serial Port IPS 868" aufruf-/konfigurierbar. Dies beeinflusst in keiner Weise die beiden Geräte AKM und LGS.

### Einbindungsarten
Instanzen werden immer nach einem ähnlichen Schema in IP-Symcon eingebunden.
Es gibt 3 Typen von Einbindungen.
| Typ | Beschreibung | Beispielsysteme |
| ----- | -------------------------------- | ---------------- |
| 1:1:n | 1 I/O - 1 Gateway - n Instanzen | EnOcean |
| 1:m:n | 1 I/O - m Gateways - n Instanzen | LCN |
| 1:n | 1 I/O - n Instanzen | Registervariable |
### Verbindungskomponenten
__I/O:__
I/O beschreibt die Kommunikationsart zwischen dem Gateway und dem Server(IP-Symcon).
| Art | Beschreibung |
| ---------------- | --------------------------------------------------------------------- |
| Client Socket | TCP-Client basierende Kommunikation |
| HID | HID basierende Kommunikation (USB) |
| Multicast Socket | Multicast basierende Kommunikation |
| Serial Port | Seriell basierende Kommunikation |
| Server Socket | TCP Server basierende Kommunikation |
| TMEX | TMEX basierende Kommunikation |
| UDP Socket | UDP-Client basierende Kommunikation |
| Virtual I/O | Emuliert einen Serial Port, einen Client Socket oder einen UDP Socket |
| WWW Reader | HTTP(Get) Anfragen |
__Gateway/Splitter:__
An ein Gateway können ein oder mehrere Geräte/Instanzen angebunden sein. Das Gateway kümmert sich um die Kommunikation zwischen Gerät und I/O.
> **Achtung:** Wenn nicht eine Standardkonfiguration genutzt wird, ist zu kontrollieren ob die angelegte I/O-Instanz der Konfiguration entspricht. (z.B. anstatt LAN wird ein serieller Anschluss genutzt) In diesem Fall muss die I/O Instanz ausgetauscht werden.
### GUID
Jedes Instanz hat eine eindeutige GUID, welche den Typ bestimmt (z.B. Es ist ein AKM-868 oder WDT-868).
Die GUID ist eine UUID und hat das Format 8-4-4-4-12. Die Zahlen geben die Anzahl der Ziffern an. Die Ziffern bestehen aus Zeichen zwischen 0-9 und A-F. Es müssen immer Bindestriche und geschweifte Klammern vorhanden sein und es dürfen nur Großbuchstaben verwendet werden. (Beispiel: {12345678-90AB-CDEF-1234-567890ABCDEF} )
> **Achtung:** Die GUID ist nicht mit der 5-stelligen ObjektID zu verwechseln, welche eindeutig das einzelne Objekt identifiziert, aber nicht dessen Typ.
### Instanz erstellen
Das Erstellen von Instanzen bzw. das Einbinden von Geräten erfolgt wiefolgt:
[Geräte einbinden](how-to.md)
### Beispiel
Hier ein Beispiel anhand der physikalischen Baumansicht.
Geräte-Instanz "PTM200 Button"
-> (übergeordnete) Gateway-Instanz "EnOcean Gateway"
-> (übergeordnete) I/O-Instanz "Client Socket (EnOcean Gateway #36011)"

## Konfiguratoren
Quelle: https://www.symcon.de/de/service/dokumentation/grundlagen/instanzen/konfiguratoren/
Konfiguratoren stellen in IP-Symcon eine ganz spezielle Art von Instanzen dar, die, wenn für ein System verfügbar, die Einrichtung in IP-Symcon erheblich erleichtern. Es können für mehrere Stränge/Linien/Gateways jeweils Konfiguratoren erstellt werden. Die Erstellung eines Konfigurators ist im Objektbaum über das hinzufügen einer Instanz möglich.

Zur Zeit sind Konfiguratoren für die folgenden Systeme verfügbar:
* [1-Wire](modules/1-wire.md)
* [digitalStrom](modules/digitalstrom.md)
* [Eaton xComfort](modules/xcomfort.md)
* [KNX](modules/knx.md)
* [EnOcean](modules/enocean.md)
* [HomeMatic](modules/homematic.md)
* [IPS-868](modules/ips-868.md)
* [LCN](modules/lcn.md)
* [M-Bus](modules/mbus.md)
* [MQTT](modules/mqtt.md)
* [Siemens Logo](modules/sps-siemens-vipa-logo.md)
* [Siemens OZW](modules/siemens-ozw.md)
* [Z-Wave](modules/z-wave.md)
| Farbe | Bedeutung | Hinweis |
| ----- | --------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| Grün | Neues Gerät, welches noch nicht in IP-Symcon eingerichtet wurde | Gerät kann als Instanz hinzugefügt werden |
| Rot | Gerät nicht mehr vorhanden, aber noch in IP-Symcon eingerichtet | Instanz kann in IP-Symcon gelöscht werden |
| Grau | Die vorhandene Instanz ist anders konfiguriert als empfohlen | Der Erstellen Button ändert sich auf Prüfen um die empfohlenen Einstellungen anzuzeigen |
| Weiß | Gerät vorhanden und in IP-Symcon eingerichtet | Keine Aktion erforderlich |
### Screenshots
#### 1-Wire Konfigurator

#### digitalStrom Konfigurator

#### xComfort Konfigurator

#### KNX Konfigurator

#### EnOcean Konfigurator

#### HomeMatic Konfigurator

#### IPS-868 Konfigurator

#### LCN Konfigurator


#### M-Bus Konfigurator

#### MQTT Konfigurator

#### Siemens Logo

#### Siemens OZW Konfigurator

#### Z-Wave Konfigurator

## Variablen
Quelle: https://www.symcon.de/de/service/dokumentation/grundlagen/variablen/
Eine Variable ist ein Behälter, der einen Wert enthält. Dieser Wert kann ein Boolean, Float, Integer oder String sein. Im Normalfall beinhalten Variablen Statuswerte von Geräten. Zusätzlich können selbsterstellte Variablen genutzt werden um eigene Werte abzuspeichern, welche z.B. ebenfalls in der Visualisierung dargestellt oder in Skripten verarbeitet werden können.
> **Hinweis:** [Systemvariablen](concepts/automations.md) haben im engeren Sinn, nichts mit normalen Variablen zu tun, da diese nur innerhalb von Skripten verfügbar sind.
Zum Austausch und zur Speicherung aller Daten benutzt IP-Symcon diese Variablen. Variablen beinhalten Statuswerte von Geräten, die es erst möglich machen, dass z.B. die Temperatur eines Thermometers in der Visualisierung sichtbar wird oder dass ein An- bzw. Ausschalten der Beleuchtung überhaupt funktioniert.
### Beschreibung
Bei IP-Symcon gibt es zwei Arten von Variablen:
#### Status Variablen
Jede Instanz eines Gerätes kann eine oder mehrere Status-Variablen besitzen, diese werden automatisch erstellt. In diesen Variablen wird der Status des Gerätes gespeichert (z.B. An / Aus oder Temperatur in °C oder zusätzlich noch die Feuchtigkeit und der Zustand der Batterie).
Wann sich der Status bzw. dessen Wert ändert oder aktualisiert wird, hängt von dem jeweiligen System ab. Eine Wetterstation z.B. sendet periodisch die Umweltdaten an IP-Symcon, während bei anderen Systemen aktiv deren Zustand (z.B. ein Fenster- Türkontakt) abgefragt werden muss. Das (Abfrage-)Intervall wird in der Konfiguration der zugehörigen Instanz eingestellt.
Eine wichtige Besonderheit der Status-Variablen ist, dass deren Wert nicht vom Anwender verändert werden darf. Diese Variablen spiegeln nur den Zustand und die Datensätze des Gerätes wieder.
> **Achtung:** Status Variablen dürfen nicht gelöscht werden, da dies zu unvorhersehbarem Verhalten der jeweiligen Instanz führen kann.
__Beispiel 1:__
Um die Soll-Raumtemperatur bei einer Heizungssteuerung zu ändern, wird ein Befehl ausgeführt, welcher den Soll-Wert an das Gerät übermittelt. Es wird nicht die Status-Variable "Temperatur" selbst verändert. Die dazu notwendigen Befehle können in der jeweiligen [Modulreferenz](modules/index.md) nachgelesen werden. Alternativ kann auch der Befehl "[RequestAction](functions/access-variables.md) " direkt auf die Variable angewandt werden. IP-Symcon sucht dann den dedizierten Befehl selbst und nutzt diesen.
__Beispiel 2:__
Ein abstrakteres Beispiel in Form eines KFZ: um ein Fahrzeug zu beschleunigen oder abzubremsen, müssen die entsprechenden Fußpedale betätigt werden. Es reicht nicht aus die Tachonadel auf die gewünschte Geschwindigkeit einzustellen.
> **Hinweis:** Fazit: Status Variablen liefern ausschließlich Informationen über das Gerät und sind darum explizit als "Nur Lesen" markiert.
#### Benutzerdefinierte Variablen
Benutzerdefinierte Variablen können selbst erstellt werden und einen von vier Datenypen (siehe Tabelle Variablentypen ) beinhalten. Benutzerdefinierte Variablen können vollständig Manipuliert werden.
__Beispiel 1:__
Soll ein bisher unbekanntes Gerät (z.B. AV-Verstärker) in IP-Symcon integriert oder ein Wert umgerechnet werden, so ist dies mithilfe der "Benutzerdefinierten Variablen" lösbar.
__Beispiel 2:__
Ein weiteres Beispiel wäre die Umrechnung der Außentemperatur zusätzlich in Grad Fahrenheit (°F).
### Variablentypen
| Variablentyp | Beschreibung | Beispiel |
| ------------ | -------------- | ----------------------------- |
| Boolean | True / False | z.B. An oder Aus |
| Float | Gleitkommazahl | z.B. 231,956 |
| Integer | Ganze Zahlen | z-B. -10 … -4 … 0 … 32 … 472 |
| String | Text | “Hallo IP-Symcon. Hallo Welt” |
### Neue Variablen anlegen
[Video](https://youtu.be/wNz7sKdhMKA?rel=0&cc_load_policy=1)
Eine Variable kann im Objektbaum über das "+" oder "Rechtsklick" -> "Objekt hinzufügen" -> "Variable" erstellt werden. Die zweite Variante hat den Vorteil, dass die Variable direkt unterhalb vom ausgewählten Objekt erstellt wird und nicht erst hinterher einsortiert werden muss. Im folgenden Fenster muss ein Variablentyp, [Variablendarstellung](concepts.md) und ebenso ob die [Variablenaufzeichnung](modules/archive-control.md) für diese Variable aktiv sein soll ausgewählt werden. Die [Aggregation](modules/archive-control.md) gibt dabei den Typ der Variablenaufzeichnung an.
Bevor die Erstellung mit "OK" bestätigt wird, sollte darauf geachtet werden, dass die neu erstellte Variable einen aussagekräftigen Namen hat. Optional kann noch eine Bemerkung hinzugefügt und ein [Icon](components/icons.md) ausgewählt werden. Der Ort der Variable kann mit dem Dialog "Ort" festlegt oder nachträglich im Objektbaum verschoben werden.

### Variablenvisualisierung
Variablen werden in der Visualisierung standardmäßig angezeigt. Dies kann durch die Visuelle Einstellung ein- oder ausgeschaltet werden.
Um Variablenwerte aufzuzeichnen und einen Graphen in der Visualisierung anzuzeigen, muss das Aufzeichnen von Variablenveränderung ([Archive Control](modules/archive-control.md) ) aktiviert werden.
Variablen die aufgezeichnet und in der Visualisierung angezeigt werden, bieten in der Visualisierung ein Diagramm mit dem Verlauf der Variablenwerte an.
### Variablendarstellung
Die Darstellung der Variablen in der Visualisierung kann angepasst werden, sodass eine Variable beispielsweise als Auswahl oder Schieberegler dargestellt wird. Diese Optionen kann auch nachträglich verändert werden. Eine genauere Beschreibung der Möglichkeiten befindet sich hier: [Variablendarstellungen](concepts.md)
### Variablenwerte bearbeiten
Mit einem Doppelklick auf den Namen der Variablen kann die Darstellung einer Variable verändert oder die Variablenaufzeichnung in die Datenbank aktiviert werden.
Um die Werte einer Variable mitzuschneiden oder zu verändern, kann per Doppelklick auf den Wert der Variable das Fenster für den "Überwachungsmodus" aufgerufen werden. Alternativ kann per Kontextmenü auch der Eintrag “Variable verändern" auswählt werden.
Diese Funktion ist primär für Testzwecke konzipiert, um beispielsweise zu überprüfen, ob bei einer simulierten Temperatur die Heizung eingeschaltet wird. Außerdem ist es möglich die Darstellung in der Visualisierung zu kontrollieren.
Das nachfolgende Bild zeigt das Fenster für den "Überwachungsmodus", in dem fortlaufend die Variablenwerte angezeigt werden und währenddessen modifiziert werden können. Ein Veränderung kann entweder über den Button “Schreiben” oder über die Return-Taste bestätigt werden.

> **Achtung:** Falls die Variable eine Status-Variable ist, kann der Wert modifiziert werden, obwohl dieser als schreibgeschützt markiert ist. Bei einer Wertänderung werden auch alle damit verbundenen [Ereignisse](concepts.md) ausgeführt. Das ist nützlich zum Testen eigener Ereignisse, ändert aber nicht die tatsächlichen Werte auf dem physikalischen Gerät.
### Variablenaktionen
Einer Variable kann via "Eigene Aktion" eine [Variablenaktion](concepts.md) zugewiesen werden. Diese wird aufgerufen, wenn die Variable via Visualisierung geschaltet wird. Darüber hinaus wird die Variablenaktion ausgeführt, wenn die Variable geschaltet wird, beispielsweise über die Funktion [RequestAction](functions/access-variables.md) .
## Variablenaktionen
Quelle: https://www.symcon.de/de/service/dokumentation/grundlagen/variablen/variablenaktionen/
Eine Variablenaktion wird angefordert, wenn eine Variable via Visualierung angeklickt wird.
Das hinterlegte [Aktionsskript](concepts/automations.md) wird ausgeführt und an dieses werden anhand von [Systemvariablen](concepts/automations.md) Daten wie der neue "gewünschte" Wert und ID übergeben.
### Variablenaktion auswählen
Eine Aktion kann im "Variable bearbeiten"-Dialog über "Eigene Aktion" ausgewählt werden. Der Dialog "Variable bearbeiten" ist beim Erstellen einer Variable oder im Nachhinein via "Objektbaum" -> "Doppelklick" oder über "Objektbaum" -> "Rechtsklick" -> "Objekt bearbeiten" erreichbar.
> **Hinweis:** Einige Variablen von hinzugefügten Modulen beinhalten eine "Standardaktion". Diese kann durch eine "Eigene Aktion" überschrieben werden.

Mit dem "+" kann eine Variablenaktion erstellt werden, welche sich nur darum kümmert, das im WebFront die Variable ihren Wert bei einem anklicken auch ändert. Dieses automatisch erstellte Aktionsskript wird mit "(Automatisch erstellt)" angezeigt.

### Variablenaktion erstellen
Eine Variablenaktion ist ein ausgewähltes Aktionsskript.
Nähere Informationen sind unter [PHP-Skripte](concepts/automations.md) und [Aktionsskripte](concepts/automations.md) nachlesbar.
## Variablendarstellung
Quelle: https://www.symcon.de/de/service/dokumentation/grundlagen/variablen/variablendarstellung/
_Benötigt Symcon >= 8.0_
Jede Variable besitzt eine Variablendarstellung. Variablendarstellungen werden genutzt um Variablenwerte wie True, False oder 0, 1, 2, 3 in eine für den Menschen leserliche Form zu bringen und mit den notwendigen Kontextdaten (z.B. °C) zu versehen. Die Variablendarstellung gibt also an, wie eine Variable in der Visualisierung dargestellt wird. Darüber hinaus bestimmt sie das Bedienelement, mit dem der Variablenwert verändert werden kann.
### Darstellung auswählen
Eine Darstellung kann im "Variable bearbeiten"- Dialog in dem Abschnitt "Variablendarstellung" ausgewählt werden. Dieser Dialog ist beim Erstellen einer Variable oder im Nachhinein via "Objektbaum" -> "Doppelklick" oder über "Objektbaum" -> "Rechtsklick" -> "Objekt bearbeiten" erreichbar.
> **Hinweis:** Einige Variablen von hinzugefügten Modulen beinhalten eine "Standarddarstellung". Diese kann durch einen Klick auf die Schaltfläche "Standard überschreiben" überschrieben werden. Der Originalzustand kann daraufhin über die Schaltfläche "Auf Standard zurücksetzten" wiederhergestellt werden.

Über das Auswahl-Icon beim Eintrag "Darstellung" wird der Darstellungsdialog geöffnet, in welchem eine Darstellung ausgewählt werden kann. In dem Darstellungsdialog werden immer alle Darstellungen angezeigt. Wenn die Konfiguration der aktuellen Variable eine Darstellung nicht zulässt, wird diese ausgegraut. Beim Bewegen der Maus über das ausgegraute Element wird ein Text angezeigt, der beschreibt welche Anforderungen erfüllt werden müssen um die Darstellung zu werden.
Jede Darstellung bietet viele verschieden Parameter um sie den Anforderungen entsprechend anzupassen. Die verfügbaren Parameter und ihre Funktion sind unter den jeweiligen Einträgen unter [Objektdarstellung](components/object-presentation.md) näher beschrieben.
### Vorschau
Jede Anpassung kann direkt in der Vorschau neben der Darstellungsauswahl beobachtet werden. Durch Klicken auf das Lupen-Symbol der Vorschau kann diese im Vollbild geöffnet werden. Hier kann, wie in der normalen Visualisierung, über das Stift-Symbol die Größe der Kachel angepasst werden, um zu sehen wie sich die Darstellung in verschiedenen Größen verhält.
### Vorlagen
Wenn die Parameter einer Darstellung verändert werden, gelten diese nur für die aktuell ausgewählte Variable. Wenn mehrere Variablen die gleichen Parameter nutzen sollen, können Vorlagen genutzt werden. Vorlagen können unter dem Feld für Darstellungen ausgewählt werden. Wurde eine Vorlage gewählt, so verwendet die Darstellung die Parameter der Vorlage, auch wenn diese später noch angepasst werden sollte. Dennoch können Parameter im Variablendialog weiterhin verändert werden. Entsprechen die Parameter dadurch nicht mehr den Werten der Vorlage oder der übergeordneten Darstellung wird in dem Feld Vorlage "(Benutzerdefiniert)" angezeigt und die eingestellten Parameter gelten wieder genau für diese Variable. Eigene Vorlagen können im [Vorlagenmanager](concepts.md) erstellt und bearbeitet werden.
## Vorlagenmanager
Quelle: https://www.symcon.de/de/service/dokumentation/grundlagen/variablen/variablendarstellung/vorlagenmanager/
_Benötigt Symcon >= 8.0_
Der Vorlagenmanager ist kann über das "+" in der Tabliste aufgerufen werden.

### Aufbau
Der Vorlagenmanager besteht aus einem Baum auf der linken Seite, in welchem Vorlagen gruppiert nach Darstellungen ausgewählt werden können und einem zentralen Detailbereich, welcher sich an die aktuelle Auswahl des Baumes anpasst. Ist kein Eintrag ausgewählt, so werden im Detailbereich alle Darstellungen als Vorschau angezeigt. Alternativ zur Auswahl im Baum, kann hier eine spezifische Darstellung per Klick auf das "Öffnen"-Symbol oben rechts in jeder Kachel geöffnet werden. Ist eine Darstellung ausgewählt, so zeigt der Detailbereich für jede Vorlage dieser Darstellung eine Vorschau und ermöglicht auch hier ein direktes Öffnen. Über den Button "Wer nutzt diese Darstellung?" am unteren Ende des Detailbereichs werden alle Variablen angezeigt, welche diese Darstellung verwenden. Ist schließlich eine Vorlage ausgewählt, so erscheint ein dazugehöriges Konfigurationsformular, analog zum zur Variablenkonfiguration, in welchem die Parameter der Vorlage konfiguriert werden können. Zusätzlich kann der Name der Vorlage angepasst werden. Da jede Vorlage im Hintergrund über eine eindeutige ID und nicht den Namen identifiziert wird, kann der Name bedenkenlos angepasst werden. Er dient lediglich des besseren Verständnisses für den Benutzer. Im unteren Bereich kann über "Wer nutzt diese Vorlage?" eine Liste von Variablen, welche diese Vorlage verwenden, ausgegeben werden. Über "Duplizieren" kann eine neue Vorlage erstellt werden, welche initial mit den gleichen Parametern konfiguriert ist.
> **Hinweis:** Informationen über die einzelnen Parameter der Darstellungen können den [Objektdarstellungen](components/object-presentation.md) entnommen werden
### Vorlagen erstellen

Eine Vorlage kann über das "+" in der Liste auf der linken Seite hinzugefügt werden. In einem Dialog wird die gewünschte Darstellung ausgewählt und danach die Vorlage konfiguriert werden. Falls eine Darstellung ausgewählt ist, kann alternativ auf der rechten Seite auf das "+" geklickt werden um direkt eine Vorlage zur ausgewählten Darstellung zu erstellen.
Um auf einer bestehenden Vorlage aufzubauen, kann diese ausgewählt werden und unten auf "Duplizieren" geklickt werden.
### Vorlagen löschen
Benutzerdefinierte Vorlagen können über das Mülleimersymbol neben dem Namen in der Liste auf der linken Seite gelöscht werden. Die von IP-Symcon bereitgestellten Vorlagen können nicht gelöscht werden.
## Variablenprofile
Quelle: https://www.symcon.de/de/service/dokumentation/grundlagen/variablen/variablenprofile/
> **Achtung:** Variablenprofile werden weiterhin unterstützt. Allerdings gibt es seit der 8.0 [Variablendarstellungen](concepts.md) als modernere und flexiblere Möglichkeit die Darstellung der Variablen anzupassen. Variablenprofile sind dennoch weiterhin über die Darstellung [Legacy Profil](components/object-presentation.md) nutzbar.
Jede Variable kann ein Variablenprofil besitzen. Variablenprofile werden primär dafür genutzt, um Variablenwerte wie True, False oder 0, 1, 2, 3 in eine für den Menschen leserliche Form zu bringen und mit den notwendigen Kontextdaten (z.B. °C) zu versehen. Das Variablenprofil gibt also an, wie eine Variable visualisiert wird.
### Profil auswählen
Ab Version 8.0 erfolgt die Zuweisung eines Variablenprofils über die [Variablendarstellung](concepts.md) [Legacy Profil](components/object-presentation.md). Der Dialog "Variable bearbeiten" ist beim Erstellen einer Variable oder im Nachhinein via "Objektbaum" -> "Doppelklick" oder über "Objektbaum" -> "Rechtsklick" -> "Objekt bearbeiten" erreichbar.
Im Bereich "Variablendarstellung" muss zunächst die Darstellung "Legacy Profil" ausgewählt werden. Anschließend kann unter "Darstellungsparameter" das gewünschte Profil gewählt werden.

### Profil erstellen
Wenn von den Standardprofilen keins passend für die Variable ist können eigene erstellt werden. Diese können dann für beliebig viele Variablen verwendet werden können.
Um die Variablenprofile zu editieren, muss der Profilmanager geöffnet werden. Dieser kann über "+" -> "Profilmanager" in der Tabliste oder im "Variable bearbeiten"-Dialog über den Fingerbutton bei der Profilauswahl unter "Darstellungsparameter" aufgerufen werden.

Es besteht die Möglichkeit, ein Profil aus den vorgefertigten Profilen auszuwählen, eines zu duplizieren oder ein Eigenes zu erstellen. Um ein eigenes Profil zu erstellen, muss linksseitig auf “+” geklickt, dem Profil ein Namen gegeben und das Profil gespeichert werden.


> **Hinweis:** Obwohl die Variablenprofile nach Typen (Boolean, Integer, Float, String) unterschieden werden, kann ein Profilname jeweils nur einmalig vergeben werden.
> **Hinweis:** Beispiele für verschiedene Darstellungsweisen für Variablenprofile im WebFront sind unter [Objekt-Darstellung](components/webfront-visualization.md) sichtbar
> **Achtung:** Standard-Profile können an der Tilde (~) vor dem Profilnamen erkannt werden. Diese Profile werden vom System erstellt und können nicht editiert werden. Bei eigenen Profilen darf die Tilde nicht im Profilnamen verwendet werden.
Es können folgende Änderungen am Profil vorgenommen werden:
| Parameter | Typ | Beschreibung |
| ------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Name | Alle Typen | Name des Profils |
| Präfix | Alle Typen | String vor dem eigentlichen Wert, wie z.B. feste Beschreibung |
| Suffix | Alle Typen | String nach dem eigentlichen Wert wie z.B. °C; Sonderfall: Beim Wert % wird der Wert mit Hilfe von Min/Max in einen Prozentwert umgerechnet. (Wert = (Wert – Min) * 100 / (Max – Min)) |
| Minimalwert | Integer, Float | Kleinstmöglicher Wert der Variable für die Visualisierung |
| Maximalwert | Integer, Float | Größtmöglicher Wert der Variable für die Visualisierung |
| Schrittweite | Integer, Float | Aus Schrittweite berechnet sich die Anzahl der Felder, die in der Visualisierung zum Anklicken erstellt werden (z.B.: Mininmalwert = 0, Maximalwert = 100). Bei einer Schrittweite von 25 würden die Werte 0, 25, 50, 75, 100 zur Auswahl stehen. Ist die Schrittweite auf 0 gesetzt und sind Assoziationen vorhanden, so werden direkt alle Assoziationstexte nacheinander aufgelistet. Hierbei entfallen die sonst gezeigten Pfeile zum Durchklicken. Dieses Feld wird nur ausgewertet, wenn die zu visualisierende Variable durch Zugehörigkeit zu einer Instanz bereits eine Aktion zugewiesen bekommen hat oder ein Aktionsskript zugewiesen wurde. |
| Stellen | Float | Gibt die Anzahl der angezeigten Nachkommastellen an. |
| Icon | Alle Typen | Falls kein Icon über die Assoziationen vorhanden ist, wird das Standard-Icon verwendet. Sollte diese Feld leer bleiben, wird auf das Objekt Icon zurückgegriffen. Alle vorhandenen Icons können hier gefunden werden: [WebFront Icons](components/icons.md) |
| Assoziationen | Alle Typen | __Boolean:__
Zu jedem der beiden Möglichen Werte (True, False) kann ein Text und ein Icon angegeben werden, welches statt des eigentlichen Wertes angezeigt wird. Es wird nur die Darstellung beeinflusst. Der Wert der Variable bleibt erhalten.
__Integer/Float__:
1.Wie bei Boolean ist es möglich, für einen Wert eine Repräsentation über einen Text und ein Icon zu wählen. Dabei muss im einfachsten Fall für jeden Wert ein Text und Icon angegeben werden.
2. Die zweite Möglichkeit besteht darin, Werte auszulassen, um z.B. nur wichtige Positionen, die eine Änderung benötigen, anzuzeigen. So könnten für eine Jalousie z.B. nur die Werte 0, 50, 100 interessant sein, da nur für diese Icons verwendet werden. Die Assoziationen können definiert werden, indem für die Werte 0, 50, 100 einen Eintrag hinzufügt werden. Dabei würden die Einträge für folgende Werte gültig sein: 0 (0-49), 50 (50-99) und 100 (100).
3. Es gibt die Möglichkeit, einen Ausdruck zu generieren, der den aktuellen Wert enthält. Dafür kann ein %d (int) oder %f (float) Platzhalter genutzt werden. So würde ein "Lampenstufe%d" z.B. als "Lampenstufe4" dargestellt werden. __Hinweis:__ Wird eines der beiden Felder (Text / Icon) leer gelassen, so wird der normale Wert oder das Standard Icon verwendet. Für einen leeren Text muss ein Leerzeichen verwendet werden.
__String (ab Version 6.0)__:
Zu jeden String Wert kann ein Text, Farbe und ein Icon angegeben werden. Die Reihenfolge der Assoziationen richtet sich nach der Erstellreihenfolge. Es gibt keine Sortiermöglichkeit, somit müssen um neue Assoziationen einzusortieren alle darauffolgenden gelöscht und dann sortiert neu angelegt werden. |
> **Achtung:** Profile werden nur für die Visualisierung verwendet. Sobald der Variablenwert außerhalb der angegebenen Minimal-/Maximalwert Grenzen liegt oder außerhalb der spezifizierten Assoziationen, kann eine falsche oder gar keine Ausgabe des jeweiligen Wertes erfolgen.
> **Achtung:** Die maximale Anzahl von gleichzeitiger Assoziationen pro Profil ist 128.
### Beispiel
Wenn im Profil Minimalwert=0 und Maximalwert=20 definiert sind und % als Suffix angegeben wird, aber der Variablenwert 40 ist, so wird in der Visualisierung 200% angezeigt. Die Min/Max Werte limitieren nicht den Variablenwert!
> **Hinweis:** Je nach Variablentyp können als Platzhalter %d und %f genutzt werden. Um die Nachkommastellen zu beeinflussen, kann folgendes Format verwendet werden (%.2f für zwei Nachkommastellen).
> **Hinweis:** Um das Prozentzeichen (%) innerhalb eines Assoziationstextes nutzen zu können, muss ein doppeltes Prozentzeichen (%%) eingegeben werden.
> **Hinweis:** Eine Möglichkeit um die Variablen schon in einer formatierten Weise in Skripten zu nutzen beinhaltet die Funktion [GetValueFormatted](functions/access-variables.md)
## Ereignisse
Quelle: https://www.symcon.de/de/service/dokumentation/grundlagen/ereignisse/
Ein Ereignis ist eine automatisierte und an eine Bedingung geknüpfte Aktion.
Eintretende Ereignisse modifizieren angebundene Objekte. Die Anbindung geschieht durch das “Unterordnen” innerhalb der IP-Symcon Verwaltungskonsole. ( siehe: [Anbindungsarten](concepts.md))
Ereignisse treten abhängig von ihrem Ereignistyp und eingerichteten Bedingung ein. ( siehe: Ereignistypen)
### Anbindung an Aktionsziel
Das angebundene Objekt wird hierbei als Ziel für eine [Aktion](concepts/automations.md) definiert. Wie bei Aktionen üblich, kann eine zu dem Ziel passende Aktion gewählt und konfiguriert werden.
Die Aktion eines Ereignisses bestimmt was geschehen soll, wenn das Ereignis geschaltet wird. Weitere Informationen gibt es unter [Aktionen](concepts/automations.md) .

### Ereignistypen
Man unterscheidet zwischen drei Ereignistypen.
| Typ | Beschreibung |
| ------------------------------------------------- | --------------------------------------------------------------------------------------- |
| [Zyklisch](concepts.md) | Zu einem bestimmten und einmaligen oder wiederholenden Zeitpunkt eintretendes Ereignis. |
| [Ausgelöst](concepts.md) | An eine bestimmte Variable gebundenes Ereignis. |
| [Wochenplan](concepts.md) | Mit dem Wochenplan im WebFront konfiguriertes Ereignis. |
> **Hinweis:** Zugriff auf Systemvariablen:
> IP-Symcon liefert automatisch grundlegende Variablen, auf welche innerhalb von Skripten zugegriffen werden kann.
> Dies funktioniert allerdings nur sofern das Skript von einem Ereignis aufgerufen wurde.
> Siehe auch:
> [Systemvariablen](concepts/automations.md)
### Bedingungen
Bedingungen erweitern Ereignisse um weitere Optionen, die erfüllt sein müssen, damit das Ereigniss eintritt. Somit können Mehrfachbedingungen realisiert werden.
Weitere Bedingungen können im Abschnitt "Weitere Bedingungen" -> "Hinzufügen" hinzugefügt werden.
Als Typ kann Variable, Datum, Wochentag oder Uhrzeit ausgewählt werden. Weitere Regeloptionen sind zum einen der Wert auf den verglichen werden soll und der angewandte Vergleichsoperator (Siehe Tabelle [Vergleichsoperatoren](concepts.md)).
In der Übersicht sind alle Regeln aufgelistet. Ein "Haken" bzw. "Kreuz" zeigt an ob eine Regel momentan erfüllt ist oder nicht. Über das Zahnradsymbol kann die die jeweilige Regel angepasst werden. Das DropDown- Menü "Evaluation" bestimmt, ob alle angegebenen Regeln erfüllt sein müssen oder schon eine erfüllte Regel ausreicht um die Ereignissaktion zu starten.
Der Live Zustand zeigt an ob das Ereignis unter den momentanen Regeln schalten würde oder nicht.
#### Vergleichsoperatoren
Vergleichsoperatoren beschreiben das Verhalten, wann ein Vergleich erfüllt ist oder nicht.
| Operator | Erklärung |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
| Gleich (=) | Ist erfüllt, wenn der Regelwert genau dem übergebenen Wert entspricht.
(Z.B. true = true, 123 = 123) |
| Ungleich (≠) | Ist erfüllt, wenn der Regelwert nicht dem übergeben Wert entspricht.
(Z.B. false ≠ true, 123 ≠ 122 od. 124) |
| Größer (>) | Ist erfüllt, wenn der Regelwert echt größer als der übergebene Wert ist.
(Z.B. 123 > 122, 09:00 > 08:59) |
| Größer gleich (≥) | Ist erfüllt, wenn der Regelwert größer als oder gleich dem übergebenen Wert ist.
(Z.B. 123 ≥ 122 od. 123, 09:00 ≥ 08:59 od. 09:00) |
| Kleiner (<) | Ist erfüllt, wenn der Regelwert echt kleiner als der übergebene Wert ist.
(Z.B. 123 < 124, 09:00 < 09:01) |
| Kleiner gleich (≤) | Ist erfüllt, wenn der Regelwert kleiner als oder gleich dem übergebenen Wert ist.
(Z.B. 123 ≤ 124 od. 123, 09:00 ≤ 09:01 od. 09:00) |
#### Beispiel
Ein Lampe soll nur angeschaltet werden, wenn der Bewegungsmelder aktiviert wird.
Zusätzlich soll dies aber nur geschehen wenn es zu dunkel (Helligkeitswert unter 500) und es zwischen 09:00 und 17:00 Uhr ist.
Zunächst ein ausgelöstes Ereignis hinzufügen. Dabei den Bewegungsmelder als Auslöser bei "Anwesenheit" und die Lampe als Zielinstanz mit dem Befehl den Wert auf "An" setzen.

Draufhin unter "Weitere Bedingungen" in der Regelübersicht weitere Regeln über "Hinzufügen" erstellen.
Den Lichtwert "Helligkeit" mit der Regel "kleiner" als 500 einrichten.

Die Uhrzeit mit der Regel "größer gleich" 9 Uhr einrichten.

Die Uhrzeit mit der Regel "kleiner gleich" 17 Uhr einrichten.

In der Übersicht sind nun alle drei Regeln aufgeführt und der Live-Zustand gibt an, ob die momentanen Regeln bei einem Auslösen das Schalten zulassen würden.

## Ausgelöst
Quelle: https://www.symcon.de/de/service/dokumentation/grundlagen/ereignisse/ausgeloest/
Dieser Ereignistyp löst durch Aktualisierung einer angebundenen Variable aus, unabhängig von dem Zeitpunkt der Auslösung.
Dazu stehen 5 Auslöser zur Auswahl.
> **Hinweis:** Skripte, die durch das Variablenereignis ausgeführt werden, beinhalten diese [Systemvariablen](concepts/automations.md)
### Auslöser

| Art des Auslösers | Beschreibung |
| ----------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Bei Änderung: | Das Ereignis löst bei jeglicher Werteänderung der gewählten Variable aus. |
| Bei Aktualisierung: | Das Ereignis löst bei jedem empfangenen Variablenwert aus. Dies gilt auch wenn der empfangene und der bereits vorhandene Wert identisch sind. |
| Bei Grenz- unter/überschreitung: (Option “Nachfolgende Ereignisse ausführen”) | Das Ereignis löst aus, wenn der Wert der gewählten Variable einen gesetzten Wert über- oder unterschreitet. Der "Wert" setzt den Grenzwert bei dem Auslösung erfolgt. |
| Bei bestimmten Wert: (Option “Nachfolgende Ereignisse ausführen”) | Das Ereignis löst aus, wenn die gewählte Variable genau einen bestimmten Wert erreicht. Der "Wert" setzt den genauen Wert bei dem Auslösung erfolgt. |
### Optionen
#### Nachfolgende Ereignisse ausführen
__Einmalige Auslösung bei wiederholt erfüllter Bedingung:__ Das Ereignis löst einmalig aus. Erst wenn die Bedingung im Auslöser zwischenzeitlich nicht erfüllt war löst ein erneutes über- / unterschreiten der Grenze oder erreichen des bestimmten Wertes das Ereignis wieder aus.
__Mehrmalige Auslösung bei wiederholt erfüllter Bedingung:__ Das Ereignis löst bei jeder Aktualisierung aus, solange die Bedingung erfüllt ist.
## Zyklisch
Quelle: https://www.symcon.de/de/service/dokumentation/grundlagen/ereignisse/zyklisch/
Dieser Ereignistyp wird zu einem bestimmten Zeitpunkt ausgelöst und kann sich zyklisch wiederholen.
Der Zeitpunkt wird durch die Kombination von “Tagessmuster” und “Zeitmuster” definiert.
> **Hinweis:** Skripte, die durch das zyklische Ereignis ausgeführt werden, beinhalten diese [Systemvariablen](concepts/automations.md)
#### Tagessmuster
Hat 5 Optionen

| Tagessmuster | Beschreibung |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| Tagesintervall | Gibt den Tageintervall an (1 = jeden Tag; 2 = jeden zweiten Tag ; …) in denen das Ereignis ausgelöst werden soll. |
| Wochenintervall | Gibt den Wochenintervall an (1 = jede Woche; 2 = jede zweite Woche; …) und an welchen Tagen einer Woche das Ereignis ausgelöst werden soll. |
| Monatsintervall | Gibt den Monatsintervall an (1 = jeden Monat; 2 = jeden zweiten Monat; …) und an welchem Tag im Monat das Ereignis ausgelöst werden soll. |
| Ein Tag im Jahr | Gibt einen bestimmten Tag im Jahr an, an dem das Ereignis ausgelöst werden soll. |
| An bestimmten Tag | Gibt ein bestimmtes Datum an, an dem das Ereignis ausgelöst wird. |
#### Zeitmuster
Hat 4 Optionen

| ZeitMuster | Beschreibung |
| ---------- | ------------------------------------------------------------------------- |
| Einmalig | Gibt eine bestimmte Uhrzeit an dem das Ereignis ausgelöst werden soll. |
| Sekündlich | Gibt den Sekundenintervall an, in dem das Ereignis ausgelöst werden soll. |
| Menütlich | Gibt den Minutenintervall an, in dem das Ereignis ausgelöst werden soll. |
| Stündlich | Gibt den Stundenintervall an, in dem das Ereignis ausgelöst werden soll. |
#### Sonderoptionen
##### Von/Bis
Start und Endzeitpunkt bestimmbar
> **Hinweis:** Der "Bis"-Wert muss größer sein als "Von"-Wert
| Einstellmöglichkeiten | Beschreibung |
| --------------------- | --------------------------------------------------------------------- |
| Bei Tagessmuster | Gibt den Datumszeitraum an in der das Ereignis aktiv ist. |
| Bei Zeitmuster | Gibt den Tageszeitraum an in der das Ereignis aktiv ist. |
| Von | Startzeitpunkt = Gibt an ab wann das Intervall anfängt zu zählen. |
| Bis | Endzeitpunkt = Letzter Zeitpunkt bei dem ein Ereignis auslösen kann. |
| "Ohne Begrenzung" | Kein Endzeitpunkt. Wenn deaktiviert, wird die "Bis" Option angezeigt. |
##### Weitere Bedingungen
Die Funktion der weiteren Bedinungen kann unter [Bedingungen](concepts.md) nachgelesen werden.
### Beispiele
#### Jeden Freitag um 09:00Uhr:
Tagessmuster = Wöchentlich mit Haken bei Freitag
Zeitmuster = einmalig mit 09:00:00
#### Alle 5 Minuten im Zeitraum von 12:02:10 bis 16:00:00 Uhr
Tagessmuster = Täglich mit dem Wert 1
Zeitmuster = Minütlich mit dem Wert 5
Von: 12:02:10 Bis: 16:00:00
Kein Haken bei “Ohne Begrenzung”
Erste Ausführung Freitags um 12:02:10
Zweite Ausführung Freitags um 12:07:10
...
--fortlaufend bis-->
...
Letzte Ausführung Freitags um 15:57:10
#### Täglich und dort minütlich im Zeitraum von 23:00 bis 06:00
Es müssen 2 Timer erstellt werden.
Timer 1:
Tagessmuster = Täglich mit dem Wert 1
Zeitmuster = Minütlich mit dem Wert 1
Kein Haken bei "Ohne Begrenzung"
Von: 00:00:00 Bis: 06:00:00
Timer 2:
Tagessmuster = Täglich mit dem Wert 1
Zeitmuster = Minütlich mit dem Wert 1
Kein Haken bei "Ohne Begrenzung"
Von: 23:00:00 Bis: 23:59:59
## Wochenplan
Quelle: https://www.symcon.de/de/service/dokumentation/grundlagen/ereignisse/wochenplan/
Der Wochenplan ist ein grafisches Werkzeug zur Konfiguration von wöchentlichen Abläufen.
In der Verwaltungskonsole erstellt man den Wochenplan, den Gruppentyp, die Aktionen und die Anbindungsart.
Innerhalb der Visualisierung "WebFront" und Wochenplankonfiguration können die Aktionen und somit Aktionswechsel definiert werden.
### Gruppentypen
Hat 4 Optionen.

| Typ | Beschreibung |
| ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| Eine Gruppe: Gesamte Woche (Mo - So) | Alle Wochentage sind zu einer Gruppe zusammengefasst. |
| Zwei Gruppen: Arbeitstage (Mo - Fr) und Wochenende (Sa + So) | Unterteilt die Woche in zwei Gruppen um somit die Tage Mo-Fr und Sa-So unabhängig voneinander konfigurieren zu können. |
| Sieben Gruppen: Eine Gruppe pro Tag | Jeder Wochentag kann einzeln konfiguriert werden. |
| Erweitert | Die Wochentage können in beliebig kombiniert werden. Jede Kombination wird in einer Gruppe zusammengefasst und konfiguriert werden. |
### Aktionen
Der Wochenplan bietet Aktionen passend zum ausgewählten Ziel.
Es müssen mindestens zwei Wochenplanaktionen hinzugefügt werden.
Als Teil der Wochenplanaktion wird eine [Aktion](concepts/automations.md) für das Ziel definiert.
#### Wochenplanaktion hinzufügen
Um eine Wochenplanaktion hinzuzufügen muss auf "Hinzufügen" geklickt werden.
Es kann der Wochenplanaktion ein Name, eine Farbe und eine [Aktion](concepts/automations.md) zugewiesen werden.

### Konfiguration der Wochenplanaktionen
Die Zeiträume von Aktionen können innerhalb der Verwaltungskonsole und WebFront konfiguriert werden.
Dabei gilt innerhalb der grafischen Darstellung:
__Einfaches Klicken__ bearbeitet einen vorhanden Zustand.
__Klicken & Ziehen__ erstellt einen neuen Zustand.
#### In der Verwaltungskonsole

#### Im WebFront


> **Hinweis:** Nur bei einem Aktionswechsel wird die ausgewählte Aktion ausgeführt.
> **Achtung:** Wichtiger Hinweis:
> Zuvor gesetzte Aktionen werden durch einen Aktionswechsel nicht aufgehoben.
> D.h. Wenn man in einer Aktion das Licht eingeschaltet hat, wird bei einem Wechsel in die nächste Aktion nicht automatisch das Licht ausgeschaltet, außer man beschreibt dies explizit.
#### An Ablaufplan angebunden
Wird auf einem [Ablaufplan](concepts/automations.md) die Aktion "Führe Automation aus" gewählt, so kann über die Aktion "Bei Wochenplanaktion" bei einer bestimmten Wochenplanaktion eine Reihe von Aktionen ausgeführt werden. Wird der erste Wochenplan einem Ablaufplan als Auslöser hinzugefügt, so werden die "Bei Wochenplanaktion"-Aktionen automatisch hinzugefügt.

### Beispiel mit Ablaufplan
Dies ist ein Ablaufplanbeispiel, welches über einen Wochenplan ausgeführt wird.

#### An PHP-Skript angebunden
Wird auf einem [PHP-Skript](concepts/automations.md) die Aktion "Führe Automation aus" gewählt, so steht die ID der Wochenplanaktion als [Systemvariable](concepts/automations.md) $_IPS['ACTION'] zur Verfügung.
### Beispiel mit Skript
Dies ist ein PHP-Skript-Beispiel, welches über einen Wochenplan ausgeführt wird.
```php
//switch über die ID's der Aktionen
switch ($_IPS['ACTION']) {
case 1: //ID 1
SetValueBoolean(39540 /*[Testumgebung\Arbeitstag]*/, true);
echo "Hallo Welt, Unter der Woche";
break;
case 2: //ID 2
SetValueBoolean(39540 /*[Testumgebung\Arbeitstag]*/, false);
echo "Hallo Welt, Yay Wochenende!!";
break;
}
```
#### Tipp für Experten
Um herauszufinden, welche Wochenplanaktion momentan aktiv ist, kann dies über ein Skript abgefragt werden.
```php
$e = IPS_GetEvent($id);
$actionID = false;
//Durch alle Gruppen gehen
foreach($e['ScheduleGroups'] as $g) {
//Überprüfen ob die Gruppe für heute zuständig ist
if($g['Days'] & date("N") > 0) {
//Aktuellen Schaltpunkt suchen. Wir nutzen die Eigenschaft, dass die Schaltpunkte immer aufsteigend sortiert sind.
foreach($g['Points'] as $p) {
if(date("H") * 3600 + date("i") * 60 + date("s") >= $p['Start']['Hour'] * 3600 + $p['Start']['Minute'] * 60 + $p['Start']['Second']) {
$actionID = $p['ActionID'];
} else {
break; //Sobald wir drüber sind, können wir abbrechen.
}
}
break; //Sobald wir unseren Tag gefunden haben, können wir die Schleife abbrechen. Jeder Tag darf nur in genau einer Gruppe sein.
}
}
var_dump($actionID);
```
## Medien
Quelle: https://www.symcon.de/de/service/dokumentation/grundlagen/medien/
Von IP-Symcon unterstützte Medien sind Bild und Ton-Dateien, Diagramme, Dokumente, Streams sowie Views von IPSStudio.

### Medien hinzufügen
Die Anleitung wie die jeweiligen Medien eingerichtet werden befinden sich in den jeweiligen Unterkategorien.
Es können folgende Medien eingebunden werden.
[Bild und Ton](concepts.md)
[Diagramme](concepts.md)
[Dokumente](concepts.md)
[Streams](concepts.md)
[Views von IPSStudio](https://ipsview.brownson.at/)
## Bild/Ton
Quelle: https://www.symcon.de/de/service/dokumentation/grundlagen/medien/bild-ton/
### Bild- oder Tondatei hinzufügen
Um eine Bild- oder Ton-Datei dem Media-Pool hinzuzufügen, muss der Dialog "Objekt hinzufügen -> Medien -> Bild oder Ton" genutzt werden.
Es kann eine beliebige Ton- oder Bilddatei von Festplatte, Netzwerk, Internet usw. ausgewählt werden, welche dann von IP-Symcon in den Media-Pool kopiert wird.


Hinzugefügte Bild/Ton-Objekte können im Objektbaum eingesehen werden.
Eine Vorschau kann mit Doppelklick auf das Medienobjekt im Objektbaum angezeigt werden.


#### Erlaubte Dateiendungen
| Endung | ab Version |
| ------ | ---------- |
| .jpg | 3.4 |
| .jpeg | 3.4 |
| .gif | 3.4 |
| .png | 3.4 |
| .ico | 3.4 |
| .webp | 8.1 |
> **Hinweis:** Es können alle Dateien hinzugefügt werden - die korrekte Darstellung in der Kachel Visualisierung wird aber nur für diese Typen garantiert
## Diagramme
Quelle: https://www.symcon.de/de/service/dokumentation/grundlagen/medien/charts/
In einem Diagramm können ein oder mehrere Variablen als Graphen dargestellt werden. Voraussetzung hierfür ist, dass zuvor bei den betreffenden Variablen das Logging aktiviert wurde. Das Einrichten vom Logging wird im [Archiv Control](modules/archive-control.md) beschrieben.
### Einrichtung in IP-Symcon
Über den Rechtsklick-Dialog "Objekt hinzufügen" -> "Medien" -> "Diagramm" kann ein neues Diagramm an gewünschter Position angelegt werden. Im Folgenden werden die Konfigurationsmöglichkeiten erklärt. Die dort ausgewählten (geloggten) Variablen dienen als Datenquelle für die einzelnen Graphen.
#### Diagramm bearbeiten
Allgemeine Eigenschaften des Diagramms.
| Option | Beschreibung |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Hinzufügen | Hinzufügen der einzelnen Variablen -> Öffnet den "Graph konfigurieren" Dialog. Bei schon verhandenen Graphen wird dieser über das Zahnrad in der Liste aufgerufen |
| Name | Der Name des Diagramm |
| Ort | Auswahl des Speicherorts für das Diagramm |
| Typ | Auswahl der Darstellung als Linien-, Balken- oder Bool-Diagramm |
| Visuelle Einstellungen | Hier könnnen ein Icon ausgewählt, die Anzeige und Aktivierung konfiguriert werden |
| Weitere Einstellungen | Bietet die Möglichkeit eine Beschreibung anzugeben |
#### Graph konfigurieren
Ein Graph repräsentiert ein Datenset für das Diagramm.
| Feld | Beschreibung |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Achsenprofil | Auswahl des Variablenprofils. Die darin angegeben Min- und Max-Werte dienen der Skalierung der Y-Achse. (Auswahlmöglichkeit entfällt bei Bool-Diagramm) |
| Achsenseite | Auswahl ob die Beschriftung für diesen Graphen Links oder Rechts sein soll. (Auswahlmöglichkeit entfällt bei Bool-Diagramm) |
| Füllfarbe | Auswahl der gewünschten Füllfarbe - Transparenz möglich |
| Linienfarbe | Auswahl der gewünschten Linienfarbe |
| Titel | Aussagekräftiger Titel des Graphen, welcher in der Legende dargestellt wird. Bei einem leeren Titel wird der Name der Variable genutzt |
| Variable | Auswahl der darzustellenden Variablen |
| Zeitversatz | Verschiebung der jeweiligen Zeitachse um die eingestellte Zeiteinheit. (Beispiele siehe unten) |
### Darstellung
__Darstellung als Popup Graph__
Um einen Popup Graph anzuzeigen muss das Diagramm einfach in die gewünschte [Kategorie](concepts.md) im Objektbaum verschoben werden.
__Darstellung als Vollbild Graph__
Um einen Vollbild Graphen darzustellen muss das Diagramm im WebFront als [Graphenelement](components/webfront-visualization.md) hinzugefügt werden.
### Darstellungsarten
Aktivierbare Darstellungsarten, welche innerhalb des Graphen geschaltet werden können.
| Abkürzung | Bedeutung | Beschreibung |
| --------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| CON | Kontinuierlich | Die X-Achse wird so angepasst, dass der aktuellste Wert an der rechten Graphengrenze dargestellt wird. Dies dient dazu die größtmögliche Menge an aktuellen Daten darzustellen |
| CSV | Datensätze | Zeigt die verwendeten Datensätze und Zeitstempel für die jeweiligen Werte an |
| DYN | Dynamisch | Wenn aktiviert: Wird der dargestellte Ausschnitt an die Mininmal-/Maximalwerte des Graphen auf der Y-Achse angepasst.
Wenn deaktiviert: Werden die Grenzen des eingestellten Variablenprofils genutzt |
| HD | Hohe Dichte | Wenn aktiviert: Wird eine höhere Genauigkeit der Durchschnittswerte zur Darstellung des Graphen genutzt. Siehe Tabelle __Durchschnittswertgrundlage__ |
| Legende | Legende | (nur Diagramme) De-/Aktiviert die Darstellung der Legende |
| MIN/MAX | Min/Max | (nur automatische Variablendarstellung) Es werden 2 zusätzliche Graphen mit den Minimal-/Maximalwerten dargestellt |
| RAW | Rohdaten | Wenn aktiviert: Werden die Rohdaten dargestellt. Wenn deaktiviert: Werden die aggregierten Werte genutzt |
__Durchschnittswertgrundlage__
| Zeitraum | Standard | Hohe Dichte (HD) |
| -------- | --------- | ---------------- |
| Dekade | Jahre | Monate |
| Jahr | Monate | Tage |
| Monat | Tage | Stunden |
| Woche | Tage | Stunden |
| Tag | Stunden | 5-Minuten |
| Stunde | 5-Minuten | 1-Minuten |
### Beispiel 1 (Typ: Balken)
Dieses Beispiel zeigt die Gegenüberstellung von Verbrauchswerten einer Steckdose.
Hier wurde zweimal die selbe Variable ausgewählt, wobei eine (hier dunkelgrün) den "Zeitversatz" von -1 hat.
In der Wochen-Darstellung sieht man einen Vergleich zur Vorwoche; in der Jahres-Darstellung wäre demzufolge ein Vergleich zum Vorjahr.


### Beispiel 2 (Typ: Linien)
Dieses Beispiel zeigt den Ertrag einer Solaranlage, sowie ein Summenwert für den aktuellen Verbrauch. Die Werte für diese beiden Graphen sind linksseitig ablesbar.
Zusätzlich wurde noch die Außentemperatur mit integriert, dessen Werte an der rechten Seite abzulesen sind.


### Beispiel 3 (Typ: Bool)
Dieses Beispiel zeigt einen Bool-Diagramm, welches den Zustand von einem Bewegungsmelder im Verlaufe von 4 aufeinanderfolgenden Stunden darstellt.


## Dokumente
Quelle: https://www.symcon.de/de/service/dokumentation/grundlagen/medien/dokumente/
_Benötigt Symcon >= 4.3_
### Medien-Dokument hinzufügen
Über den Dialog "Objekt hinzufügen -> Medien -> Dokument" kann eine neue Mediendatei vom Typ Dokument hinzugefügt werden.
Es kann eine neue Datei erstellt oder eine vorhande von Festplatte, Netzwerk usw. ausgewählt werden, welche dann von IP-Symcon in den Media-Pool kopiert wird.
Hinzugefügte Dokumente können im Objektbaum unter "Media Dateien" eingesehen und geöffnet werden.

#### Erlaubte Dateiendungen
| Endung | ab Version |
| ------ | ---------- |
| .doc | 4.3 |
| .docx | 5.2 |
| .pdf | 4.3 |
| .txt | 4.3 |
| .xls | 4.3 |
| .xlsx | 5.2 |
> **Hinweis:** Es können alle Dateien hinzugefügt werden, aber ein späterer Support via WebFront wird nur für die angegeben Dateitypen vorhanden sein
## Streams
Quelle: https://www.symcon.de/de/service/dokumentation/grundlagen/medien/streams/
### Medien-Stream hinzufügen
Über den speziellen Medientyp Stream können MJPEG und RTSP Stream zum WebFront hinzugefügt werden. Weitere Informationen und die Adresse kann der Dokumentation der genutzten Web-Kamera entnommen werden. Die Größe des Streams kann ebenfalls über die Konfiguration der Web-Kamera parametriert werden. Innerhalb des Dialogs von IP-Symcon muss die vollständige Adresse inklusive des Benutzernamen/Passworts eingetragen werden.
> **Achtung:** RTSP Streams können aktuell in Chrome, Firefox, Opera, Edge, Android (inkl. Apps ab Version 5.1), Safari (ab Version 5.5) und iOS (inkl. Apps ab Version 5.5) dargestellt werden.
> **Hinweis:** RTSP Streams müssen H.264 codiert sein. Da IP-Symcon bei RTSP Streams als Verteiler agiert, werden hier Limitierungen in Abhängigkeit der [Edition](https://www.symcon.de/de/produkt/editionen/) angewandt.
> **Hinweis:** Für **Axis** Kameras: Um Streams in der Kachel-Visualisierung verwenden zu können ist es erforderlich in den "Advanced Options" die "Plain Config" zu öffnen und die Einstellung **Image.I0.MPEG.H264.PSEnabled** zu aktivieren. Danach per **Save** speichern und die Kachel-Visualisierung neu laden, um den Stream korrekt laden zu können.

## Links
Quelle: https://www.symcon.de/de/service/dokumentation/grundlagen/links/
### Beschreibung
Links sind verknüpfte Objekte und dienen dazu, bereits vorhandene Objekte an anderer Stelle im Objektbaum wiederzuspiegeln. Dies geschieht ohne vorhandene Strukturen oder Sortierungen zu ändern.
Es werden alle Eigenschaften des ursprünglichen Objekt wiedergespiegelt.
Einzig folgende Eigenschaften können bei Links geändert werden:
- Name
- [Icon](components/icons.md) für das WebFront
- Sichtbarkeitseinstellung für das WebFront.
Verlinkt werden können alle Objekte aus dem Objektbaum:
- Kategorien
- Instanzen
- Variablen
- Skripte
- Ereignisse
- Medien
> **Achtung:** Links von Links sind nicht möglich. Mehrfache Links von ein und demgleichen Objekt allerdings schon.
### Anwendung
Links dienen primär dazu im WebFront Objekte an der gewollten Stelle positionieren zu können. Das heißt anstatt das Objekt selbst an die Position im WebFront zu setzen, wird ein Link von diesem Objekt an die Position gesetzt.
Eine weitere Anwendungsmöglichkeit wären Links auf "verstreute" Objekte um eine Übersichtsseite zu erstellen, welche zentral alle wichtigen Informationen abbildet.
Ein Objekt kann wiefolgt verlinkt werden: Rechtsklick auf das zu verlinkende Objekt -> "Objekt verlinken" -> Zu verlinkendes Objekt auswählen.
> **Hinweis:** Für die iOS und Android App sind mehrfach Verschachtelung nicht möglich. Per Link können verschachtelte Objekte wieder an die "Oberfläche" geholt und somit auch dargestellt werden.
### Beispiel
Ein mögliches Beispiel befindet sich unter dem Punkt Vorgehensweisen -> [Links verwenden](how-to.md)