Was können wir verbessern?

Dokumentation

(Bearbeiten)

Configurator

Benötigt: IP-Symcon >= 5.0

Beschreibt das Aussehen und Funktionalität eines Konfigurators.

Beispiel

Dieses Element wird von der Legacy-Konsole nicht unterstützt. Wird ein Modul mit diesem Element in der Legacy-Konsole geöffnet, so kommt es zu einer Fehlermeldung.

Allgemeine Parameter

Parameter Beschreibung
caption (optional) sichtbare Beschriftung der Konfigurationsliste
columns (optional) (default: Spalten für Adresse ("address") und Name ("name") ) Spalten der Konfigurationsliste
delete (optional) (default: false) Wenn true, dann wird hinter jedem Eintrag mit InstanzID ein Button eingeblendet, welcher die entsprechende Instanz löscht und die Zeile im Konfigurator aktualisiert
name (optional) Name der Konfigurationsliste
rowCount (optional) (default: 0) sichtbare Anzahl von Zeilen; bei mehr Zeilen in der Liste wird ein Scrollbalken eingeblendet - ist der Wert 0, so füllt die Konfigurationsliste den restlichen noch verfügbaren Platz im Instanzeditor. Nur ein Konfigurationselement kann den gesamten restlichen Platz erhalten.
sort (optional) Sortierung der Tabelle. Wird dies nicht gesetzt bleibt die Liste unsortiert
type Configurator
values (optional) Einträge der Form
visible (optional) (default: true) Bei true ist der Configurator sichtbar, ansonsten ist er unsichtbar (ab IP-Symcon 5.2)

Sollen die Parameter columns, sort oder values per UpdateFormField verändert werden, so müssen die neuen Werte als JSON codiert werden.

Parameter für columns

Parameter Beschreibung
caption sichtbare Beschriftung einer Spalte
label sichtbare Beschriftung einer Spalte (veraltet)
name eindeutiger Name einer Spalte um diese zu referenzieren; der Name darf nicht "id", "parent", "create", "expanded" oder "instanceID" sein
visible (optional) (default: true) Bei false wird die Spalte nicht angezeigt
width Breite der Spalte in Pixeln, als CSS-String (z.B. "100px"); eine einzige Spalte darf den Wert "auto" haben, wodurch die Breite dieser Spalte den restlich verfügbaren Platz nutzt. Im Falle eines Baumes muss bei einer Spalte der Wert "auto" gesetzt sein. An dieser Spalte werden die Erweiterungs-Symbole dargestellt.

Parameter für sort

Parameter Beschreibung
column Name der Spalte, nach welcher die Liste sortiert wird
direction Die Richtung der Sortierung; "ascending" für eine aufsteigende Sortierung und "descending" für eine absteigende Sortierung

Parameter für values

Parameter Beschreibung
address (optional) (default: "") Wurden die Standardspalten verwendet, so kann mit diesem Pvarameter der Wert für die Adresse gesetzt werden
create (optional) (default: error) Vorgabe der Konfiguration der erstellten Instanz (Mehr Informationen)
expanded (optional) (default: false) Falls dieser Wert true ist, wird der Eintrag beim Laden des Konfigurationsformulares direkt ausgeklappt
instanceID (optional) (default: 0) InstanzID des Gerätes im Objektbaum, 0 wenn das Gerät noch nicht erstellt wurde
id (optional) Ein Identifikator, mit welchem der Eintrag für eine Baumdarstellung als Elternknoten adressiert werden kann, id muss größer als 0 sein
name (optional) (default: "") Wurden die Standardspalten verwendet, so kann mit diesem Parameter der Wert für den Namen gesetzt werden
parent (optional) (default: 0) In diesem Feld kann die id eines Wertes gesetzt werden, welcher in der Baumdarstellung der Elternknoten von diesem Wert wird. Hiefür muss der Eltern-Wert im Array vor dem Kind stehen. Ist "parent" 0, so wird das Element auf oberster Ebene eingefügt.

Parameter für create

Es gibt verschiedene Möglichkeiten die zu erstellenden Instanzen und deren initiale Konfiguration zu definieren.

Variante 1: Konfiguration einer einzelnen Instanz

In der ersten Variante wird eine einzelne Instanz und deren Konfiguration definiert. In diesem Fall ist create ein Objekt, welches Informationen über die verwendete ModulID und die initiale Konfiguration enthält:

Parameter für Einrichtung

