Kotoma Kotoma skrev:
Hi, I have been taking little time and make it like this base on yours, but recycle didn't work for me.
[bild]

type: grid
cards:
- type: gauge
entity: sensor.ftx_current_heat_cold_recovery_power
min: 0
max: 100
name: Återvinningsgrad
severity:
green: 75
yellow: 50
red: 0
needle: true
- type: horizontal-stack
cards:
- type: button
tap_action:
action: call-service
service: switch.toggle
target:
entity_id: switch.ftx_over_pressure
entity: binary_sensor.ftx_ventilation_overpressure
name: Övertryck
icon: mdi:fireplace
show_state: true
- type: button
tap_action:
action: call-service
service: switch.toggle
target:
entity_id: switch.ftx_force
entity: binary_sensor.ftx_ventilation_boost
name: Forcera
icon: mdi:fan-chevron-up
show_state: true
- type: button
tap_action:
action: call-service
service: switch.toggle
service_data: {}
target:
entity_id: switch.ftx_away_mode
entity: binary_sensor.ftx_ventilation_away
icon: mdi:bag-checked
name: Borta
show_state: true
columns: 1
square: false

#Second colunm

type: grid
cards:
- type: entities
entities:
- entity: sensor.ftx_current_supply_fan_power
icon: mdi:fan
name: Tilluft
card_mod:
style:
hui-generic-entity-row:
$:
state-badge:
$:
ha-state-icon:
$:
ha-icon:
$: |
{% set speed = states(config.entity) | float%}
{% set anim = 2*(1.0-(speed / 100.0)) %}
ha-svg-icon {
animation: {{ anim }}s linear fanrot infinite;
}
@keyframes fanrot {
from { transform: rotate(0deg); }
to { transform: rotate(359deg); }
}
- entity: sensor.ftx_current_exhaust_fan_power
icon: mdi:fan
name: Frånluft
card_mod:
style:
hui-generic-entity-row:
$:
state-badge:
$:
ha-state-icon:
$:
ha-icon:
$: |
{% set speed = states(config.entity) | float%}
{% set anim = 2*(1.0-(speed / 100.0)) %}
ha-svg-icon {
animation: {{ anim }}s linear fanrot infinite;
}
@keyframes fanrot {
from { transform: rotate(0deg); }
to { transform: rotate(359deg); }
}
title: Fläktar
- type: entities
entities:
- entity: sensor.ftx_supply_air_temperature
name: Tilluft
- entity: sensor.ftx_extract_air_temperature
name: Frånluft
- entity: sensor.ftx_outdoor_temperature
name: Uteluft
- entity: sensor.ftx_exhaust_air_temperature
name: Avluft
title: Temperaturer
- type: thermostat
entity: climate.heru_ftx_klimat
square: false
columns: 2


In addiction to that this is all I found in my Heru ...

Skärmdump av användargränssnitt för smart hem-kontroll av HERU 100-enhet med olika sensorvärden och inställningar.
Inloggade ser högupplösta bilder
Skapa konto
Gratis och tar endast 30 sekunder


type: grid
square: false
columns: 1
cards:
- type: entities
entities:
- switch.ftx_away_mode
- sensor.ftx_current_exhaust_fan_power
- sensor.ftx_current_heating_power
- sensor.ftx_current_heat_cold_recovery_power
- sensor.ftx_current_supply_fan_power
- sensor.ftx_exhaust_air_temperature
- sensor.ftx_extract_air_temperature
- sensor.ftx_filter_days_left
- switch.ftx_force
- binary_sensor.ftx_heating
- sensor.ftx_heat_recovery_temperature
- sensor.ftx_outdoor_temperature
- switch.ftx_over_pressure
- sensor.ftx_supply_air_temperature
- sensor.ftx_temperature_setpoint
- binary_sensor.ftx_ventilation_away
- binary_sensor.ftx_ventilation_boost
- binary_sensor.ftx_ventilation_overpressure
- type: thermostat
entity: climate.heru_ftx_klimat
 
