Danfoss Air Unit - Z-Wave Connection

I am starting this topic to collection information about the Danfoss Air HRV Unit (Technically the CCM Module that connects to the Danfoss Air)


The Danfoss Air systems consists of three (minimum) devices in a non-openhab setup. A Danfoss Air Heat Exchanger (A2, A3, W1, W2) also called the Danfoss Air Unit. The unit is attached via cable to the Danfoss Air CCM by modbus (I think). The CCM is connected via Z-Wave to the Danfoss Air Dial.

The Danfoss CCM has two connections out, an ethernet link and a wireless Z-Wave connection. The ethernet connection is used for Service and Installation as well as setting up programs and other expert configurations.

The Z-Wave connection is used by the Air Dial (acting as a controller) to provide the room temperature, and control functions as boost, level, etc. and getting information such as temperatures in the system (outside intake, exhaust, inblow and suction), filter level, etc.

The CCM has the following command classes for Z-Wave

  • Basic V1
  • HRV Control Command Class
  • HRV Status Command Class
  • Manufacturer Proprietary
  • Manufacturer Specific V1
  • Version V1

I have successfully connected the Z-Wave interface to Zipato’s Zipabox where I was able to control the device on/off via the HRV control command class.

5 minutes conversation with Jon Suphammer (https://www.suphammer.net/) let me know that Danfoss uses the proprietary command to encapsulate their own protocol, just packaged as the z-wave command data. The protocol is called DEVILINK CC

I have ordered a https://www.suphammer.net/suphacap in order to fully log and debug the “conversation” however my initial suspicion is that the protocol is the same/similar to what @leaxi has discovered here: https://community.openhab.org/t/danfoss-air-unit-ethernet-connection/ but I will hopefully confirm that as soon as the device arrives (or if someone else has knowledge on the matter)

Why work on this when the ethernet is going well?

  • The Danfoss Unit is often placed in the ceiling or other remote places where a proper ethernet cable could be difficult to get to.
  • The Z-Wave connection seems to be the preferred controlling method for the device
  • Less points of failure, don’t want to spend time debugging my network because the HRV is not working.
  • Options!

Next step

  • I will confirm the protocol over the 0x91 command class.

I have though not been able to find any example on how to utilize the proprietary command class. I am unsure what the best approach is here? @chris is there a good way to do this in the Z-Wave 2.0 binding? Obviously you do not want to pollute the binding with very device specific code, but how else would it be possible to distribute? Is is possible to expand the z-wave in another binding?

https://products.z-wavealliance.org/products/179 (The actual CCM)
https://products.z-wavealliance.org/products/173 (What you would expect was the CCM)

Yes, it’s possible to do this - it’s not very common that manufacturers introduce their own protocols. ZWave is meant to be an inter-operable system, so it’s generally a bad thing to do to have customer CCs.

All this communication uses a single command class (the manufacturer specific CC) so we would simply need to implement the commands as a separate command class and it’s easy enough to hook it in to the binding.

Excellent, how would you recommend me to do this? In a couple of days I will be getting the information regarding (methods, properties and status variables / do, set, get).

I can quite easily create a java class to show encapsulate this information to methods like this:

function void StartSomething() {}
function int GetStatus() {}
function void SetSomething(int a_value) {}

Additionally I should probably make some sort of parsing class

function [object] ParseCustom(byte[] customFormat) {
    return {command: Got_Value; value: 123}

Then that could be used for the CC hooks? Or how would you suggest to approach this? The binding is your backyard so I just want to make sure to start in the right place.

Slightly off topic, but:
I completely agree on the stupidity of doing it this way, but better people than you or I have tried to pursuade Danfoss to do it differently. But these companies just keep doing stupid shit. Grohe (the water piping plumping company) just launched a water sensor system that can turn off the water if leaks are detected. Closed system, proprietary and ludicrously expensive (1000+ USD) and can only do that one thing. (It does have an app, and I definitely need one more of those)

@petero Did you ever get the z-connection to work?