I’ve been seeing the the following in my ZWave logs for Fibaro single/dual relays (eg FGS-212, FGS-221 etc):
18-Apr-2018 20:36:26.802 [DEBUG] [wave.handler.ZWaveSerialHandler$ZWaveReceiveThread] - Receive Message = 01 0C 00 04 04 11 06 60 0A 02 10 01 25 B8
18-Apr-2018 20:36:26.803 [DEBUG] [.openhab.binding.zwave.internal.protocol.ZWaveNode] - NODE 17: resetResendCount initComplete=true isDead=false
18-Apr-2018 20:36:26.803 [DEBUG] [.openhab.binding.zwave.internal.protocol.ZWaveNode] - NODE 17: Incoming command class COMMAND_CLASS_MULTI_CHANNEL, endpoint 0
18-Apr-2018 20:36:26.803 [DEBUG] [.openhab.binding.zwave.internal.protocol.ZWaveNode] - NODE 17: SECURITY not supported
18-Apr-2018 20:36:26.803 [DEBUG] [e.internal.protocol.commandclass.ZWaveCommandClass] - NODE 17: Received COMMAND_CLASS_MULTI_CHANNEL V2 MULTI_CHANNEL_CAPABILITY_REPORT
18-Apr-2018 20:36:26.803 [DEBUG] [otocol.commandclass.ZWaveMultiInstanceCommandClass] - NODE 17: Process Multi-channel capability Report
18-Apr-2018 20:36:26.804 [DEBUG] [otocol.commandclass.ZWaveMultiInstanceCommandClass] - NODE 17: Endpoints are the same device class = true
18-Apr-2018 20:36:26.804 [DEBUG] [otocol.commandclass.ZWaveMultiInstanceCommandClass] - NODE 17: Endpoint Id = 1
18-Apr-2018 20:36:26.804 [DEBUG] [otocol.commandclass.ZWaveMultiInstanceCommandClass] - NODE 17: Endpoints is dynamic = false
18-Apr-2018 20:36:26.804 [DEBUG] [otocol.commandclass.ZWaveMultiInstanceCommandClass] - NODE 17: Basic = BASIC_TYPE_ROUTING_SLAVE 0x4
18-Apr-2018 20:36:26.804 [DEBUG] [otocol.commandclass.ZWaveMultiInstanceCommandClass] - NODE 17: Generic = GENERIC_TYPE_SWITCH_BINARY 0x10
18-Apr-2018 20:36:26.804 [DEBUG] [otocol.commandclass.ZWaveMultiInstanceCommandClass] - NODE 17: Specific = SPECIFIC_TYPE_POWER_SWITCH_BINARY 0x1
18-Apr-2018 20:36:26.804 [DEBUG] [e.internal.protocol.commandclass.ZWaveCommandClass] - NODE 17: Command class COMMAND_CLASS_BASIC, endpoint 1 created
18-Apr-2018 20:36:26.804 [DEBUG] [e.internal.protocol.commandclass.ZWaveCommandClass] - NODE 17: Unknown command class 0x1
18-Apr-2018 20:36:26.804 [DEBUG] [e.internal.protocol.commandclass.ZWaveCommandClass] - NODE 17: Creating new instance of command class COMMAND_CLASS_SWITCH_BINARY
18-Apr-2018 20:36:26.804 [DEBUG] [e.internal.protocol.commandclass.ZWaveCommandClass] - NODE 17: Command class COMMAND_CLASS_SWITCH_BINARY, endpoint 1 created
18-Apr-2018 20:36:26.804 [DEBUG] [otocol.commandclass.ZWaveMultiInstanceCommandClass] - NODE 17: Endpoint 1: Adding command class COMMAND_CLASS_SWITCH_BINARY.
18-Apr-2018 20:36:26.804 [DEBUG] [e.internal.protocol.commandclass.ZWaveCommandClass] - NODE 17: Version = 1, version set. Enabling extra functionality.
18-Apr-2018 20:36:26.804 [DEBUG] [otocol.commandclass.ZWaveMultiInstanceCommandClass] - NODE 17: Endpoint Id = 2
18-Apr-2018 20:36:26.804 [DEBUG] [otocol.commandclass.ZWaveMultiInstanceCommandClass] - NODE 17: Endpoints is dynamic = false
18-Apr-2018 20:36:26.805 [DEBUG] [otocol.commandclass.ZWaveMultiInstanceCommandClass] - NODE 17: Basic = BASIC_TYPE_ROUTING_SLAVE 0x4
18-Apr-2018 20:36:26.805 [DEBUG] [otocol.commandclass.ZWaveMultiInstanceCommandClass] - NODE 17: Generic = GENERIC_TYPE_SWITCH_BINARY 0x10
18-Apr-2018 20:36:26.805 [DEBUG] [otocol.commandclass.ZWaveMultiInstanceCommandClass] - NODE 17: Specific = SPECIFIC_TYPE_POWER_SWITCH_BINARY 0x1
18-Apr-2018 20:36:26.805 [DEBUG] [e.internal.protocol.commandclass.ZWaveCommandClass] - NODE 17: Command class COMMAND_CLASS_BASIC, endpoint 2 created
18-Apr-2018 20:36:26.805 [DEBUG] [e.internal.protocol.commandclass.ZWaveCommandClass] - NODE 17: Unknown command class 0x1
18-Apr-2018 20:36:26.805 [DEBUG] [e.internal.protocol.commandclass.ZWaveCommandClass] - NODE 17: Creating new instance of command class COMMAND_CLASS_SWITCH_BINARY
18-Apr-2018 20:36:26.805 [DEBUG] [e.internal.protocol.commandclass.ZWaveCommandClass] - NODE 17: Command class COMMAND_CLASS_SWITCH_BINARY, endpoint 2 created
18-Apr-2018 20:36:26.805 [DEBUG] [otocol.commandclass.ZWaveMultiInstanceCommandClass] - NODE 17: Endpoint 2: Adding command class COMMAND_CLASS_SWITCH_BINARY.
18-Apr-2018 20:36:26.805 [DEBUG] [e.internal.protocol.commandclass.ZWaveCommandClass] - NODE 17: Version = 1, version set. Enabling extra functionality.
18-Apr-2018 20:36:26.805 [ERROR] [otocol.commandclass.ZWaveMultiInstanceCommandClass] - NODE 17: Endpoint 3 not found. Cannot set command classes.
I’ve had a look through the code and I think there is an off by 1 error when reading the “Command Class 1” from the “Multi Channel Capability Report Command”.
In ZWaveMultiInstanceCommandClass::handleMultiChannelCapabilityReport()
the follow variables are read from the incoming message:
int receivedEndpointId = payload.getPayloadByte(2) & 0x7F;
boolean dynamic = ((payload.getPayloadByte(2) & 0x80) != 0);
int genericDeviceClass = payload.getPayloadByte(3);
int specificDeviceClass = payload.getPayloadByte(4);
The offset of 4 when reading specificDeviceClass
, which I believe to be 0x01 (SPECIFIC_TYPE_POWER_SWITCH_BINARY
) from the logging.
Further onZWaveMultiInstanceCommandClass::addSupportedCommandClasses()
is called, which does:
for (int i = 0; i < payload.getPayloadLength() - 4; i++) {
// Get the command class ID
int data = payload.getPayloadByte(4 + i);
...
I suspect that the - 4
and 4 + i
should be 5 as the offset into the message to read the first Command Class. The other side effect of this may be reading too many Command Classes from the incoming message.
I am not sure whether this then cascades into the final error in the log, but to me it looks like the cause of the debugging message of “Unknown command class 0x1”.
Thanks,
Steve.