Danfoss Air Unit - Ethernet-Connection

Yes, i have knxd running with the binding.

Do you really mean knxd? @petero was referring to the KNX binding.
EDIT: I just found out that the binding also supports another PC running knxd. So never mind.

See the documentation and forum for examples how the use it, there are plenty of examples.
I’d recommend to create an item for the group address you want to read / write and add this item to a sitemap so that you can see or update it from the GUI (whatever it is you want to do).
Same for the Danfoss binding. Once you are able to do that, write a rule which triggers for changes in the Danfoss item and updates the KNX item (or vice versa). Be careful not to create a cyclic update.

This might look like this (in my case, if the KNX wall switch is pressed, the air unit is put into “OFF” mode for one hour and then put back into “DEMAND” mode using a timer)

knx.things (excerpt with only one thing, adapt for your setup accordingly, see documentation)

Bridge knx:ip:bridge [ 
    ipAddress="192.168.0.133", 
    port=3671, 
    localIp="192.168.0.62", 
    type="TUNNEL", 
    readingPause=50, 
    responseTimeout=30, 
    readRetriesLimit=3, 
    autoReconnectPeriod=1,
    localSourceAddr="0.0.0"
] {
    Thing device generic [
  
    ] {
           Type switch-control : Taster_Lueftung_Modus_AUS_aktiv "Lüftung AUS aktivieren" [ ga="9/0/15"]
      } 
}

Note that I used the control channel variant of the item type switch here… you can read about it here in the KNX binding documentation

knx.items (excerpt)
EDIT: posted the wrong item here first, fixed now.

Switch Taster_Lueftung_Modus_AUS_aktiv "Lüftung AUS Modus aktivieren" { channel = "knx:device:bridge:generic:Taster_Lueftung_Modus_AUS_aktiv" }

danfoss.rules (excerpt)

var Timer tLueftungDeactivation

rule "Lüftung_Taster Küche"
when
    Item Taster_Lueftung_Modus_AUS_aktiv changed
then
    if(tLueftungDeactivation !== null) {
        logInfo("Lüftung", "Lüftung Timer cancelled"	)
        tLueftungDeactivation.cancel()
    }
    sendCommand(Lueftung_Mode, "OFF")
    logInfo("Lüftung", "Creating Lüftung Timer")
    tLueftungDeactivation = createTimer(now.plusHours(1))[|
        logInfo("Lüftung", "Lüftung Timer fired")
        sendCommand(Lueftung_Mode, "DEMAND")
    ]
end

I’ve got an KNX as well, but actually I use a combination of HabPanel and Grafana for the visualisation of the air unit graphs. Much more pleasing to the eye and a lot cheaper than the visualisations for KNX from the classic vendors.

1 Like

What @pravussum said. I have not been in front of a computer these last days.

Happy new year and thanks for the help, looks like I have some reading to do.
As you might have noticed, I’m fairly new to this.
My goal is to see from my visual device (wiser for KNX) what the airunit is doing and control it remotly over my smartphone, so when the neaby dumbster burns again I can turn it off without going home and do so. It also could interact with other sensors.
Has anyone of you a VOC sensor manipulating the airunit?

cheers,
Carsten

OK, the PR is finally created:


Let’s see when this can be reviewed and how much needs to be updated :crazy_face:

Hi @pravussum,

Using the HRV PC-Tool it’s possible to see fan speed (i.e. level/step from 1-10) when mode is “Demand”.
image
Would it be possible to add to the binding also? Same as “Manual Fan Speed”, but for reading-only when mode is not “Manual”.

Having this information would make it possible to analyze how the unit operates, i.e. how it reacts to humidity changes.

Best regards,
Jacob Laursen

Hej,
do you really want to have the 10-step fan speed? I found supply_fan_speed / extract_fan_speed to be much better for analyzing how the unit operates (since it delivers more fine grained values).
If you still want to have it that wouldn’t be a big change.

Hi,

You are probably right, but I think it’s two different things, or can supply_fan/speed/extract_fan_speed be directly translated into 10-step fan speed? The rpm from the fans is pretty accurate information, but in the end my manual control would need to result in a 10-step fan speed. I currently don’t have useful humidity sensors for this, only Netatmo stations, so I’m not ready to take over control yet, for now just monitoring - and using manual control when not home and CO2 levels are low, otherwise “Demand”.