S spuun skrev:
Formeln för verkningsgradsberäkning är följande: (Rotortemp.-Utetemp.) / (Frånlufttemp.-Utetemp.)
Det är vad jag fick av supporten.
I couldn't fix that (ftx_recycle) so I cuchon them an this is what I end up, it since to work without...

modbus:
- name: ftx
host: 192.168.0.16
type: tcp
port: 502

climates:
- name: Heru FTX Klimat
slave: 1
data_type: int
data_count: 1
scale: 1
offset: 0
precision: 1
max_temp: 22
min_temp: 15
temp_step: 1
input_type: input
target_temp_register: 1
address: 2

binary_sensors:
- name: ftx_heating
slave: 1
address: 29
device_class: heat
input_type: discrete_input
- name: Ventilation On
slave: 1
address: 0
device_class: power
- name: ftx_ventilation_overpressure
slave: 1
address: 1
device_class: plug
- name: ftx_ventilation_boost
slave: 1
address: 2
device_class: plug
- name: ftx_ventilation_away
slave: 1
address: 3
device_class: plug


sensors:
- name: ftx_outdoor_temperature
unit_of_measurement: °C
address: 1
slave: 1
input_type: input
device_class: temperature

- name: ftx_supply_air_temperature
unit_of_measurement: °C
address: 2
slave: 1
input_type: input
device_class: temperature

- name: ftx_extract_air_temperature
unit_of_measurement: °C
address: 3
slave: 1
input_type: input
device_class: temperature

- name: ftx_exhaust_air_temperature
unit_of_measurement: °C
address: 4
slave: 1
input_type: input
device_class: temperature

- name: ftx_heat_recovery_temperature
unit_of_measurement: °C
address: 6
slave: 1
input_type: input
device_class: temperature

- name: ftx_filter_days_left
address: 19
slave: 1
input_type: input

- name: ftx_current_supply_fan_power
unit_of_measurement: '%'
device_class: power_factor
address: 24
slave: 1
input_type: input

- name: ftx_current_exhaust_fan_power
unit_of_measurement: '%'
device_class: power_factor
address: 25
slave: 1
input_type: input

- name: ftx_current_heat_cold_recovery_power
unit_of_measurement: '%'
scale: 0.3921568627
address: 29
slave: 1
input_type: input

- name: ftx_current_heating_power
address: 28
slave: 1
input_type: input

- name: ftx_temperature_setpoint
unit_of_measurement: °C
address: 1
slave: 1
input_type: holding
device_class: temperature

switches:
- name: ftx_force
slave: 1
address: 2
- name: ftx_over_pressure
slave: 1
address: 1
- name: ftx_away_mode
slave: 1
address: 3


# - platform: template
# sensors:
# ftx_recycle:
# device_class: temperature
# unit_of_measurement: '%'
# value_template: >-
# {% set supply = states('sensor.supply') | int %}
# {% set outdoor = states('sensor.outdoor') | int %}
# {% set extract = states('sensor.extract') | int %}
# {{ ((supply - outdoor)/(extract - outdoor) * 100.0) | round }}
 
Note that the calculated recycle value won't be the same as in the qi control. This is because values are only given as integer via modbus, so there are rounding errors.
 
S spuun skrev:
Note that the calculated recycle value won't be the same as in the qi control. This is because values are only given as integer via modbus, so there are rounding errors.
Thankyou spuun!
now I got Recycle working but still there is an error like this under...
(duplicated mapping key at line 194, column -467:
sensor:
^ )
Skärmdump av gränssnitt som visar temperaturer inklusive "Recycle" vid 72 procent i ett smart hem-system.
Inloggade ser högupplösta bilder
Skapa konto
Gratis och tar endast 30 sekunder


modbus:
- name: ftx
host: 192.168.0.16
type: tcp
port: 502

climates:
- name: Heru FTX Klimat
slave: 1
data_type: int
data_count: 1
scale: 1
offset: 0
precision: 1
max_temp: 22
min_temp: 15
temp_step: 1
input_type: input
target_temp_register: 1
address: 2

