Apparence
Exemples de profils
Les profils suivants montrent chacun une technique sur un appareil réel : HTTP, TCP (Modbus), UDP, MQTT et KNX. Ils sont abrégés pour que l'essentiel reste visible, et vérifiés sans résultat par l'Éditeur de profils. Vous trouverez les profils complets de ces appareils dans la Bibliothèque en ligne. La structure est expliquée sous Format de profil et CommandServer.
Pour essayer un exemple : enregistrez le texte JSON dans un fichier avec l'extension .json, chargez-le sous Compétences → Add-ons → Profils avec Téléchargement manuel et créez un appareil avec Créer un appareil.
HTTP : go-eCharger
La borne de recharge go-eCharger dispose d'une interface HTTP qui fournit du JSON (API v2, à activer en local dans l'app go-e). Le profil interroge l'état toutes les 30 secondes et peut forcer ou bloquer la charge et définir le courant de charge.
json
{
"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
}Ce que montre l'exemple :
CMDPREFIX/api/précède chaque commande.STATUSappelle donchttp://<IP>/api/status?filter=…,SETAMAavec la valeur 16 appelle/api/set?ama=16.STARTUPCMDinterroge l'état dès le démarrage, et pas seulement après 30 secondes.- Motifs de réponse pour JSON :
"\"car\":\\*,"capture la valeur entre"car":et la virgule suivante. L'interrogation est la même que dans le profil complet de la Bibliothèque en ligne et demande plus de champs que cet exemple n'en utilise. Pour le dernier champ d'un objet JSON, voir Motifs. - Format :
{%/1000.00}convertit les Wh en kWh avec deux décimales ;{%/1000}donnerait des kWh entiers. - Valeur calculée :
CHARGINGvaut1lorsqueCARa la valeur2(en charge). - Listes de valeurs :
powerstatene peut prendre que0,1ou2; la même liste figure dans le modèle, afin que les automatisations affichent un choix. - Interrogation avec
editableInterval: l'intervalle peut être modifié à la création. - Joignabilité : chaque interrogation réussie signale
REACHABLE=1, chaque interrogation échouéeREACHABLE=0.
TCP : Eastron SDM120 via Modbus TCP
Le compteur électrique Eastron SDM120 utilise Modbus RTU ; une passerelle Modbus TCP le transpose sur le réseau. Le profil lit la tension et la puissance réseau toutes les 5 secondes et les index de compteur toutes les minutes.
json
{
"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
}Ce que montre l'exemple :
SERVERMODEHEX: les commandes et les réponses sont des chiffres hexadécimaux.000000000006010400000020est une requête Modbus TCP : transaction0000, protocole0000, longueur0006, appareil01, fonction04(lire des registres d'entrée), à partir du registre0000,0020(32) registres.- Tags : les deux interrogations fournissent des réponses de même structure. Grâce à
tag, chaque réponse n'est évaluée que par les motifs de son interrogation. - Motifs :
000000000043010440est l'en-tête de la réponse (longueur0x43, appareil 1, fonction 4,0x40octets).\!48!saute 24 octets, soit 6 registres ;\^^^^^^^^capture les 4 octets suivants. La puissance réseau se trouve ainsi à partir du registre 12 (0x000C). - Format :
%swap32,%floatlit les 4 octets comme nombre décimal (FLOAT32). Le compteur signale le soutirage en positif ; dans nomos,gridest vu du point de vue de la maison, injection positive et soutirage négatif.%*-1inverse donc le signe. SERVERTIMEOUT_IN_MSNONE: la connexion reste ouverte, la joignabilité la suit.SPACING1000 laisse à la passerelle le temps de répondre avant l'interrogation suivante.- Port modifiable : à la création, la boîte de dialogue demande l'adresse IP et le port de la passerelle ; le port est pré-rempli avec 502.
- Affichage :
customFormataffiche la puissance réseau sans signe, en rouge pour le soutirage et en vert pour l'injection. - Retours sans actions : un compteur est seulement lu ;
propertiesreste vide.
Pour d'autres appareils Modbus, modifiez dans la séquence le numéro d'appareil, la fonction (03 pour les registres de maintien), le registre de départ et le nombre, et adaptez la longueur et le nombre d'octets dans l'en-tête du motif. Lisez les registres entiers signés avec {%int16} ou {%int32}.
UDP : KEBA KeContact P30
La borne de recharge KEBA KeContact P30 répond via UDP sur le port 7090 avec du JSON. Le profil interroge l'état et les valeurs mesurées, autorise la charge et définit le courant de charge.
json
{
"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
}Ce que montre l'exemple :
LOCALPORT7090 : la borne de recharge répond toujours sur le port 7090 ; le contrôleur doit recevoir sur ce port.- Joignabilité via UDP : comme UDP ne connaît pas de connexion,
HEARTBEATCMDenvoiereport 2toutes les 30 secondes. Si aucune réponse n'arrive dans le délaiHEARTBEATTIMEOUT(2 secondes),DISCONNECTEVENTsignaleREACHABLE=0. Il n'y a volontairement pas deCONNECTEVENT: en UDP, il arriverait même si la borne de recharge est éteinte. À la place, le motifREACHABLEmet la valeur à1dès qu'une réponse àreport 2oureport 3arrive ({%in2|3}). - Commandes
SET: l'action{"method": "set", "property": "ENA"}appelle la commandeSETENA,\#dansena \#reçoit la valeur. - state, switchon, switchoff : l'app commute avec
switchon/switchoff, les automatisations avecstate. - Mise à l'échelle : la borne de recharge calcule en mA, l'app en A.
internalMin/internalMax6000–32000 etmin/max6–32 convertissent dans les deux sens, pour l'action comme pour le retour. - Format : la borne de recharge signale la puissance en mW ;
{%/1000}donne des W. - Textes :
Charging,Charging current,Cable StatusetPowersont des termes que nomos traduit. Ce n'est pas le cas des textes de la liste de valeurs ; ils apparaissent dans chaque langue tels qu'ils figurent dans le profil.
MQTT : variateur avec Tasmota
Un variateur avec le firmware Tasmota, connecté via le broker du skill MQTT. À la création, saisissez comme MQTT Topic le topic configuré dans Tasmota.
json
{
"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
}Ce que montre l'exemple :
- Commandes : Tasmota reçoit les commandes sur
cmnd/<Topic>/<Commande>.switchonenvoie1àcmnd/<Topic>/POWER,levelenvoie la valeur àcmnd/<Topic>/Dimmer. - Même commande, même topic :
state,switchonetswitchoffutilisent le mêmecommandet donc le même topic. - Retours depuis JSON : Tasmota répond sur
stat/<Topic>/RESULTavec par ex.{"POWER":"ON","Dimmer":60}.mqttValuePOWERouDimmerchoisit le champ ; avec le type de donnéesbool,ONest considéré comme « marche ». - Joignabilité : Tasmota signale
OnlineouOfflinesurtele/<Topic>/LWT. UnmqttValuevide prend toute la charge utile. classNamevide : avec MQTT, chaque appareil reçoit son propre identifiant.
KNX : unité de ventilation à trois vitesses
Une unité de ventilation qui est allumée et éteinte via KNX, accepte une vitesse de 0 à 3 et signale la température de l'air soufflé ainsi qu'une alarme de filtre. Le profil ne contient aucune adresse : Créer un appareil ouvre la boîte de dialogue du skill KNX, dans laquelle vous attribuez à chaque valeur son adresse de groupe.
json
{
"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
}Ce que montre l'exemple :
- Champs d'adresse :
propertiesMetadonne les champs State et Speed pour les adresses de groupe de commande,mappingsMetales champs pour les adresses d'état de l'état, de la vitesse, de la température et de l'alarme de filtre. - Taille et type de point de données :
sizeInBit1 pour la commutation (DPT 1.001) et l'alarme (DPT 1.005), 8 pour la vitesse (DPT 5.010), 16 pour la température (DPT 9.001).filterDPTne propose lors de l'attribution que les adresses de groupe adaptées. - Liste de valeurs comme liste d'autorisation : l'action
fanspeedn'accepte que0à3. - Pas de retour
reachable: la joignabilité suit la connexion KNX. - Modèles : l'alarme de filtre est créée comme déclencheur avec la valeur fixe
1; l'automatisation ne demande donc aucune valeur. - Texte sans traduction : « Filter wechseln » n'est pas un terme nomos et apparaît tel quel dans chaque langue.
Le skill KNX fournit déjà la lumière, le variateur, le store, le thermostat et de nombreux capteurs ; un profil propre est utile pour les appareils qui n'y figurent pas.