Z-Wave Command Classes

Aus FHEMWiki
Version vom 21. Mai 2015, 22:26 Uhr von A.Harrenberg (Diskussion | Beiträge) (Beschreibung von Z-Wave Command Classes (Kommandoklassen) und der Implementierung in fhem.)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)


Clock - Under Construction.svg 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 "POWERLEVEL" z.B. für das Auslesen der Leistung zuständig, d.h. dieser Zwischenstecker kann auch die Leistung messen. Andere Steckdosenschalter ohne diese Funktion würden diese Klasse dementsprechend auch nicht unterstützen.

Aktuell sind 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 konsequent mit 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 wahrscheinlich nur ein begrenzter Funktionsumfang dieser Klasse nutzbar sein.

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.

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) Versionen unterstützte Versionen Kommentar
NO_OPERATION 0x00 0
BASIC 0x20 32
CONTROLLER_REPLICATION 0x21 33
APPLICATION_STATUS 0x22 34
ZIP_SERVICES 0x23 35
ZIP_SERVER 0x24 36
SWITCH_BINARY 0x25 37
SWITCH_MULTILEVEL 0x26 38
SWITCH_ALL 0x27 39
SWITCH_TOGGLE_BINARY 0x28 40
SWITCH_TOGGLE_MULTILEVEL 0x29 41
CHIMNEY_FAN 0x2A 42
SCENE_ACTIVATION 0x2B 43
SCENE_ACTUATOR_CONF 0x2C 44
SCENE_CONTROLLER_CONF 0x2D 45
ZIP_CLIENT 0x2E 46
ZIP_ADV_SERVICES 0x2F 47
SENSOR_BINARY 0x30 48
SENSOR_MULTILEVEL 0x31 49
METER 0x32 50
ZIP_ADV_SERVER 0x33 51
ZIP_ADV_CLIENT 0x34 52
METER_PULSE 0x35 53
METER_TBL_CONFIG 0x3C 60
METER_TBL_MONITOR 0x3D 61
METER_TBL_PUSH 0x3E 62
THERMOSTAT_HEATING 0x38 56
THERMOSTAT_MODE 0x40 64
THERMOSTAT_OPERATING_STATE 0x42 66
THERMOSTAT_SETPOINT 0x43 67
THERMOSTAT_FAN_MODE 0x44 68
THERMOSTAT_FAN_STATE 0x45 69
CLIMATE_CONTROL_SCHEDULE 0x46 70
THERMOSTAT_SETBACK 0x47 71
DOOR_LOCK_LOGGING 0x4C 76
SCHEDULE_ENTRY_LOCK 0x4E 78
BASIC_WINDOW_COVERING 0x50 80
MTP_WINDOW_COVERING 0x51 81
MULTI_CHANNEL 0x60 96
MULTI_INSTANCE 0x60 96
DOOR_LOCK 0x62 98
USER_CODE 0x63 99
BARRIER_OPERATOR 0x66 102
CONFIGURATION 0x70 112
ALARM 0x71 113
MANUFACTURER_SPECIFIC 0x72 114
POWERLEVEL 0x73 115
PROTECTION 0x75 117
LOCK 0x76 118
NODE_NAMING 0x77 119
FIRMWARE_UPDATE_MD 0x7A 122
GROUPING_NAME 0x7B 123
REMOTE_ASSOCIATION_ACTIVATE 0x7C 124
REMOTE_ASSOCIATION 0x7D 125
BATTERY 0x80 128
CLOCK 0x81 129
HAIL 0x82 130
WAKE_UP 0x84 132
ASSOCIATION 0x85 133
VERSION 0x86 134
INDICATOR 0x87 135
PROPRIETARY 0x88 136
LANGUAGE 0x89 137
TIME 0x8A 138
TIME_PARAMETERS 0x8B 139
GEOGRAPHIC_LOCATION 0x8C 140
COMPOSITE 0x8D 141
MULTI_CHANNEL_ASSOCIATION 0x8E 142
MULTI_INSTANCE_ASSOCIATION 0x8E 142
MULTI_CMD 0x8F 143
ENERGY_PRODUCTION 0x90 144
MANUFACTURER_PROPRIETARY 0x91 145
SCREEN_MD 0x92 146
SCREEN_ATTRIBUTES 0x93 147
SIMPLE_AV_CONTROL 0x94 148
AV_CONTENT_DIRECTORY_MD 0x95 149
AV_RENDERER_STATUS 0x96 150
AV_CONTENT_SEARCH_MD 0x97 151
SECURITY 0x98 152
AV_TAGGING_MD 0x99 153
IP_CONFIGURATION 0x9A 154
ASSOCIATION_COMMAND_CONFIGURATION 0x9B 155
SENSOR_ALARM 0x9C 156
SILENCE_ALARM 0x9D 157
SENSOR_CONFIGURATION 0x9E 158
MARK 0xEF 239
NON_INTEROPERABLE 0xF0 240


Beispiel für eine Command Class und deren Implementierung in fhem

Quellen und Links