Skip to content

Home Assistant HRU350 integration

balk77 edited this page Oct 1, 2023 · 7 revisions

Objective

  1. Show information on the HRU-350 in Home Assistant
  2. Be able to control the HRU-350 from Home Assistant

Addon configuration

MQTT set up

The below configuration assumes that the MQTT parameters for the add-on have the 'ithohru' prefix.
Change itho/state to ithohru/state and repeat this for all other entries.

Configure the virtual remote

Configure the virtual remote (requires 2.4.0+ firmware) to match the one you have.

Home Assistant

Configuration.yaml

This can be used as a reference. The directory structure avoids cluttering up the configuration.yaml

Add the following in the Home Assistant configuration.yaml

mqtt: 
  sensor: !include_dir_merge_list includes/mqtt/sensors/
  fan: !include_dir_merge_list includes/mqtt/fan/
  binary_sensor: !include_dir_merge_list includes/mqtt/binary_sensors/

Create the following directories from the directory where configuration.yaml sits, this is typically /usr/share/hassio/homeassistant:

includes .
includes/mqtt .
includes/mqtt/sensors .
includes/mqtt/fan .
includes/mqtt/binary_sensors .

Create includes/mqtt/fan/fan_hru350.yaml

 - name: "Itho HRU 350 "
   unique_id: "Itho_hru_Fan"
   device:
     identifiers: "mv"
     name: "Itho Box"
     manufacturer: "Itho Daalderop"
     model: "Itho HRU 350"
     # ip adres van de wifi add-on
     configuration_url: "http://192.168.4.37"
   state_topic: "ithohru/lwt"
   state_value_template: "{% if value == 'online' %}ON{% else %}OFF{% endif %}" 
   command_topic: "ithohru/cmd"
   preset_mode_state_topic: "ithohru/ithostatus"
   preset_mode_command_template: "{ vremote: '{{ value }}'}"
   preset_mode_value_template: >
        {% set am = value_json['Actual Mode'] | int %}
          {% if am == 1 %}
            low
          {% elif am == 2 %}
            medium 
          {% elif am == 3 %}
            high
          {% elif am == 13 %}
             timer
          {% elif am == 24 %}
            auto
          {% elif am == 25 %}
            autonight
          {% else %}
            {{ am }}
          {% endif %}
   preset_mode_command_topic: "ithohru/cmd"
   preset_modes:
       - "low"
       - "medium"
       - "high"
       - "auto"
       - "autonight"
       - "timer1"
       - "timer2"
       - "timer3"
       - "timer"

Create includes/mqtt/binary_sensors/hru_350.yaml

 - name: "Itho Bypass"
   state_topic: "ithohru/ithostatus"
   value_template: "{{ value_json['Bypass position']  }}"
   unique_id: "itho_bypass_status"
   device_class: opening     
   payload_on: "1"
   payload_off: "0"
   icon: mdi:valve
   device:
     identifiers: "mv"

Create includes/mqtt/sensors/hru_350.yaml

  - name: Itho HRU Actual Supply Fan
    state_topic: "ithohru/ithostatus"
    value_template: "{{ value_json['Supply fan (RPM)'] }}"
    unit_of_measurement: "rpm"
    unique_id: "itho_hru_actual_supply"
    state_class: measurement
    device:
      identifiers: "mv"

  - name: Itho HRU Actual Exhaust Fan
    state_topic: "ithohru/ithostatus"
    value_template: "{{ value_json['Exhaust fan (RPM)'] }}"
    unit_of_measurement: "rpm"
    unique_id: "itho_hru_actual_exhaust"
    state_class: measurement
    device:
      identifiers: "mv"

  - name: Itho HRU Actual mode
    state_topic: "ithohru/ithostatus"
    value_template: >
       {% set am = value_json['Actual Mode'] | int %}
       {% if am == 1 %}
             low
           {% elif am == 2 %}
             medium 
           {% elif am == 3 %}
             high
          {% elif am == 25 %}
            autonight
           {% elif am == 24 %}
             auto
           {% else %}
             {{ am }}
           {% endif %}
    unique_id: itho_hru_mode
    device:
      identifiers: "mv"
  - name: Itho HRU Supply temp
    state_topic: "ithohru/ithostatus"
    value_template: "{{ value_json['Supply temp (°C)'] }}"
    unit_of_measurement: "°C"
    unique_id: "itho_hru_supply_temp"
    state_class: measurement
    device:
      identifiers: "mv"
  - name: Itho HRU Exhaust temp
    state_topic: "ithohru/ithostatus"
    value_template: "{{ value_json['Exhaust temp (°C)'] }}"
    unit_of_measurement: "°C"
    unique_id: "itho_hru_exhaust_temp"
    state_class: measurement
    device:
      identifiers: "mv"

If you have remotes with built-in CO2 sensors, you can use this: Create includes/mqtt/sensors/CO2.yaml

  - name: Itho Beneden CO2
    state_topic: "ithohru/remotesinfo"
    value_template: "{{ value_json.beneden.co2 }}"
    device_class: "carbon_dioxide"
    unit_of_measurement: "ppm"
    unique_id: "itho_beneden_co2"
    device:
      identifiers: "mv"

  - name: Itho Boven Co2
    state_topic: "ithohru/remotesinfo"
    value_template: "{{ value_json.boven.co2 }}"
    unit_of_measurement: "ppm"
    device_class: "carbon_dioxide"
    unique_id: "itho_boven_co2"
    device:
      identifiers: "mv"

Replace 'beneden' and 'boven' to match the name you gave in the Add-on remote configuration

Home Assistant step

You can add the following entities to the dashboard in Home Assistant (through Edit Dashboard for instance).

sensor.itho_hru_actual_exhaust_fan
sensor.itho_hru_actual_supply_fan
fan.itho_hru_350
sensor.sensor.itho_hru_actual_mode
binary_sensor.itho_bypass
sensor.itho_hru_exhaust_temp
sensor.itho_hru_supply_temp
sensor.itho_beneden_co2
sensor.itho_boven_co2

The latter two only exist if you have the CO2 configured.

Controlling the fan

To control to fan there are multiple ways:

  • Via automation where you can use one of the presets (e.g. auto, high, low)
  • Manually via the UX. Add the Fan to the UX so it appears on a dashboard. Click on the fan and select a new value from the dropdown with presets