How to Convert a Z-Wave Device Type to use with a Zigbee Thing?

It seems like there are many more device types available for Z-Wave thermostats than for Zigbee thermostats.

Is there an easy way of converting one to the other?


Are they interchangeable, and can I just simply use a device type that was created for a Z-Wave device for my Zigbee device?

I’m assume ‘Yes’ to the first question, and ‘No’ for the second question.

The answer is probably closer to ‘No’ and ‘No’. The Zwave command structure is quite a bit different than zigbee, so while the base thermostat commands like setHeatingSetPoint, setCoolingSetPoint, off, heat, cool, etc… are the same, the implementation can be very different.

Depending on what your goal is: 1) Copying the UI of a zwave thermostat for the zigbee thermostat 2) Adding new features to a zigbee thermostat that you saw in a zwave one 3) Building a new zigbee thermostat

For 1) You should be able to copy the UI sections (Tile layout section) from a zwave thermostat to a zigbee one and have it work

For 2) and 3) you will need to reference the zigbee specs (I usually use the below link) to determine if zigbee has an equivalent feature and how to implement it.

In either case, you’re probably better off starting with a zigbee thermostat device type and modifying it; than trying to start with the zwave one and change everything over to zigbee. What are you trying to accomplish, maybe I can help?


Thanks @Sticks18
This helps a lot, and I totally agree. At least for where I’m at right now, I’m not even sure if I could swing the copy/paste to get the UI sections transferred. lol So, I will just look around for other Zigbee device types in the short-term, and see if I can do anything more with it later down the road when I’ve actually gotten more into the whole coding area.

If I wanted to do your #1, is there a guide for noobs to get it done, or is it a matter of waiting till I’m actually more familiar with coding this stuff?

I would try to get more familiar with the ST documentation first, particularly device handlers, tiles, and the samples, but the UI section is a good place to tinker and test. Personally, I would use a light bulb or other device as a test ground since it will be easier to see the results and errors won’t really have any consequences like power-cycling your HVAC system.

The UI section is part of the top area within metdata{}. In the metadata{} brackets there are 4 main parts: definition - defines the device name, fingerprint, capabilities and custom commands/attributes, simulator - defines code to be used when testing the device in the simulator without a physical device, preferences - defines additional settings for the device accessed via the mobile app (where you change the name, icon, etc…), tiles - defines device layout and UI for the mobile app.

The section that starts with ‘tiles’ is where the device layout you see in the mobile app is determined, so in theory you could copy the section starting with ‘tiles’ and ending with the ‘}’ that ends the tiles section from one device type to the next. You will need to make sure that the commands and attributes being used by the various tiles exist in the device type code. This is where you’ll really need to familiarize yourself with the documentation, so you can understand what the tiles mean: what attribute do they reflect? what command do they call?

1 Like

Thanks again. Great info for where I’m at.

The good thing for me right now is that the thermostat is not actually physically installed yet, and I am only testing it with ST.

So, I could do whatever in there and not hurt a thing.