Parameter Beschreibung
moduleID Die Modul ID der zu erstellenden bzw. benötigten Instanz
configuration Die benötigte Konfiguration der Instanz, siehe IPS_SetConfiguration, nicht als JSON-String codiert
location (optional) (default: []) Die Liste von Strings gibt die initiale Position im Objektbaum an. Bei einer leeren Liste wird die Instanz in der Hauptkategorie erstellt. Ansonten werden hierarchisch die Kategorien mit dem jeweiligen Namen verwendet und bei Bedarf erstellt.
info (optional) (default: "") Die initiale Beschreibung der neu erstellten Instanz; wird eine bereits existierende Instanz verwendet, wird die Beschreibung nicht überschrieben.
position (optional) (default: 0) Die initiale Position der neu erstellten Instanz; wird eine bereits existierende Instanz verwendet, wird die Position nicht überschrieben.
name (optional) (default: Modulname oder Wert der Spalte "name") Der initiale Name der neu erstellten Instanz; wird eine bereits existierende Instanz verwendet, wird der Name nicht überschrieben. (ab IP-Symcon 5.5)
noDiscovery (optional) (default: false) Steht dieser Parameter auf true, so wird dieser Eintrag bei der Gerätesuche nicht als Gerät angezeigt und kann auch nicht als gelesen markiert werden. Bei einer Konfiguration als Kette (Variante 2) wird der Wert des ersten Eintrags der Kette verwendet. Bei mehreren möglichen Konfigurationen (Variante 3) muss jede Konfiguration diesen Parameter auf true haben, damit die Auswahl nicht in der Gerätesuche auftaucht. (ab IP-Symcon 5.4)
statusVariables (optional) (default: {}) Dies Objekt gibt eine initiale Konfiguration der Statusvariablen vor. Für jeden Parameter dieses Statusvariablen-Objektes wird die Variable mit dem Ident des Parameternamens konfiguriert. Der dazugehörige Parameter ist ein weiteres Objekt, welches die Konfiguration der Variablen definiert. Die Variablenkonfiguration wird nach der Übernahme der Instanzkonfiguration angewandt. Variablen, die erst später erstellt werden, können hier nicht konfiguriert werden. (ab IP-Symcon 5.3)

Parameter für Statusvariablen

Parameter Beschreibung
name (optional) (default: Vorgabe durch erstellte Instanz) Die Statusvariable wird auf diesen Wert umbenannt. Der Name wird durch die Lokalisierung des Konfigurators übersetzt.

Wird eine Instanz erstellt, so wird sie mit der von der Einrichtung vorgegebenen ModulID und Konfiguration erstellt. Wie bei der Instanzerstellung üblich, wird die neue Instanz mit validen, physikalisch übergeordneten Instanzen verknüpft, wenn möglich. Hierbei wird bevorzugt die dem Konfigurator physikalisch übergeordnete Instanz verwendet.

Variante 2: Konfiguration einer Kette

Alternativ kann eine Kette von Konfigurationen übergeben werden. Diese definiert die gesamte physikalische Kette für die neu erstellte Instanz, üblicherweise also Gerät, Splitter und I/O. In dieser Variante stellt data.create eine Liste dar, deren Elemente wie in Variante 1 die Instanzen der physikalischen Kette definiert. Die Liste beginnt hierbei mit dem zu erstellenden Gerät und setzt dann mit der jeweils nächsten physikalisch übergeordneten Instanz fort.

Bei der Erstellung durch eine Kette, werden bevorzugt existierende übergeordnete Instanzen wiederverwendet, sofern diese und deren physikalisch übergeordneten Instanzen die Anforderungen der Kette erfüllen. Das Gerät selbst wird allerdings in jedem Falle neu erstellt.

Variante 3: Mehrere mögliche Konfigurationen

Als letzte Möglichkeit können mehrere Konfigurationen zur Auswahl gestellt werden. Hierbei wird create als Objekt mit Schlüssel/Wert-Paaren erstellt, wobei jeder Wert wieder einer Konfiguration wie in Variante 1 oder Variante 2 beschrieben entspricht. Soll bei dieser Darstellung eine Instanz erstellt werden, so wird dem Benutzer eine Auswahl der Bezeichnungen vorgegeben. Die Instanz wird mit den Einstellungen des ausgewählten Elements erstellt. Hierbei können die Schlüssel "moduleID" und "configuration" nicht verwendet werden.

Farben in der Konfigurationsliste

Was die einzelnen Farben bei Meldungen und im Konfigurator bedeuten kann unter den Farbcodes für Meldungen und Konfiguratoren nachgelesen werden. Vom Element werden diese Informationen folgendermaßen dargestellt:

Farbe Bedingung
grün instanceID ist 0, create ist definiert
rot instanceID ist nicht 0, create ist nicht definiert oder die definierte instanceID existiert nicht
grau Die Instanz mit der ID instanceID ist nicht konfiguriert wie von create vorgegeben. Stellt create eine Kette dar, so wird die Zeile auch als grau dargestellt, falls ein physikalisches Elternteil anders als in der Kette definiert konfiguriert ist
weiß instanceID ist 0, create ist nicht definiert (Kategorie)
weiß Die Instanz mit der ID instanceID ist konfiguriert wie von create vorgegeben. Stellt create eine Kette dar, so wird die Zeile nur dann als weiß dargestellt, wenn alle physikalischen Elternteile wie in der Kette definiert konfiguriert sind

Das Formularfeld Configurator in der Gerätesuche verwenden

Die Konsole bietet erstellbare Instanzen zentral über die Gerätesuche an. Dies geschieht, indem bei Instanzen des Typs Konfigurator und Discovery regelmäßig GetConfigurationForm aufgerufen wird und der Parameter values bei Configurator-Feldern ausgewertet wird. Es werden nur Konfigurator- und Discovery-Instanzen in der Gerätesuche angezeigt, welche mindestens ein Configurator-Feld beinhalten. In diesem darf values auch leer sein. Soll die eigene Instanz bei der Gerätesuche betrachtet werden, so müssen daher folgende Bedingungen erfüllt sein:

  • Die Instanz muss vom Typ Konfigurator oder Discovery sein
  • Die Suche nach Geräten muss automatisch beim Ausführen von GetConfigurationForm gestartet werden. Dauert die Suche länger, so sollte in einer initialen Rückgabe values leer gelassen werden, nach abgeschlossener Suche müssen die erstellbaren Geräte aber in der Rückgabe von GetConfigurationForm enthalten sein
  • Die Suche sollte bei wiederholtem Aufruf von GetConfigurationForm nicht erneut gestartet werden sollte, falls diese aktuell schon läuft
  • Eine Beispielimplementation kann hier gefunden werden: SymconTest

Ausgewählte Zeile als Variable in on-Aktionen

Die Verwendung der Werte des Konfigurators in Skripten erfolgt analog zu Listen. Dort stehen sämtliche Werte zur Verfügung, inklusive instanceID und create. Dennoch speichert der Konfigurator keine Werte in einer Eigenschaft ab.

Beispiel

// Grundlegendes Beispiel
{
    "type": "Configurator",
    "name": "Configuration",
    "caption": "Configuration",
    "delete": true,
    "values": [
        {
            "id": 1,
            "name": "Kategorie",
            "address": ""
        },{
            "parent": 1,
            "name": "Rechenmodul - Minimum",
            "address": "2",
            "create": {
                "moduleID": "{A7B0B43B-BEB0-4452-B55E-CD8A9A56B052}",
                "configuration": {
                    "Calculation": 2,
                    "Variables": "[]"
                }
            }
        },{
            "parent": 1,
            "name": "Rechenmodul im Wohnzimmer",
            "address": "2",
            "create": {
                "moduleID": "{A7B0B43B-BEB0-4452-B55E-CD8A9A56B052}",
                "configuration": {
                    "Calculation": 2,
                    "Variables": "[]"
                },
                "location": [
                    "Erdgeschoss",
                    "Wohnzimmer"
                ]
            }
        },{
            "parent": 1,
            "instanceID": 53398,
            "name": "Fehlerhafte Instanz",
            "address": "4"
        },{
            "parent": 1,
            "name": "Rechenmodul - Auswahl",
            "address": "2",
            "create": {
                "Maximum": {
                    "moduleID": "{A7B0B43B-BEB0-4452-B55E-CD8A9A56B052}",
                    "configuration": {
                        "Calculation": 3,
                        "Variables": "[]"
                    }
                },
                "Average": {
                    "moduleID": "{A7B0B43B-BEB0-4452-B55E-CD8A9A56B052}",
                    "configuration": {
                        "Calculation": 4,
                        "Variables": "[]"
                    }
                }
            }
        }, {
            "parent": 1,
            "name": "OZW772 IP-Interface",
            "address": "00:A0:03:FD:14:BB",
            "create": [
                { 
                    "moduleID": "{33765ABB-CFA5-40AA-89C0-A7CEA89CFE7A}",
                    "configuration": {}
                },
                {
                    "moduleID": "{1C902193-B044-43B8-9433-419F09C641B8}",
                    "configuration": {
                        "GatewayMode":1
                    }
                },
                {
                    "moduleID": "{82347F20-F541-41E1-AC5B-A636FD3AE2D8}",
                    "configuration": {
                        "Host":"172.17.31.95",
                        "Port":3671,
                        "Open":true
                    }
                }
            ]
        }
    ]
}
 
//Beispiel mit Umbenennung von Statusvariablen
{
    "type": "Configurator",
    "values": [{
        "name": "Rechenmodul (Umbenannte Statusvariablen)",
        "address": "Adresse",
        "create": {
            "moduleID": "{A7B0B43B-BEB0-4452-B55E-CD8A9A56B052}",
            "configuration": {},
            "statusVariables": {
                "Minimum": {
                    "name": "Alternativer Name für Minimum"
                },
                "Maximum": {
                    "name": "Alternativer Name für Maximum"
                }
            }
        }
    }]
}
Zum Warenkorb
Haben Sie noch Fragen?