Anyone using Duco Ventilation Communication Print Ethernet module?

Hello! I’ve also been working on our Ducobox. I’m using this stripped-down code but it doesn’t work. (neither does the full code) The dropdown does not respond. :frowning: When I go to: http://192.168.178.56/nodesetoperstate?node=1&value=MAN1 then the link does work. (just like the other 2 links) I use the yaml code below for configuration: Does anyone have the solution?
Why doesn’t there respond to another selection?

(I’ve rebooted)

    ## Duco Ventilation Box
input_select:
  ducobox_mode:
    name: DucoBox
    icon: mdi:fan
    options:
      - "MAN1"
      - "MAN2"
      - "MAN3"

rest_command:
  ducobox_mode_man1:
    url: "192.168.178.56/nodesetoperstate?node=1&value=MAN1"
  ducobox_mode_man2:
    url: "192.168.178.56/nodesetoperstate?node=1&value=MAN2"
  ducobox_mode_man3:
    url: "192.168.178.56/nodesetoperstate?node=1&value=MAN3"

rest:
  - resource: http://192.168.178.56/info/nodes/1
    scan_interval: 15
    sensor:
      - name: DucoBox
        unique_id: ducobox
        value_template: "{{ value_json.state }}"
        icon: mdi:fan
        json_attributes:
          - devtype
          - location
          - state
          - mode
          - ovrl
          - swversion
          - serialnb

and these for automatations:

- alias: DucoBox
  description: ''
  trigger:
  - platform: state
    entity_id:
    - input_select.ducobox_mode
  condition: []
  action:
  - choose:
    - conditions:
      - condition: state
        entity_id: input_select.ducobox_mode
        state: MAN1
      sequence:
      - service: rest_command.ducobox_mode_man1
        data: {}
    - conditions:
      - condition: state
        entity_id: input_select.ducobox_mode
        state: MAN2
      sequence:
      - service: rest_command.ducobox_mode_man2
        data: {}
    - conditions:
      - condition: state
        entity_id: input_select.ducobox_mode
        state: MAN3
      sequence:
      - service: rest_command.ducobox_mode_man3
        data: {}
  mode: single

The drop down is working fine MAN1, 2 and 3 :slight_smile:

Configuration is ok.

With some tricking the system you can use the duco installation app for your local setup. There you can get Duco interpretations of the readings of the IAQ (and more data). Pity that they did not put it in the API, but it also doesn’t matter that much. Also you can configure thresholds with the app (or on the device).

So… make sure the ventilation capacity is right, put in your thresholds, fire and forget… IMHO the stuff left then is just nice for cool looking graphs ;).

Personally I do not look at the data anymore, it just works in all circumstances and that is what it should do. I only replaced a valve in one room to be able to use rq and co2 because the laundry dries in that room ;). It saves automations and it is better than the unstability of the comms print.

FWIW, duco translation to CO2 PPM, maybe someone also can ask for a RH mapping:

CO2 (PPM) IAQ Index
<800 ppm 100% Zeer goede binnenluchtkwaliteit
800 95%
900 90%
1000 85% Goede binnenluchtkwaliteit
1100 80%
1200 75%
1250 70% Tijdelijk aanvaardbare binnenluchtkwaliteit
1300 65%
1350 60%
1400 55%
1450 50%
1500 45% Slechte binnenluchtkwaliteit
1550 40%
1600 35%
>1600 30%

Info from Duco modbus tcp datasheet
Source: https://www.duco.eu/Wes/CDN/1/Attachments/informatieblad-Modbus-TCP-(nl)_638543249201745837.pdf

I see some difference in the IAQ Index % and the text quality labels in the mapping above and the datasheet.

Many authorities consider CO2 ppm values ​​below approximately 1000ppm to be fine, above 1000ppm the air quality is considered unhealthy. The values ​​in the table above deviate a lot from these values.
co2-ppm-table-400x419
Image source: https://www.iqhome.org/index.php?route=extension/d_blog_module/post&post_id=17

I am not sure if the Duco CO2 ppm mapping from miezie is correct…

Might be changed. I got it from Duco technical support. The only way is to ask for it from Duco. Instead of assuming ;).

What I already learned for a few years: there is a lot of difference in interests between the housing industry and scientists on health what is considered good air quality and good ventilation. Dutch “bouwbesluit” at least is on the side of the builders… my goal for sleeping rooms and what I configured is at least levels above 90% in my ducobox focus with a separate ventilation channel in every room.

I have the old communication print and have an integration working but not flawless. (lots of "unavailable "items)
What are the main differences that prevents the code that you provided will not work in my installation?

I also use the old communication print for the Duco Energy Comfort D325. I don’t have unavailble issues. I don’t use an integration, only ‘rest’ and ‘rest.command’. Wich integration do you use?

Hi everyone,

I recently reverse-engineered the Ducobox API on the Ducobox Connectivity Board and started a Python implementation. This will serve as the foundation for a Home Assistant integration, initially through a HACS or MQTT add-on.

You can find the Python client here: ducopy on GitHub. The easiest way to get started is by installing it via pip:

pip install ducopy

Once installed, you can retrieve most data from the Ducobox as if you’re an installer, including a variety of sensor data. For instance, on my Ducobox Energy Comfort D325, running ducopy get-info https://ducobox_ip gives the following internal info:

image

The Ducobox appears capable of connecting to an MQTT broker, although I haven’t tested this feature yet. I’m considering two routes for Home Assistant integration: creating a HACS add-on or experimenting with the MQTT functionality. I’ll probably end up testing both.

Also notable is that the Ducobox Connectivity Board seems to have some form of “phone home” functionality, frequently sending data back to the main Ducobox server, which is hosted in Azure. While I haven’t intercepted the exact data yet—it’s encrypted—it might be possible to inspect it later. Interestingly, the config allows for overriding the phone home server address, which could make this inspection possible down the line.

IMPORTANT SECURITY NOTE: The Ducobox Connectivity Board has notable cybersecurity risks. If you’re using this board, I highly recommend firewalling or segmenting its access to prevent unauthorized access. While ducopy itself doesn’t support such actions, a malicious actor could potentially use similar code to overwrite your Ducobox firmware or cause other issues.

2 Likes

I am happy that someone else is on the same page on trying to create a basic client for python. I was actually creating one for both the communication board and the communication and print board aka GitHub - stuartp44/pyduco. But it seems you beat me too it. I will try and add the ability for your client to communicate with the old and new board. I was naturally going to start working on the Home Assistant plugin shortly aswell, maybe worth teaming up @Sikerdebaard and doing this together?

1 Like

Yes, absolutely! I’m happy to either merge the code for the old board or integrate your library for it into the HACS integration.

I plan to release an initial version of the HACS integration this weekend and will update this thread once it’s live.

Today, I also installed a CO2 and RH sensor. I’ll be adding functionality to ducopy to read CO2 PPM and humidity (RH and temperature) data. I currently have a basic HACS plugin that reads temperature data from all four points of the heat exchange unit using the Ducobox connectivity board.

Here’s a preview:

Second media post due to new user limitations

Have you started work on the plugin? If so have you got the repo, maybe I can help accelerate the work?

You can find the repository for the custom component here: hacs-ducobox-connector.

To install, simply copy the ducobox-connectivity-board folder into the custom_components directory of your Home Assistant setup. Alternatively, you can launch a local development container with make start. Once installed, look for the Ducobox integration, which will prompt you to enter the URL of your Ducobox connectivity board (e.g., https://<local LAN IP>, such as https://192.168.4.1).

Currently, the custom component supports read-only functionality. I’ll work on write capabilities and this should be available in the coming days.

If you have existing zeroconf/mDNS code for auto-discovering the Ducobox, it would be incredibly helpful to integrate that into this library. :blush:

1 Like

I have actually implemented this on my fork but I am confused as to the behavior of the plugin as it seems to creating entities for things that dont even exist on my box. I am currently debugging that at the moment.

Things I have managed to get working

  • mDNS
  • HACS Support