IoT Logic Core
Der IoT Logic Core stellt ein Datenmodell und Kommandos für Szenen, Regeln und dazugehörige Verknüpfungen bereit.
Über Verknüpfungen werden N:N-Verbindungen zwischen Regeln und Szenen geschaffen. Regeln dienen hierbei als Trigger für die Auslösung. Über die Verknüpfungen wird aufgelöst, welche Szenen auszuführen sind.
Feld | Datentype | Beschreibung |
---|---|---|
id | String | ID zur eindeutigen Identifizierung im System. |
name | String | Der zugewiesene Name. |
description | String | Die zugewiesene Beschreibung. |
active | Boolean | Angabe ob die Verknüpfung aktiviert ist. |
conditionCollectionId | String | Angabe der ID einer Regel. |
executorCollectionId | String | Angabe der ID einer Szene. |
Feld | Datentype | Beschreibung |
---|---|---|
id | String | Eindeutige ID des Gerätes im System. |
Um Geräte zu schalten oder Aktionen auszulösen, werden Szenen benötigt. Diese enthalten vorkonfigurierte Werte für Geräte oder auszulösende Aktionen.
Szenen werden durch einen Container abgebildet. Jede Szene wird durch einen Container repräsentiert. Ein solcher Container enthält im Feld "executors" eine Liste von Befehlen, die ausgeführt werden sollen.
Feld | Datentype | Beschreibung |
---|---|---|
id | String | ID zur eindeutigen Identifizierung im System. |
name | String | Der zugewiesene Name. |
description | String | Die zugewiesene Beschreibung. |
executors | Array | Ein Array von Executor Objekten. |
Feld | Datentype | Beschreibung |
---|---|---|
id | String | Eindeutige ID des Gerätes im System. |
Allgemeine Funktionen werden als Executor bezeichnet. Diese sind unabhängig von Geräten oder Kanälen. Zur Steuerung des Ausführungsverhaltens einer Szene kann der Delay- und Loop-Executor genutzt werden.
Feld | Datentype | Beschreibung |
---|---|---|
type | String | Angabe des Executortyps. |
position | Number | Die Position bestimmt die Reihenfolge der Ausführung. |
Executoren mit dem gleichen Wert für die Position werden gegebenenfalls in unterschiedlicher Reihenfolge ausgeführt.
Über das Feld "type" wird angegeben, um was für eine Art von Executor es sich handelt. Folgende Typen sind möglich:
Type | Executor |
---|---|
DELAY | |
LOOP | LoopExecutor |
MESSAGE | |
URL | UrlExecutor |
PARAMETER | |
RANDOM | |
STATE | |
STATE_TOGGLE | |
VALUE | |
INCREASE_DECREASE | |
FADE_TO | |
FADE_FROM_TO | |
LINK | LinkExecutor |
Erzeugt eine Verzögerung während der Ausführung einer Szene.
Feld | Datentyp | Beschreibung |
---|---|---|
delay | Number | Verzögerung in Millisekunden |
Steuerelement für die Wiederholung der Szene.
Feld | Datentyp | Beschreibung |
---|---|---|
loop | Number | Ein Wert kleiner als 0 deaktiviert die Loop Funktion. Der Wert 0 bewirkt eine unendliche Wiederholung der Ausführung. Ein Wert größer als 0 gibt an wie oft die Ausführung wiederholt wird. |
Nachricht per E-Mail / Push an die angegebenen Benutzer versenden.
Feld | Datentyp | Beschreibung |
---|---|---|
message | String | Die Nachricht, welche gesendet werden soll. |
messageType | String | Der Nachrichtentyp. |
recipients | Array | Liste der Benutzer welche die Nachricht empfangen sollen. |
Die Benutzer müssen lokal am Gateway angelegt sein. Bitte achten Sie bei der Schreibweise auf Groß- und Kleinschreibung.
Folgende Nachrichten Typen können im Feld "messageType" verwendet werden:
Type |
---|
NOTIFICATION |
WARNING |
ALERT |
ERROR |
CUSTOM |
Aufruf einer benutzerdefinierten URL.
Feld | Datentyp | Beschreibung |
---|---|---|
url | String | Die Aufzurufende URL inkl. Prefix wie https:// |
user | String | Der Nutzer für die Authentifizierung |
password | String | Das Passwort für die Authentifizierung |
ignoreCert | Boolean | Die Prüfung von Zertifikaten auf Gültigkeit deaktivieren |
Ein Thing Executor bezieht sich immer auf die Steuerung eines Geräts und benötigt dazu die Geräte-ID.
Feld | Datentyp | Beschreibung |
---|---|---|
thingId | String | Die eindeutige Geräte ID |
Setzen von einem oder mehreren Geräteparametern.
Feld | Datentyp | Beschreibung |
---|---|---|
parameters | Object | Jedes Objektfeld repräsentiert einen Parameter unter Angabe der Parameter-ID und dem dazugehörigen Wert |
Der Channel Executor steuert einzelne Kanäle eines Gerätes. Daher werden die Geräte ID sowie die Kanal ID benötigt.
Feld | Datentyp | Beschreibung |
---|---|---|
thingId | String | Die eindeutige Geräte ID |
channelId | String | Die, bezogen auf ein Gerät, eindeutige Kanal ID |
Wert/Status von einem anderen Kanal eines Gerätes nutzen.
Feld | Datentyp | Beschreibung |
---|---|---|
foreignThingId | String | Die eindeutige Geräte ID des Gerätes von dem der Wert übernommen werden soll |
foreignChannelId | String | Die eindeutige Kanal ID des Kanals des andere Gerätes von dem der Wert übernommen werden soll |
Stellt einen zufälligen Wert oder State innerhalb des gültigen Wertebereichs ein.
Schaltet zwischen angegebenen States hin und her.
Feld | Datentyp | Beschreibung |
---|---|---|
states | Array | Angabe der States als String, welche verwendet werden sollen. Bleibt das Array leer, werden alle States außer UNKNOWN verwendet |
Setzt den State eines Kanals auf den angebenen Wert.
Feld | Datentyp | Beschreibung |
---|---|---|
state | String | Der State welcher gesetzt werden soll |
Eine Besonderheit bei Zahlenwerten ist, dass diese durch ein Objekt repräsentiert werden. Dies ermöglicht es, erweiterte Funktionen für die Ermittlung des eigentlichen Wertes zu nutzen.
Feld | Datentyp | Beschreibung |
---|---|---|
type | String | Gibt den Type des Wertcontainers an |
Folgende Typen sind möglich.
Type | Beschreibung |
---|---|
RAW | Der Wert wird direkt angegeben. |
CALCULATED | Der Wert wird mit Hilfe einer Formel und Variablen berechnet |
LINK | Der Wert wird von einem anderen Gerät / Kanal übernommen |
RawValueDTO
Der Wert wird direkt angegeben.
Feld | Datentyp | Beschreibung |
---|---|---|
value | Number | Der zu verwendende Wert |
CalculatedValueDTO
Berechnung des Wertes basierend auf einer Formel und der Definition weiterer Werte als Variablen.
Feld | Datentyp | Beschreibung |
---|---|---|
expression | String | Formel für die Berechnung. |
values | Object | Jedes Feld des Objektes repräsentiert ein Variable welche in der Berechnung genutzt werden kann. Als Wert ist dort wieder ein Wertcontainer Objekt hinterlegt. Eine Variable darf nur aus Buchstaben bestehen. |
Jedes Feld des Objektes repräsentiert eine Variable, die in der Berechnung genutzt werden kann. Als Wert ist dort wieder ein Wert-Container-Objekt hinterlegt.
Folgende Operatoren und Steuerzeichen können im Feld "expression" genutzt werden:
Zeichen | Beschreibung |
---|---|
+ | Addition |
- | Subtraktion |
* | Multiplikation |
/ | Division |
( | Klammer auf |
) | Klammer zu |
Die folgenden Funktionen können im Feld "expression" verwendet werden. Hinweis: x,y können Variablen oder Werte sein.
Function | Beschreibung |
---|---|
min(x,y) | Gibt die Zahl mit dem kleineren Wert zurück |
max(x,y) | Gibt die Zahl mit dem größeren Wert zurück |
sqrt(x) | Quadratwurzel von x |
pow(x,y) | Gibt die y-te Potenz zur Basis x zurück |
floor(x) | Nimmt als Eingabe eine reelle Zahl x und gibt als Ausgabe die größte ganze Zahl kleiner als oder gleich x zurück |
ceiling(x) | Nimmt als Eingabe eine reelle Zahl x und gibt als Ausgabe die größte ganze Zahl größer als oder gleich x zurück |
round(x) | Rundet den angegebenen Wert auf den nächstliegenden Long-Wert |
abs(x) | Gibt den nichtnegativen Wert von x ohne Rücksicht auf sein Vorzeichen zurück |
log(x) | Gibt den natürlichen Logarithmus (Basis e) von x zurück |
log10(x) | Gibt den Logarithmus zur Basis 10 von x zurück |
sin(x) | Sinus von x |
sinh(x) | Sinus hyperbolicus von x |
asin(x) | Liefert den Arcussinus von x |
cos(x) | Cosinus von x |
cosh(x) | Cosinus hyperbolicus von x |
acos(x) | Liefert den Arcuscosinus von x |
tan(x) | Tangens von x |
tanh(x) | Tangens hyperbolicus von x |
atan(x) | Liefert den Arcustanges von x |
Variablennamen dürfen nur aus Buchstaben bestehen und nicht aus den o.g. Operatoren oder Funktionsnamen.
LinkedValueDTO
Wert von einem anderen Gerät / Kanal nutzen.
Feld | Datentyp | Beschreibung |
---|---|---|
foreignThingId | String | Angabe der Geräte ID. |
foreignChannelId | String | Angabe der Geräte Kanal ID. |
Den Zahlenwert eines Kanals auf den angegebenen Wert ändern. Der eigentliche Wert wird zum Prüfzeitpunkt anhand des hinterlegten Wertcontainers ermittelt.
Feld | Datentyp | Beschreibung |
---|---|---|
value | Object | Wertcontainers für den zu verwendenden Wert. |
Ändert einen Zahlenwert innerhalb einer zeitlichen Vorgabe inkrementell von einem angegebenen Startwert auf den angegebenen Zielwert.
Feld | Datentyp | Beschreibung |
---|---|---|
from | Object | Wertcontainer für den Startwert. |
to | Object | Wertcontainer für den Zielwert. |
ms | Number | Zeitangabe in Millisekunden. |
Ändert einen Zahlenwert innerhalb einer zeitlichen Vorgabe inkrementell auf den angegebenen Zielwert.
Feld | Datentyp | Beschreibung |
---|---|---|
to | Object | Wertcontainer für den Zielwert. |
ms | Number | Zeitangabe in Millisekunden. |
Erhöht oder verringert den Kanalwert um den angegebenen Wert.
Feld | Datentyp | Beschreibung |
---|---|---|
value | Object | Wertcontainer für den zu verwendenden Wert. |
decrease | Boolean | Angabe, ob der Kanalwert um den Wert aus dem Feld "value" verringert werden soll, ansonsten wird dieser erhöht. |
Mit Hilfe von Regeln können Auslöser für Szenen hinterlegt werden. Die Auswertung erfolgt sequenziell in Reihenfolge unter Berücksichtigung des Feldes "position".
Eine ConditionCollection repräsentiert eine Regel mit einer Sammlung an Conditions.
Feld | Datentype | Beschreibung |
---|---|---|
id | String | ID zur eindeutigen Identifizierung im System. |
name | String | Der zugewiesene Name. |
description | String | Die zugewiesene Beschreibung. |
conditions | Array | Eine Sammlung von Conditions für die logische Auswertung. |
type | String | Der Typ der ConditionCollection ist immer COLLECTION |
position | Number | Das Feld position wird bei der Auswertung berücksichtigt und die Conditions vorher entsprechend sortiert. |
Ein ConditionCollection-Objekt kann auch als Bedingung genutzt werden. Dies ist hilfreich für eine verschachtelte Auswertung mit gegebenenfalls komplexen Blöcken.
Feld | Datentype | Beschreibung |
---|---|---|
id | String | Eindeutige ID des Gerätes im System. |
Eine Condition oder Bedingung dient der logischen Auswertung von Gerätedaten oder anderen Faktoren wie beispielsweise einer Prüfung der Uhrzeit.
Alle Condition Objekte besitzen folgende Felder:
Feld | Datentype | Beschreibung |
---|---|---|
type | String | Der Type der Condition. |
position | Number | Das Feld position wird bei der Auswertung berücksichtigt und die Conditions vorher entsprechend sortiert. |
comparator | String | Vergleichsoperator welcher genutzt werden soll. Dieser ist abhängig vom verwendeten Condition Typ. |
Das Feld "type" gibt an um welche Art von Condition es sich handelt.
Type | Condition DTO |
---|---|
COLLECTION | |
OPERATOR | |
TIME | |
STATE | |
VALUE |
Ein Vergleichsoperator ermöglicht es Conditions logisch zu verknüpfen.
Im Feld "comparator" sind folgende Vergleichsoperatoren möglich:
Mögliche Vergleichsoperatoren |
---|
AND |
NAND |
OR |
NOR |
XOR |
NXOR |
Sind mehrere Conditions in einer ConditionCollection vorhanden, können diese mit einem ConditionOperator verknüpft werden. Dabei muss das Feld "position" der Conditions korrekt befüllt werden.
Befindet sich zwischen zwei Conditions kein ConditionOperator, wird automatisch ein AND-Vergleich durchgeführt. Das Feld "position" ist hierbei ausschlaggebend für die Reihenfolge.
Eine Time Condition stellt eine Möglichkeit dar, aktuelle zeitliche Informationen bei der Auswertung zu berücksichtigen.
Feld | Datentype | Beschreibung |
---|---|---|
selectedDays | Array | Ausgewählte Tage als String Array. |
startTime | Number | Startzeit als Unix Timestamp. |
endTime | Number | Endzeit als Unix Timestamp. |
timerType | String | Timer Type zur Festlegung wie die Auswertung der Parameter erfolgt. |
Über das Feld "timerType" wird bestimmt um was für eine Art von Timer es sich handelt. Folgende Typen sind möglich:
Type | Beschreibung |
---|---|
DATE | Datumsbereich von startTime bis endTime. |
TIME | Zeitbereich von startTime bis endTime. |
DAYS | Ein oder mehrere Wochentage. |
DAYS_TIME | Innerhalb eines Zeitbereich von startTime bis endTime an einem oder mehreren Wochentagen. |
Im Feld "selectedDays" kann ein Array mit den ausgewählten Tagen hinterlegt werden.
Tag |
---|
MONDAY |
TUESDAY |
WEDNESDAY |
THURSDAY |
FRIDAY |
SATURDAY |
SUNDAY |
Im Feld "comparator" sind folgende Vergleichsoperatoren möglich:
Mögliche Vergleichsoperatoren |
---|
EQUAL |
NOT_EQUAL |
Channel Conditions dienen zur Prüfung eines Kanalwertes. Jede Spezialisierung bringt besitzt eigene Felder zur Definition des Prüfwertes und eine Liste von möglichen Vergleichsoperatoren.
Feld | Datentype | Beschreibung |
---|---|---|
thingId | String | Einzigartige Geräte ID |
channelId | String | Einzigartige (bezogen auf das Gerät) Kanal ID |
smartCheck | Boolean | Intelligente Prüfung. Verhindert die mehrfache Auswertung als wahr, bis der Prüfwert wieder als unwahr ausgewertet wurde. |
Prüft den (String) State eines Kanals.
Feld | Datentype | Beschreibung |
---|---|---|
state | String | Der State, welcher mit dem aktuellen Kanalwert verglichen wird. |
Im Feld "comparator" sind folgende Vergleichsoperatoren möglich:
Mögliche Vergleichsoperatoren |
---|
EQUAL |
NOT_EQUAL |
Prüft den Zahlenwert eines Kanals.
Feld | Datentype | Beschreibung |
---|---|---|
value | Number | Der Wert, welcher mit dem aktuellen Kanalwert verglichen wird. |
Im Feld "comparator" sind folgende Vergleichsoperatoren möglich:
Mögliche Vergleichsoperatoren |
---|
EQUAL |
NOT_EQUAL |
GREATER |
GREATER_EQUAL |
SMALLER |
SMALLER_EQUAL |