binary_sensors:
- name: ftx_heating
slave: 1
address: 29
device_class: heat
input_type: discrete_input
- name: Ventilation On
slave: 1
address: 0
device_class: power
- name: ftx_ventilation_overpressure
slave: 1
address: 1
device_class: plug
- name: ftx_ventilation_boost
slave: 1
address: 2
device_class: plug
- name: ftx_ventilation_away
slave: 1
address: 3
device_class: plug


sensors:
- name: ftx_outdoor_temperature
unit_of_measurement: °C
address: 1
slave: 1
input_type: input
device_class: temperature

- name: ftx_supply_air_temperature
unit_of_measurement: °C
address: 2
slave: 1
input_type: input
device_class: temperature

- name: ftx_extract_air_temperature
unit_of_measurement: °C
address: 3
slave: 1
input_type: input
device_class: temperature

- name: ftx_exhaust_air_temperature
unit_of_measurement: °C
address: 4
slave: 1
input_type: input
device_class: temperature

- name: ftx_heat_recovery_temperature
unit_of_measurement: °C
address: 6
slave: 1
input_type: input
device_class: temperature

- name: ftx_filter_days_left
address: 19
slave: 1
input_type: input

- name: ftx_current_supply_fan_power
unit_of_measurement: '%'
device_class: power_factor
address: 24
slave: 1
input_type: input

- name: ftx_current_exhaust_fan_power
unit_of_measurement: '%'
device_class: power_factor
address: 25
slave: 1
input_type: input

- name: ftx_current_heat_cold_recovery_power
unit_of_measurement: '%'
scale: 0.3921568627
address: 29
slave: 1
input_type: input

- name: ftx_current_heating_power
address: 28
slave: 1
input_type: input

- name: ftx_temperature_setpoint
unit_of_measurement: °C
address: 1
slave: 1
input_type: holding
device_class: temperature

switches:
- name: ftx_force
slave: 1
address: 2
- name: ftx_over_pressure
slave: 1
address: 1
- name: ftx_away_mode
slave: 1
address: 3

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 %}
{{ ((rotor - outdoor)/(extract - outdoor) * 100.0) | round }}
 
Hard to see without indentation, but in my configuration.yaml heru related configuration looks like https://gist.github.com/spuun/0eda4204aac9955b4fed9fedd66c3db7

As you can see I have the modbus part in it's own yaml file.

Could it be that you have more sensor: entries in your file? If so, you should combine them to one (i guess).
 
S spuun skrev:
Hard to see without indentation, but in my configuration.yaml heru related configuration looks like [länk]

As you can see I have the modbus part in it's own yaml file.

Could it be that you have more sensor: entries in your file? If so, you should combine them to one (i guess).
Hi spuun,
I really happy that it works like it is now, but I will tray to make it as yours on it's own *.yaml
Thanks again!
 
S spuun skrev:
Hur har det gått för dig? Jag har nyss fått en Heru 100 installerad och är intresserad av att få in grejer i HA.

Har inte ens kikat på agreggatet än, men har de alla stöd för tcp/ip? Bara jacka upp den på sitt nätverk? Såg att man kunde slå på tcp/ip för modbus i servicemenyn i fjärren.

Edit: nu har jag öppnat och hittat ett rj45!
Jag håller på med samma projekt nu.

En lite naiv fråga, men går det att hämta informationen via den RJ45 jag redan har inkopplad för att få tillgång till appen eller måste jag dra upp en ny sladd för att koppla i den andra RJ45:an?
 
N nosslo77 skrev:
Jag håller på med samma projekt nu.

En lite naiv fråga, men går det att hämta informationen via den RJ45 jag redan har inkopplad för att få tillgång till appen eller måste jag dra upp en ny sladd för att koppla i den andra RJ45:an?
I have it like you can see in post ... #39
https://www.byggahus.se/forum/threads/heru-100-home-assistant.388262/page-3#post-4563158

look up the pictures, I connect the network a meter cable RJ45 to the Heru 100s and the other end to D-Link AC1300 Wi-fi Range Extender so you can reach the router. In the Heru 100s control remote set it to Static IP address 192.168.0.16 (in my case.)
Go to your Router and Open port 502 and assign static IP 192.168.0.16 (in my case.)
Reboot your Heru 100s and the router. (in my case.)

In your Home Assistant configuration.yaml add and save this in next answer...
 
N nosslo77 skrev:
Jag håller på med samma projekt nu.

En lite naiv fråga, men går det att hämta informationen via den RJ45 jag redan har inkopplad för att få tillgång till appen eller måste jag dra upp en ny sladd för att koppla i den andra RJ45:an?
Add this in your configuration.yaml (I have change it a little bit but I run HA in other computer)


modbus:
- name: ftx
host: 192.168.0.16
type: tcp
port: 502

climates:
- name: Heru FTX Klimat
slave: 1
data_type: int
data_count: 1
scale: 1
offset: 0
precision: 1
max_temp: 22
min_temp: 15
temp_step: 1
input_type: input
target_temp_register: 1
address: 2

binary_sensors:
- name: ftx_heating
slave: 1
address: 29
device_class: heat
input_type: discrete_input
- name: Ventilation On
slave: 1
address: 0
device_class: power
- name: ftx_ventilation_overpressure
slave: 1
address: 1
device_class: plug
- name: ftx_ventilation_boost
slave: 1
address: 2
device_class: plug
- name: ftx_ventilation_away
slave: 1
address: 3
device_class: plug


sensors:
- name: ftx_outdoor_temperature
unit_of_measurement: °C
address: 1
slave: 1
input_type: input
device_class: temperature

- name: ftx_supply_air_temperature
unit_of_measurement: °C
address: 2
slave: 1
input_type: input
device_class: temperature

- name: ftx_extract_air_temperature
unit_of_measurement: °C
address: 3
slave: 1
input_type: input
device_class: temperature

- name: ftx_exhaust_air_temperature
unit_of_measurement: °C
address: 4
slave: 1
input_type: input
device_class: temperature

- name: ftx_heat_recovery_temperature
unit_of_measurement: °C
address: 6
slave: 1
input_type: input
device_class: temperature

- name: ftx_filter_days_left
address: 19
slave: 1
input_type: input

- name: ftx_current_supply_fan_power
unit_of_measurement: '%'
device_class: power_factor
address: 24
slave: 1
input_type: input

- name: ftx_current_exhaust_fan_power
unit_of_measurement: '%'
device_class: power_factor
address: 25
slave: 1
input_type: input

- name: ftx_current_heat_cold_recovery_power
unit_of_measurement: '%'
scale: 0.3921568627
address: 29
slave: 1
input_type: input

- name: ftx_current_heating_power
address: 28
slave: 1
input_type: input

- name: ftx_temperature_setpoint
unit_of_measurement: °C
address: 1
slave: 1
input_type: holding
device_class: temperature

switches:
- name: ftx_force
slave: 1
address: 2
- name: ftx_over_pressure
slave: 1
address: 1
- name: ftx_away_mode
slave: 1
address: 3

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 %}
{{ ((rotor - outdoor)/(extract - outdoor) * 100.0) | round }}
 
Kotoma Kotoma skrev:
Add this in your configuration.yaml (I have change it a little bit but I run HA in other computer)


modbus:
- name: ftx
host: 192.168.0.16
type: tcp
port: 502

climates:
- name: Heru FTX Klimat
slave: 1
data_type: int
data_count: 1
scale: 1
offset: 0
precision: 1
max_temp: 22
min_temp: 15
temp_step: 1
input_type: input
target_temp_register: 1
address: 2

binary_sensors:
- name: ftx_heating
slave: 1
address: 29
device_class: heat
input_type: discrete_input
- name: Ventilation On
slave: 1
address: 0
device_class: power
- name: ftx_ventilation_overpressure
slave: 1
address: 1
device_class: plug
- name: ftx_ventilation_boost
slave: 1
address: 2
device_class: plug
- name: ftx_ventilation_away
slave: 1
address: 3
device_class: plug


