The boxinfoget command cannot be accessed within 10sec of triggering the rest. Not sure why.
So you need to set different timeouts per rest command for that one to work. I didn’t need that data.
The boxinfoget command cannot be accessed within 10sec of triggering the rest. Not sure why.
So you need to set different timeouts per rest command for that one to work. I didn’t need that data.
ok thanks
I’ll figure out how to set different timeouts
not sure on how other pulled power though?
The Power value is not present for the WtW systems (type D), only in the MV systems (type C).
I’m trying to connect my new Duco system the same way as described here. But it looks like I have to use different url’s. Like this: https://192.168.1.129/info/nodes/1
Did someone here have the same issue? I have a new Ducobox Energy Comfort with Communication print. Webpage is working, but I can’t find the right url’s/calls.
The result of this url https://192.168.1.129/nodeinfoget?node=1 is {“Code”:10,“Result”:“FAILED”}
Have you tried http:// ? Mine isn’t accessible through https://
SW VERSION: 16036.11.1.0 is shown on mine at bottom of home page.
Can’t find the SW version but the public api version is 2.0.
http is not working, I have to use https. I can get the with value templates like this: {{ value_json.Ventilation.FlowLvlTgt.Val }} with the resource url /info/nodes/1 for example.
Now I have to find out how to POST any data. According to the scripts files it have to be something like /action/nodes/1, but don’t know yet how add the parameters to this.
Requested it at Duco.
All you need for post. Can you share your code?
Also I have the leveling of IAQ percentages:
IAQ Index
100% - >80% - Excellent
80% - >60% - Good
60% - >40% - Temporary acceptable
<40% - Bad
The API changed with the new Connectivity Board and strategic approach of Duco.
This is what I have now:
# Duco
input_select:
ducobox_mode:
name: DucoBox stand
icon: mdi:target
options:
- "AUTO"
- "CNT1"
- "CNT2"
- "CNT3"
- "MAN1"
- "MAN2"
- "MAN3"
rest:
- resource: https://192.168.1.129/info/nodes/1
scan_interval: 15
verify_ssl: false
sensor:
- name: DucoBox
unique_id: ducobox
value_template: "{{ value_json.Ventilation.State.Val }}"
icon: mdi:fan
json_attributes:
- ventilation
- mode
- name: DucoBox Ventilatie
unique_id: ducobox_target
value_template: "{{ value_json.Ventilation.FlowLvlTgt.Val }}"
state_class: measurement
unit_of_measurement: "%"
- name: DucoBox Relatieve Vochtigheid
unique_id: ducobox_humidity
value_template: "{{ value_json.Sensor.IaqRh.Val }}"
device_class: humidity
state_class: measurement
unit_of_measurement: "%"
rest_command:
ducobox_mode_auto:
url: "https://192.168.1.129/nodesetoperstate?node=1&value=AUTO"
ducobox_mode_cnt1:
url: "https://192.168.1.129/nodesetoperstate?node=1&value=CNT1"
ducobox_mode_cnt2:
url: "https://192.168.1.129/nodesetoperstate?node=1&value=CNT2"
ducobox_mode_cnt3:
url: "https://192.168.1.129/nodesetoperstate?node=1&value=CNT3"
ducobox_mode_man1:
# url: "https://192.168.1.129/nodesetoperstate?node=1&value=MAN1"
url: "https://192.168.1.129/action/nodes/1?Enum=MAN1"
ducobox_mode_man2:
url: "https://192.168.1.129/nodesetoperstate?node=1&Enum=MAN2"
ducobox_mode_man3:
url: "https://192.168.1.129/nodesetoperstate?node=1&value=MAN3"
Should it be more like this?
ducobox_mode_man3:
# url: "https://192.168.1.129/nodesetoperstate?node=1&value=MAN3"
url: "https://192.168.1.129/action/nodes/1"
method: POST
payload: '{"Action":"SetVentilationState","Val":"MAN3"}'
verify_ssl: false
Thanks! First one is working!
Awesome! Looking forward to the code. Saves me and the community loads of time.
Hmm, any idea why they came with a new model of the Communication Print which is now the Connectivity Board? One of the advantages I see is that the new Board has Wifi and Ethernet built in, the older Communication Print was Ethernet only.
Might be more powerful. But I don’t know except for the wifi. I do know that I waited for it since I learned about the new board…
I’m about to do a big renovation next year, also going to install mechanical ventilation. Currently considering the Ducobox Energy Premium (2 zone system). For most of the DIY Duco integrations into HA I see that people are able to set the fan mode (auto, manual etc).
I’m really curious whether you guys are also able to control the zone valve. I’ve read about some smart automations that have motion detection in the toilet and turn the fan to 100% after a visit However if the zone valve is set to the other zone at that moment it doesn’t make much sense.
Controlling the zone valve would also allow for non-Duco sensors to be integrated. The Duco sensors are like 200€ apiece, and it get’s expensive very quickly when you want to add a sensor to kitchen, living room, bathroom and all bedrooms.
Hope you guys keep posting the progress
Controlling the zone valve would also allow for non-Duco sensors to be integrated. The Duco sensors are like 200€ apiece, and it get’s expensive very quickly when you want to add a sensor to kitchen, living room, bathroom and all bedrooms.
I think I just found a (somewhat) cheaper solution. Duco sells these RF switchboxes for 120€. They can be configured to a zone, and by closing a contact on the switchbox the system will ventilate that zone. You would need 1 per zone, and just close the contact with a shelly. Then you can use your own sensors and link them to the shelly via HA.
anyone knows how to do that? i.e. setting different timeouts per rest command?
as apparently boxinfoget command cannot be accessed within 10sec of triggering the rest
I was able to set different timeouts to get the boxinfo data as well. Very convenient to see how much bypass is open and when filter change is due, can even get an alarm on HA for it.
platform: template
fans:
ducobox:
unique_id: "ducobox_ventilatie_control"
friendly_name: "Ducobox"
value_template: >
{% if states('sensor.ducobox') != 'AUTO' %}
on
{% else %}
off
{% endif %}
turn_on:
- service: rest_command.ducobox_mode_change
data:
nodeId: "1"
state: MAN3
turn_off:
- service: rest_command.ducobox_mode_change
data:
nodeId: "1"
state: AUTO
preset_modes:
- "Auto"
- "Permanent manual 1"
- "Permanent manual 2"
- "Permanent manual 3"
- "Manual 1"
- "Manual 2"
- "Manual 3"
preset_mode_template: >
{% if states('sensor.ducobox') == "CNT1" %}
Permanent manual 1
{% elif states('sensor.ducobox') == "CNT2" %}
Permanent manual 2
{% elif states('sensor.ducobox') == "CNT3" %}
Permanent manual 3
{% elif states('sensor.ducobox') == "MAN1" %}
Manual 1
{% elif states('sensor.ducobox') == "MAN2" %}
Manual 2
{% elif states('sensor.ducobox') == "MAN3" %}
Manual 3
{% else %}
Auto
{% endif %}
set_preset_mode:
- service: rest_command.ducobox_mode_change
data:
nodeId: "1"
state: >
{% if preset_mode == "Permanent manual 1" %}
CNT1
{% elif preset_mode == "Permanent manual 2" %}
CNT2
{% elif preset_mode == "Permanent manual 3" %}
CNT3
{% elif preset_mode == "Manual 1" %}
MAN1
{% elif preset_mode == "Manual 2" %}
MAN2
{% elif preset_mode == "Manual 3" %}
MAN3
{% else %}
AUTO
{% endif %}
And a template fan…. Way better then drop downs and automations…
Example rest command:
ducobox_mode_change:
url: https://[[address]/action/nodes/{{ nodeId }}
method: POST
headers:
accept: "application/json"
content_type: "application/json"
payload: '{"Action":"SetVentilationState","Val":"{{ state }}"}'
verify_ssl: false
Created for the new print, but you should get the hang of it…
And for the new print you can read all the nodes at once… strongly advised.
resource: https://[address]/info/nodes
scan_interval: 2
verify_ssl: false
sensor:
- unique_id: ducobox_node1_state
name: Ducobox - Status
value_template: "{{ value_json['Nodes'][0]['Ventilation']['State']['Val'] }}"
- unique_id: ducobox_node2_state
name: Ventilatie berging - status
value_template: "{{ value_json['Nodes'][1]['Ventilation']['State']['Val'] }}"
- unique_id: ducobox_node3_state
name: Ventilatie woonkamer - status
value_template: "{{ value_json['Nodes'][2]['Ventilation']['State']['Val'] }}"
- unique_id: ducobox_node4_state
name: Ventilatie slaapkamer - status
value_template: "{{ value_json['Nodes'][3]['Ventilation']['State']['Val'] }}"
- unique_id: ducobox_node5_state
name: Ventilatie technische ruimte - status
value_template: "{{ value_json['Nodes'][4]['Ventilation']['State']['Val'] }}"
- unique_id: ducobox_node6_state
name: Ventilatie keuken - status
value_template: "{{ value_json['Nodes'][5]['Ventilation']['State']['Val'] }}"
- unique_id: ducobox_node7_state
name: Ventilatie kantoor - status
value_template: "{{ value_json['Nodes'][6]['Ventilation']['State']['Val'] }}"
- unique_id: ducobox_node8_state
name: Ventilatie toilet - status
value_template: "{{ value_json['Nodes'][7]['Ventilation']['State']['Val'] }}"
- unique_id: ducobox_node9_state
name: Ventilatie logeerkamer - status
value_template: "{{ value_json['Nodes'][8]['Ventilation']['State']['Val'] }}"
- unique_id: ducobox_node10_state
name: Ventilatie badkamer - status
value_template: "{{ value_json['Nodes'][9]['Ventilation']['State']['Val'] }}"
- unique_id: ducobox_node2_iaq
name: Ventilatie berging - IAQ
value_template: "{{ value_json['Nodes'][1]['Sensor']['IaqRh']['Val'] }}"
device_class: aqi
unit_of_measurement: "%"
- unique_id: ducobox_node3_iaq
name: Ventilatie woonkamer - IAQ
value_template: "{{ value_json['Nodes'][2]['Sensor']['IaqCo2']['Val'] }}"
device_class: aqi
unit_of_measurement: "%"
- unique_id: ducobox_node4_iaq
name: Ventilatie slaapkamer - IAQ
value_template: "{{ value_json['Nodes'][3]['Sensor']['IaqCo2']['Val'] }}"
device_class: aqi
unit_of_measurement: "%"
- unique_id: ducobox_node5_iaq
name: Ventilatie technische ruimte - IAQ
value_template: "{{ value_json['Nodes'][4]['Sensor']['IaqRh']['Val'] }}"
device_class: aqi
unit_of_measurement: "%"
- unique_id: ducobox_node6_iaq
name: Ventilatie keuken - IAQ
value_template: "{{ value_json['Nodes'][5]['Sensor']['IaqCo2']['Val'] }}"
device_class: aqi
unit_of_measurement: "%"
- unique_id: ducobox_node7_iaq
name: Ventilatie kantoor - IAQ
value_template: "{{ value_json['Nodes'][6]['Sensor']['IaqCo2']['Val'] }}"
device_class: aqi
unit_of_measurement: "%"
- unique_id: ducobox_node8_iaq
name: Ventilatie toilet - IAQ
value_template: "{{ value_json['Nodes'][7]['Sensor']['IaqCo2']['Val'] }}"
device_class: aqi
unit_of_measurement: "%"
- unique_id: ducobox_node9_iaq
name: Ventilatie logeerkamer - IAQ
value_template: "{{ value_json['Nodes'][8]['Sensor']['IaqCo2']['Val'] }}"
device_class: aqi
unit_of_measurement: "%"
- unique_id: ducobox_node10_iaq
name: Ventilatie badkamer - IAQ
value_template: "{{ value_json['Nodes'][9]['Sensor']['IaqRh']['Val'] }}"
device_class: aqi
unit_of_measurement: "%"
- unique_id: ducobox_node1_FlowLvlTgt
name: Ducobox - Flow Level Target
value_template: "{{ value_json['Nodes'][0]['Ventilation']['FlowLvlTgt']['Val'] }}"
unit_of_measurement: "%"
- unique_id: ducobox_node2_FlowLvlTgt
name: Ventilatie berging - Flow Level Target
value_template: "{{ value_json['Nodes'][1]['Ventilation']['FlowLvlTgt']['Val'] }}"
unit_of_measurement: "%"
- unique_id: ducobox_node3_FlowLvlTgt
name: Ventilatie woonkamer - Flow Level Target
value_template: "{{ value_json['Nodes'][2]['Ventilation']['FlowLvlTgt']['Val'] }}"
unit_of_measurement: "%"
- unique_id: ducobox_node4_FlowLvlTgt
name: Ventilatie slaapkamer - Flow Level Target
value_template: "{{ value_json['Nodes'][3]['Ventilation']['FlowLvlTgt']['Val'] }}"
unit_of_measurement: "%"
- unique_id: ducobox_node5_FlowLvlTgt
name: Ventilatie technische ruimte - Flow Level Target
value_template: "{{ value_json['Nodes'][4]['Ventilation']['FlowLvlTgt']['Val'] }}"
unit_of_measurement: "%"
- unique_id: ducobox_node6_FlowLvlTgt
name: Ventilatie keuken - Flow Level Target
value_template: "{{ value_json['Nodes'][5]['Ventilation']['FlowLvlTgt']['Val'] }}"
unit_of_measurement: "%"
- unique_id: ducobox_node7_FlowLvlTgt
name: Ventilatie kantoor - Flow Level Target
value_template: "{{ value_json['Nodes'][6]['Ventilation']['FlowLvlTgt']['Val'] }}"
unit_of_measurement: "%"
- unique_id: ducobox_node8_FlowLvlTgt
name: Ventilatie toilet - Flow Level Target
value_template: "{{ value_json['Nodes'][7]['Ventilation']['FlowLvlTgt']['Val'] }}"
unit_of_measurement: "%"
- unique_id: ducobox_node9_FlowLvlTgt
name: Ventilatie logeerkamer - Flow Level Target
value_template: "{{ value_json['Nodes'][8]['Ventilation']['FlowLvlTgt']['Val'] }}"
unit_of_measurement: "%"
- unique_id: ducobox_node10_FlowLvlTgt
name: Ventilatie badkamer - Flow Level Target
value_template: "{{ value_json['Nodes'][9]['Ventilation']['FlowLvlTgt']['Val'] }}"
unit_of_measurement: "%"
- unique_id: ducobox_node1_TimeStateRemain
name: Ducobox - tijd status resterend
value_template: "{{ value_json['Nodes'][0]['Ventilation']['TimeStateRemain']['Val'] }}"
- unique_id: ducobox_node2_TimeStateRemain
name: Ventilatie berging - tijd status resterend
value_template: "{{ value_json['Nodes'][1]['Ventilation']['TimeStateRemain']['Val'] }}"
- unique_id: ducobox_node3_TimeStateRemain
name: Ventilatie woonkamer - tijd status resterend
value_template: "{{ value_json['Nodes'][2]['Ventilation']['TimeStateRemain']['Val'] }}"
- unique_id: ducobox_node4_TimeStateRemain
name: Ventilatie slaapkamer - tijd status resterend
value_template: "{{ value_json['Nodes'][3]['Ventilation']['TimeStateRemain']['Val'] }}"
- unique_id: ducobox_node5_TimeStateRemain
name: Ventilatie technische ruimte - tijd status resterend
value_template: "{{ value_json['Nodes'][4]['Ventilation']['TimeStateRemain']['Val'] }}"
- unique_id: ducobox_node6_TimeStateRemain
name: Ventilatie keuken - tijd status resterend
value_template: "{{ value_json['Nodes'][5]['Ventilation']['TimeStateRemain']['Val'] }}"
- unique_id: ducobox_node7_TimeStateRemain
name: Ventilatie kantoor - tijd status resterend
value_template: "{{ value_json['Nodes'][6]['Ventilation']['TimeStateRemain']['Val'] }}"
- unique_id: ducobox_node8_TimeStateRemain
name: Ventilatie toilet - tijd status resterend
value_template: "{{ value_json['Nodes'][7]['Ventilation']['TimeStateRemain']['Val'] }}"
- unique_id: ducobox_node9_TimeStateRemain
name: Ventilatie logeerkamer - tijd status resterend
value_template: "{{ value_json['Nodes'][8]['Ventilation']['TimeStateRemain']['Val'] }}"
- unique_id: ducobox_node10_TimeStateRemain
name: Ventilatie badkamer - tijd status resterend
value_template: "{{ value_json['Nodes'][9]['Ventilation']['TimeStateRemain']['Val'] }}"
- unique_id: ducobox_node1_TimeStateEnd
name: Ducobox - tijd status eind
value_template: "{{ value_json['Nodes'][0]['Ventilation']['TimeStateEnd']['Val'] }}"
- unique_id: ducobox_node2_TimeStateEnd
name: Ventilatie berging - tijd status eind
value_template: "{{ value_json['Nodes'][1]['Ventilation']['TimeStateEnd']['Val'] }}"
- unique_id: ducobox_node3_TimeStateEnd
name: Ventilatie woonkamer - tijd status eind
value_template: "{{ value_json['Nodes'][2]['Ventilation']['TimeStateEnd']['Val'] }}"
- unique_id: ducobox_node4_TimeStateEnd
name: Ventilatie slaapkamer - tijd status eind
value_template: "{{ value_json['Nodes'][3]['Ventilation']['TimeStateEnd']['Val'] }}"
- unique_id: ducobox_node5_TimeStateEnd
name: Ventilatie technische ruimte - tijd status eind
value_template: "{{ value_json['Nodes'][4]['Ventilation']['TimeStateEnd']['Val'] }}"
- unique_id: ducobox_node6_TimeStateEnd
name: Ventilatie keuken - tijd status eind
value_template: "{{ value_json['Nodes'][5]['Ventilation']['TimeStateEnd']['Val'] }}"
- unique_id: ducobox_node7_TimeStateEnd
name: Ventilatie kantoor - tijd status eind
value_template: "{{ value_json['Nodes'][6]['Ventilation']['TimeStateEnd']['Val'] }}"
- unique_id: ducobox_node8_TimeStateEnd
name: Ventilatie toilet - tijd status eind
value_template: "{{ value_json['Nodes'][7]['Ventilation']['TimeStateEnd']['Val'] }}"
- unique_id: ducobox_node9_TimeStateEnd
name: Ventilatie logeerkamer - tijd status eind
value_template: "{{ value_json['Nodes'][8]['Ventilation']['TimeStateEnd']['Val'] }}"
- unique_id: ducobox_node10_TimeStateEnd
name: Ventilatie badkamer - tijd status eind
value_template: "{{ value_json['Nodes'][9]['Ventilation']['TimeStateEnd']['Val'] }}"
Thanks for this. Would you mind sharing your Duco related config file for the new API’s entirely? Still figuring out templates and rest services in HA…