Component for Duco ventilation system#7993
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## dev #7993 +/- ##
==========================================
+ Coverage 69.17% 73.36% +4.18%
==========================================
Files 52 53 +1
Lines 10755 11283 +528
Branches 1449 1532 +83
==========================================
+ Hits 7440 8278 +838
+ Misses 2922 2605 -317
- Partials 393 400 +7 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Tiellemans
left a comment
There was a problem hiding this comment.
Looks good, also installed the component myself as I also have this box at home.
Really appreciate this PR and it immediate helped me automate this box.
Thanks for the hard work!
|
Saw comments on the documentation: esphome/esphome.io#4528 (comment)
My list is as follows: Possibly related: I can see on the Duco display that it can measure indoor and outdoor temperatures. Can those sensors be read over UART as well? |
|
This is a very interesting PR, nice progress too! I'm going to follow this as I have a DucoBox energy premium and the connectivity board which is very disappointing. I'm sniffing the uart comms with a saleae clone to see if I can get some more data.
14:28:34 | [I] | [duco:203] | Discovered nodes: |
|
@w1ll14m I'm glad to hear that it's working well! Since you're also looking at it with a logic analyzer, can you see if you can figure out the protocol for the humidity sensor? I couldn't do that myself, since I don't have a humidity sensor in my own network. If you're looking for a bit more information of the protocol, you can take a look at: https://github.com/kokx/duco-analysis/ . There I described how I reverse engineered the protocol itself using a Saleae. I am assuming that the humidity sensor works very similar to how the CO2-sensor works. Feel free to contact me if you have any troubles there, I'm happy to help you decipher it. I would also be quite interested to see how the valve works, would be nice if this can be implemented as well. @Tiellemans Unfortunately the temperature sensors aren't visible through the Connectivity Board, which means that I wasn't able to figure out that part of the protocol. |
|
I've reinstalled the duco board and installed the installer app, registered (not verified) and was able to read some info from the box and sensors. I was able to read pressure and humid from box and humid + temp from sensors. I dumped the data from logic analyzer and made a few screenshots. Haven't had the time yet to figure out the messages, I did read your duco-analysis repo, which is very nice! What is a good place to have a discussion and share some files? Are you active on IRC, discord or something else? It's probably best to not clutter this PR too much :) |
|
@w1ll14m You can reach me on Discord, you should be able to find me in the esphome discord with the same username. |
|
With some help from @w1ll14m it was possible to also add support for the humidity sensor, temperature sensors that are in the Box and the Bypass value. The documentation and example config were updated accordingly. |
|
Great update! I've added the Delta T to the controller by calculating diffs (- means cool air flow inside, + means hotter air flow inside):
|
|
There hasn't been any activity on this pull request recently. This pull request has been automatically marked as stale because of that and will be closed if no further activity occurs within 7 days. |
This component is based on Modbus. The underlying protocol used by DUCO has some similarities with Modbus, however it does have some differences as well. Therefor a custom component is needed.
4337f4f to
2fae93e
Compare
|
To use the changes from this PR as an external component, add the following to your ESPHome configuration YAML file: external_components:
- source: github://pr#7993
components: [duco]
refresh: 1h(Added by the PR bot) |
There was a problem hiding this comment.
📦 Pull Request Size
This PR is too large with 1607 line changes (excluding tests). Please consider breaking it down into smaller, focused PRs to make review easier and reduce the risk of conflicts.
For guidance on breaking down large PRs, see: https://developers.esphome.io/contributing/submitting-your-work/#how-to-approach-large-submissions
|
Please take a look at the requested changes, and use the Ready for review button when you are done, thanks 👍 |
|
I did a quick rebase, also adding this comment to prevent the PR being closed. |
|
There hasn't been any activity on this pull request recently. This pull request has been automatically marked as stale because of that and will be closed if no further activity occurs within 7 days. |
There was a problem hiding this comment.
📦 Pull Request Size
This PR is too large with 1607 line changes (excluding tests). Please consider breaking it down into smaller, focused PRs to make review easier and reduce the risk of conflicts.
For guidance on breaking down large PRs, see: https://developers.esphome.io/contributing/submitting-your-work/#how-to-approach-large-submissions
Memory Impact AnalysisComponents:
📊 Component Memory Breakdown
🔍 Symbol-Level Changes (click to expand)Changed Symbols
New Symbols (top 15)
Removed Symbols (top 15)
This analysis runs automatically when components change. Memory usage is measured from a representative test configuration. |
|
Hi, I'm really looking forward to give it a shot. Can I safely use the pins that supply 5V on the Duco to power a nodeMCU with the duco component installed on? Is their somewhere some documentation that I can follow, including some pictures? |
|
Yes, you can use the 5V pin to provide power to a NodeMCU. The documentation you can find here: https://github.com/kokx/esphome-docs/blob/duco-component/components/duco.rst |
|
Thanks so much for your effort @kokx. I have a Ducobox Focus and was able to connect an ESP32 using your project to it and am getting CO2 and Humidity readings from my 3 valves! Really wanted to get an insight and hopefully do some controlling with it later as well but I'm new to Coding, ESP32s and Home Assistant so diving straight into this I'm in a bit over my head. Anyways, I have some new components that maybe can be helpful to identify for other users with the Ducobox Focus: Type 14 (valve with RH sensor), Type 16 (Valve with CO2 sensor, If I remember correctly these are ones that are rated up to 30 m3/h or so instead of the standard 50 m3/h. They go up to 80+ m3/h without a problem but were cheaper to buy...) [19:14:24.249][I][duco:206]: Discovered nodes: |
Additional information when hooked up to the (old) installer tool using a usb cable: |
|
Hi! Great work on this, i'm using it succesfully on my Duco WTW DucoBox Energy for about half a year now. My unit has an auto-bypass, which is nice but i'd like a bit more control over it. If there's anything i can do to help let me know, Thank you! |
I don't want to hijack this pull but I understand where you are coming from, I have a Duco Energy Premium. I made a few changes and suggested these to the Author. You can find it here, perhaps this may help you for now: These changes are still quite experimental but seem to be working quite well for my Duco, though no guarantees for your system. I'm not responsible if you make it eat your cat or burn down your house ;) My config: |

What does this implement/fix?
Adds a component that allows control of a Duco heat recovery ventilation system. It adds a select component to set the current ventilation mode, sensors for the serial number, CO2-sensors, remaining filter time, flow level and time remaining in the current ventilation mode.
At the time of writing this is only tested on a DucoBox Energy Comfort D325, it may not work on every Duco ventilation system.
Types of changes
Related issue or feature (if applicable):
Pull request in esphome-docs with documentation (if applicable):
Test Environment
Example entry for
config.yaml:Checklist:
tests/folder).If user exposed functionality or configuration variables are added/changed: