IoT Export
IoT Core Datenmodell
IoT Logic Core
56min
beschreibung der iot logic core stellt ein datenmodell und kommandos für szenen, regeln und dazugehörige verknüpfungen bereit verknüpfungen ü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 connectiondto 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 codebeispiele connectiondto { "id" "2d46cc1b 5780 4d4e b5de 293ec346d6b7", "active" false, "conditioncollectionid" "0809bb46 4ce7 42a3 8c78 04cb7d24a30e", "executorcollectionid" "971c0c85 8f5d 45b6 894a b8026f09d6ca", "name" "connection 1", "description" "connects cond1 and exec1" } connectiondeleteddto feld datentype beschreibung id string eindeutige id des gerätes im system codebeispiele connectiondeleteddto { "id" "2d46cc1b 5780 4d4e b5de 293ec346d6b7" } szenen 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 executorcollectiondto 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 codebeispiele executorcollectiondto { "id" "76dd6b1f 3f6a 4c02 b6d7 3539cd03201c", "name" "bathroom off", "description" "leave bathroom", "executors" \[ { "position" 0, "type" "value", "thingid" "91905b50 bf83 4584 a14b d4c2800cec1e", "channelid" "dimmer", "value" { "type" "raw", "value" 0 0 } }, { "position" 1, "type" "delay", "delay" 5000 }, { "position" 2, "type" "state", "thingid" "f5a69feb 59f0 4a44 a243 d2420c84f562", "channelid" "valve", "state" "close" } ] } executorcollectiondeleteddto feld datentype beschreibung id string eindeutige id des gerätes im system codebeispiele executorcollectiondeleteddto { "id" "2d46cc1b 5780 4d4e b5de 293ec346d6b7" } executor 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 iot logic core docid 1fyvqpaz8z hjilszqtdo loop iot logic core docid 1fyvqpaz8z hjilszqtdo message iot logic core docid 1fyvqpaz8z hjilszqtdo url iot logic core docid 1fyvqpaz8z hjilszqtdo parameter iot logic core docid 1fyvqpaz8z hjilszqtdo random iot logic core docid 1fyvqpaz8z hjilszqtdo state iot logic core docid 1fyvqpaz8z hjilszqtdo state toggle iot logic core docid 1fyvqpaz8z hjilszqtdo value iot logic core docid 1fyvqpaz8z hjilszqtdo increase decrease iot logic core docid 1fyvqpaz8z hjilszqtdo fade to iot logic core docid 1fyvqpaz8z hjilszqtdo fade from to iot logic core docid 1fyvqpaz8z hjilszqtdo link iot logic core docid 1fyvqpaz8z hjilszqtdo delayexecutordto erzeugt eine verzögerung während der ausführung einer szene feld datentyp beschreibung delay number verzögerung in millisekunden codebeispiele delayexecutordto { "position" 4, "type" "delay", "delay" 5000 } loopexecutordto 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 codebeispiele loopexecutordto { "position" 1, "type" "loop", "loop" 3 } messageexecutordto 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 codebeispiele messageexecutordto { "position" 0, "type" "message", "messagetype" "notification", "recipients" \[ "user1", "user2" ], "message" "gateway will be shutdown in 30 minutes " } urlexecutordto 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 codebeispiele urlexecutordto { "position" 1, "type" "url", "url" "https //192 168 0 12 8080/info html", "user" "user", "password" "passw\@rd", "ignorecert" true } thing executor 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 parameterexecutordto 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 codebeispiele parameterexecutordto { "position" 0, "type" "parameter", "thingid" "f5a69feb 59f0 4a44 a243 d2420c84f562", "parameters" { "8d4b49e26fb8a194a7ccb05dc0bb507a" "on", "cf97094fdca80778221d783811e0a573" "10 3" } } channel executor 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 linkexecutordto 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 codebeispiele linkexecutordto { "position" 0, "type" "link", "thingid" "91905b50 bf83 4584 a14b d4c2800cec1e", "channelid" "dimmer", "foreignthingid" "f5a69feb 59f0 4a44 a243 d2420c84f562", "foreignchannelid" "dimmer" } randomexecutordto stellt einen zufälligen wert oder state innerhalb des gültigen wertebereichs ein codebeispiele randomexecutordto { "position" 0, "type" "random", "thingid" "91905b50 bf83 4584 a14b d4c2800cec1e", "channelid" "dimmer" } statetoggleexecutordto 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 codebeispiele statetoggleexecutordto 1 { "position" 0, "type" "state toggle", "thingid" "dec83c14 1fdc 439b 844c 1f01d4f58194", "channelid" "switch" } statetoggleexecutordto 2 { "position" 0, "type" "state toggle", "thingid" "dec83c14 1fdc 439b 844c 1f01d4f58194", "channelid" "switch", "states" \[ "on", "off" ] } stateexecutordto setzt den state eines kanals auf den angebenen wert feld datentyp beschreibung state string der state welcher gesetzt werden soll codebeispiele stateexecutordto { "position" 0, "type" "state", "thingid" "dec83c14 1fdc 439b 844c 1f01d4f58194", "channelid" "switch", "state" "off" } channel value executor 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 codebeispiele rawvaluedto { "position" 0, "type" "value", "thingid" "91905b50 bf83 4584 a14b d4c2800cec1e", "channelid" "dimmer", "value" { "type" "raw", "value" 100 0 } } 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 codebeispiele calculatedvaluedto 1 { "position" 0, "type" "value", "thingid" "91905b50 bf83 4584 a14b d4c2800cec1e", "channelid" "dimmer", "value" { "type" "calculated", "expression" "a+b", "values" { "a" { "type" "raw", "value" 10 0 }, "b" { "type" "raw", "value" 20 0 } } } } calculatedvaluedto 2 { "position" 0, "type" "value", "thingid" "91905b50 bf83 4584 a14b d4c2800cec1e", "channelid" "dimmer", "value" { "type" "calculated", "expression" "(a 3)/2", "values" { "a" { "type" "link", "foreignthingid" "f5a69feb 59f0 4a44 a243 d2420c84f562", "foreignchannelid" "dimmer" } } } } calculatedvaluedto 3 { "position" 0, "type" "value", "thingid" "91905b50 bf83 4584 a14b d4c2800cec1e", "channelid" "dimmer", "value" { "type" "calculated", "expression" "max(a,min(b,c))", "values" { "a" { "type" "raw", "value" 100 0 }, "b" { "type" "link", "foreignthingid" "f5a69feb 59f0 4a44 a243 d2420c84f562", "foreignchannelid" "dimmer" }, "c" { "type" "raw", "value" 10 0 } } } } 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 codebeispiele linkedvaluedto { "position" 0, "type" "value", "thingid" "91905b50 bf83 4584 a14b d4c2800cec1e", "channelid" "dimmer", "value" { "type" "link", "foreignthingid" "f5a69feb 59f0 4a44 a243 d2420c84f562", "foreignchannelid" "dimmer" } } valueexecutordto 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 fadefromtoexecutordto ä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 codebeispiele fadefromtoexecutordto { "position" 1, "type" "fade from to", "thingid" "91905b50 bf83 4584 a14b d4c2800cec1e", "channelid" "dimmer", "to" { "type" "raw", "value" 100 0 }, "ms" 5000, "from" { "type" "raw", "value" 0 0 } } fadetoexecutordto ä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 codebeispiele fadetoexecutordto { "position" 1, "type" "fade to", "thingid" "91905b50 bf83 4584 a14b d4c2800cec1e", "channelid" "dimmer", "to" { "type" "raw", "value" 80 0 }, "ms" 2500 } indecreaseexecutordto 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 codebeispiele indecreaseexecutordto { "position" 1, "type" "increase decrease", "thingid" "91905b50 bf83 4584 a14b d4c2800cec1e", "channelid" "dimmer", "value" { "type" "raw", "value" 20 0 }, "decrease" true } regeln 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" conditioncollectiondto 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 codebeispiele conditioncollectiondto 1 { "type" "collection", "position" 0, "id" "7c6ba18c d4ee 4254 91aa 9989bf581f68", "name" "conditon1", "description" "checks dimmer bathroom condition", "conditions" \[ { "type" "state", "position" 0, "comparator" "equal", "thingid" "d5da720e 2ad6 4c86 88c0 f84390f76570", "channelid" "windowhandle", "smartcheck" false, "state" "closed" }, { "type" "operator", "position" 1, "comparator" "or" }, { "type" "value", "position" 2, "comparator" "greater", "thingid" "f5a69feb 59f0 4a44 a243 d2420c84f562", "channelid" "dimmer", "smartcheck" false, "value" 45 0 } ] } conditioncollectiondto 2 { "type" "collection", "position" 0, "id" "7c6ba18c d4ee 4254 91aa 9989bf581f68", "name" "conditon1", "description" "", "conditions" \[ { "type" "state", "position" 0, "comparator" "equal", "thingid" "d5da720e 2ad6 4c86 88c0 f84390f76570", "channelid" "windowhandle", "smartcheck" false, "state" "closed" }, { "type" "operator", "position" 1, "comparator" "or" }, { "type" "value", "position" 2, "comparator" "greater equal", "thingid" "f5a69feb 59f0 4a44 a243 d2420c84f562", "channelid" "dimmer", "smartcheck" false, "value" 45 0 }, { "type" "operator", "position" 3, "comparator" "and" }, { "type" "collection", "position" 4, "id" "e37b6aee 2e35 4b64 82a5 8dd7a822e861", "name" "inner conditioncollection", "description" "description example", "conditions" \[ { "type" "value", "position" 1, "comparator" "smaller", "thingid" "f5a69feb 59f0 4a44 a243 d2420c84f562", "channelid" "dimmer", "smartcheck" false, "value" 30 0 } ] } ] } conditioncollectiondeleteddto feld datentype beschreibung id string eindeutige id des gerätes im system codebeispiele conditioncollectiondeleteddto { "id" "e37b6aee 2e35 4b64 82a5 8dd7a822e861" } condition 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 iot logic core docid 1fyvqpaz8z hjilszqtdo operator iot logic core docid 1fyvqpaz8z hjilszqtdo time iot logic core docid 1fyvqpaz8z hjilszqtdo state iot logic core docid 1fyvqpaz8z hjilszqtdo value iot logic core docid 1fyvqpaz8z hjilszqtdo conditionoperatordto 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 codebeispiele conditionoperatordto { "type" "operator", "position" 0, "comparator" "or" } time condition eine time condition stellt eine möglichkeit dar, aktuelle zeitliche informationen bei der auswertung zu berücksichtigen timeconditiondto 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 codebeispiele timeconditiondto 1 { "type" "time", "position" 4, "comparator" "equal", "selecteddays" \[ "monday", "tuesday" ], "starttime" 1705069046, "endtime" 1705151846, "timertype" "days time" } timeconditiondto 2 { "type" "time", "position" 4, "comparator" "equal", "starttime" 1705070352, "endtime" 1705153152, "timertype" "time" } channel condition 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 statechannelconditiondto 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 codebeispiele statechannelconditiondto { "type" "state", "position" 0, "comparator" "not equal", "thingid" "d5da720e 2ad6 4c86 88c0 f84390f76570", "channelid" "windowhandle", "smartcheck" true, "state" "closed" } valuechannelconditiondto 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 codebeispiele valuechannelconditiondto { "type" "value", "position" 1, "comparator" "smaller", "thingid" "f5a69feb 59f0 4a44 a243 d2420c84f562", "channelid" "dimmer", "smartcheck" false, "value" 30 0 }