Z-Wave the public standard

Multisensor 6 Data


#1

Can anyone say me which data is this which I got from my multisensor 6 after getting Wake-Up Interval command the following data came from the sensor 01 18 00 13 15 00 00 02 00 7E 7F 7F 7F 7F 00 00 03 00 00 00 00 03 01 00 00 9C . Please if anybody knows please tell me I shall be highly obliged.


#2

Hi! I’ve got it! I knew I had seen this kind of data somewhere…

You received: 01 18 00 13 15 00 00 02 00 7E 7F 7F 7F 7F 00 00 03 00 00 00 00 03 01 00 00 9C

It is not a command class and it is not a raw packet either. It is a *callback function.

It is discribed in:
INS13954-Instruction-Z-Wave-500-Series-Appl-Programmers-Guide-v6_81_0x.pdf

Under “4.3.3.1 ZW_SendData”, “Callback function Parameters” page 96

And then under “SerialAPI targets supporting IMA”

The Devkit 6.60.00 adds a txStatusReport structure to the ZW_SendData callback parameter and this have been introduced into the IMA supporting SerialAPI targets by extending the number of parameters in the ZW_SendData callback parameter list.

ZW->HOST: REQ | 0x13 | funcID | txStatus | wTransmitTicksMSB | wTransmitTicksLSB | bRepeaters | rssi_values.incoming[0] | rssi_values.incoming[1] | rssi_values.incoming[2] | rssi_values.incoming[3] | rssi_values.incoming[4] | bACKChannelNo | bLastTxChannelNo | bRouteSchemeState | repeater0 | repeater1 | repeater2 | repeater3 | routespeed | bRouteTries | bLastFailedLink.from | bLastFailedLink.to

So let’s apply that to the data you’ve got:

01 Start Of Frame
18 Length = 24 bytes follow (makes sense)
00 frame type REQUEST (good)
13 FUNC_ID_ZW_SEND_DATA
15 funcID -> this nmber refers to the func ID you transmitted in the FUNC_ID_ZW_SEND_DATA packet you sent before this one arrived. It is an identifier to distinguis results form API calls.
00 txStatus

The txStatus codes can be found in the SDK in SDK_v6_81_01/Z-Wave/include/ZW_transport_api.h

/* Transmit complete codes /
#define TRANSMIT_COMPLETE_OK 0x00
#define TRANSMIT_COMPLETE_NO_ACK 0x01 /
retransmission error /
#define TRANSMIT_COMPLETE_FAIL 0x02 /
transmit error /
#define TRANSMIT_ROUTING_NOT_IDLE 0x03 /
transmit error */

So this packet means the previous transmission (probably to your MS6 sensor) was OK

00 wTransmitTicksMSB
02 wTransmitTicksLSB

Together this forms TransmitTicks and a tick is 10 ms. So it took 20 ms to send data to the MS6 and get ACK. This indicates it is in direct range. 20 ms is good.

00 bRepeaters the packet did not use any repeaters, your MS6 has a direct connection.

7E rssi_values.incoming[0]
7F rssi_values.incoming[1]
7F rssi_values.incoming[2]
7F rssi_values.incoming[3]
7F rssi_values.incoming[4]

That is a list of RSSI values from or to the device and the repeaters.

ZW_transport_api.h:

#define RSSI_NOT_AVAILABLE 127 /* RSSI measurement not available / == 0x7F
#define RSSI_MAX_POWER_SATURATED 126 /
Receiver saturated. RSSI too high to measure precisely. / == 0x7E
#define RSSI_BELOW_SENSITIVITY 125 /
No signal detected. The RSSI is too low to measure precisely. / == 0x7D
#define RSSI_RESERVED_START 11 /
All values above and including RSSI_RESERVED_START are reserved,
except those defined above. */
RSSI = 2s complement in dBm

So your MS6 reports 7E == RSSI_MAX_POWER_SATURATED which means it is very close (too close) to the controller.

Since the MS6 has a direct connection, there are no repeater RSSI and thay all report RSSI_NOT_AVAILABLE

00 bACKChannelNo = Channel ack was received on, not sure what it means, “frequency” or “rate”. Might be country-dependent, I do not know
00 bLastTxChannelNo
03 bRouteSchemeState

The meaning of that byte is in the doc or can be found in the header file:

typedef enum E_ROUTING_SCHEME
{
ROUTINGSCHEME_IDLE = 0,
ROUTINGSCHEME_DIRECT = 1,
ROUTINGSCHEME_CACHED_ROUTE_SR = 2,
ROUTINGSCHEME_CACHED_ROUTE = 3,
ROUTINGSCHEME_CACHED_ROUTE_NLWR = 4,
ROUTINGSCHEME_ROUTE = 5,
ROUTINGSCHEME_RESORT_DIRECT = 6,
ROUTINGSCHEME_RESORT_EXPLORE = 7
} E_ROUTING_SCHEME;

So this packet used “ROUTINGSCHEME_CACHED_ROUTE”. I would have expected ROUTINGSCHEME_DIRECT but that was just a wild guess. I haven’t tried with any other device yet so I really have no reference point. I guess this flag means “let the controller or the device do the routing based on cached information”. But this is just a guess.

00 repeater0
00 repeater1
00 repeater2
00 repeater3

There are no repeaters, so they are all 0x00

03 routespeed

De definition of the speed constants is in SDK_v6_81_01/Z-Wave/include/ZW_controller_api.h

/* Z-Wave RF speed definitions */
#define ZW_RF_SPEED_NONE 0x0000
#define ZW_RF_SPEED_9600 0x0001
#define ZW_RF_SPEED_40K 0x0002
#define ZW_RF_SPEED_100K 0x0003

This means your MS6 exchanged data at 100 kbit/second, which is to be expected because controller and device are Z-Wave Plus.

01 bRouteTries
00 bLastFailedLink.from
00 bLastFailedLink.from

No retries were done so no failure stats I guess…

9C Checksum of serial api packet (matches the data)

Answer originally posted at: