Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
########################################### # ====================== # GLOBAL/MULTI-MODE SENSORS # ====================== # ====================== # GLOBAL - Altherma Global - ULTIMATE SYSTEM COP # ====================== # DOEL: # De meest accurate systeem-efficiëntie berekening mogelijk voor Daikin Altherma 3. # Berekent de werkelijke "System COP" (wat je betaalt vs. wat je krijgt). # # METHODE (v2.5.x): # In plaats van te schatten hoeveel warmte de BUH toevoegt, meten we dit nu fysiek. # • Thermische Output: Gemeten via sensor NA de backup heater. # • Elektrische Input: Som van Compressor + Backup Heater. # # FORMULE: # COP = (Flow × 0.0696 × ΔT_System) ÷ (Elektrisch_Comp + Elektrisch_BUH) # * ΔT_System = (Temp NA BUH - Retour Temp) # # FEATURES: # 1. Hybrid Measurement: Meet correct of de warmte van de compressor, de BUH, of beide komt. # 2. 12kW Tuning: Ondersteunt flow rates tot 60 L/min (standaard sensoren kappen af op 25). # 3. Partial Load Capture: Ondersteunt CoP tot 8.0 voor mild weer/deellast. # 4. Defrost Detectie: Zet CoP op 0.0 tijdens ontdooien (geen nuttige warmte). # 5. Directe Feedback: Geeft direct inzicht in impact van BUH op rendement. # 6. Volledige Attributen: Behoudt alle dashboard-data (Volt, Amp, Flow, Modus, etc.). # # TYPISCHE WAARDEN (12kW Model): # • Compressor only: CoP 3.5 - 6.0 # • Hybrid (Comp + BUH): CoP 2.0 - 3.0 (Tijdens SWW of extreme kou) # • Defrost: CoP 0.0 # # VERSION HISTORY: # v2.5.3 - FIX: Power calculation consistency - use direct power sensor instead of calculated # v2.5.2 - Added Performance Guidelines to calculation note # v2.5.1 - Restored all original attributes with updated logic # v2.5.0 - ULTIMATE: Overstap naar fysieke meting NA BUH (geen schattingen meer) # v2.4.0 - System Efficiency: BUH elektrisch meegerekend in input # v2.3.3 - Toegevoegd: Equipment Model informatie in attributen # v2.3.2 - Fix: Scope errors in attributen opgelost # v2.3.1 - Fix: Flow limiet verhoogd naar 60 L/min voor 12kW unit # v2.3.0 - Toegevoegd: Outdoor temperatuur context # v2.2.0 - Toegevoegd: BUH detectie en power stability check # v2.0.0 - Major rewrite met universele ΔT validatie # ====================== template: - sensor: name: "Altherma Global - COP" unique_id: "altherma_global_cop" unit_of_measurement: "COP" state_class: "measurement" device_class: "power_factor" state: >- {% set flow = state_attr('sensor.althermasensors', 'Flow sensor (l/min)') | float(0) %} {% set temp_out = states('sensor.espaltherma_leaving_after_buh') | float(0) %} {% set temp_in = state_attr('sensor.althermasensors', 'Inlet water temp.(R4T)') | float(0) %} {% set comp_power_w = states('sensor.warmtepomp_power') | float(0) %} {% set comp_power_kw = comp_power_w / 1000 %} {% set buh_power_w = states('sensor.weerstand_power') | float(0) %} {% set buh_power_kw = buh_power_w / 1000 %} {% set total_elec_kw = comp_power_kw + buh_power_kw %} {% set defrost = is_state('sensor.daikin_defrost_operation', 'ON') %} {% set power_stable = comp_power_w > 50 and comp_power_w < 8000 %} {% set valid_flow = flow > 5 and flow < 65 %} {% set valid_temps = temp_out > 10 and temp_out < 70 and temp_in > 5 and temp_in < 65 %} {% set delta_t = (temp_out - temp_in) | abs %} {% set total_thermal_kw = flow * 0.0696 * delta_t %} {% if not defrost and total_elec_kw > 0.05 and valid_flow and valid_temps and power_stable %} {% set cop = total_thermal_kw / total_elec_kw %} {% if cop <= 20.0 %} {{ cop | round(3) }} {% else %} 0.0 {% endif %} {% else %} 0.0 {% endif %} attributes: operation_mode: >- {% set temp_out = states('sensor.espaltherma_leaving_after_buh') | float(0) %} {% set temp_in = state_attr('sensor.althermasensors', 'Inlet water temp.(R4T)') | float(0) %} {% set delta_t = temp_out - temp_in %} {% set defrost_active = is_state('sensor.daikin_defrost_operation', 'ON') %} {% set buh_active = is_state('binary_sensor.daikin_backup_heater', 'on') or states('sensor.weerstand_power') | float(0) > 100 %} {% if defrost_active %} Defrost Active {% elif buh_active and delta_t > 1.0 %} Heating (Hybrid/BUH) {% elif delta_t > 1.0 %} Heating {% elif delta_t < -1.0 %} Cooling {% else %} Standby (ΔT: {{ delta_t | round(1) }}°C) {% endif %} flow_rate: >- {% set val = state_attr('sensor.althermasensors', 'Flow sensor (l/min)') | float(0) %} {% if val > 5 and val < 65 %} {{ val | round(1) }} L/min {% else %} Invalid ({{ val | round(1) }}) {% endif %} leaving_temp: >- {{ states('sensor.espaltherma_leaving_after_buh') | float(0) | round(1) }} °C (After BUH) inlet_temp: >- {{ state_attr('sensor.althermasensors', 'Inlet water temp.(R4T)') | float(0) | round(1) }} °C delta_t: >- {% set temp_out = states('sensor.espaltherma_leaving_after_buh') | float(0) %} {% set temp_in = state_attr('sensor.althermasensors', 'Inlet water temp.(R4T)') | float(0) %} {{ (temp_out - temp_in) | abs | round(1) }} °C thermal_power: >- {% set flow = state_attr('sensor.althermasensors', 'Flow sensor (l/min)') | float(0) %} {% set temp_out = states('sensor.espaltherma_leaving_after_buh') | float(0) %} {% set temp_in = state_attr('sensor.althermasensors', 'Inlet water temp.(R4T)') | float(0) %} {% set delta_t = (temp_out - temp_in) | abs %} {{ (flow * 0.0696 * delta_t) | round(2) }} kW electrical_input: >- {% set comp_kw = states('sensor.warmtepomp_power') | float(0) / 1000 %} {% set buh_kw = states('sensor.weerstand_power') | float(0) / 1000 %} {{ (comp_kw + buh_kw) | round(2) }} kW (Comp + BUH) current: "{{ states('sensor.warmtepomp_current') }} A" voltage: "{{ states('sensor.warmtepomp_voltage') }} V" power_factor: "{{ states('sensor.warmtepomp_power_factor') | default('0.92') }}" warmtepomp_power: "{{ states('sensor.warmtepomp_power') | float(0) | round(1) }} W" freeze_protection: "{{ state_attr('sensor.althermasensors', 'Freeze Protection') | default('Unknown') }}" defrost_operation: "{{ states('sensor.daikin_defrost_operation') | default('Unknown') }}" backup_heater_active: >- {{ is_state('binary_sensor.daikin_backup_heater', 'on') or states('sensor.weerstand_power') | float(0) > 100 }} buh_power: "{{ states('sensor.weerstand_power') | default('0') }} W" power_stable: >- {{ states('sensor.warmtepomp_power') | float(0) > 50 and states('sensor.warmtepomp_power') | float(0) < 8000 }} outdoor_temperature: "{{ states('sensor.bt_carport_temperature') | default('Unknown') }} °C" performance_context: >- {% set flow = state_attr('sensor.althermasensors', 'Flow sensor (l/min)') | float(0) %} {% set temp_out = states('sensor.espaltherma_leaving_after_buh') | float(0) %} {% set temp_in = state_attr('sensor.althermasensors', 'Inlet water temp.(R4T)') | float(0) %} {% set delta_t = (temp_out - temp_in) | abs %} {% set therm = flow * 0.0696 * delta_t %} {% set elec = (states('sensor.warmtepomp_power')|float / 1000) + (states('sensor.weerstand_power')|float / 1000) %} {% if elec > 0.05 and flow > 5 %} {% set real_cop = therm / elec %} {% if real_cop == 0 %}Standby {% elif real_cop < 2.5 %}Low Efficiency (Check BUH/Weather) {% elif real_cop < 4.0 %}Good {% else %}Excellent {% endif %} {% else %} Standby {% endif %} calculation_active: >- {% set flow = state_attr('sensor.althermasensors', 'Flow sensor (l/min)') | float(0) %} {% set power = states('sensor.warmtepomp_power') | float(0) %} {{ flow > 5 and power > 50 }} data_quality: >- {% set flow = state_attr('sensor.althermasensors', 'Flow sensor (l/min)') | float(0) %} {% set temp = states('sensor.espaltherma_leaving_after_buh') | float(0) %} {% if flow > 5 and flow < 65 and temp > 10 and temp < 70 %}Good{% else %}Poor/Idle{% endif %} cop_calculation_note: "Guidelines (Heating LWT 35°C): • Excellent: > 5.0 (Mild +12°C) • Good: 4.0 - 5.0 (Nominal +7°C) • Normal: 3.0 - 4.0 (Cold +2°C) • Fair: 2.2 - 3.0 (Freeze -7°C) • Poor: < 2.2 (BUH Active or Issue)" system_info: "ETVX12S23EJ6V + EPRA12EAV3, 12 kW (2023)" version: "2.5.3" availability: >- {{ states('sensor.althermasensors') not in ['unavailable', 'unknown', 'none'] and states('sensor.espaltherma_leaving_after_buh') not in ['unavailable', 'unknown', 'none'] and states('sensor.warmtepomp_power') not in ['unavailable', 'unknown', 'none'] }}
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)