BjornHero schreef op dinsdag 29 november 2022 @ 00:27:
[...]
@
Doezel @
Devil @
paQ @
tolunaygul12 en alle andere COP-berekenaars;
Allereerst; ik vind het prachtig dat jullie zo handig zijn met homeassistant, esphome etc, daar kan en moet ik echt nog veel van leren!
Ik spreek mij niet graag uit wanneer ik mij niet helemaal zeker ben, maar volgens mij ontstaat er momenteel een "glitch in de matrix", gevoed met fancy plaatjes waarvan we het allemaal warm krijgen
"Jullie" (ik generaliseer even) COP berekening, en dan vooral het gemiddelde kent een aantal flaws volgens mij (correct me if im wrong)
Mijn commentaar op de geposte "instant" cop hierboven;
[code=yaml] - platform: template
sensors:
tweede_methode_cop:
value_template: >
{% if states('sensor.kwh_meter_3c39e72df1c2_active_power')|float(0) < 100 %}
Dit zorgt ervoor dat het onttrekken van warmte aan de woning NIET wordt gezien als de pomp bijv. even draait om de watertemp te meten (negatieve COP)
{% set cop = 0.0 | float %}
{% else %}
{% set t1 = states('sensor.water_uit') | float %}
{% set t2 = states('sensor.water_in') | float %}
{% set f = states('sensor.flow') | float %}
{% set pw = states('sensor.kwh_meter_3c39e72df1c2_active_power') | float %}
{% set pwg = ((t1 - t2)*f) / 60 * 4184 | float %}
{% set cop = pwg / pw | float %}
{% endif %}
{% if cop > 10.0 %}
{% set cop = 0.0 | float %}
{% endif %}
{% if cop < 0.0 %}
Deze is nog mooier; die voorkomt dat een negatieve COP (denk aan defrosts) wordt meegeteld.
{% set cop = 0.0 | float %}
{% endif %}
{% if cop > 0.0 %}
{{ cop | float | round(1) }}
{% else %}
{% endif %}
unit_of_measurement: cop2
Zo zou ik mijn COP ook graag berekenen
Deel2: Mijn commentaar op de gemiddelde COP (zoals ik denk dat jullie hem (veelal) berekenen
Er wordt een "instant cop" berekend, zeg 100* in een uur, daarna nemen jullie het gemiddelde van die 100 waardes en stellen "dat is de COP" van het afgelopen uur.
In principe klopt dit, indien de WP maar 1 afgiftecapaciteit kent.
Maar dat is niet het geval, het afgiftevermogen (en ook opgenomen vermogen) en de verhouding daartussen varieert.
En eigenlijk willen wij weten "hoeveel vermogen heb ik het afgelopen uur opgenomen", "hoeveel is er afgegeven" en wat is de verhouding hiertussen (COP).
Om het "probleem" zichtbaar te maken hier een kleine tabel:
[Afbeelding]
Natuurlijk zijn de waardes (extreem?) uit het verband getrokken maar dit laat het mooi zien.
ok... leuk Bjorn, maar hoe doe jij het dan?
Alert: ben niet zo handig met HA
"mijn" instantcop (ja, die kan ook negatief zijn wanneer ik energie aan de woning onttrek!)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| - platform: template
sensors:
cop:
value_template: >
{% if states('binary_sensor.lghp_water_pump_status') == "off" %}
{% set cop = 0.0 | float %}
{% else %}
{% set t1 = states('sensor.lghp_water_outlet_temp') | float %}
{% set t2 = states('sensor.lghp_water_inlet_temp') | float %}
{% set f = states('sensor.lghp_current_flow_rate') | float %}
{% set pw = states('sensor.lgwp_power') | float %}
{% set pwg = ((t1 - t2)*f) / 60 * 4184 | float %}
{% set cop = pwg / pw | float %}
{% endif %}
{% if cop > 10.0 %}
{% set cop = 0.0 | float %}
{% endif %}
{{ cop | float | round(2) }}
unit_of_measurement: cop |
dan mijn COP van de afgelopen 1 - 12 -24H
Let op: omslachtig(niet zo HA-handig)
Stap 1:
-maak een sensor die het afgiftevermogen berekent (dit geeft een vermogen in KW op DIT moment)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| - platform: template
sensors:
lghp_thermal_power:
value_template: >
{% if states('binary_sensor.lghp_water_pump_status') == "off" %}
{% set lghp_thermal_power = 0.0 | float %}
{% else %}
{% set t1 = states('sensor.lghp_water_outlet_temp') | float %}
{% set t2 = states('sensor.lghp_water_inlet_temp') | float %}
{% set f = states('sensor.lghp_current_flow_rate') | float %}
{% set pwg = ((t1 - t2)*f) / 60 * 4184 | float %}
{% set lghp_thermal_power = pwg / 1000 | float %}
{% endif %}
{{ lghp_thermal_power | float | round(2) }}
unit_of_measurement: kW |
Stap 2: bereken HOEVEEL energie er in totaal wordt opgwekt (kw
H)
Dit doe ik met een Helper-- Riemann integral SUM
[Afbeelding]
Stap 3:
Vervolgens gebruik ik deze afgegeven energy meting om te kijken hoeveel energy er de laatste 1-12-24H zijn afgegeven (hier voorbeeld 24H)
--> Hieruit volgt een "rollende som" van het afgegeven vermogen de afgelopen 24H
code:
1
2
3
4
5
6
7
| - platform: statistics
name: LGHP_Thermal_energy_last24H
entity_id: sensor.lghp_thermal_energy
state_characteristic: change
max_age:
hours: 24
sampling_size: 3500 # Sampling Size = 24 * 60 * 60 / <sensor update interval in seconds> |
Stap 4:
Het opgenomen vermogen over de laatste 1-12-24H bereken ik op basis van de "energy" sensor van mijn powermeter (shelly EM in mijn geval) (hier voorbeeld 24H)
--> Hieruit volgt een "rollende som" van het opgenomen vermogen de afgelopen 24H
code:
1
2
3
4
5
6
7
| - platform: statistics
name: LGHP_electrical_energy_consumption_last24H
entity_id: sensor.lgwp_energy
state_characteristic: change
max_age:
hours: 24
sampling_size: 3500 # Sampling Size = 24 * 60 * 60 / <sensor update interval in seconds> |
Stap 5:
Ik deel beide waarden door elkaar.
code:
1
2
3
4
5
6
7
8
9
| - platform: template
sensors:
cop24h:
value_template: >-
{% set pw = states('sensor.LGHP_electrical_energy_consumption_last24H') | float %}
{% set pwt = states('sensor.LGHP_Thermal_energy_last24H') | float %}
{% set cop24h = pwt / pw | float %}
{{ cop24h | float | round(2) }}
unit_of_measurement: cop |
ook hier krijg ik geen perfect gladde lijn, maar die is er in de realiteit ook niet.
Daarnaast zijn er nog een paar "sampling" moeilijkheden die dit ook vermijden.
"mijn 24H COP" (was nog niet volledig met thermal data gevuld waardoor hij iets lager uitvalt, nog geen "volle 24H thermal")
--> ieder puntje geeft de COP waarde over de laatste 24H weer
[Afbeelding]
To do:
-"code strakker maken" (HELP HELP!)
-Verfancifyen (ik wil dagelijkse bar-charts + een wekelijkse, maandelijkse, jaarlijkse COP) (HELP HELP!

)
-Actief gaan sturen zoals sommigen van jullie al doen (opstartpiek verminderen, energystates actief gaan toepassen om (eventueel) stroomoverschot in de woning te duwen...)
Correct me if im wrong...