Skip to content

Instantly share code, notes, and snippets.

@christian-nils
Created January 4, 2023 23:44
Show Gist options
  • Select an option

  • Save christian-nils/fdd08a83b9ea0ddd83ef3d5b4125e398 to your computer and use it in GitHub Desktop.

Select an option

Save christian-nils/fdd08a83b9ea0ddd83ef3d5b4125e398 to your computer and use it in GitHub Desktop.
My Heru 100S home assistant configuration
modbus:
- name: ftx
host: !secret heru100_ip
type: tcp
port: !secret heru100_port
binary_sensors:
- name: ftx_startup_phase1
slave: 1
address: 27
input_type: discrete_input
- name: ftx_startup_phase2
slave: 1
address: 28
input_type: discrete_input
- name: ftx_power_mode
scan_interval: 5
slave: 0
address: 1
- name: ftx_overpressure_mode
scan_interval: 5
slave: 1
address: 1
- name: ftx_boost_mode
input_type: coil
scan_interval: 5
slave: 1
address: 2
- name: ftx_away_mode
scan_interval: 5
slave: 1
address: 3
sensors:
- name: ftx_outdoor_temperature
unit_of_measurement: °C
scale: 0.1
precision: 1
address: 1
slave: 1
input_type: input
device_class: temperature
- name: ftx_supply_air_temperature
unit_of_measurement: °C
scale: 0.1
precision: 1
address: 2
slave: 1
input_type: input
device_class: temperature
- name: ftx_extract_air_temperature
unit_of_measurement: °C
scale: 0.1
precision: 1
address: 3
slave: 1
input_type: input
device_class: temperature
- name: ftx_exhaust_air_temperature
unit_of_measurement: °C
scale: 0.1
precision: 1
address: 4
slave: 1
input_type: input
device_class: temperature
- name: ftx_heat_recovery_temperature
unit_of_measurement: °C
scale: 0.1
precision: 1
address: 6
slave: 1
input_type: input
device_class: temperature
- name: ftx_filter_days_left
address: 19
slave: 1
input_type: input
data_type: int16
- name: ftx_current_supply_fan_power
unit_of_measurement: '%'
device_class: power_factor
address: 24
slave: 1
input_type: input
data_type: int16
- name: ftx_current_exhaust_fan_power
unit_of_measurement: '%'
device_class: power_factor
address: 25
slave: 1
input_type: input
data_type: int16
- name: ftx_current_heat_cold_recovery_power
unit_of_measurement: '%'
scale: 0.3921568627
precision: 1
address: 29
slave: 1
input_type: input
data_type: int16
- name: ftx_current_heater_power
unit_of_measurement: '%'
scale: 0.3921568627
precision: 1
address: 28
slave: 1
input_type: input
data_type: int16
- name: ftx_supply_pressure
unit_of_measurement: Pa
address: 11
slave: 1
input_type: input
data_type: int16
- name: ftx_extract_pressure
unit_of_measurement: Pa
address: 12
slave: 1
input_type: input
data_type: int16
- name: ftx_temperature_setpoint
unit_of_measurement: °C
address: 1
slave: 1
input_type: holding
device_class: temperature
data_type: int16
switches:
- name: ftx_power
slave: 1
address: 0
write_type: coil
scan_interval: 5
verify:
- name: ftx_boost
slave: 1
address: 2
write_type: coil
scan_interval: 5
verify:
- name: ftx_overpressure
slave: 1
address: 1
write_type: coil
scan_interval: 5
verify:
- name: ftx_away
slave: 1
address: 3
write_type: coil
scan_interval: 5
verify:
- name: ftx_heater_enabled
slave: 1
address: 66
write_type: holding
scan_interval: 5
verify:
sensor:
- platform: template
sensors:
ftx_recycle:
device_class: temperature
unit_of_measurement: '%'
value_template: >-
{% set rotor = states('sensor.ftx_heat_recovery_temperature') | int %}
{% set outdoor = states('sensor.ftx_outdoor_temperature') | int %}
{% set extract = states('sensor.ftx_extract_air_temperature') | int %}
{% set val = ((rotor - outdoor)/(extract - outdoor) * 100.0) | round %}
{% if val < 0 %}
0
{% else %}
{{ val }}
{% endif %}
switch:
- platform: template
switches:
ftx_power_state:
turn_on:
service: homeassistant.turn_on
target:
entity_id: switch.ftx_power
turn_off:
service: homeassistant.turn_off
target:
entity_id: switch.ftx_power
value_template: '{{ states("switch.ftx_power") }}'
icon_template: >
{% if is_state("binary_sensor.ftx_startup_phase2", "on") %}
mdi:fan-speed-2
{% elif is_state("binary_sensor.ftx_startup_phase1", "on") %}
mdi:fan-speed-1
{% else %}
{{ is_state("switch.ftx_power", "on") | iif("mdi:fan", "mdi:fan-off") }}
{% endif %}
climate:
- platform: climate_template
name: FTX Climate
modes:
- auto
min_temp: 15
max_temp: 22
current_temperature_template: '{{ states("sensor.ftx_supply_air_temperature") }}'
target_temperature_template: '{{ states("sensor.ftx_temperature_setpoint") }}'
set_temperature:
- service: modbus.write_register
data:
slave: 1
hub: ftx
value: "{{ temperature }}"
address: 1
temp_step: 1
precision: 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment