Is there a list of raw commands to go with the command classes?


(Don Caruana) #1

For example, I can find the list of command classes anywhere - basic is 0x20.

But what are the commands that go with it? In the zwave spec it just lists constants like “BASIC_GET” or “BASIC_SET”. But no actual values. And the same type of reference is shown in the developer docs here. But is there a way to get the raw code? 2003 is command class 20 (Basic) and command 3 (set?). Is there a list of those actual commands, by command class, anywhere?


#2

The actual values are in the public specification, but you have to look in the application commands file:

So you can start here:

http://zwavepublic.com/specifications

But then you have to select the application command class file to see the details:

http://zwavepublic.com/sites/default/files/command_class_specs_2017A/SDS13781-3%20Z-Wave%20Application%20Command%20Class%20Specification.pdf

And then the zwave device class specification:

http://zwavepublic.com/sites/default/files/SDS10242-29%20-%20Z-Wave%20Device%20Class%20Specification.pdf

For zwave plus Devices you will also need that spec:

http://zwavepublic.com/sites/default/files/SDS10242-29%20-%20Z-Wave%20Device%20Class%20Specification.pdf

If you’re not familiar with Z wave documentation, you can’t just jump straight to a command and get all the information you need. The documentation is describing the frames used by each command set, but not necessarily the individual values.

So begin by reading everything at the front of the document, and it will explain how the remaining sections are structured.

Then go to the section for the specific command you were interested in and it will describe the frame format for that command.

For something like basic set, you may then have to go to the device class documentation to find the actual values allowed for each different class.


(Don Caruana) #3

Thanks for the links and references! I’ve had those since I first rolled my sleeves up and started working on device handlers though - back when they were 2 huge documents. :slight_smile:

I wasn’t asking what valid values to use for a specific command, but what the values are for the command itself.

For example, the basic command class is 0x20. The next piece of information in the frame is the actual command. The command is always one byte (per 3.2.1.2 of the command class spec. But all you will see in the spec or anywhere is reference to names, ie “BASIC_SET”, or “BASIC_GET”. There is nothing that tells you the decimal equivalent of that named command. So if the frame starts 2001, that’s a basic set. If it starts 2002, it’s a basic get. And 2003 is a basic report. But I know from hacking my way around - I can’s find a reference that says the set command for the basic command class is 01, get is 02, and report is 03. And if I look at a different class, like configuration, the set/get/report numbers are 4/5/6, respectively. So I can’t even infer the values from the spec.

At least I can’t infer them. :slight_smile: So…I asked if there is a reference anywhere to that level of specificity. Still haven’t found one.


(Don Caruana) #4

With a chance to do a little more digging, I actually did find the reference I was looking for!

It is indeed on zwavepublic.com, and it’s under the “Role Type & Device Type Specifications”, but not really obvious. It’s actually this file: SDS13740-1 - Z-Wave Plus Device and Command Class Types and Defines Specification.pdf

Starting on page 33 of the pdf (page 29 as the document lists it), you’ll see all the definitions of all those constants in the specs. This snippet, for example, is from page 54 (58 of the pdf):

So now we all know!


(Kevin) #5

Thank you for posting those links.

I have a device using a command class that’s not supported by SmartThings and further down in that document there’s a full list of the command class identifiers.