De RTE blijft altijd een hot topic en vanaf nu dan netjes in Home Assistant. Ik heb geprobeerd het zo simpel mogelijk te houden zodat iedereen met basis Home Assistant kennis hiermee aan de slag kan. En dat je een enorme berg RTE data verzameld waardoor de grafiek ook verder ontwikkeld kan worden met verbeterde berekeningen en weergave.
RTE de basis aanmaken
1# Eerst gaan wij een aantal
Nutsmeter helpers aanmaken. Maak er één aan voor de import en export met een
meter reset cyclus van
Dagelijks, Wekelijks en Maandelijks. Hierdoor springen ze netjes op 0 op een vast moment door
Periodiek resettende wat aan staat. Je hebt hierna dus 6 helpers aangemaakt per batterij, 3 export en 3 import.
2# Vervolgens voor de RTE indicatie maken wij een
Numeriek helper aan. Zet de
weergavemodus voor de netheid op invoerveld. Noem deze bijvoorbeeld 'Battery 1 start SOC'
3# Nu maken wij de RTE berekeningen aan voor Dagelijks met SOC, Dagelijks, Wekelijks en Maandelijks. De Dagelijks, Wekelijks en Maandelijks hebben dezelfde berekening alleen de nutsmeter sensor waar ze naar kijken is anders. Voor de Dagelijks met SOC is een aparte berekening voer hier ook de sensors goed in en vergeet het input_number niet voor je 'Battery 1 start SOC'
Standaard RTE template berekening
code:
1
2
3
4
5
6
7
8
9
10
11
12
| {% set energy_import = states('sensor.battery_1_import_maandelijks') | float(0) %}
{% set energy_export = states('sensor.battery_1_export_maandelijks') | float(0) %}
{% if energy_import > 0 %}
{% set percentage = ((energy_export / energy_import) * 100) | round(2) %}
{% if 0 <= percentage <= 100 %}
{{ percentage }}
{% else %}
0
{% endif %}
{% else %}
0
{% endif %} |
RTE template met SOC voor Dagelijkse met SOC berekening
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| {% set energy_import = states('sensor.battery_1_import_dagelijks') | float(0) %}
{% set energy_export = states('sensor.battery_1_export_dagelijks') | float(0) %}
{% set soc_start_percentage = states('input_number.Battery_1_start_SOC') | float(0) %}
{% set soc_end_percentage = states('sensor.battery_1_state_of_charge') | float(0) %}
{% set battery_capacity_kwh = 2.473 if soc_start_percentage >= 40 else 2.000 %}
{% set soc_start_kwh = (soc_start_percentage / 100) * battery_capacity_kwh %}
{% set soc_end_kwh = (soc_end_percentage / 100) * battery_capacity_kwh %}
{% set battery_discharge_kwh = soc_end_kwh - soc_start_kwh %}
{% if energy_import > 0 %}
{% set energy_used = energy_export + battery_discharge_kwh %}
{% set percentage = (energy_used / energy_import * 100) | round(2) %}
{% if 0 <= percentage <= 100 %}
{{ percentage }}
{% else %}
0
{% endif %}
{% else %}
0
{% endif %} |
4# Je bent nu bijna klaar. Het voordeel van deze opbouw is dat je de templates kunt aanpassen met behoud van data. De templates zouden nog wel eens kunnen wijzigen. De Dagelijks met SOC is bijvoorbeeld nog te verbeteren.
5# Er moet nu nog een automatisering aangemaakt worden die de SOC zal opslaan aan het begin van de dag om 00:01. Gebruik hiervoor deze YAML. Sla de automatisering op en om het even te testen kun je bij de 'Doe dan' actie even deze uitvoeren om te kijken of inderdaad de SOC waarde ingevuld word bij het veld wat je hebt aangemaakt in stap
2#
Automatisering
code:
1
2
3
4
5
6
7
8
9
10
11
12
| alias: Nieuwe automatisering
description: ""
triggers:
- at: "00:01:00"
trigger: time
conditions: []
actions:
- data:
entity_id: input_number.Battery_1_start_SOC
value: "{{ states('sensor.battery_1_state_of_charge') | float }}"
action: input_number.set_value
mode: single |
6# De basis is nu klaar en alles word nu automatisch bijgehouden. Pen, papier en je excel kun je links laten liggen.
RTE en de grafiek
1# Zorg dat je apexcharts in Home assistant hebt;
https://github.com/RomRider/apexcharts-card
2# Voeg de onderstaande grafiek toe en pas de sensoren aan. Je hebt in stap
1# en stap
3# extra sensoren aangemaakt. Je kunt dus er bijvoorbeeld voor kiezen om maandelijks of wekelijks te laten zien.
Grafiek
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
| type: custom:apexcharts-card
stacked: false
cache: false
header:
show: true
show_states: true
graph_span: 31d
series:
- entity: sensor.battery_1_import_maandelijks
yaxis_id: header_only
name: Maand (geladen)
type: column
show:
in_chart: false
- entity: sensor.battery_1_export_maandelijks
yaxis_id: header_only
name: Maand (ontladen)
type: column
show:
in_chart: false
- entity: sensor.battery_1_RTE_maandelijks
yaxis_id: header_only
name: Maand (RTE)
group_by:
func: last
duration: 1m
type: column
show:
in_chart: false
- entity: sensor.battery_1_RTE_dagelijks_met_soc
name: RTE indicatie
color: "#fff"
group_by:
func: last
duration: 1d
type: column
show:
in_header: false
span:
start: day
offset: "-30d"
apex_config:
xaxis:
labels:
show: false
style:
colors: grey
axisTicks:
show: false
yaxis:
- title:
text: ""
decimalsInFloat: 0
opposite: true
min: 0
max: 100
tickAmount: 10
labels:
style:
colors: "#e4e4e7"
grid:
strokeDashArray: 0
borderColor: "#343434"
show: true
chart:
height: 250px
legend:
show: false
plotOptions:
bar:
colors:
ranges:
- from: 0
to: 69
color: "#afada3"
- from: 70
to: 100
color: "#cbb43d" |
2 of meer batterijen
1# Het is hier een kwestie van via een groep helper de import en export te combineren van meerdere batterijen. Voor de RTE heb je de volgende template helper nodig bij 2 batterijen
Standaard RTE template berekening voor 2 batterijen
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| {% set energy_import_1 = states('sensor.battery_1_import_maandelijks') | float(0) %}
{% set energy_export_1 = states('sensor.battery_1_export_maandelijks') | float(0) %}
{% set energy_import_2 = states('sensor.battery_2_import_maandelijks') | float(0) %}
{% set energy_export_2 = states('sensor.battery_2_export_maandelijks') | float(0) %}
{% if energy_import_1 > 0 and energy_import_2 > 0 %}
{% set percentage_1 = ((energy_export_1 / energy_import_1) * 100) | round(2) %}
{% set percentage_2 = ((energy_export_2 / energy_import_2) * 100) | round(2) %}
{% set average_percentage = ((percentage_1 + percentage_2) / 2) | round(2) %}
{% if 0 <= average_percentage <= 100 %}
{{ average_percentage }}
{% else %}
0
{% endif %}
{% else %}
0
{% endif %} |
Grafiek
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
| type: custom:apexcharts-card
stacked: false
cache: false
header:
show: true
show_states: true
title: ""
graph_span: 14d
series:
- entity: sensor.battery_1_en_2_import_maandelijks
yaxis_id: header_only
name: Maand (geladen)
type: column
show:
in_header: true
in_chart: false
- entity: sensor.battery_1_en_2_export_maandelijks
yaxis_id: header_only
name: Maand (ontladen)
type: column
show:
in_header: true
in_chart: false
- entity: sensor.battery_1_en_2_rte_maandelijks
yaxis_id: header_only
name: Maand (RTE)
group_by:
func: last
duration: 1m
type: column
show:
in_header: true
in_chart: false
- entity: sensor.battery_1_rte_dagelijks_met_soc
name: Batterij 1
color: "#fff"
group_by:
func: last
duration: 1d
type: column
show:
in_header: false
- entity: sensor.battery_2_dagelijks_met_soc
name: Batterij 2
color: "#fff"
group_by:
func: last
duration: 1d
type: column
show:
in_header: false
span:
start: day
offset: "-13d"
apex_config:
xaxis:
labels:
show: false
style:
colors: grey
axisTicks:
show: false
yaxis:
- title:
text: ""
min: 0
max: 100
tickAmount: 10
decimalsInFloat: 0
opposite: true
labels:
style:
colors: "#e4e4e7"
grid:
strokeDashArray: 0
borderColor: rgb(52,52,52)
show: true
chart:
height: 250px
legend:
show: false
plotOptions:
bar:
colors:
ranges:
- from: 0
to: 69
color: "#fff"
- from: 70
to: 100
color: "#cbb43d" |
Daggrafiek
1# Voeg de onderstaande grafiek toe en pas de sensoren aan. Aangezien je alle sensoren hebt kun je ook deze direct gebruiken.
Grafiek
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
| type: custom:apexcharts-card
header:
show: true
show_states: true
graph_span: 1d
series:
- entity: sensor.battery_1_state_of_charge
name: Batterij
type: line
color: "#fff"
stroke_width: 2
curve: smooth
group_by:
func: min
duration: 15min
show:
in_header: false
- entity: sensor.battery_1_power
name: Vermogen
group_by:
func: avg
duration: 15min
type: column
yaxis_id: energy
show:
in_header: false
color: "#6700a7"
float_precision: 0
- entity: sensor.battery_1_import_dagelijks
yaxis_id: header_only
name: Geladen
show:
in_header: true
in_chart: false
- entity: sensor.battery_1_export_dagelijks
yaxis_id: header_only
name: Ontladen
show:
in_header: true
in_chart: false
- entity: sensor.battery_1_state_of_charge
name: Batterij
type: line
color: "#fff"
stroke_width: 2
curve: smooth
group_by:
func: min
duration: 15min
show:
in_header: true
in_chart: false
span:
start: day
apex_config:
xaxis:
labels:
show: false
style:
colors: grey
axisTicks:
show: false
yaxis:
- title:
text: ""
decimalsInFloat: 0
min: 0
max: 100
tickAmount: 4
opposite: true
labels:
style:
colors: "#e4e4e7"
- title:
text: ""
decimalsInFloat: 0
min: -1000
max: 1000
tickAmount: 10
labels:
style:
colors: "#e4e4e7"
grid:
strokeDashArray: 0
borderColor: "#343434"
show: true
chart:
height: 250px
legend:
show: false
plotOptions:
bar:
colors:
ranges:
- from: 0
to: 100000
color: "#6700a7"
- from: -100000
to: 0
color: "#46a635" |
6320wp | Zendure 2400 AC (14.4 kwh) | Bambu A1 | 2x Hisense 2AMW-42U4RRA | Daikin RXM/FTXM35R | AQMOS BMX | Home Assistant OS op DS224+