Z-Wave Command Classes
An dieser Seite wird momentan noch gearbeitet. |
Z-Wave Command Classes sind Klassen von Befehlen oder Protokollen, die zur Kommunikation und Steuerung der Z-Wave-Geräte dienen.
Auf dieser Seite werden einige Grundlagen zu diesen Command Classes von Z-Wave, sowie deren Implementierung in fhem beschrieben.
Allgeine Grundlagen zu Z-Wave finden sich in dem Hauptartikel hier.
Command Classes
Einleitung
Die Dokumentation der Z-Wave Command Classes ist leider nicht offen gelegt, wodurch die verfügbaren Informationen teilweise veraltet, unvollständig oder teilweise auch falsch sind. Dieser Artikel erhebt daher auch keinen Anspruch auf Vollständigkeit, Aktualität oder Richtigkeit. Er soll vielmehr dazu dienen die bekannten Command Classes aufzulisten, sowie einen Hinweis auf deren Unterstützung in fhem geben.
Allgemeines
Die Kommunikation zwischen den Z-Wave Nodes erfolgt über festgelegte Protokolle, welche jeweils in den Command Classes festgelegt sind. Für jede Gerätefunktion gibt es eine Command Class, ein Gerät hat jedoch im Allgemeinen mehrere Funktionen und damit auch mehrere Command Classes.
Wie im Z-Wave Basisartikel beschrieben ist, ist die minimale Anforderung an ein Geräte die Unterstützung der Command Class "CLASS_BASIC".
Eine schaltbare Zwischensteckdose unterstützt z.B. die folgenden Command Classes: SWITCH_BINARY VERSION METER MANUFACTURER_SPECIFIC CONFIGURATION ASSOCIATION PROTECTION POWERLEVEL SENSOR_MULTILEVEL SWITCH_ALL
Dies ist jedoch von Hersteller zu Hersteller verschieden, in diesem Beispiel ist die Klasse "METER" z.B. für das Auslesen der Leistung zuständig, d.h. dieser Zwischenstecker kann z.B. auch die Leistung messen. Andere Steckdosenschalter ohne diese Funktion würden diese Klasse dementsprechend auch nicht unterstützen.
Aktuell sind weit mehr als 100 solcher Klassen definiert, hinzu kommt, dass diese Klassen in verschiedenen Versionen existieren. Die ständige Weiterentwicklung der Gerätefunktionen erfordert teilweise eine Erweiterung der jeweils betroffenen Command Classes, was sich in einer geänderten Definition der verwendeten Protokolle auswirkt. Im allgemeinen wird hier eine Abwärtskompatibilität eingehalten, sodass die Funktionen bis zu der unterstützten Version auch von Geräten mit höheren Versionen genutzt werden können.
Den Command Classes ist jeweils eine eindeutige ID zugeordnet. Diese ID wird in der Kommunikation dazu genutzt die jeweilige Geräteklasse anzusprechen.
Der COMMAND_CLASS_METER ist beispielsweise die ID 0x32 (hexadezimal) bzw. 50 (dezimal) zugeordnet. Um die unterstützte Version einer Klasse abzufragen wird die COMMAND_CLASS_VERSION genutzt. In fhem wird die Version der Klasse des Gerätes durch den Befehl:
get <devicename> versionClass <ID>
abgefragt, die <ID> ist hier dezimal anzugeben. Als Ausgabe wird von fhem dann z.B.:
versionClass_32:02
erzeugt und es wird ein gleichnamiges Reading für das Gerät angelegt. In diesem Fall also die Version 2, meist nur als V2 angegeben. Hier werden die Werte als hexadezimale Zahl zurückgegeben, was nicht ganz konsistent zu den dezimalen Eingaben bei der Abfrage ist.
Um herauszufinden ob ein Gerät prinzipiell von fhem unterstützt wird, werden daher die Informationen zu den Command Classes bzw. deren Versionen benötigt:
- Liste der vom Gerät unterstützten Command Classes
- Informationen zu den Versionen der Command Class
- Liste der von fhem unterstützten Command Classes
- Informationen zu den von fhem unterstützten Versionen der Command Class
(Grundlegende) Informationen zu den ersten beiden Punkten finden sich relativ häufig bereits in der Anleitung der Geräte, evtl. hilft auch eine Suche im Internet mit der Gerätebezeichnung und dem Stichwort "COMMAND CLASS".
Für die letzten beiden Punkte soll dieser Artikel die nötigen Informationen bereitstellen.
Sollte zumindest die Liste der Command Classes des Gerätes in fhem als unterstützt gekennzeichnet sein, so wird das Gerät höchstwahrscheinlich unterstützt werden, eine Garantie ist es jedoch nicht. Falls die Versionen der Command Classes unterschiedlich ist, so wird eventuell nur ein begrenzter Funktionsumfang dieser Klasse nutzbar sein. Es ist jedoch auch möglich das ein Gerät zwar eine höhere Version einer Command Class untertützt, trotzdem aber keine der in dieser Version neuen Funktion nutzt.
Fehlt die Unterstützung für eine Klasse jedoch ganz, kann dies für die Funktion des Geräte von entscheidender Bedeutung sein und die Nutzung unter fhem dadurch aktuell nicht möglich sein. Da aber auch fhem ständig weiterentwickelt wird, kann sich dies schnell ändern.
In fhem sind die für die Hausautomatisierung wichtigsten Klassen meist soweit implementiert, wie es für den Betrieb nötig ist. Sollten Geräte mit neuen Funktionen "auftauchen", so kann entweder anhand vorhandener Informationen zu den jeweiligen Command Classes oder aber durch "Trial and Error" versucht werden diese Funktion zu implementieren.
Hierzu ist es natürlich hielfreich sich im Forum von fhem mal mit einer entsprechenden Frage zu melden.
Liste von bekannten Command Classes und deren Unterstützung in fhem
Commande Class Name | ID (hex) | ID (dezimal) | höchste Version | unterstützte Version(en) |
Kommentar |
---|---|---|---|---|---|
NO_OPERATION | 0x00 | 0 | V1 | ||
BASIC | 0x20 | 32 | V2 | V? | |
CONTROLLER_REPLICATION | 0x21 | 33 | V1 | nein | |
APPLICATION_STATUS | 0x22 | 34 | V1 | nein | |
ZIP_SERVICES | 0x23 | 35 | V2 | nein | |
ZIP_SERVER | 0x24 | 36 | V1 | nein | (SECURITY_PANEL_MODE ?) |
SWITCH_BINARY | 0x25 | 37 | V2 | V? | |
SWITCH_MULTILEVEL | 0x26 | 38 | V4 | V? | |
SWITCH_ALL | 0x27 | 39 | V1 | V? | |
SWITCH_TOGGLE_BINARY | 0x28 | 40 | V1 | nein | |
SWITCH_TOGGLE_MULTILEVEL | 0x29 | 41 | V1 | nein | |
CHIMNEY_FAN | 0x2A | 42 | V1 | nein | |
SCENE_ACTIVATION | 0x2B | 43 | V1 | V? | |
SCENE_ACTUATOR_CONF | 0x2C | 44 | V1 | V? | |
SCENE_CONTROLLER_CONF | 0x2D | 45 | V1 | V? | |
ZIP_CLIENT | 0x2E | 46 | V1 | nein | (SECURITY_PANELZONE ?) |
ZIP_ADV_SERVICES | 0x2F | 47 | V1 | nein | (Z/IP Tunneling Services) (SECURITY_PANELZONE_SENSOR ?) |
SENSOR_BINARY | 0x30 | 48 | V2 | V? | |
SENSOR_MULTILEVEL | 0x31 | 49 | V8 | V? | |
METER | 0x32 | 50 | V4 | V1, V2, (V3) | V3 evtl. nicht vollständig |
ZIP_ADV_SERVER / COLOR_CONTROL | 0x33 | 51 | V1 | V? | (Z/IP Tunneling Server) (COLOR_CONTROL ?) |
ZIP_ADV_CLIENT | 0x34 | 52 | V1 | (Z/IP Tunneling Client) (NETWORK_MANAGEMENT_INCLUSION) | |
METER_PULSE | 0x35 | 53 | V1 | nein | |
BASIC_TARIFF_INFO | 0x36 | 54 | V1 | nein | |
HRV_STATUS | 0x37 | 55 | V1 | V? | |
THERMOSTAT_HEATING | 0x38 | 56 | V1 | nein | |
HRV_CONTROL | 0x39 | 57 | V1 | V? | |
DCP_CONFIG | 0x3a | 58 | V1 | nein | |
DCP_MONITOR | 0x3b | 59 | V1 | nein | |
METER_TBL_CONFIG | 0x3C | 60 | V1 | nein | |
METER_TBL_MONITOR | 0x3D | 61 | V2 | nein | |
METER_TBL_PUSH | 0x3E | 62 | V1 | nein | |
THERMOSTAT_MODE | 0x40 | 64 | V3 | V? | |
PREPAYMENT_ENCAPSULATION | 0x41 | 67 | V1 | nein | |
THERMOSTAT_OPERATING_STATE | 0x42 | 66 | V2 | nein | |
THERMOSTAT_SETPOINT | 0x43 | 67 | V3 | V? | |
THERMOSTAT_FAN_MODE | 0x44 | 68 | V4 | nein | |
THERMOSTAT_FAN_STATE | 0x45 | 69 | V2 | nein | |
CLIMATE_CONTROL_SCHEDULE | 0x46 | 70 | V1 | V? | |
THERMOSTAT_SETBACK | 0x47 | 71 | V1 | nein | |
RATE_TBL_CONFIG | 0x48 | 72 | V1 | nein | |
RATE_TBL_MONITOR | 0x49 | 73 | V1 | nein | |
TARIFF_CONFIG | 0x4a | 74 | V1 | nein | |
TARIFF_TBL_MONITOR | 0x4b | 75 | V1 | nein | |
DOOR_LOCK_LOGGING | 0x4C | 76 | V1 | nein | |
NETWORK_MANAGEMENT_BASIC | 0x4d | 77 | V1 | nein | |
SCHEDULE_ENTRY_LOCK | 0x4E | 78 | V3 | nein | |
ZI_6LOWPAN | 0x4F | 79 | V1 | nein | |
BASIC_WINDOW_COVERING | 0x50 | 80 | V1 | V? | |
MTP_WINDOW_COVERING | 0x51 | 81 | V1 | nein | (MTP=Move to position) |
NETWORK_MANAGEMENT_PROXY | 0x52 | 82 | V1 | nein | |
NETWORK_SCHEDULE | 0x53 | 83 | V1 | nein | |
NETWORK_MANAGEMENT_PRIMARY | 0x54 | 84 | V1 | nein | |
TRANSPORT_SERVICE | 0x55 | 85 | V2 | nein | |
CRC_16_ENCAP | 0x56 | 86 | V1 | evtl. | |
APPLICATION_CAPABILITY | 0x57 | 87 | V1 | nein | |
ZIP_ND | 0x58 | 88 | V1 | nein | |
ASSOCIATION_GRP_INFO | 0x59 | 89 | V1 | nein | |
DEVICE_RESET_LOCALLY | 0x5a | 90 | V1 | nein | |
CENTRAL_SCENE | 0x5b | 91 | V2 | nein | |
IP_ASSOCIATION | 0x5c | 92 | V1 | nein | |
ANTITHEFT | 0x5d | 93 | V2 | nein | |
ZWAVEPLUS_INFO | 0x5e | 94 | V2 | V1 | |
ZIP_GATEWAY | 0x5f | 95 | V1 | nein | |
MULTI_CHANNEL | 0x60 | 96 | V3 | V2 | |
MULTI_INSTANCE | 0x60 | 96 | V1 | V1 | MULTI_INSTANCE wurde in MULTI_CHANNEL umbenannt |
ZIP_PORTAL | 0x61 | 97 | V1 | nein | |
DOOR_LOCK | 0x62 | 98 | V3 | nein | |
USER_CODE | 0x63 | 99 | V1 | V1 | |
APPLIANCE / GARAGE_DOOR? | 0x64 | 100 | V1 | nein | |
DMX | 0x65 | 101 | V1 | nein | |
BARRIER_OPERATOR | 0x66 | 102 | V1 | nein | |
CONFIGURATION | 0x70 | 112 | V2 | V? | |
ALARM | 0x71 | 113 | V5 | V? | |
MANUFACTURER_SPECIFIC | 0x72 | 114 | V2 | V? | |
POWERLEVEL | 0x73 | 115 | V1 | nein | |
PROTECTION | 0x75 | 117 | V2 | V? | |
LOCK | 0x76 | 118 | V1 | nein | |
NODE_NAMING | 0x77 | 119 | V1 | nein | |
FIRMWARE_UPDATE_MD | 0x7A | 122 | V4 | nein | |
GROUPING_NAME | 0x7B | 123 | V1 | nein | |
REMOTE_ASSOCIATION_ACTIVATE | 0x7C | 124 | V1 | nein | |
REMOTE_ASSOCIATION | 0x7D | 125 | V1 | nein | |
BATTERY | 0x80 | 128 | V1 | V? | |
CLOCK | 0x81 | 129 | V1 | V? | |
HAIL | 0x82 | 130 | V1 | V? | |
WAKE_UP | 0x84 | 132 | V2 | V? | |
ASSOCIATION | 0x85 | 133 | V2 | V? | |
VERSION | 0x86 | 134 | V2 | V? | |
INDICATOR | 0x87 | 135 | V1 | V? | |
PROPRIETARY | 0x88 | 136 | V1 | nein | |
LANGUAGE | 0x89 | 137 | V1 | nein | |
TIME | 0x8A | 138 | V2 | nein | |
TIME_PARAMETERS | 0x8B | 139 | V1 | nein | |
GEOGRAPHIC_LOCATION | 0x8C | 140 | V1 | nein | |
COMPOSITE | 0x8D | 141 | V? | nein | |
MULTI_CHANNEL_ASSOCIATION | 0x8E | 142 | V2 | V? | |
MULTI_INSTANCE_ASSOCIATION | 0x8E | 142 | V1 | V? | MULTI_INSTANCE wurde in MULTI_CHANNEL umbenannt |
MULTI_CMD | 0x8F | 143 | V1 | evtl. | |
ENERGY_PRODUCTION | 0x90 | 144 | V1 | nein | |
MANUFACTURER_PROPRIETARY | 0x91 | 145 | V1 | V1 | |
SCREEN_MD | 0x92 | 146 | V2 | nein | |
SCREEN_ATTRIBUTES | 0x93 | 147 | V2 | nein | |
SIMPLE_AV_CONTROL | 0x94 | 148 | V4 | nein | |
AV_CONTENT_DIRECTORY_MD | 0x95 | 149 | V1 | nein | |
AV_RENDERER_STATUS | 0x96 | 150 | V1 | nein | |
AV_CONTENT_SEARCH_MD | 0x97 | 151 | V1 | nein | |
SECURITY | 0x98 | 152 | V1 | nein | |
AV_TAGGING_MD | 0x99 | 153 | V1 | nein | |
IP_CONFIGURATION | 0x9A | 154 | V1 | nein | |
ASSOCIATION_COMMAND_CONFIGURATION | 0x9B | 155 | V1 | nein | |
SENSOR_ALARM | 0x9C | 156 | V1 | V? | |
SILENCE_ALARM | 0x9D | 157 | V1 | nein | |
SENSOR_CONFIGURATION | 0x9E | 158 | V1 | nein | |
MARK | 0xEF | 239 | V? | nein | |
NON_INTEROPERABLE | 0xF0 | 240 | V? | nein |
Es gibt noch ein paar Einträge die nicht eindeutig der obigen Liste zugeordnet werden können, da keine ID bekannt ist:
HRV Status V1 HRV Control V1 Remote Association Configuration V1 Thermostat setback V1 (evtl. Thermostat setpoint)
Die Klasse MULTI_INSTANCE wurde in der Version V2 in MULTI_CHANNEL umbenannt.