sensors:
- name: ftx_outdoor_temperature
unit_of_measurement: °C
address: 1
slave: 1
input_type: input
device_class: temperature

- name: ftx_supply_air_temperature
unit_of_measurement: °C
address: 2
slave: 1
input_type: input
device_class: temperature

- name: ftx_extract_air_temperature
unit_of_measurement: °C
address: 3
slave: 1
input_type: input
device_class: temperature

- name: ftx_exhaust_air_temperature
unit_of_measurement: °C
address: 4
slave: 1
input_type: input
device_class: temperature

- name: ftx_heat_recovery_temperature
unit_of_measurement: °C
address: 6
slave: 1
input_type: input
device_class: temperature

- name: ftx_filter_days_left
address: 19
slave: 1
input_type: input

- name: ftx_current_supply_fan_power
unit_of_measurement: '%'
device_class: power_factor
address: 24
slave: 1
input_type: input

- name: ftx_current_exhaust_fan_power
unit_of_measurement: '%'
device_class: power_factor
address: 25
slave: 1
input_type: input

- name: ftx_current_heat_cold_recovery_power
unit_of_measurement: '%'
scale: 0.3921568627
address: 29
slave: 1
input_type: input

- name: ftx_current_heating_power
address: 28
slave: 1
input_type: input

- name: ftx_temperature_setpoint
unit_of_measurement: °C
address: 1
slave: 1
input_type: holding
device_class: temperature

switches:
- name: ftx_force
slave: 1
address: 2
- name: ftx_over_pressure
slave: 1
address: 1
- name: ftx_away_mode
slave: 1
address: 3

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 %}
{{ ((rotor - outdoor)/(extract - outdoor) * 100.0) | round }}

Just did that and it worked perfectly. I tried it once before and gave up. I missed the fact that I had to activate MODBUS in the service menu. Now I have some automation to do. =)

Thanks everyone for the great job in reverse engineering this.
 
  • Gilla
Kotoma
  • Laddar…
I've improved the HA modbus configuration once more (after new learnings) https://gist.github.com/spuun/b024ed273e074dd2b975c2ed0a4fa987

I discovered "packages" which makes it possible to group different type of devices in one file. To use it, add
homeassistant:
packages: !include_dir_merge_named packages
in your configuration.yaml

Then create folder named packages and put the heru100.yaml (gist link) in that folder.

Most important change is the verify: added to all switches. Now it's possible to simplify the card with overpressue, boost and away mode buttons. One can just add the switch.ftx_overpressure as a normal entity and use the default action. It will update state on click.

Another change is the scan_interval: I've added to a few places in the config.
 
S spuun skrev:
I've improved the HA modbus configuration once more (after new learnings) [länk]

I discovered "packages" which makes it possible to group different type of devices in one file. To use it, add

in your configuration.yaml

Then create folder named packages and put the heru100.yaml (gist link) in that folder.

Most important change is the verify: added to all switches. Now it's possible to simplify the card with overpressue, boost and away mode buttons. One can just add the switch.ftx_overpressure as a normal entity and use the default action. It will update state on click.

Another change is the scan_interval: I've added to a few places in the config.
Great!
Thankyou very much, I will take a look when I have the chance.
It is really good to keep this alive and at the same time integrate more and more people.
Thankyou.
 
Sorry om jag lånar tråden lite..

Har en ny IQ control till min heru 100 men har problem med att para ihop enheten med aggregatet.

Läste nånstans om att man sätter aggregatet i parningsläge med någon knapp men hittar ej denna, någon som har lust o visa/förklara?
 
S Stabbsson skrev:
Sorry om jag lånar tråden lite..

Har en ny IQ control till min heru 100 men har problem med att para ihop enheten med aggregatet.

Läste nånstans om att man sätter aggregatet i parningsläge med någon knapp men hittar ej denna, någon som har lust o visa/förklara?
Hi,
I don't know where you do have your agregate, wall thickness, etc. Try move it closer.
 
Vi vill skicka notiser för ämnen du bevakar och händelser som berör dig.