Dukaone ventilation with heat exchanger and Home Assistant
5 Janurary, 2020
The dukaone S6W is a one room ventilation system with a heat exchanger with up to 95% heat efficiency (running on the lowest speed). The S6W model has build it WiFi and can be controlled from an app on your phone/tablet. I have made an integration for Home Assistant so you can control the dukaone from within HA – read more below
What is this “ding”?
The “ding” has a fan behind a ceramic heat exchanger, and will run for 70 seconds one way and then change 70 seconds the other way. The ceramic heat exchanger will heat up when blowing air out of the house and cool down when blowing air in the house (assuming the air in the house is warmer). In the low mode is has an efficiency of 95% – in this mode the air flow is 15m³ per hour. I have only had if for about 3 months, and it has not yet been really cold in that period – only about 5°, but you can feel the air blowing in is not cold, so it is doing some heat exchange.
The duka one s6w is a Danish brand and you can read about it here: Duka Ventilation It may be a re-brand of similar a product in other countries, and you can find several products using the same heat exchanger. I bought this one because of the WiFi connectivity and I think it is one of the best looking devices. It is a bit more expensive than similar products – I got if for 3998 DKr.
The inside part of dukaone is glossy white plastic with a small curve. The device fits in a 16 cm hole in the wall. The inside part can be closed completely,by manually pressing the front. I guess that is in case of a storm to prevent air blowing in. The control panel has 3 touch buttons to select speed or turnoff and the mode. The regular in-out mode where the device is working as a heat exchanger, or you can have it running constantly in or out. (When it is warm, it is nice to have it blow cool air in at night).
The dukaone S6W also includes an IR remote control.
Behind the cover inside you can see the ceramic heat exchanger and a filter. The heat exchanger can be disconnected and pulled out using the wire. You need to be able to do that for cleaning and changing the filter once every 3 month.
The outside part is made in the same white plastic. (You can get the outside part in a few other colors). The front can be removed for cleaning.
WiFi and App
You connect the device to your WiFi using an app on your phone or tablet. I will not go into details about it, since I am only going to be using it for the initial setup. The app is not that great.
One thing I don’t like is that when the dukaone has been setup to connect to your WiFi, it will not start if it loose the connection. So if your WiFi dies you have no ventilation!
API for connecting to dukaone
I asked the manufacture about an API or any documentation about how to connect to the dukaone, but did any answer at all! Normally that would have made me choose another product, but I could not find any other similar product with the WiFi connectivity.
I had to inspect the UDP packages send to/from the dukaone and decipher then meaning of it. The dukaone constantly broadcast a packet each second to tell its current state. Unfortunately it is broadcasting it to destination 0.0.0.0 (maybe not initialized?). I have not found a way to receive these in python (If you know leave a comment below). I guess you can do it using a “RAW” socket, but since that is not always allowed, I have not looked further into it. (The broadcast could have been used for a nice auto discover functionality)
I have made a python dukaone sdk implementing the basic functionality:
A simple example is included if you want to try it. The dukaonesdk has also been uploaded to pypi.
Home Assistant integration
The home assistant integration is based on the above dukaonesdk. It includes a configuration flow so your can set it up from the UI in HA. You need to know the dukaone deviceid. You can get this from the dukaone app. If you know the IP address of the device you can specify it, or you can use the broadcast address of you network. If you use a broadcast address it is only used internally the first time to connect to the device. After a response has been received the device IP address will be used.
The easiest way to install, is using HACS (adding the above url as a user defined repository). Or you can copy the custom_components/dukaone folder manually.
The dukaone integrates as a fan in HA, but also adds an additional “dukaone.set_mode” service function.
To control the fan mode I have made a custom lovelace UI – you can get here on github
The custom UI adds button for mode (in, in-out, out):
I hope someone else can use this integration – if you do leave a comment below.
Comments
The comments below has been imported from the old website. Currently comments are readonly, meaning you can not
make new comments.
You will be able to do that when it is ready. For now if you want to get in touch, you can send me an email.
If you have problems with something that has a github repository, please make a github issue.
I tried out DukaoneSDK and it works great. The clock in my unit is very imprecise and runs 2-3 hours too fast per day. Therefore I have to sync it every day to for the schedule to work. Is there any chance you would implement clock sync in the SDK like in the app?I don't think I will be doing that. I don't use the app or the scheduling functionallity in ther device. I use home assistant to control it. You could setup scheduling from Home assistant, and then skip the scheduling in the device.
All the code is there on github, if someone else want to go further.
The manufacture did not reply to my email about how to communicate with the device, and it was a lot of work just to figuring out the basic communication.
(I an still disapointed about not getting any answer)Hi,
Got mine DUKAs install just before Christmas. I already played a little with Packet Capture and UDP commands to control them. Yesterday night I spend several hours to capture all packages... Today I found your integration.... Working out of the box! Thanks a lot for sharing.
Just in progress with Node-red to make my schedules instead of using the app.
Also tried to contact DUKA earlier this year and with same response - They didn't wanted to provide any documentation.Great work with the dukaoneSDK for python!
I got it to work in windows(virtualized env) and rpi4, but I am currently struggling a bit when using it with docker.
The ports used are 4000 and 1024? (any more)?
Also, cool webpage!I run it myself on docker, but I have it set to "host" network. I don't think broadcast works from docker if you don't have "host" - so you must specify the exact dukeone IP address (not just the broadcast IP). The communication is UDP and you should map 4000/udp (not just 4000 - because that is default tcp as I remember). The dukaone device will reply back on 4001/udp - so that should also be added.Cool! You got it working! I don’t get why Duka hasn’t done something like that themselves. Any ide how to get it working with Smartthings?I dont have a samsung smartthings, but you could just connect it to home assistant, so you have all the possibilities with home assistant!I'm considering buying three of these for my basement. Having integration to Home Assistant is a must, so was super happy to see your work here! Thank you!
I have a PIR in all three rooms where I consider placing the ventilator and I want configure Home Assistant to turn down or turn off the ventilator when someone is in the room - I'm already doing the same with the light.
The reason being is that I want to be able to control the noise level in the room. Apparently these devices have a noise level of 25-35db. Not really sure how much this translate to in real-life noise experience.
What is your experience of the noise level?
Once again, thank you for doing this work and for sharing!You are right about noice levels - because some manufacture does not measure it correctly. You should measure it 1m away, but some are doing it further away and you have to read it in the fine print or they do not specify it. This makes it hard to compare different models.
I have one Dukaone in my cellar on one in my bedromm (1.floor). It was my intension to turn it off in the night, but I am runnig it at the lowest level and it is barely noticable. I have automations in HA so when I get up in the morning it will automatically switch to medium level, and when I go to bed it will switch to low level.
One thing that can be anoying is the beep each time you send a command to Dukaone, the only exception is the set manual speed command - so you can use this to avoid the beep.Hi
I noticed in the app if you set the fan speed manually it wont make the beep sound. Im not a python programmer but if the python integration to duka included the manual fan speed you would avoid that, and might be able to set the speed more precise to your Db needs : )The integration has a service function dukaone.set_manual_speed - when you use this you will not get the beepHi,
I installed the DukaOne integration in HA via HACS, and i see the folder under custom_componentents, but it is not showing up when i go to Configuration, add integration(+). Pretty new to this so any help much appreciated.Had to clear cache and reload:), then it showed up.Do you have a plan to expand functionality to read the integrated humidity sensor?Yes I will add the integrated humidity sensor. I have it working in the python dukaone sdk (not comitted yet to github), so I just need to add it to the HA integration.Cool! Your work is much appreciated, and my gateway drug into the black hole of a smart home and home assistant:)Version 1.0.3 just released has support for the humidity sensor. You can see it as an attribute on the fan and it also has its own HA sensor.Hi, got everything up and running with my Duka S6W. Got rid of the skyserver and I hope this may also help get rid of my random alerts where the Duka seems to go into alert due to lost connectivity. Have Firmware: 0.4 20-12-2019.
Great workThanks for a great integration. I have two questions.
1. I have several fans, do your integration handle several fans, and should they all be set up as "master" then?
2. Your card in Lovelace works good, from there I can control the device. However the fan is just one entity, and is has for instance mode as an attribute. I dont understand how to use that in automations in HA. From there I can only turn it on and off.1. You can add multiple fans - I have 2 myself. Both of mine are master (in different rooms)- I assume the only reason to setup fans as master/slave is if you have more than one in the same roome, so you can control them together. I don't know how that is working, but my guess would be that you only connect the master to HA - it will then control both.
2. There are specific service function for dukaone: dukaone.set_mode, dukaone.set_manual_speed, dukaone.reset_filer_timer
(look in developer tools|services)Thank you so much for this. I've just started setting up my smart-home and I want this functionality, however, I've just recently setup a Homebridge server on a raspberry to add devices that are not Homekit supported.
I would like to add your integration to control the fans in my basemenet. I am not sure how to move forward as this is fairly new to me. What would be the best way to integrate it onto the homebridge from github?I have no knowlegde about homebridge or homekit. My code is for Home assistant and all in github. You will have to make it yourself (or switch to Home assistant).Hey. I installed the DukaOne integration on my hassio installation. Done manually into custom components and working like a charm.
Thanks so much. Really appreciated and a way to get rid of the bad Duka app :)Thanx a bunch - just what I was looking for! Everything works flawless :DSo glad I found this! I had been trying to use this component: https://github.com/aglehmann/home_assistant_ecovent - but unfortunately it does not currently support V2 Blauberg fans. This appears to mostly work with my Blauberg Vento Expert A30 S10 W V.2.
The control interface is documented here: https://blaubergventilatoren.de/uploads/download/b133_4_1en_01preview.pdf
With your component I'm able to turn the fan on and off, but I'm not able to set the speed of the fan manually using the "dukaone.set_manual_speed service".
It appears that I'm able to set the fan mode with the "dukaone.set_mode" service, however once the service has been used the mode attribute is no longer correctly reported, and, while I can turn the fan on and off via the component the fans state (on/off) is no longer reported by the component either. This can only be resolved by HA restart.
I know its probably a big ask, but would you consider adding support for Blauberg fans?
- Vento Expert A30 W V.2
- Vento Expert A50-1 W V.2
- Vento Expert A85-1 W V.2
- Vento Expert A100-1 W V.2
- Vento Expert Duo A30-1 W V.2
Thank you so much for your work creating this!There has been some changes to the way the FAN compoment in HA is made, and it looks like at has some side effects on the duka one component. In HA the fan "set mode" function has been change to a "set preset mode".
I will try to fix this. I think the "Vento Expert" models are the same as the "Duka one", so hopefully they work the same.Hi Jens, awesome, thank you!Hi! I does not get this work. I got message: could not call service dukaone/set_mode ..Hi,
Thank you for your work on the Home Assistant integration.
Could you please add the Blauberg documentation link https://blaubergventilatoren.de/uploads/download/b133_4_1en_01preview.pdf to the GitHub repo Wiki? I think that would help other contributors.
It would also be helpful if GitHub wiki could list other compatible fans/ventilation systems like the Vento series.It seems the Duka One S6W is not manufactured any longer. Does anyone have experience with the dukaone sdk and the newer Duka One S6 Plus WiFi?Hi
Is this working with Duka One S6 Plus WiFi ?
Also, is it possible to buy 2 of these and for example set them in each end of a house and have them run in tandem, but reversed.
I mean...Can i set them up so that one is pushing air out of the house in 70 seconds while the other one is doing the opposite, and then when 70 seconds is up, they will both reverse.
If i only buy one it will just do a slight vacuum when pulling air out, so not a lot of air will be exchanged and the exchanged air will probably be fairly local.
With 2 doing "push pull" i think a lot more air will be changed.I don't have a Duka One S6 Plug Wifi to test, but it is the newer version of S6W, so I will assume it is working. My 2 duka's are one in the cellar and one on the first floor, so i have not linked them as master slave. But i think what you descibe is exactly how they work if linked as master and slave. You could ask the shop where you buy it - (like dk-indeklima.dk), they probably know. (OR should be able to ask somebody that knows)Hi Jens,
I thought i would share with you the protocol for this product which goes under different names. I have the ones from SIKU which might be the real manufacturer but i am not entirely sure.
Here it is : https://drive.google.com/file/d/1PMZMnU2vneV4_zyhgWSgpa3MfpwR0dMp/view?usp=sharing
Also in HASS i can only adjust the fan speed, i thought i could adjust more, maybe i misread your docs ?
/MihaiThanks for the doc - i already have the one from [blauberg](https://blaubergventilatoren.de/uploads/download/b133_4_1en_01preview.pdf) - look like it is the same.
You can adjust the fan speed - both the preset and manually, change the mode in, out, in-out. You can get the humidity, filter alarm and filter timer (as attributes). And there is a service function to reset the filter alarm.
So what are you missing?I have been using an alternate piece of software for this purpose for a while (https://blomkvistitk.no/produkt/control-and-monitor-software-for-blauberg-wifi-v-2-units-kopi/?lang=en).
Integration with HA works but is a bit hard to set up for novices like me, and recently I did run into problems because the IP of my Duka One unit changed, and I simply forgot how to set up the integration with scripts, config, containers and what not.
I was hoping to find an easier way and was happy to find your HACS repo and will give it try later :)