In other words: Yes, it would be nice to also have 10-step fan speed. :slight_smile:

Oh, any why would I want to take over control: Because I’m pretty sure my humidity sensor is measuring significantly too high - like 10 percent point - compared to all my other sensors.

Best regards,
Jacob Laursen

OK. Looking at the possible registers to read (referring to https://docs.google.com/spreadsheets/d/1FnWGzeicXrBhMg_jaHFM7jzVb_5aiflNTMsUz-j_rRo) the most promising candidate is Step Supply Fan / Step Extract Fan (a couple of times in the document, always with register number 5160/5160.
However, implementing it, I don’t get 10-step values, but also values like 35 (the documentation states such example values as well).
My assumption is, that it’s a percentage value under the hood which is just simplified for the presentation in the air dial / HRV PC-Tool.
I’ll keep it that way (delivering percentage values). Should you need it as 10-step value I suggest you round it (maybe using formatting?) in your item. So anyone interested in the real “exact” value can use it, while you are still able to achieve what you try to do.

Made a new release.

  • incorporated changes from code review in the context of the PR, most notable I overhauled the connection/request handling to avoid some concurrency issues
  • added supply / extract fan step values

You might have to remove and re-add the thing, I had some problems that the new fan step channels didn’t show up when I just replaced the JAR (even when I restarted OpenHAB).

1 Like

Hi @pravussum,

Wow, that was fast - thanks! I had the same issue replacing the .jar file, so re-added the thing. When relinking items and some of my existing items didn’t show up, I remembered that I changed the dimension on some of them, for example “Temperature” for temperatures. I don’t know if it would make sense to set this as default dimension. It seems that openHAB matches dimensions and only let you select items configured with same dimension as default? I simply updated my items, linked and then set my preferred dimensions again. Still having some issues with humidity as Number.Dimensionless formatted as percentage, but not sure what’s going on yet - upgraded from 2.5.0-SNAPSHOT.

I’ll monitor these two new steps and see if they match the 1-10 step from the HRV PC-Tool. Looks like it could be ExtractFanStep, but I’ll need to confirm.

Best regards,
Jacob Laursen

Hi @pravussum,

I’ve been monitoring “Extract Fan Step” a few times since yesterday, so here’s the results I have at this time. First, when setting the step manually using “Manual Fan Speed” as a test to see if the values will match (which they should):

Manual Fan Speed -> Extract Fan Step

  • 10% -> 11%
  • 20% -> 23%
  • 30% -> 34%
  • 40% -> 45%
  • 50% -> 56%
  • 60% -> 68%
  • 70% -> 79%
  • 80% -> 90%
  • 90% -> 100%
  • 100% -> 100%

A little bit strange, but especially step 9 and 10. I can clearly deduct step from current power consumption in Watt. Step 8 will use ~71 W, step 9 ~91 W and step 10 also ~91 W. When changing between step 9 and 10 from openHAB in manual mode, I can see the steps change accordingly on my Link CC display, but power consumption doesn’t change. And also, “Extract Fan Step” doesn’t change - but is 100% for both steps. So somehow it doesn’t seem to represent the steps exactly, but perhaps something related, although slightly different?

Just note: I have been using Link CC to see actual step as I have been having issues connecting from PC-Tool and openHAB binding at the same time. It seems to get updated quite quickly when changing manual steps from an openHAB sitemap, so I believe results are pretty accurate/consistent.

When mode is “demand”, more “Extract Fan Steps” come into play. For example, I’ve observed:

Extract Fan Step -> Step

  • 70 -> 6
  • 71 -> 6
  • 72 -> 7
  • 73 -> 7
  • 75 -> 7
  • 77 -> 7
  • 79 -> 7
  • 88 -> 8

A bit strange how extract fan steps relate to actual steps between 6 and 7.

From the linked document, is “FanStep” and “Resultant FanStep” currently being mapped to any channels? Could also be candidates for this value I’m seeking? Don’t know if “FanStep SP” (as being writable) is mapped to the manual fan speed - in this case one of these two seems likely.

Best regards,
Jacob Laursen

Woohoo, the PR is finally merged, over 3 years after the first piece of code!


So the next OpenHAB release will see an official danfossairunit binding :clap:

1 Like

And there it is: https://github.com/openhab/openhab-distro/releases/tag/2.5.5 … Thank you guys for the great teamwork, otherwise that would not have been possible! :beers:

1 Like

Hi, good to see many guys have this airunit and try many things to get the neccesary information to use it in house automatisation.
I try to convert it for FHEM and now i need you help to interprete WORD or STRINGS…
I want to convert the Modelname or generally Names
0x04040025 the Model String I.e. Danfoss Air 4611

=> OK, i found it, its the Serialnumber of the AirUnit, name ist in 010415e5 and for me w2/a2

Somebody know how the Danfoss Link get the new information? Some Settings the Danfoss CC Link reads directly… i can see for example the change of the Boost option, when set it on or of… but for exemple mode or boost automatic, bypass automatic , fan step settings the changes are not visible in the Controller…

Attation for boost automatic and bypass automatic , this values are inverse… the option in the PC Tool ist:
Disable boost automatic and disable bypass automatic.

cheers
René

Hey @fireball,
I’m not sure if I fully got what you are trying to achieve.
What we read in the binding is the unit name (w2/a2 in my case) and the serial number, a four-digit number. We do not read the model name and I would not know how.
This document is the source of information about the registers to read:

See above in the thread where it came from, it was retrieved by putting the Windows software into some kind of maintainers mode.
I don’t see anything in there which would directly stand out as model name - maybe by mapping the product ID?

That being said, nothing can be as enlightening as some source code :wink:
Most of the magic of our binding happens here and here.

Hi, thanks for your answer.
Yes read more in this topic and i found this maintainers mode :slight_smile: so got the service menu and i could look to all settings… yes… its only the serial nr and unitname… nothing more… ohh i dint so the last link… i saw only an earlier version of the modul… but everything helps…

now i have a perl-script and i can manage the unit… now i need “only” a modul for fhem :smile:

Hi one question more…
do we alway read from Register 1 and write to register 4? Im implementing the “fireplace-options” and this ist 4times avalaible in write mode:

Name Endpoint Number Updated changed Value Type Flag CCM ver.
Fireplace Option 2 5895 13/02-2021 11:35:13 13/02-2021 11:35:13 0 / 00 BYTE Writeable 2
Fireplace Option 1 5895 13/02-2021 11:34:48 13/02-2021 11:34:48 0 / 00 BYTE Writeable 2
Fireplace Option 3 5895 13/02-2021 11:35:39 13/02-2021 11:35:39 0 / 00 BYTE Writeable 2
Fireplace Option 0 5895 13/02-2021 11:34:33 13/02-2021 11:34:33 0 / 00 BYTE Writeable 2

Which register i should use? Writable are fields…

I found also a CookerHood Option, but is not available in the Controller, sombody played with this option?!

Name Endpoint Number Updated changed Value Type Flag CCM ver.
Cooker Hood Option 3 5428 13/02-2021 11:35:30 13/02-2021 11:35:30 False BOOL Writeable 2
Cookerhood Option 0 5428 13/02-2021 11:34:33 13/02-2021 11:34:33 0 / 00 BYTE Writeable 2
Cooker Hood Option 1 5428 13/02-2021 11:34:45 13/02-2021 11:34:45 False BOOL Writeable 2
Cooker Hood Option 2 5428 13/02-2021 11:35:04 13/02-2021 11:35:04 False BOOL Writeable 2
Cooker Hood Status 1 5429 13/02-2021 12:01:10 13/02-2021 11:34:16 False BOOL Writeable 2
Cooker Hood Status 2 5429 13/02-2021 11:35:04 13/02-2021 11:35:04 False BOOL Writeable 2
Cooker Hood Status 3 5429 13/02-2021 11:35:30 13/02-2021 11:35:30 False BOOL Writeable 2

How i should set this …
I think its also a good think to use…

VG
René

I activate the cooker hood option with 0x01, 0x06, 0x15, 0x34 and 0x01/on or 0x00/off… but nothing happend… only the "first 3 lines are now “true”

no hidden menu i can see in the controller to activate something more… strange is that the other 1 option and the status is not changing…

VG
René

To be honest I couldn’t relate this to any information available in the sheet (and that’s all I’ve got). When in doubt, I just tried it and compared to the air dial to check if the update was successful.
Oh, and there are values that are not read from register 1, check this out for example: