diff --git a/ha-configs/151/configuration.yaml b/ha-configs/151/configuration.yaml index b435820..72c86f3 100644 --- a/ha-configs/151/configuration.yaml +++ b/ha-configs/151/configuration.yaml @@ -101,28 +101,53 @@ device_class: power state_class: measurement - # COP chwilowy (instantaneous COP) + # COP kalorymetryczny (pomiar rzeczywisty z TW_in/TW_out i przepływu) + # Sevra Split 8kW: nominalny przepływ 1370 L/h, rejestr water_flow ~62 → 1 unit ≈ 22.1 L/h + # Formuła: Q_ciepło = flow_lh × 1.163 × (TW_out - TW_in) COP = Q / P_el - name: "COP aktualny" unique_id: cop_aktualny_pompy state: > - {% set power_in = states('sensor.moc_pompy_aktualna') | float(0) %} - {% set freq = states('sensor.ibsystem_rs0_id1_rs0_id1_operating_frequency') | int(0) %} - {% set t1 = states('sensor.ibsystem_rs0_id1_rs0_id1_t1') | float(0) %} - {% set t4 = states('sensor.ibsystem_rs0_id1_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) }} + {% set tw_out = states('sensor.ibsystem_rs0_id1_rs0_id1_tw_out') | float(0) %} + {% set tw_in = states('sensor.ibsystem_rs0_id1_rs0_id1_tw_in') | float(0) %} + {% set flow = states('sensor.ibsystem_rs0_id1_rs0_id1_water_flow') | float(0) %} + {% set cur = states('sensor.ibsystem_rs0_id1_rs0_id1_outdoor_unit_current') | float(0) %} + {% set volt = states('sensor.ibsystem_rs0_id1_rs0_id1_outdoor_unit_voltage') | float(230) %} + {% set freq = states('sensor.ibsystem_rs0_id1_rs0_id1_operating_frequency') | int(0) %} + {% set p_el = cur * volt %} + {% set delta_t = tw_out - tw_in %} + {% set flow_lh = flow * 22.1 %} + {% if p_el > 50 and freq > 5 and delta_t > 0.3 %} + {% set q_heat = flow_lh * 1.163 * delta_t %} + {{ (q_heat / p_el) | round(2) }} {% else %} 0 {% endif %} + unit_of_measurement: "" state_class: measurement - - # SCOP (seasonal COP - z liczników) + icon: mdi:heat-pump + + # Moc cieplna aktualna [W] - z kalorymetrii + - name: "Moc cieplna pompy" + unique_id: moc_cieplna_pompy + state: > + {% set tw_out = states('sensor.ibsystem_rs0_id1_rs0_id1_tw_out') | float(0) %} + {% set tw_in = states('sensor.ibsystem_rs0_id1_rs0_id1_tw_in') | float(0) %} + {% set flow = states('sensor.ibsystem_rs0_id1_rs0_id1_water_flow') | float(0) %} + {% set freq = states('sensor.ibsystem_rs0_id1_rs0_id1_operating_frequency') | int(0) %} + {% set delta_t = tw_out - tw_in %} + {% set flow_lh = flow * 22.1 %} + {% if freq > 5 and delta_t > 0.3 %} + {{ (flow_lh * 1.163 * delta_t) | round(0) | int }} + {% else %} + 0 + {% endif %} + unit_of_measurement: "W" + device_class: power + state_class: measurement + icon: mdi:heat-wave + + # SCOP sezonowy - UWAGA: power_output_lo to moc sprężarki, NIE ciepło! + # Rejestr NIE nadaje się do SCOP - zostawiamy tylko jako informację - name: "SCOP pompy" unique_id: scop_pompy_sezonowy state: > @@ -154,6 +179,16 @@ state_class: measurement icon: mdi:transmission-tower-export + # Grid power z odwróconym znakiem dla karty sunsynk (Deye: + = eksport, - = import) + - name: "Grid Power Sunsynk" + unique_id: grid_power_sunsynk + state: > + {% set grid = states("sensor.inverter_deye_grid_power") | float(0) %} + {{ (-grid) | round(0) | int }} + unit_of_measurement: "W" + device_class: power + state_class: measurement + # Pobór z sieci - aktualna moc pobierana z sieci - name: "Pobór z sieci" unique_id: pobor_z_sieci_moc