I am attacking this Danfoss HRV on multiple levels, and I will probably continue this part in another thread as it relates to the Z-Wave part, however with a little help I have discovered that Danfoss communication over Z-Wave is actually another protocol.
They use the z-wave proprietary command class to send a lot of other data. This protocol is actually something called DEVILINK CC a simple byte data protocol. And if I am not mistaken it is probably the same protocol they are using for the TCP link. They seem like they are trying to reuse as much as possible. Which means what you have discovered here can probably be used for the z-wave integration also. As I said before I will continue the Z-wave specific conversation in another thread, but tomorrow.
as I didnât found the issue in the binding I started first, I started just another test binding and there state update was working. Thus I created another Danfoss binding called DanfossHRV and now implementing step by step very carefully channel by channel and so far it works with 5 channels updated every 10 seconds:
mode get and set (Dropdown)
level in manual mode get and set (Dimmer)
Humidity
Battery Level of the Air Dial
Current DateTime as set in the HRV
Other channels only seem to be a diligent but routine piece of work.
Missing in the new binding is so far the discovery, but I think I add this soon. This also requires to use configuration properties. When this works we are near to a working binding.
this sounds like good news. We hadnât so much time than we needed and were actually stuck at the command line app. Simple Things like rush airing, bypass and so on are working and results are returned as json string. But discovery is missing, too.
If you need someone for testing purposes, Iâll help as much as I can.
So I added the config option host, and afterwards added the discovery again. Both works as expected.
Then I started grouping channels again and as soon as I did that, all channel updates were lost again. I simply call updateState() with the channel name and the state. However this doesnât work anymore when you use channel groups. In this case you have to pass a channelUID as I learned, then it works like a charm, also in the Binding I started first, so I have two half way working bindings now
I think I can push to github soon so that you can test. But not this evening anymore âŚ
I have done some more research (so far unable to get the logger to function as I want so that is delayed), but I did find this document from Danfoss (http://heating.danfoss.com/PCMPDF/Devicom_Gateway_08095355.pdf) describing the Devilink protocol. Does that conform to what you @leaxi is using to communicate with the CCM over LAN?
I have attached the manual here also so it wont disappear.
@JonasPed
Yes I didnât posted the link to the GitHub repo so far, only send it to Peter. You will not yet find the new version of the binding there. Just give me a few more days to include all interesting channels. Before testing is not really worth. But you can setup Eclipse already
@petero
I checked the devilink document. I reviewed all the 33 pages but have to state this is completely different to what is send over network.
I pushed the binding to GitHub. So whoever want to test âŚ
I changed the communication procedure of the binding slightly. As it polls all data in a given interval, between these two points there is no connection to the CCM required. So I disconnect at this time and connect before the next access again. However I have a few issues now, that from time to time I lose the connection until the next polling (binding goes OFFLINE).
I also created a JAR, but I canât upload this here directly. Where are such âbinariesâ usually stored?
the Eclipse IoT Marketplace works, but has one little problem: If you want to load a binding from there, you have to use PaperUI. You canât load it with addons.cfg!
Been running this for a couple of days. Seems to work fine. Finally are able to store the ventilation values over time, and create some nice graphs.
Found a couple of more addresses that might could be interesting to have in the binding:
OperationTime:
0x000403e0
Returns minutes of operation time.(converted from hex) Shown as hours on the airdial/PC tool.
Read the current Supply/Exhaust fan speed (mine are always the same value so not 100 % on the order)
0x01041428/0x01041429
Convert from hex to get percentage.
Read the current Supply/Exhaust RPM
0x04041450/0x04041451
Convert from hex to get the RPM speed.
Do you have any idea if this binding will still work when the air unit is connected to a Danfoss link cc instead of the Air Dial?
The PC tool gets very limited functionality when this is the case.
I would very much like to try out this binding but cannot get the build environment to work.
Can somebody send me the jar file? email: asbjoern_at_mejnertsen.dk