Voorbeeldprofielen
De volgende profielen tonen elk één techniek aan de hand van een echt apparaat: HTTP, TCP (Modbus), UDP, MQTT en KNX. Ze zijn ingekort, zodat het belangrijkste zichtbaar blijft, en door de Profiel Editor zonder bevindingen gecontroleerd. De volledige profielen van deze apparaten vindt u in de Online bibliotheek. De opbouw lichten Profielformaat en CommandServer toe.
Zo probeert u een voorbeeld uit: sla de JSON-tekst op als bestand met de extensie .json, upload het onder Skills → Add-ons → Profielen met Handmatig uploaden en maak met Apparaat aanmaken een apparaat aan.
HTTP: go-eCharger
De wallbox go-eCharger heeft een HTTP-interface die JSON levert (API v2, lokaal in te schakelen in de go-e-app). Het profiel vraagt elke 30 seconden de status op. Het kan het laden afdwingen of blokkeren en de laadstroom instellen.
{
"version": "1.0",
"author": "Muster Integration GmbH",
"description": "go-eCharger (HTTP-API v2)",
"manufacturer": "go-e",
"model": "go-eCharger",
"platform": "go-e",
"category": "Energy",
"type": "EV Charger",
"nomosCertified": false,
"compatibility": 50,
"className": "GOE_CHARGER",
"engineType": "",
"structure": {
"config": {
"ACTIVE": {"value": "YES", "editable": false},
"DEBUG": {"value": "NO", "editable": false},
"SERVERIP": {"value": "", "editable": {"type": "host", "default": ""}},
"SERVERPORT": {"value": "80", "editable": false},
"SERVERPROTOCOL": {"value": "HTTP", "editable": false},
"SERVERMODE": {"value": "ASCII", "editable": false},
"SERVERTIMEOUT_IN_MS": {"value": "8000", "editable": false},
"CMDPREFIX": {"value": "/api/", "editable": false},
"STARTUPCMD": {"value": "STATUS", "editable": false},
"MATCHING": {"value": "FULL", "editable": false},
"CONNECTEVENT": {"value": "REACHABLE=1", "editable": false},
"DISCONNECTEVENT": {"value": "REACHABLE=0", "editable": false}
},
"commands": {
"STATUS": {"sequence": "status?filter=rbt,frc,car,lmo,wh,tpa,eto,tma,alw,ama,cbl,cus,fup,awe,ust,cdi,rssi,modelStatus,error", "parameterCount": 0},
"SETFRC": {"sequence": "set?frc=\\#", "parameterCount": 1},
"SETAMA": {"sequence": "set?ama=\\#", "parameterCount": 1}
},
"mappings": {
"FRC": {"match": "\"frc\":\\*,", "onChange": true},
"CAR": {"match": "\"car\":\\*,", "onChange": true},
"CHARGING": {"match": "", "onChange": true, "condition": "{$CAR$,%in2}"},
"AMA": {"match": "\"ama\":\\*,", "onChange": true},
"TPA": {"match": "\"tpa\":\\*,", "onChange": true, "condition": "{%*1.0}"},
"WH": {"match": "\"wh\":\\*,", "onChange": true, "condition": "{%/1000.00}"}
}
},
"polling": {
"Status": {"interval": 30, "editableInterval": true, "command": "STATUS"}
},
"properties": {
"powerstate": {"method": "set", "property": "FRC", "datatype": "int", "valueList": [{"text": "Neutral", "value": "0"}, {"text": "Off", "value": "1"}, {"text": "On", "value": "2"}]},
"amperelimit": {"method": "set", "property": "AMA", "datatype": "int", "unit": "A", "min": 6, "max": 32, "internalMin": 6, "internalMax": 32, "stepValue": 1}
},
"propertiesMeta": {
"powerstate": {"text": "State", "properties": ["powerstate"]},
"amperelimit": {"text": "Charging current", "properties": ["amperelimit"]}
},
"mappings": {
"powerstate": {"method": "get", "property": "FRC", "datatype": "int", "valueList": [{"text": "Neutral", "value": "0"}, {"text": "Off", "value": "1"}, {"text": "On", "value": "2"}]},
"status": {"method": "get", "property": "CAR", "datatype": "int", "valueList": [{"text": "Unknown", "value": "0"}, {"text": "Idle", "value": "1"}, {"text": "Charging", "value": "2"}, {"text": "Waiting", "value": "3"}, {"text": "Completed", "value": "4"}, {"text": "Error", "value": "5"}]},
"charging": {"method": "get", "property": "CHARGING", "datatype": "bool", "defaultValue": false},
"amperelimit": {"method": "get", "property": "AMA", "datatype": "int", "unit": "A", "min": 6, "max": 32, "internalMin": 6, "internalMax": 32},
"power": {"method": "get", "property": "TPA", "datatype": "float", "unit": "W", "customFormat": {"format": {"Math.round": {"var": "value"}}}},
"e_connected": {"method": "get", "property": "WH", "datatype": "float", "unit": "kWh"},
"reachable": {"method": "get", "property": "REACHABLE", "datatype": "bool", "defaultValue": false}
},
"mappingsMeta": {
"powerstate": {"text": "State", "properties": ["powerstate"]},
"status": {"text": "Status", "properties": ["status"]},
"charging": {"text": "Charging", "properties": ["charging"]},
"amperelimit": {"text": "Charging current", "properties": ["amperelimit"]},
"power": {"text": "Power", "properties": ["power"]},
"e_connected": {"text": "Energy", "properties": ["e_connected"]},
"reachable": {"text": "Reachable", "properties": ["reachable"]}
},
"actionTemplates": [
{"templateid": "powerstate", "mapping": "powerstate", "text": "State", "icon": "toggle-on", "valueList": [{"text": "Neutral", "value": "0"}, {"text": "Off", "value": "1"}, {"text": "On", "value": "2"}]},
{"templateid": "amperelimit", "mapping": "amperelimit", "text": "Charging current", "icon": "adjust"}
],
"triggerTemplates": [
{"templateid": "status", "mapping": "status", "text": "Status", "icon": "info-circle", "valueList": [{"text": "Unknown", "value": "0"}, {"text": "Idle", "value": "1"}, {"text": "Charging", "value": "2"}, {"text": "Waiting", "value": "3"}, {"text": "Completed", "value": "4"}, {"text": "Error", "value": "5"}]},
{"templateid": "charging", "mapping": "charging", "text": "Charging", "icon": "bolt"},
{"templateid": "power", "mapping": "power", "text": "Power", "icon": "bolt"}
],
"hideProperties": true,
"hideMappings": true
}Wat het voorbeeld laat zien:
CMDPREFIX/api/staat voor elke opdracht.STATUSvraagt dushttp://<IP>/api/status?filter=…op,SETAMAmet de waarde 16 roept/api/set?ama=16aan.STARTUPCMDvraagt de status al bij de start op, niet pas na 30 seconden.- Antwoordpatronen voor JSON:
"\"car\":\\*,"vangt de waarde tussen"car":en de volgende komma. De polling is dezelfde als in het volledige profiel van de online bibliotheek en noemt meer velden dan dit voorbeeld gebruikt. Over het laatste veld van een JSON-object, zie Patronen. - Formaat:
{%/1000.00}rekent Wh om naar kWh met twee decimalen;{%/1000}zou hele kWh geven. - Berekende waarde:
CHARGINGis1alsCARde waarde2(laadt) heeft. - Waardenlijsten:
powerstatemag alleen0,1of2aannemen. Dezelfde lijst staat in het sjabloon, zodat automatiseringen een keuze tonen. - Polling met
editableInterval: bij het aanmaken kunt u het interval wijzigen. - Bereikbaarheid: elke geslaagde polling meldt
REACHABLE=1, elke mislukteREACHABLE=0.
TCP: Eastron SDM120 via Modbus TCP
De elektriciteitsmeter Eastron SDM120 spreekt Modbus RTU. Een Modbus-TCP-gateway zet dat om naar het netwerk. Het profiel leest spanning en netvermogen elke 5 seconden en de meterstanden elke minuut.
{
"version": "1.0",
"author": "Muster Integration GmbH",
"description": "Eastron SDM120 über Modbus-TCP-Gateway",
"manufacturer": "Eastron",
"model": "SDM120 Modbus",
"platform": "Eastron",
"category": "Energy",
"type": "Smart Meter",
"nomosCertified": false,
"compatibility": 50,
"className": "EASTRON_SDM120",
"engineType": "",
"structure": {
"config": {
"ACTIVE": {"value": "YES", "editable": false},
"DEBUG": {"value": "NO", "editable": false},
"SERVERIP": {"value": "", "editable": {"type": "host", "default": ""}},
"SERVERPORT": {"value": "502", "editable": {"type": "integer", "default": "502"}},
"SERVERPROTOCOL": {"value": "TCP", "editable": false},
"SERVERMODE": {"value": "HEX", "editable": false},
"SERVERTIMEOUT_IN_MS": {"value": "NONE", "editable": false},
"SPACING": {"value": "1000", "editable": false},
"MATCHING": {"value": "FULL", "editable": false},
"CONNECTEVENT": {"value": "REACHABLE=1", "editable": false},
"DISCONNECTEVENT": {"value": "REACHABLE=0", "editable": false}
},
"commands": {
"READ_INSTANT": {"sequence": "000000000006010400000020", "parameterCount": 0, "tag": "instant"},
"READ_ENERGY": {"sequence": "000000000006010400480004", "parameterCount": 0, "tag": "energy"}
},
"mappings": {
"L1_VOLTAGE": {"match": "000000000043010440\\!0!\\^^^^^^^^", "onChange": true, "condition": "{%swap32,%float}", "tag": "instant"},
"GRID": {"match": "000000000043010440\\!48!\\^^^^^^^^", "onChange": true, "condition": "{%swap32,%float,%*-1}", "tag": "instant"},
"E_IMPORT": {"match": "00000000000B010408\\!0!\\^^^^^^^^", "onChange": true, "condition": "{%swap32,%float}", "tag": "energy"},
"E_EXPORT": {"match": "00000000000B010408\\!8!\\^^^^^^^^", "onChange": true, "condition": "{%swap32,%float}", "tag": "energy"}
}
},
"polling": {
"Instant": {"interval": 5, "editableInterval": false, "command": "READ_INSTANT"},
"Energy": {"interval": 60, "editableInterval": false, "command": "READ_ENERGY"}
},
"properties": {},
"propertiesMeta": {},
"mappings": {
"grid": {"method": "get", "property": "GRID", "datatype": "float", "unit": "W", "customFormat": {"format": {"Math.abs": {"Math.round": {"var": "value"}}}, "red-minus": {"<": [{"var": "value"}, 0]}, "green-plus": {">": [{"var": "value"}, 0]}}},
"l1_voltage": {"method": "get", "property": "L1_VOLTAGE", "datatype": "float", "unit": "V", "uihidden": true},
"meter_e_total_imp": {"method": "get", "property": "E_IMPORT", "datatype": "float", "unit": "kWh"},
"meter_e_total_exp": {"method": "get", "property": "E_EXPORT", "datatype": "float", "unit": "kWh"},
"reachable": {"method": "get", "property": "REACHABLE", "datatype": "bool", "defaultValue": false}
},
"mappingsMeta": {
"grid": {"text": "Grid", "properties": ["grid"]},
"l1_voltage": {"text": "Voltage", "properties": ["l1_voltage"]},
"meter_e_total_imp": {"text": "Total Import", "properties": ["meter_e_total_imp"]},
"meter_e_total_exp": {"text": "Total Export", "properties": ["meter_e_total_exp"]},
"reachable": {"text": "Reachable", "properties": ["reachable"]}
},
"hideProperties": false,
"hideMappings": false
}Wat het voorbeeld laat zien:
SERVERMODEHEX: opdrachten en antwoorden zijn hexadecimale cijfers.000000000006010400000020is een Modbus-TCP-verzoek: transactie0000, protocol0000, lengte0006, apparaat01, functie04(input registers lezen), vanaf register0000,0020(32) registers.- Tags: beide pollings leveren gelijk opgebouwde antwoorden. Via
tagevalueert elk antwoord alleen de patronen van zijn eigen polling. - Patronen:
000000000043010440is de kop van het antwoord (lengte0x43, apparaat 1, functie 4,0x40bytes).\!48!slaat 24 bytes over, dus 6 registers;\^^^^^^^^vangt de volgende 4 bytes. Het netvermogen staat daarmee vanaf register 12 (0x000C). - Formaat:
%swap32,%floatleest de 4 bytes als decimaal getal (FLOAT32). De meter meldt afname positief. In nomos geldt voorgridhet standpunt van het huis: teruglevering positief en afname negatief.%*-1draait daarom het teken om. SERVERTIMEOUT_IN_MSNONE: de verbinding blijft open en de bereikbaarheid volgt haar.SPACING1000 geeft de gateway tijd voor het antwoord voordat de volgende polling komt.- Bewerkbare poort: bij het aanmaken vraagt het dialoogvenster het IP-adres en de poort van de gateway. De poort is vooraf ingevuld met 502.
- Weergave:
customFormattoont het netvermogen zonder teken, rood bij afname en groen bij teruglevering. - Terugmeldingen zonder acties: een meter wordt alleen gelezen;
propertiesblijft leeg.
Voor andere Modbus-apparaten wijzigt u apparaatnummer, functie (03 voor holding registers), startregister en aantal in de sequentie. Pas ook lengte en aantal bytes in de kop van het patroon aan. Registers met gehele getallen met teken leest u met {%int16} of {%int32}.
UDP: KEBA KeContact P30
De wallbox KEBA KeContact P30 antwoordt via UDP op poort 7090 met JSON. Het profiel vraagt status en meetwaarden op, geeft het laden vrij en stelt de laadstroom in.
{
"version": "1.0",
"author": "Muster Integration GmbH",
"description": "KEBA KeContact P30 (UDP)",
"manufacturer": "KEBA",
"model": "KeContact P30",
"platform": "KEBA",
"category": "Energy",
"type": "EV Charger",
"nomosCertified": false,
"compatibility": 50,
"className": "KEBA_P30",
"engineType": "",
"structure": {
"config": {
"ACTIVE": {"value": "YES", "editable": false},
"DEBUG": {"value": "NO", "editable": false},
"SERVERIP": {"value": "", "editable": {"type": "host", "default": ""}},
"SERVERPORT": {"value": "7090", "editable": false},
"LOCALPORT": {"value": "7090", "editable": false},
"SERVERPROTOCOL": {"value": "UDP", "editable": false},
"SERVERMODE": {"value": "ASCII", "editable": false},
"SERVERTIMEOUT_IN_MS": {"value": "NONE", "editable": false},
"SPACING": {"value": "200", "editable": false},
"HEARTBEATCMD": {"value": "REPORT2;30", "editable": false},
"HEARTBEATTIMEOUT": {"value": "2000", "editable": false},
"DISCONNECTEVENT": {"value": "REACHABLE=0", "editable": false},
"MATCHING": {"value": "FULL", "editable": false}
},
"commands": {
"REPORT2": {"sequence": "report 2", "parameterCount": 0},
"REPORT3": {"sequence": "report 3", "parameterCount": 0},
"SETENA": {"sequence": "ena \\#", "parameterCount": 1, "spacing": "2000"},
"SETCURR": {"sequence": "curr \\#", "parameterCount": 1}
},
"mappings": {
"REACHABLE": {"match": "\"ID\": \"\\*\",", "onChange": false, "condition": "{%in2|3}"},
"ENABLE_USER": {"match": "\"Enable user\": \\*,", "onChange": true, "condition": ""},
"PLUG": {"match": "\"Plug\": \\*,", "onChange": true, "condition": ""},
"MAX_CURR": {"match": "\"Max curr\": \\*,", "onChange": true, "condition": ""},
"P": {"match": "\"P\": \\*,", "onChange": true, "condition": "{%/1000}"}
}
},
"polling": {
"Status": {"interval": 10, "editableInterval": false, "command": "REPORT2"},
"Measurements": {"interval": 10, "editableInterval": false, "command": "REPORT3"}
},
"properties": {
"state": {"method": "set", "property": "ENA", "datatype": "bool", "sizeInBit": 1},
"switchon": {"method": "set", "property": "ENA", "value": 1, "datatype": "bool", "sizeInBit": 1, "uihidden": true},
"switchoff": {"method": "set", "property": "ENA", "value": 0, "datatype": "bool", "sizeInBit": 1, "uihidden": true},
"amperelimit": {"method": "set", "property": "CURR", "datatype": "int", "unit": "A", "min": 6, "max": 32, "internalMin": 6000, "internalMax": 32000, "stepValue": 1}
},
"propertiesMeta": {
"state": {"text": "Charging", "properties": ["state", "switchon", "switchoff"]},
"amperelimit": {"text": "Charging current", "properties": ["amperelimit"]}
},
"mappings": {
"state": {"method": "get", "property": "ENABLE_USER", "datatype": "bool", "defaultValue": false},
"plug": {"method": "get", "property": "PLUG", "datatype": "int", "valueList": [{"text": "Kein Kabel", "value": "0"}, {"text": "Kabel an Wallbox", "value": "1"}, {"text": "Kabel an Wallbox, verriegelt", "value": "3"}, {"text": "Fahrzeug verbunden", "value": "5"}, {"text": "Fahrzeug verbunden, verriegelt", "value": "7"}]},
"amperelimit": {"method": "get", "property": "MAX_CURR", "datatype": "int", "unit": "A", "min": 6, "max": 32, "internalMin": 6000, "internalMax": 32000},
"power": {"method": "get", "property": "P", "datatype": "float", "unit": "W", "customFormat": {"format": {"Math.round": {"var": "value"}}}},
"reachable": {"method": "get", "property": "REACHABLE", "datatype": "bool", "defaultValue": false}
},
"mappingsMeta": {
"state": {"text": "Charging", "properties": ["state"]},
"plug": {"text": "Cable Status", "properties": ["plug"]},
"amperelimit": {"text": "Charging current", "properties": ["amperelimit"]},
"power": {"text": "Power", "properties": ["power"]},
"reachable": {"text": "Reachable", "properties": ["reachable"]}
},
"actionTemplates": [
{"templateid": "switchon", "mapping": "switchon", "text": "Turn On", "icon": "toggle-on"},
{"templateid": "switchoff", "mapping": "switchoff", "text": "Turn Off", "icon": "toggle-off"},
{"templateid": "amperelimit", "mapping": "amperelimit", "text": "Charging current", "icon": "bolt"}
],
"triggerTemplates": [
{"templateid": "plug", "mapping": "plug", "text": "Cable Status", "icon": "plug", "valueList": [{"text": "Kein Kabel", "value": "0"}, {"text": "Kabel an Wallbox", "value": "1"}, {"text": "Kabel an Wallbox, verriegelt", "value": "3"}, {"text": "Fahrzeug verbunden", "value": "5"}, {"text": "Fahrzeug verbunden, verriegelt", "value": "7"}]},
{"templateid": "power", "mapping": "power", "text": "Power", "icon": "bolt"}
],
"hideProperties": true,
"hideMappings": true
}Wat het voorbeeld laat zien:
LOCALPORT7090: de wallbox antwoordt altijd op poort 7090; de controller moet daar ontvangen.- Bereikbaarheid via UDP: omdat UDP geen verbinding kent, verzendt
HEARTBEATCMDelke 30 secondenreport 2. Komt er binnenHEARTBEATTIMEOUT(2 seconden) geen antwoord, dan meldtDISCONNECTEVENTREACHABLE=0. EenCONNECTEVENTontbreekt bewust: bij UDP zou het ook komen als de wallbox uit staat. In plaats daarvan zet het patroonREACHABLEde waarde op1zodra er een antwoord opreport 2ofreport 3komt ({%in2|3}). SET-opdrachten: de actie{"method": "set", "property": "ENA"}roept de opdrachtSETENAaan;\#inena \#neemt de waarde op.- state, switchon, switchoff: de app schakelt met
switchon/switchoff, automatiseringen metstate. - Schaling: de wallbox rekent in mA, de app in A.
internalMin/internalMax6000–32000 enmin/max6–32 rekenen in beide richtingen om, voor de actie en voor de terugmelding. - Formaat: de wallbox meldt het vermogen in mW;
{%/1000}geeft W. - Teksten:
Charging,Charging current,Cable StatusenPowerzijn termen die nomos vertaalt. De teksten van de waardenlijst niet; die verschijnen in elke taal zoals in het profiel.
MQTT: dimmer met Tasmota
Een dimmer met de firmware Tasmota, gekoppeld via de broker van de MQTT-skill. Bij het aanmaken vult u als MQTT Topic het topic in dat in Tasmota is ingesteld.
{
"version": "1.0",
"author": "Muster Integration GmbH",
"description": "Dimmer mit Tasmota-Firmware",
"manufacturer": "Tasmota",
"model": "Dimmer",
"platform": "MQTT",
"category": "Lighting",
"type": "Lightbulb",
"nomosCertified": false,
"compatibility": 50,
"className": "",
"engineType": "MQTT",
"properties": {
"state": {"method": "command", "command": "power", "mqtt": "cmnd/%mqttTopic%/POWER", "datatype": "bool"},
"switchon": {"method": "command", "command": "power", "value": 1, "mqtt": "cmnd/%mqttTopic%/POWER", "datatype": "null", "uihidden": true},
"switchoff": {"method": "command", "command": "power", "value": 0, "mqtt": "cmnd/%mqttTopic%/POWER", "datatype": "null", "uihidden": true},
"level": {"method": "command", "command": "brightness", "mqtt": "cmnd/%mqttTopic%/Dimmer", "datatype": "int", "unit": "percent", "min": 0, "max": 100, "internalMin": 0, "internalMax": 100}
},
"propertiesMeta": {
"state": {"text": "State", "properties": ["state", "switchon", "switchoff"]},
"level": {"text": "Brightness", "properties": ["level"]}
},
"mappings": {
"state": {"method": "get", "property": "power", "mqtt": "stat/%mqttTopic%/RESULT", "mqttValue": "POWER", "datatype": "bool"},
"level": {"method": "get", "property": "dimmer", "mqtt": "stat/%mqttTopic%/RESULT", "mqttValue": "Dimmer", "datatype": "int", "unit": "percent", "min": 0, "max": 100, "internalMin": 0, "internalMax": 100},
"reachable": {"method": "get", "property": "reachable", "mqtt": "tele/%mqttTopic%/LWT", "mqttValue": "", "datatype": "bool", "defaultValue": true}
},
"mappingsMeta": {
"state": {"text": "State", "properties": ["state"]},
"level": {"text": "Brightness", "properties": ["level"]},
"reachable": {"text": "Reachable", "properties": ["reachable"]}
},
"actionTemplates": [
{"templateid": "switchon", "mapping": "switchon", "text": "Turn On", "icon": "toggle-on"},
{"templateid": "switchoff", "mapping": "switchoff", "text": "Turn Off", "icon": "toggle-off"},
{"templateid": "level", "mapping": "level", "text": "Brightness", "icon": "sun-o"}
],
"triggerTemplates": [
{"templateid": "state.on", "mapping": "state", "text": "Is Turned On", "value": "1", "icon": "toggle-on"},
{"templateid": "state.off", "mapping": "state", "text": "Is Turned Off", "value": "0", "icon": "toggle-off"},
{"templateid": "level", "mapping": "level", "text": "Brightness", "icon": "sun-o"}
],
"hideProperties": true,
"hideMappings": true
}Wat het voorbeeld laat zien:
- Opdrachten: Tasmota ontvangt opdrachten op
cmnd/<Topic>/<opdracht>.switchonverzendt1naarcmnd/<Topic>/POWER,levelde waarde naarcmnd/<Topic>/Dimmer. - Zelfde opdracht, zelfde topic:
state,switchonenswitchoffgebruiken hetzelfdecommanden daarom hetzelfde topic. - Terugmeldingen uit JSON: Tasmota antwoordt op
stat/<Topic>/RESULTmet bijv.{"POWER":"ON","Dimmer":60}.mqttValuePOWERofDimmerkiest het veld;ONgeldt bij het datatypeboolals "aan". - Bereikbaarheid: Tasmota meldt op
tele/<Topic>/LWTOnlineofOffline. Een legemqttValueneemt de hele payload. classNameleeg: bij MQTT krijgt elk apparaat zijn eigen ID.
KNX: ventilatie-unit met drie standen
Een ventilatie-unit die via KNX wordt in- en uitgeschakeld, een stand van 0 tot 3 aanneemt en de toevoerluchttemperatuur en een filteralarm meldt. Het profiel bevat geen adressen: Apparaat aanmaken opent het dialoogvenster van de KNX-skill. Daar wijst u elke waarde haar groepsadres toe.
{
"version": "1.0",
"author": "Muster Integration GmbH",
"description": "KNX Lüftungsgerät mit drei Stufen",
"manufacturer": "KNX",
"model": "Lüftung 3 Stufen",
"platform": "KNX",
"category": "Fans",
"type": "Fan",
"nomosCertified": false,
"compatibility": 50,
"className": "KNX",
"engineType": "KNX",
"properties": {
"state": {"method": "set", "property": "value", "datatype": "bool", "sizeInBit": 1, "filterDPT": ["1.001"]},
"switchon": {"method": "set", "property": "value", "value": 1, "datatype": "bool", "sizeInBit": 1, "uihidden": true},
"switchoff": {"method": "set", "property": "value", "value": 0, "datatype": "bool", "sizeInBit": 1, "uihidden": true},
"fanspeed": {"method": "set", "property": "value", "datatype": "int", "sizeInBit": 8, "filterDPT": ["5.010"], "valueList": [{"text": "Off", "value": "0"}, {"text": "Low", "value": "1"}, {"text": "Medium", "value": "2"}, {"text": "High", "value": "3"}]}
},
"propertiesMeta": {
"state": {"text": "State", "properties": ["state", "switchon", "switchoff"]},
"fanspeed": {"text": "Speed", "properties": ["fanspeed"]}
},
"mappings": {
"state": {"method": "get", "property": "value", "datatype": "bool", "sizeInBit": 1, "filterDPT": ["1.001"]},
"fanspeed": {"method": "get", "property": "value", "datatype": "int", "sizeInBit": 8, "filterDPT": ["5.010"], "valueList": [{"text": "Off", "value": "0"}, {"text": "Low", "value": "1"}, {"text": "Medium", "value": "2"}, {"text": "High", "value": "3"}]},
"temperature": {"method": "get", "property": "value", "datatype": "float", "unit": "temperature", "sizeInBit": 16, "filterDPT": ["9.001"]},
"filter": {"method": "get", "property": "value", "datatype": "bool", "sizeInBit": 1, "filterDPT": ["1.005"]}
},
"mappingsMeta": {
"state": {"text": "State", "properties": ["state"]},
"fanspeed": {"text": "Speed", "properties": ["fanspeed"]},
"temperature": {"text": "Temperature", "properties": ["temperature"]},
"filter": {"text": "Filter wechseln", "properties": ["filter"]}
},
"actionTemplates": [
{"templateid": "switchon", "mapping": "switchon", "text": "Turn On", "icon": "toggle-on"},
{"templateid": "switchoff", "mapping": "switchoff", "text": "Turn Off", "icon": "toggle-off"},
{"templateid": "fanspeed", "mapping": "fanspeed", "text": "Speed", "icon": "tachometer", "valueList": [{"text": "Off", "value": "0"}, {"text": "Low", "value": "1"}, {"text": "Medium", "value": "2"}, {"text": "High", "value": "3"}]}
],
"triggerTemplates": [
{"templateid": "state.on", "mapping": "state", "text": "Is Turned On", "value": "1", "icon": "toggle-on"},
{"templateid": "state.off", "mapping": "state", "text": "Is Turned Off", "value": "0", "icon": "toggle-off"},
{"templateid": "temperature", "mapping": "temperature", "text": "Temperature", "icon": "thermometer"},
{"templateid": "filter", "mapping": "filter", "text": "Filter wechseln", "value": "1", "icon": "exclamation-triangle"}
],
"hideProperties": true,
"hideMappings": true
}Wat het voorbeeld laat zien:
- Adresvelden: uit
propertiesMetaontstaan de velden State en Speed voor de groepsadressen om te schakelen, uitmappingsMetade velden voor de statusadressen van toestand, stand, temperatuur en filteralarm. - Grootte en datapunttype:
sizeInBit1 voor schakelen (DPT 1.001) en het alarm (DPT 1.005), 8 voor de stand (DPT 5.010), 16 voor de temperatuur (DPT 9.001).filterDPTbiedt bij het toewijzen alleen passende groepsadressen aan. - Waardenlijst als toegestane lijst: de actie
fanspeedaccepteert alleen0tot en met3. - Geen terugmelding
reachable: de bereikbaarheid volgt de KNX-verbinding. - Sjablonen: het filteralarm is als trigger met de vaste waarde
1aangemaakt. De automatisering vraagt dus geen waarde. - Tekst zonder vertaling: "Filter wechseln" is geen nomos-term en verschijnt in elke taal zo.
Licht, dimmer, zonwering, thermostaat en veel sensoren heeft de KNX-skill al aan boord. Een eigen profiel loont voor apparaten die daar ontbreken.