# Home Assistant Configuration
# Lovelace dashboards - mode: storage pozwala na UI dashboardy
# Lovelace dashboards - mode: storage pozwala na UI dashboardy
lovelace:
mode: storage
resources:
- url: /hacsfiles/sunsynk-power-flow-card/sunsynk-power-flow-card.js
type: module
dashboards:
lovelace-heating:
mode: yaml
title: Ogrzewanie
icon: mdi:fire
show_in_sidebar: true
filename: dashboards/heating_dashboard.yaml
lovelace-ibsystem:
mode: yaml
title: IBSystem
icon: mdi:heat-pump
show_in_sidebar: true
filename: dashboards/ibsystem_dashboard.yaml
lovelace-id35:
mode: yaml
title: ID35
icon: mdi:thermometer
show_in_sidebar: true
filename: dashboards/id35_dashboard.yaml
homeassistant:
name: Home
latitude: 50.0
longitude: 19.0
elevation: 200
unit_system: metric
time_zone: Europe/Warsaw
# Configure a default setup
default_config:
# Text to speech
tts:
- platform: google_translate
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
# Shell commands
shell_command:
set_heating_t1s: >
sshpass -p 'QWer1234' ssh -o StrictHostKeyChecking=no wk@192.168.50.243
"/ibsystem/ibls -a 127.0.0.1 --pretty -p 2001 -c 'set(rs.0.id.1.setting.t1s={{ value }};);'"
# Template sensors
template:
- sensor:
# Temperatura w salonie
- name: "Temperatura w salonie"
unique_id: temperatura_salonu_ibsystem
state: >
{% set raw = states('sensor.sterownik_4_rs0_id4_input_t_0_value') %}
{% if raw not in ['unknown', 'unavailable', ''] %}
{{ (raw | float(0) / 10) | round(1) }}
{% else %}
{{ states('sensor.temperatura_w_salonie') | float(23.3) }}
{% endif %}
unit_of_measurement: "°C"
device_class: temperature
state_class: measurement
# Różnica temperatury (docelowa - aktualna)
- name: "Różnica temperatury 2"
unique_id: roznica_temperatury_2
state: >
{% set current = states('sensor.temperatura_w_salonie') | float(22) %}
{% set target = states('input_number.heating_target_temp') | float(22) %}
{{ (target - current) | round(1) }}
unit_of_measurement: "°C"
state_class: measurement
# Moc aktualna pompy (instantaneous)
- name: "Moc pompy aktualna"
unique_id: moc_pompy_aktualna
state: >
{% set current = states('sensor.sterownik_1_rs0_id1_outdoor_unit_current') | float(0) %}
{% set voltage = states('sensor.sterownik_1_rs0_id1_outdoor_unit_voltage') | float(230) %}
{{ ((current * voltage) / 1000) | round(2) }}
unit_of_measurement: "kW"
device_class: power
state_class: measurement
# COP chwilowy (instantaneous COP)
- name: "COP aktualny"
unique_id: cop_aktualny_pompy
state: >
{% set power_in = states('sensor.moc_pompy_aktualna') | float(0) %}
{% set freq = states('sensor.sterownik_1_rs0_id1_operating_frequency') | int(0) %}
{% set t1 = states('sensor.sterownik_1_rs0_id1_t1') | float(0) %}
{% set t4 = states('sensor.sterownik_1_rs0_id1_t4') | float(0) %}
{% if power_in > 0.1 and freq > 0 %}
{# Przybliżona moc cieplna: power_in * estymowany COP #}
{# COP zależy od różnicy temp: im większa różnica, tym niższy COP #}
{% set delta_t = t1 - t4 %}
{% set estimated_cop = 5.0 - (delta_t * 0.05) %}
{% set estimated_cop = [estimated_cop, 2.0] | max %}
{% set estimated_cop = [estimated_cop, 6.0] | min %}
{{ estimated_cop | round(2) }}
{% else %}
0
{% endif %}
state_class: measurement
# SCOP (seasonal COP - z liczników)
- name: "SCOP pompy"
unique_id: scop_pompy_sezonowy
state: >
{% set consumed = states('sensor.sterownik_1_rs0_id1_electricity_consumption_lo') | float(1) %}
{% set produced = states('sensor.sterownik_1_rs0_id1_power_output_lo') | float(0) %}
{% if consumed > 0 %}
{{ (produced / consumed) | round(2) }}
{% else %}
0
{% endif %}
state_class: measurement
# Licznik defrostów
- name: "Defrost aktywny"
unique_id: defrost_status
state: >
{% set load = states('sensor.sterownik_1_rs0_id1_load_output') | int(0) %}
{% set defrost_bit = (load // 32768) % 2 %}
{{ 'ON' if defrost_bit == 1 else 'OFF' }}
- binary_sensor:
# Binary sensor defrost
- name: "Pompa defrost"
unique_id: pompa_defrost_binary
state: >
{{ states('sensor.defrost_aktywny') == 'ON' }}
device_class: running
# Input number dla celu temperatury
input_number:
heating_target_temp:
name: Docelowa temperatura
initial: 22
min: 18
max: 25
step: 0.5
unit_of_measurement: "°C"
icon: mdi:thermometer
# Counter dla liczenia defrostów
counter:
defrost_count:
name: Liczba defrostów
icon: mdi:snowflake-melt
initial: 0
step: 1
utility_meter:
energia_pobrana_dzienna:
source: sensor.sterownik_1_rs0_id1_electricity_consumption_lo
name: Energia pobrana (dzienna)
cycle: daily
energia_pobrana_tygodniowa:
source: sensor.sterownik_1_rs0_id1_electricity_consumption_lo
name: Energia pobrana (tygodniowa)
cycle: weekly
energia_pobrana_miesieczna:
source: sensor.sterownik_1_rs0_id1_electricity_consumption_lo
name: Energia pobrana (miesięczna)
cycle: monthly
energia_oddana_dzienna:
source: sensor.sterownik_1_rs0_id1_power_output_lo
name: Energia oddana (dzienna)
cycle: daily
energia_oddana_tygodniowa:
source: sensor.sterownik_1_rs0_id1_power_output_lo
name: Energia oddana (tygodniowa)
cycle: weekly
energia_oddana_miesieczna:
source: sensor.sterownik_1_rs0_id1_power_output_lo
name: Energia oddana (miesięczna)
cycle: monthly
set_heating_curve: >
sshpass -p 'QWer1234' ssh -o StrictHostKeyChecking=no wk@192.168.50.243
"/ibsystem/ibls -a 127.0.0.1 -p 2001 -c 'set(rs.0.id.1.curve.selection={{ curve }};);' 2>/dev/null"