Beste medetweakers,
Her en der wel een en ander gevonden maar nooit echt een kant en klare oplossing dus als u mij toestaat hierbij een oplossing:
Situatie
(zonne)Boiler met ‘domme’ aan/uit heater 2000w aangestuurd middels Homeassistant.
Probleem
Wanneer teruglevering tussen 0-1999W is schakelt element niet in om electriciteit inname te voorkomen, met oog op de toekomst zonde. Deze energie kan de boiler in.
Oplossing
Electrisch element dimmen en aanstuurbaar maken met PID regelaar in HA, op basis van verschil in elektriciteit inname en teruglevering.
Boodschappenlijstje
Aanstuurbare vermogensregelaar (KEMO M240)
PWM/0-10V Zigbee/Zwave/Wifi Dimmer (ROBB SMARRT Zigbee 0-10V PWM Dimmer)
Zekering / Installatieautomaat 10A
Heatsink (oversized!)
Koelpasta
Montagemateriaal (gipsplaat, hout, schroeven, boutjes, moertjes, wago klemmen, lasdoosje, vlakstekkertjes, krimptang, opbouwstopcontact etc)
Bovenstaande in elkaar knutselen, let op dat de heatsink groot genoeg is en zijn warmte goed kwijt kan. Maximale temperatuur bij mij gemeten momenteel 45gr C na meerdere uren op 2000W.
Heatsink heb ik bevestigd aan de heatsink door er draad in te tappen met m3 boutjes vast te zetten. Uiteraard een rupsje koelpasta tussen de KEMO en de heatsink.
PID regelaar middels HomeAssistant
Benodigde helpers
Template sensor voor energie balans
Let op bij mij zitten er nog 2 thuisaccus in verwerkt zodat deze niet ontladen om de heater van prik te voorzien.
Code om de dimmer middels een slider aan te sturen, wel even de slider aanmaken middels een helper.
Met bovenstaande code kun je de PID regelaar finetunen in HA, dat finetunen is even wat werk maar daarna werkt het prima.
Code kan vast ook nog wat beter, werkt wel maar geeft af en toe een logentry in HA. Allang blij dat het werkt. Maar code-goeroes, hoor graag jullie verbeteringen.
Foto van mijn tijdelijke testsetup, naar eigen wens wat netter te maken natuurlijk. Hoor het graag als iemand een nette suggestie heeft hiervoor.
Her en der wel een en ander gevonden maar nooit echt een kant en klare oplossing dus als u mij toestaat hierbij een oplossing:
Situatie
(zonne)Boiler met ‘domme’ aan/uit heater 2000w aangestuurd middels Homeassistant.
Probleem
Wanneer teruglevering tussen 0-1999W is schakelt element niet in om electriciteit inname te voorkomen, met oog op de toekomst zonde. Deze energie kan de boiler in.
Oplossing
Electrisch element dimmen en aanstuurbaar maken met PID regelaar in HA, op basis van verschil in elektriciteit inname en teruglevering.
Boodschappenlijstje
Aanstuurbare vermogensregelaar (KEMO M240)
PWM/0-10V Zigbee/Zwave/Wifi Dimmer (ROBB SMARRT Zigbee 0-10V PWM Dimmer)
Zekering / Installatieautomaat 10A
Heatsink (oversized!)
Koelpasta
Montagemateriaal (gipsplaat, hout, schroeven, boutjes, moertjes, wago klemmen, lasdoosje, vlakstekkertjes, krimptang, opbouwstopcontact etc)
Bovenstaande in elkaar knutselen, let op dat de heatsink groot genoeg is en zijn warmte goed kwijt kan. Maximale temperatuur bij mij gemeten momenteel 45gr C na meerdere uren op 2000W.
Heatsink heb ik bevestigd aan de heatsink door er draad in te tappen met m3 boutjes vast te zetten. Uiteraard een rupsje koelpasta tussen de KEMO en de heatsink.
PID regelaar middels HomeAssistant
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| alias: PID Control for Heater triggers: - seconds: /5 trigger: time_pattern actions: - variables: kp: "{{ states('input_number.pid_kp') | float }}" ki: "{{ states('input_number.pid_ki') | float }}" kd: "{{ states('input_number.pid_kd') | float }}" current_output: "{{ states('input_number.current_output') | float }}" grid_feedback: "{{ states('sensor.teruglevering') | float(default=0) }}" electriciteit_inname: "{{ states('sensor.electriciteit_inname') | float(default=0) }}" error: "{{ states('sensor.energy_balance') | float }}" integral: "{{ (states('input_number.integral') | float + error) | round(2) }}" derivative: "{{ (error - states('input_number.last_error') | float) | round(2) }}" pid_output: >- {% set output = (kp * error) + (ki * integral) + (kd * derivative) %} {{ [0, [output, 255] | min] | max | float }} - target: entity_id: input_number.current_output data: value: "{{ pid_output | float }}" action: input_number.set_value - target: entity_id: input_number.zonneboiler_dimmer_slider data: value: "{{ pid_output | float }}" action: input_number.set_value - target: entity_id: input_number.integral data: value: "{{ integral | float }}" action: input_number.set_value - target: entity_id: input_number.last_error data: value: "{{ error | float }}" action: input_number.set_value |
Benodigde helpers
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| pid_kp: name: Kp (Proportional Gain) initial: 0.005 min: 0 max: 5 step: 0.001 mode: box pid_ki: name: Ki (Integral Gain) initial: 0.005 min: 0 max: 1 step: 0.001 mode: box pid_kd: name: Kd (Derivative Gain) initial: 0.005 min: 0 max: 1 step: 0.001 mode: box current_output: name: Current Heater Output initial: 0 min: 0 max: 255 step: 1 mode: box integral: name: Integral initial: 0 min: -1000 max: 1000 step: 1 mode: box last_error: name: Last Error initial: 0 min: -1000 max: 1000 step: 1 mode: box |
Template sensor voor energie balans
Let op bij mij zitten er nog 2 thuisaccus in verwerkt zodat deze niet ontladen om de heater van prik te voorzien.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| template: - sensor: - name: "Energy Balance" unique_id: energy_balance_sensor state: >- {% set grid_feedback = states('sensor.teruglevering') | float %} {% set electriciteit_inname = states('sensor.electriciteit_inname') | float %} {% set discharge_battery1 = states('sensor.sessy_dspm_discharge_power') | float %} {% set discharge_battery2 = states('sensor.sessy_d6vu_discharge_power') | float %} {{ (grid_feedback - electriciteit_inname - discharge_battery1 - discharge_battery2) | round(0) }} unit_of_measurement: "W" |
Code om de dimmer middels een slider aan te sturen, wel even de slider aanmaken middels een helper.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| alias: Zonneboiler dimmer automatisering description: "" triggers: - entity_id: input_number.zonneboiler_dimmer_slider trigger: state conditions: [] actions: - data: brightness: "{{ states('input_number.zonneboiler_dimmer_slider') | int }}" target: entity_id: light.robb_smarrt_rob_200_063_0_licht action: light.turn_on mode: single |
Met bovenstaande code kun je de PID regelaar finetunen in HA, dat finetunen is even wat werk maar daarna werkt het prima.
Code kan vast ook nog wat beter, werkt wel maar geeft af en toe een logentry in HA. Allang blij dat het werkt. Maar code-goeroes, hoor graag jullie verbeteringen.
Foto van mijn tijdelijke testsetup, naar eigen wens wat netter te maken natuurlijk. Hoor het graag als iemand een nette suggestie heeft hiervoor.
:strip_exif()/f/image/81yCkUs893c9imFA8aI1kc6R.jpg?f=fotoalbum_large)
[ Voor 5% gewijzigd door sparkly op 07-10-2024 19:40 ]
LG Therma V HM163M U33 / 5kWp Zuid - 7,2kWp West - 2,8kWp Oost / 48HP 300l / 2x Sessy