├── README.md
├── configuration.yaml
├── old
├── configuration.yaml
├── obsolete_sma-ggc-automation.yaml
└── obsolete_sma-stp-se-ggc-shm-akku-steuerung.yaml
├── opti-automatik.yaml
└── sma-se-akku-steuerung.yaml
/README.md:
--------------------------------------------------------------------------------
1 | # Prognosebasierte & Manuelle Steuerung für Homeassistant von SMA STP SE Hybrid-Wechselrichter #
2 |
3 | **DISCLAMER: Alles auf eigene Gefahr! Ich übernehme keine Verantwortung für Schäden oder Probleme die hiermit entstehen.**
4 | Dieses Projekt wird in keinster Weise von der Firma SMA begleitet oder supported.
5 |
6 | **Neue Betafirma seit 16.07.2024 stellt wieder die alte Funktionalität her, dass der Wechselrichter direkt über Modbus gesteurt werden kann**
7 | Grid Guard Code usw. nicht mehr notwendig!
8 |
9 | (work in progress, noch nicht vollständig!)
10 |
11 | # Anleitung #
12 |
13 | Was macht das hier eigentlich?
14 |
15 | Akkuladesteuerung über den WR selbst (wenn man die Updates früh genug deaktiviert hat ODER die neue Betafirmware für den SHM 2.0 hat)
16 |
17 | Ein Part ist die Reine Akku Lade-/Entladesteuerung die man manuell auswählen kann, der andere Part die Opti-Automatik welche die Ladestärke auf 0.2C (oder einen gewünschte Ladestärke) begrenzt, den Akku morgens erstmal auf 50% lädt und dann pausiert bis die gewünschte Restproduktionsprognose erreicht ist. Dann wird der Akku bis 90% weiter mit 0.2C beladen, danach mit 1kW bis 100%.
18 |
19 | Es sollte die SMA Integration von HA eingerichtet werde um den SoC des Akkus auslesen zu können sowie ein Solcast Account für die Prognose der PV-Erträge!
20 |
21 | **opti-automatik.yaml** - Hiermit wird über den SHM 2.0 und freigeschaltetem GGC der Akku mittels der weiteren Automation gezielt geladen, pausiert und zuende geladen mit 0.2C bzw. 1kW.
22 |
23 | **sma-se-akku-steuerung.yaml** - Falls man den WR noch direkt ansteuern kann und die letzten Updates nicht hat / die neue Beta Firmware (siehe oben) kann man diese Steuer-Automatik nutzen.
24 |
25 | **configuration.yaml** - Eintrag zum Wechselrichter. Den Sensor für die Temperatur bitte mitnehmen, ohne Sensor funktioniert die Modbus Integration nicht zuverlässig.
26 |
27 | Wer erstmal nur die reine Akkusteuerung möchte, braucht nur die "sma-se-akku-steuerung.yaml" als Automation anlegen und u.g. Helfer und Überschuss Akkuladung anlegen.
28 |
29 | **ToDo:**
30 | - Akku im Winter mindestens 1x die Woche automatisch auf 100% Laden
31 | - Evtl. Ladegeschwindigkeit ab 95-98% auf 500 Watt begrenzen
32 | - SBS Version
33 | - HACS Version für die reine Akkusteuerung
34 | - English Version of this?
35 |
36 | Den Eintrag aus der configuration.yaml bei Homeassistant in die gleichnamige einfügen.
37 |
38 | Man benötigt einen Sensor der den möglichen Überschuss für den Akku berechnet und einen für den aktuellen Hausverbrauch.
39 |
40 | **Zum Beispiel für den möglichen Akku-Ladeüberschuss:**
41 |
42 | - unique_id: maximaler_ueberschuss_akkuladung
43 | device_class: power
44 | state_class: measurement
45 | name: Maximaler Ueberschuss fuer Akkuladung Watt
46 | unit_of_measurement: W
47 | state: "{{ (states('sensor.pv_generation_komplett_watt') | float) - (states('sensor.home_energy_usage_watt') | float) - (states('sensor.sn_xxxxxxx_metering_power_absorbed') | float) + ((states('sensor.goecharger_wallbox_hinten_p_all') | float )* 1000) }}"
48 |
49 | **Zum Beispiel für PV Überschuss warp3_2asq_powernow ist meine Wallbox**
50 |
51 | - unique_id: maximaler_ueberschuss_akkuladung
52 | device_class: power
53 | state_class: measurement
54 | name: Maximaler Ueberschuss fuer Akkuladung Watt
55 | unit_of_measurement: W
56 | state: "{{ (states('sensor.pv_generation_komplett_watt') | float) - (states('sensor.home_energy_usage_watt') | float) - (states('sensor.sn_3015*****_battery_power_charge_total') | float) + (states('sensor.sn_3015*****_metering_power_absorbed') | float) + ((states('sensor.warp3_2asq_powernow') | float )) }}"
57 |
58 |
59 | **Zum Beispiel für den PV-Überschuss um ggf. die 70% Kappung zu erkennen**
60 |
61 | - unique_id: akkusteuerung_ueberschuss_pv
62 | device_class: power
63 | state_class: measurement
64 | name: Ueberschuss PV Watt
65 | unit_of_measurement: W
66 | state: "{{ (states('sensor.pv_generation_komplett_watt') | float(0) - (states('sensor.home_energy_usage_watt') | float) - (states('sensor.sn_3017XXXXXX_metering_power_absorbed') | float) ) }}"
67 |
68 | **Zum Beispiel für den Hausverbrauch:**
69 |
70 | - unique_id: home_energy_usage_w
71 | device_class: power
72 | state_class: measurement
73 | name: Home Energy Usage Watt
74 | unit_of_measurement: W
75 | state: "{{ (states('sensor.sn_3017XXXXXX_metering_power_absorbed') | float) + (states('sensor.sn_3017XXXXXX_grid_power') | float) - (states('sensor.sn_3017XXXXXX_metering_power_supplied') | float)}}"
76 |
77 | **Hier als Extra zwei Sensoren die Wirkungsgrad und Akku_Zyklen in HA trackien**
78 |
79 | - unique_id: byd_akku_wirkungsgrad_lade_entlade
80 | name: BYD Akku Wirkungsgrad Ladung und Entladung
81 | unit_of_measurement: factor
82 | state: "{{ ((states('sensor.sn_3017XXXXXX_battery_discharge_total') | float) / (states('sensor.sn_3017XXXXXX_battery_charge_total') | float) * 100) | round(2) }}"
83 |
84 | - unique_id: byd_akku_zyklen
85 | name: BYD Akku Zyklen
86 | unit_of_measurement: factor
87 | state: "{{ (((((states('sensor.sn_3017XXXXXX_battery_discharge_total') | float) + (states('sensor.sn_3017XXXXXX_battery_charge_total') | float)) / 100 ) * (states('sensor.sn_3017XXXXXX_battery_capacity_total')) | float) / (2*10.2) ) | round(1) }}"
88 |
89 | **Hier Restlaufzeit berechnen, ich weiss nicht von wem das herkam aber:**
90 |
91 | - unique_id: "house_battery_runtime_raw"
92 | name: "House Battery Runtime Raw"
93 | unit_of_measurement: "hours"
94 | state: >
95 | {% set battery_load = -1 * float(states('sensor.house_battery_load_30_mins')) if states('sensor.house_battery_load_30_mins')|is_number else 0 %}
96 | {% if battery_load == 0 %}
97 | {% set runtime = 0 %}
98 | {% else %}
99 | {% set solis_remaining_capacity = states('sensor.sn_30156*****_battery_soc_total') %}
100 | {% set remaining_capacity = 12.8 - (0.1280 * (100.0 - float(solis_remaining_capacity) if solis_remaining_capacity != 'unknown' and solis_remaining_capacity|float >= 0 else 0)) %}
101 | {% set runtime = remaining_capacity / (battery_load/1000) %}
102 | {% endif %}
103 | {{ runtime }}
104 |
105 | ** zum vorherigen braucht man noch einen Statistik Sensor, bei mir unter sensor/statistik.yaml **
106 |
107 | - platform: statistics
108 | name: "House Battery Load 30 mins"
109 | entity_id: sensor.sn_3015*****_battery_power_discharge_total
110 | state_characteristic: mean
111 | max_age:
112 | minutes: 30
113 |
114 | dieser HA-Helfer zur Auswahl des Akku-Modus muss angelegt werden:
115 |
116 |
117 |
118 | Dann noch einen Schalter **akku_opti_automatik** ob diese Ladeoptimerung überhaupt laufen darf anlegen:
119 |
120 | Vier Input Numbers anlegen, Minimaler Wert 100, maximaler Wert 10000 (Watt) für:
121 |
122 | - input_number.akkusteuerung_ladestaerke_soll und
123 | - input_number.akkusteuerung_entladestaerke_soll
124 | - input_number.akkusteuerung_02c_ladestaerke
125 |
126 | Dieser Helfer sollte den Wert oder einen leicht niedrigeren Wert enthalten der die 70% Abregelung enthält. (z.B. 7000 Watt bei einer 10kW Watt Anlage oder leicht drunter, etwa 6800 Watt)
127 |
128 | - input_number.akkusteuerung_wr_70proz_ueberschuss_grenze
129 |
130 | Dieser Helfer bekommt den Wert der maximalen AC Einspeiseleistung des Wechselrichters. Bei einem SMA STP SE 10.0 also 10000 Watt bzw. leicht drunter etwa 9900. Die Soll-Ladestärke wird dann auf 100 Watt gesetzt und so autoamtisch der AC-Überschuss in den Akku geladen (falls dieser noch nicht voll ist)
131 |
132 | - input_number.akkusteuerung_wr_ac_ueberschuss_grenze
133 |
134 | für den letzten z.B. 1-100kWh, dies steuert die Schwelle ab wann der Akku von 50% aufwärts geladen wird.
135 |
136 | - input_number.akkusteuerung_ab_welchem_restertrag_vollladen
137 |
138 |
139 |
140 | So schaut es im HA aktuell aus. Hab noch einen Dummy-Schalter für den Fall das die Module/Anlage mal ausfällt. Da ist aber noch nichts aktives in der Automation enthalten.
141 |
142 |
143 |
144 | type: vertical-stack
145 | cards:
146 | - type: custom:mushroom-title-card
147 | title: Akkusteuerung SMA STP-SE
148 | - type: custom:mushroom-chips-card
149 | chips:
150 | - type: conditional
151 | conditions:
152 | - condition: numeric_state
153 | entity: sensor.sn_30XXXXXXXX_battery_power_discharge_total
154 | above: 0.001
155 | chip:
156 | type: template
157 | entity: sensor.sn_30XXXXXXXX_battery_power_discharge_total
158 | content: '{{( states(entity) | float / 1000) | round(2) }} kW '
159 | icon: mdi:battery-minus
160 | icon_color: red
161 | - type: conditional
162 | conditions:
163 | - condition: numeric_state
164 | entity: sensor.sn_30XXXXXXXX_battery_power_charge_total
165 | above: 0.001
166 | chip:
167 | type: entity
168 | entity: sensor.sn_30XXXXXXXX_battery_power_charge_total
169 | icon: mdi:battery-positive
170 | icon_color: green
171 | - type: entity
172 | entity: sensor.sn_30XXXXXXXX_battery_soc_total
173 | icon_color: blue
174 | - type: template
175 | entity: sensor.byd_12_8_akku_wirkungsgrad_ladung_und_entladung
176 | content: '{{ states(entity) | round (1)}}% η'
177 | icon: mdi:vector-difference
178 | icon_color: orange
179 | - type: template
180 | entity: sensor.byd_12_8_akku_zyklen
181 | content: '{{ states(entity)}}'
182 | icon: mdi:counter
183 | icon_color: yellow
184 | - type: entity
185 | entity: sensor.sn_30XXXXXXXX_battery_temp_a
186 | icon: mdi:battery-charging-wireless-outline
187 | - type: entity
188 | entity: sensor.sma_stp_se_temperatur
189 | icon: mdi:power-socket-it
190 | - type: custom:mushroom-select-card
191 | entity: input_select.akkusteuerung_sma_wr
192 | name: Akkusteuerung
193 | primary_info: name
194 | secondary_info: last-changed
195 | - type: tile
196 | entity: input_boolean.akku_opti_automatik
197 | - type: tile
198 | entity: input_boolean.akku_nach_preis_laden
199 | - type: tile
200 | entity: input_boolean.pv_module_nicht_verfugbar
201 | name: PV-Module NA (z.B. Schnee bedeckt)
202 | - type: horizontal-stack
203 | cards:
204 | - type: tile
205 | entity: sensor.sn_30XXXXXXXX_battery_discharge_total
206 | name: Entladen Watt
207 | - type: tile
208 | entity: sensor.sn_30XXXXXXXX_battery_charge_total
209 | name: Laden Watt
210 | - type: entities
211 | entities:
212 | - entity: input_number.akkusteuerung_ladestaerke_soll
213 | - entity: input_number.akkusteuerung_entladestaerke_soll
214 | name: Entladestärke
215 | - entity: input_number.akkusteuerung_ab_welchem_restertrag_vollladen
216 | name: Restladeschwelle
217 | - entity: input_number.akkusteuerung_02c_ladestaerke
218 | name: Ladestärke 0.2C
219 | - entity: input_number.akkusteuerung_wr_ac_ueberschuss_grenze
220 | name: WR AC-Grenze
221 | - entity: input_number.akkusteuerung_wr_70proz_ueberschuss_grenze
222 | name: 70% Grenze
223 | - entity: sensor.house_battery_runtime_raw
224 | name: Akkulaufzeit
225 | - entity: sensor.ueberschuss_pv_watt
226 |
227 |
--------------------------------------------------------------------------------
/configuration.yaml:
--------------------------------------------------------------------------------
1 | modbus:
2 | - name: sma-sr_wr
3 | type: tcp
4 | host: 192.168.178.181
5 | port: 502
6 | delay: 2
7 | message_wait_milliseconds: 60
8 | timeout: 5
9 | sensors:
10 | # - platform: modbus
11 | # registers:
12 | - name: SMA-STP-SE_Temperatur
13 | data_type: uint32
14 | device_class: "temperature"
15 | unit_of_measurement: "°C"
16 | slave: 3
17 | address: 30953
18 | #count: 2
19 | scale: 0.1
20 |
--------------------------------------------------------------------------------
/old/configuration.yaml:
--------------------------------------------------------------------------------
1 | modbus:
2 | - name: sma-sr_wr
3 | type: tcp
4 | host: 192.168.178.181
5 | port: 502
6 | delay: 2
7 | message_wait_milliseconds: 60
8 | timeout: 5
9 | sensors:
10 | # - platform: modbus
11 | # registers:
12 | - name: SMApwrL1
13 | # hub: sma
14 | unit_of_measurement: kW
15 | slave: 3
16 | address: 30777
17 | data_type: uint32
18 |
19 | - name: sma-hm
20 | type: tcp
21 | host: 192.168.178.51
22 | port: 502
23 | delay: 2
24 | message_wait_milliseconds: 60
25 | timeout: 5
26 | sensors:
27 | - name: sma_ggc_hm
28 | unique_id: smaggc_hm
29 | address: 43090
30 | data_type: int32
31 | slave: 1
32 | scan_interval: 60
33 |
--------------------------------------------------------------------------------
/old/obsolete_sma-ggc-automation.yaml:
--------------------------------------------------------------------------------
1 | alias: GGC bei Bedaf
2 | description: ""
3 | trigger:
4 | - platform: numeric_state
5 | entity_id:
6 | - sensor.sma_ggc_hm
7 | below: 1
8 | condition: []
9 | action:
10 | - service: modbus.write_register
11 | metadata: {}
12 | data:
13 | hub: sma-hm
14 | value:
15 | - #GGC ersten 5 Nummern
16 | - #GGC letzten 5 Nummern
17 | address: 43090
18 | slave: 1
19 | mode: single
20 |
--------------------------------------------------------------------------------
/old/obsolete_sma-stp-se-ggc-shm-akku-steuerung.yaml:
--------------------------------------------------------------------------------
1 | alias: BYD Akkusteuerung
2 | description: ""
3 | trigger:
4 | - platform: state
5 | entity_id:
6 | - input_select.byd_akkusteuerung
7 | - input_number.byd_akkusteuerung_ladestaerke_soll
8 | - input_number.byd_akkusteuerung_entladestaerke_soll
9 | - input_number.byd_akkusteuerung_02c_ladestaerke
10 | from: null
11 | to: null
12 | for:
13 | hours: 0
14 | minutes: 0
15 | seconds: 1
16 | - platform: time_pattern
17 | minutes: /30
18 | enabled: true
19 | - platform: homeassistant
20 | event: start
21 | condition: []
22 | action:
23 | - alias: Wenn BYD Akku schnell Laden ...
24 | if:
25 | - condition: state
26 | entity_id: input_select.byd_akkusteuerung
27 | state: BYD Akku schnell Laden
28 | then:
29 | - service: modbus.write_register
30 | data:
31 | hub: sma-hm
32 | address: 40151
33 | slave: 2
34 | value:
35 | - 0
36 | - 802
37 | - delay:
38 | hours: 0
39 | minutes: 0
40 | seconds: 5
41 | milliseconds: 0
42 | - service: modbus.write_register
43 | data:
44 | hub: sma-hm
45 | address: 40149
46 | slave: 2
47 | value:
48 | - 65535
49 | - >-
50 | {{ 65535 -
51 | states('input_number.byd_akkusteuerung_ladestaerke_soll') | int }}
52 | - alias: Wenn BYD Akku schnell Entaden ...
53 | if:
54 | - condition: state
55 | entity_id: input_select.byd_akkusteuerung
56 | state: BYD Akku schnell Entladen
57 | then:
58 | - service: modbus.write_register
59 | data:
60 | hub: sma-hm
61 | address: 40151
62 | slave: 2
63 | value:
64 | - 0
65 | - 802
66 | - delay:
67 | hours: 0
68 | minutes: 0
69 | seconds: 5
70 | milliseconds: 0
71 | - service: modbus.write_register
72 | data:
73 | hub: sma-hm
74 | address: 40149
75 | slave: 2
76 | value:
77 | - 0
78 | - >-
79 | {{ states('input_number.byd_akkusteuerung_entladestaerke_soll') |
80 | int }}
81 | - alias: Wenn BYD Akku Pause ...
82 | if:
83 | - condition: state
84 | entity_id: input_select.byd_akkusteuerung
85 | state: BYD Akku Pause
86 | then:
87 | - service: modbus.write_register
88 | data:
89 | hub: sma-hm
90 | address: 40151
91 | slave: 2
92 | value:
93 | - 0
94 | - 802
95 | - delay:
96 | hours: 0
97 | minutes: 0
98 | seconds: 5
99 | milliseconds: 0
100 | - service: modbus.write_register
101 | data:
102 | hub: sma-hm
103 | address: 40149
104 | slave: 2
105 | value:
106 | - 65535
107 | - 65534
108 | - alias: Wenn BYD Automatik ...
109 | if:
110 | - condition: state
111 | entity_id: input_select.byd_akkusteuerung
112 | state: BYD Akku Automatisch
113 | then:
114 | - service: modbus.write_register
115 | data:
116 | hub: sma-hm
117 | address: 40151
118 | slave: 2
119 | value:
120 | - 0
121 | - 803
122 | - alias: Wenn BYD Akku 0.2C Laden
123 | if:
124 | - condition: state
125 | entity_id: input_select.byd_akkusteuerung
126 | state: BYD Akku 0.2C Laden
127 | then:
128 | - service: modbus.write_register
129 | data:
130 | hub: sma-hm
131 | address: 40151
132 | slave: 2
133 | value:
134 | - 0
135 | - 802
136 | - delay:
137 | hours: 0
138 | minutes: 0
139 | seconds: 5
140 | milliseconds: 0
141 | - service: modbus.write_register
142 | data:
143 | hub: sma-hm
144 | address: 40149
145 | slave: 2
146 | value:
147 | - 65535
148 | - >-
149 | {{ 65535 -
150 | states('input_number.byd_akkusteuerung_02c_ladestaerke') | int }}
151 | mode: single
152 |
--------------------------------------------------------------------------------
/opti-automatik.yaml:
--------------------------------------------------------------------------------
1 | alias: Akku Lade- Entladesteuerung Opti
2 | description: (inkl. Preisladung, 70% und AC-Überschuss)
3 | trigger:
4 | - platform: state
5 | entity_id:
6 | - sensor.tibber_price_level
7 | id: Tibber Preislevel Änderung
8 | enabled: false
9 | from: null
10 | to: null
11 | - platform: state
12 | entity_id:
13 | - input_boolean.akku_opti_automatik
14 | id: Akku Opti-Automatik AN/AUS
15 | - platform: state
16 | entity_id:
17 | - sensor.sn_30XXXXXXXX_battery_soc_total
18 | id: BYD Änderung
19 | - platform: numeric_state
20 | entity_id:
21 | - sensor.sn_30XXXXXXXX_battery_soc_total
22 | above: 99
23 | id: Speicher ist voll
24 | - platform: numeric_state
25 | entity_id:
26 | - sensor.sn_30XXXXXXXX_battery_soc_total
27 | above: 49
28 | id: Speicher ist über 50%
29 | - platform: numeric_state
30 | entity_id:
31 | - sensor.mindestentladepreis
32 | below: sensor.electricity_price_musterstrasse_123
33 | id: Entladeschwelle
34 | enabled: true
35 | - platform: numeric_state
36 | entity_id:
37 | - sensor.solcast_pv_forecast_prognose_verbleibende_leistung_heute
38 | below: input_number.akkusteuerung_ab_welchem_restertrag_vollladen
39 | id: restliche Verbleibende PV unter Schwelle heute
40 | - platform: numeric_state
41 | entity_id:
42 | - sensor.maximaler_ueberschuss_fuer_akkuladung_watt
43 | for:
44 | hours: 0
45 | minutes: 1
46 | seconds: 0
47 | above: input_number.akkusteuerung_02c_ladestaerke
48 | id: Akku Überschuss über 0.2C
49 | - platform: numeric_state
50 | entity_id:
51 | - sensor.maximaler_ueberschuss_fuer_akkuladung_watt
52 | for:
53 | hours: 0
54 | minutes: 0
55 | seconds: 15
56 | below: input_number.akkusteuerung_02c_ladestaerke
57 | id: Akku Überschuss unter 0.2C
58 | - platform: numeric_state
59 | entity_id:
60 | - sensor.sn_30XXXXXXXX_metering_power_absorbed
61 | for:
62 | hours: 0
63 | minutes: 0
64 | seconds: 15
65 | id: Netzbezug
66 | above: 10
67 | - platform: numeric_state
68 | entity_id:
69 | - sensor.sn_30XXXXXXXX_battery_power_charge_total
70 | above: 3000
71 | id: Akku Charge-Power über 3000
72 | for:
73 | hours: 0
74 | minutes: 0
75 | seconds: 15
76 | - platform: numeric_state
77 | entity_id:
78 | - sensor.sn_30XXXXXXXX_pv_power
79 | for:
80 | hours: 0
81 | minutes: 0
82 | seconds: 30
83 | id: AC-Überschuss
84 | above: input_number.akkusteuerung_wr_ac_ueberschuss_grenze
85 | - platform: numeric_state
86 | entity_id:
87 | - sensor.sn_30XXXXXXXX_pv_power
88 | for:
89 | hours: 0
90 | minutes: 0
91 | seconds: 30
92 | id: AC-Überschuss-Aus
93 | below: input_number.akkusteuerung_wr_ac_ueberschuss_grenze
94 | - platform: numeric_state
95 | entity_id:
96 | - sensor.ueberschuss_pv_watt
97 | for:
98 | hours: 0
99 | minutes: 0
100 | seconds: 30
101 | id: PV-70%-Überschuss
102 | above: input_number.akkusteuerung_wr_70proz_ueberschuss_grenze
103 | - platform: numeric_state
104 | entity_id:
105 | - sensor.ueberschuss_pv_watt
106 | for:
107 | hours: 0
108 | minutes: 0
109 | seconds: 30
110 | id: PV-70%-Überschuss-Aus
111 | below: input_number.akkusteuerung_wr_70proz_ueberschuss_grenze
112 | condition: []
113 | action:
114 | - alias: Zwischen Speicherszenarien wählen
115 | choose:
116 | - conditions:
117 | - condition: trigger
118 | id:
119 | - Akku Überschuss über 0.2C
120 | - Speicher ist über 50%
121 | - Akku Überschuss unter 0.2C
122 | - Akku Charge-Power über 3000
123 | - AC-Überschuss-Aus
124 | - AC-Überschuss
125 | - restliche Verbleibende PV unter Schwelle heute
126 | - Akku Opti-Automatik AN/AUS
127 | - PV-70%-Überschuss
128 | - PV-70%-Überschuss-Aus
129 | - BYD Änderung
130 | - condition: state
131 | entity_id: input_boolean.akku_opti_automatik
132 | state: "on"
133 | - condition: state
134 | entity_id: input_boolean.hausakku_aus_netz_laden
135 | state: "off"
136 | - condition: sun
137 | before: sunset
138 | after: sunrise
139 | sequence:
140 | - if:
141 | - condition: numeric_state
142 | entity_id: sensor.sn_30XXXXXXXX_pv_power
143 | above: input_number.akkusteuerung_wr_ac_ueberschuss_grenze
144 | - condition: numeric_state
145 | entity_id: sensor.sn_30XXXXXXXX_battery_soc_total
146 | below: "100"
147 | then:
148 | - service: input_number.set_value
149 | target:
150 | entity_id: input_number.akkusteuerung_sma_wr_ladestaerke_soll
151 | data:
152 | value: 100
153 | - service: input_select.select_option
154 | metadata: {}
155 | data:
156 | option: Akku schnell Laden
157 | target:
158 | entity_id: input_select.akkusteuerung_sma_wr
159 | - stop: fertig
160 | alias: Bei AC Überschuss diesen in den Akku Laden
161 | - alias: Bei 70% Überschuss diesen in den Akku Laden
162 | if:
163 | - condition: numeric_state
164 | entity_id: sensor.ueberschuss_pv_watt
165 | above: input_number.akkusteuerung_wr_70proz_ueberschuss_grenze
166 | - condition: numeric_state
167 | entity_id: sensor.sn_30XXXXXXXX_battery_soc_total
168 | below: "100"
169 | then:
170 | - service: input_select.select_option
171 | metadata: {}
172 | data:
173 | option: Akku 0.2C Laden
174 | target:
175 | entity_id: input_select.akkusteuerung_sma_wr
176 | - stop: fertig
177 | - if:
178 | - condition: numeric_state
179 | entity_id: sensor.sn_30XXXXXXXX_battery_soc_total
180 | above: 99
181 | then:
182 | - service: input_number.set_value
183 | target:
184 | entity_id: input_number.akkusteuerung_sma_wr_ladestaerke_soll
185 | data:
186 | value: 100
187 | - service: input_select.select_option
188 | metadata: {}
189 | data:
190 | option: Akku Automatisch
191 | target:
192 | entity_id: input_select.akkusteuerung_sma_wr
193 | - stop: fertig
194 | alias: Bei vollem Akku im Zweifel auf Automatisch schalten
195 | - alias: >-
196 | Ab über Restladeschwelle den Akku voll machen mit 0.2C bei SoC
197 | unter 50%
198 | if:
199 | - condition: numeric_state
200 | entity_id: >-
201 | sensor.solcast_pv_forecast_prognose_verbleibende_leistung_heute
202 | enabled: true
203 | above: input_number.akkusteuerung_ab_welchem_restertrag_vollladen
204 | - condition: numeric_state
205 | entity_id: sensor.sn_30XXXXXXXX_battery_soc_total
206 | above: 0
207 | below: 50
208 | - condition: sun
209 | before: sunset
210 | after: sunrise
211 | - condition: numeric_state
212 | entity_id: sensor.maximaler_ueberschuss_fuer_akkuladung_watt
213 | above: 2500
214 | then:
215 | - service: input_select.select_option
216 | metadata: {}
217 | data:
218 | option: Akku 0.2C Laden
219 | target:
220 | entity_id: input_select.akkusteuerung_sma_wr
221 | - stop: fertig
222 | - alias: >-
223 | Ab unter Restladeschwelle den Akku voll machen mit 0.2C bei SoC
224 | unter 90%
225 | if:
226 | - condition: numeric_state
227 | entity_id: >-
228 | sensor.solcast_pv_forecast_prognose_verbleibende_leistung_heute
229 | below: input_number.akkusteuerung_ab_welchem_restertrag_vollladen
230 | enabled: true
231 | - condition: numeric_state
232 | entity_id: sensor.sn_30XXXXXXXX_battery_soc_total
233 | above: 0
234 | below: 90
235 | - condition: numeric_state
236 | entity_id: sensor.maximaler_ueberschuss_fuer_akkuladung_watt
237 | above: 2600
238 | then:
239 | - service: input_select.select_option
240 | metadata: {}
241 | data:
242 | option: Akku 0.2C Laden
243 | target:
244 | entity_id: input_select.akkusteuerung_sma_wr
245 | - stop: fertig
246 | - alias: >-
247 | Ab unter Restladeschwelle den Akku voll machen mit 1kW bei SoC
248 | über 90%
249 | if:
250 | - condition: numeric_state
251 | entity_id: >-
252 | sensor.solcast_pv_forecast_prognose_verbleibende_leistung_heute
253 | below: input_number.akkusteuerung_ab_welchem_restertrag_vollladen
254 | enabled: true
255 | - condition: numeric_state
256 | entity_id: sensor.sn_30XXXXXXXX_battery_soc_total
257 | above: 89
258 | below: 100
259 | - condition: numeric_state
260 | entity_id: sensor.maximaler_ueberschuss_fuer_akkuladung_watt
261 | above: 1100
262 | then:
263 | - service: input_number.set_value
264 | data:
265 | value: 1000
266 | target:
267 | entity_id: input_number.akkusteuerung_ladestaerke_soll
268 | - service: input_select.select_option
269 | metadata: {}
270 | data:
271 | option: Akku schnell Laden
272 | target:
273 | entity_id: input_select.akkusteuerung_sma_wr
274 | - stop: fertig
275 | - alias: >-
276 | Ab unter 35kWh Automatisch bei weniger als 1100W und unter 100%
277 | SoC
278 | if:
279 | - condition: numeric_state
280 | entity_id: >-
281 | sensor.solcast_pv_forecast_prognose_verbleibende_leistung_heute
282 | below: input_number.akkusteuerung_ab_welchem_restertrag_vollladen
283 | enabled: true
284 | - condition: numeric_state
285 | entity_id: sensor.maximaler_ueberschuss_fuer_akkuladung_watt
286 | below: 1100
287 | then:
288 | - service: input_select.select_option
289 | metadata: {}
290 | data:
291 | option: Akku Automatisch
292 | target:
293 | entity_id: input_select.akkusteuerung_sma_wr
294 | - stop: fertig
295 | - alias: >-
296 | Bei über 35kWh Rest und Akku 50% ODER Akku auf 100% den Akku
297 | Pausieren
298 | if:
299 | - condition: or
300 | conditions:
301 | - condition: and
302 | conditions:
303 | - condition: numeric_state
304 | entity_id: >-
305 | sensor.solcast_pv_forecast_prognose_verbleibende_leistung_heute
306 | enabled: true
307 | above: >-
308 | input_number.akkusteuerung_ab_welchem_restertrag_vollladen
309 | - condition: numeric_state
310 | entity_id: sensor.sn_30XXXXXXXX_battery_soc_total
311 | above: 47
312 | - condition: and
313 | conditions:
314 | - condition: numeric_state
315 | entity_id: >-
316 | sensor.solcast_pv_forecast_prognose_verbleibende_leistung_heute
317 | enabled: true
318 | above: >-
319 | input_number.akkusteuerung_ab_welchem_restertrag_vollladen
320 | - condition: numeric_state
321 | entity_id: sensor.sn_30XXXXXXXX_battery_soc_total
322 | above: 99
323 | then:
324 | - service: input_number.set_value
325 | target:
326 | entity_id: input_number.akkusteuerung_sma_wr_ladestaerke_soll
327 | data:
328 | value: 500
329 | enabled: false
330 | - service: input_select.select_option
331 | metadata: {}
332 | data:
333 | option: Akku Pause
334 | target:
335 | entity_id: input_select.akkusteuerung_sma_wr
336 | - conditions:
337 | - condition: trigger
338 | id:
339 | - Speicher ist voll
340 | - condition: state
341 | entity_id: input_boolean.hausakku_aus_netz_laden
342 | state: "on"
343 | enabled: true
344 | sequence:
345 | - service: input_boolean.turn_off
346 | metadata: {}
347 | data: {}
348 | target:
349 | entity_id: input_boolean.hausakku_aus_netz_laden
350 | - service: input_number.set_value
351 | data:
352 | value: >-
353 | {{ states('sensor.electricity_price_musterstrasse_123')| float(0)
354 | }}
355 | target:
356 | entity_id: input_number.ladepreis
357 | alias: Ladepreis Helfer nach aktuellem Strompreis
358 | - service: input_select.select_option
359 | metadata: {}
360 | data:
361 | option: Akku Pause
362 | target:
363 | entity_id: input_select.akkusteuerung_sma_wr
364 | - conditions:
365 | - condition: trigger
366 | id:
367 | - Entladeschwelle
368 | - Netzbezug
369 | sequence:
370 | - service: input_select.select_option
371 | metadata: {}
372 | data:
373 | option: Akku Automatisch
374 | target:
375 | entity_id: input_select.akkusteuerung_sma_wr
376 | alias: Akku Automatisch
377 | - conditions:
378 | - condition: trigger
379 | id:
380 | - sehr günstig
381 | - günstig
382 | - condition: numeric_state
383 | entity_id: sensor.solcast_pv_forecast_prognose_verbleibende_leistung_heute
384 | below: 20
385 | - condition: numeric_state
386 | entity_id: sensor.sn_30XXXXXXXX_battery_soc_total
387 | below: 60
388 | - condition: sun
389 | before: sunrise
390 | after: sunset
391 | sequence:
392 | - service: input_select.select_option
393 | metadata: {}
394 | data:
395 | option: Akku Pause
396 | target:
397 | entity_id: input_select.akkusteuerung_sma_wr
398 | alias: Akku Pause wenn Prognose schlecht und aufsparen
399 | - alias: Zwischen Tibber Aktionen wählen
400 | choose:
401 | - conditions:
402 | - condition: trigger
403 | id:
404 | - Tibber Preislevel Änderung
405 | - condition: trigger
406 | id:
407 | - sehr günstig
408 | - günstig
409 | - normal
410 | - condition: trigger
411 | id:
412 | - sehr günstig
413 | - günstig
414 | - condition: trigger
415 | id:
416 | - sehr günstig
417 | - günstig
418 | - condition: trigger
419 | id:
420 | - teuer
421 | - sehr teuer
422 | - normal
423 | sequence:
424 | - choose:
425 | - conditions:
426 | - condition: numeric_state
427 | entity_id: sensor.sn_30XXXXXXXX_battery_soc_total
428 | below: 50
429 | - condition: numeric_state
430 | entity_id: >-
431 | sensor.solcast_pv_forecast_prognose_verbleibende_leistung_heute
432 | below: 10
433 | - condition: numeric_state
434 | entity_id: sensor.tibber_preisspanne_heute
435 | above: 8
436 | - condition: numeric_state
437 | entity_id: sensor.tibber_aktueller_preis_ist_tageshochstpreis
438 | below: 20
439 | - condition: state
440 | entity_id: input_boolean.akku_nach_preis_laden
441 | state: "on"
442 | sequence:
443 | - service: input_boolean.turn_on
444 | target:
445 | entity_id: input_boolean.speicher_eco_netzladen
446 | data: {}
447 | - service: input_boolean.turn_on
448 | target:
449 | entity_id:
450 | - input_boolean.hausakku_aus_netz_laden
451 | data: {}
452 | - service: input_boolean.turn_on
453 | target:
454 | entity_id:
455 | - input_boolean.hausakku_aus_netz_laden
456 | - input_boolean.hausakku_wurde_netzgeladen
457 | data: {}
458 | - service: input_select.select_option
459 | metadata: {}
460 | data:
461 | option: Akku schnell Laden
462 | target:
463 | entity_id: input_select.akkusteuerung_sma_wr
464 | alias: Akku tatsächlich Laden wenn es sich lohnt und aktiviert
465 | - conditions:
466 | - condition: numeric_state
467 | entity_id: >-
468 | sensor.solcast_pv_forecast_prognose_verbleibende_leistung_heute
469 | above: 25
470 | - condition: numeric_state
471 | entity_id: sensor.sn_30XXXXXXXX_battery_soc_total
472 | above: 60
473 | - condition: sun
474 | before: sunrise
475 | after: sunset
476 | - condition: numeric_state
477 | entity_id: sensor.maximaler_ueberschuss_fuer_akkuladung_watt
478 | below: 1
479 | sequence:
480 | - service: input_select.select_option
481 | metadata: {}
482 | data:
483 | option: Akku Automatisch
484 | target:
485 | entity_id: input_select.akkusteuerung_sma_wr
486 | - service: input_boolean.turn_off
487 | target:
488 | entity_id:
489 | - input_boolean.hausakku_aus_netz_laden
490 | - input_boolean.hausakku_wurde_netzgeladen
491 | data: {}
492 | alias: >-
493 | Wenn der PV-Ertrag gut wird Akku Automatisch und Ladung
494 | freigeben (ohne PV)
495 | - conditions:
496 | - condition: numeric_state
497 | entity_id: >-
498 | sensor.solcast_pv_forecast_prognose_verbleibende_leistung_heute
499 | above: 10
500 | - condition: sun
501 | before: sunset
502 | after: sunrise
503 | sequence:
504 | - service: input_select.select_option
505 | metadata: {}
506 | data:
507 | option: Akku Automatisch
508 | target:
509 | entity_id: input_select.akkusteuerung_sma_wr
510 | enabled: false
511 | - service: input_boolean.turn_off
512 | target:
513 | entity_id:
514 | - input_boolean.hausakku_aus_netz_laden
515 | - input_boolean.hausakku_wurde_netzgeladen
516 | data: {}
517 | enabled: false
518 | - conditions:
519 | - condition: or
520 | conditions:
521 | - condition: numeric_state
522 | entity_id: sensor.solcast_pv_forecast_prognose_morgen
523 | above: 25
524 | - condition: numeric_state
525 | entity_id: >-
526 | sensor.solcast_pv_forecast_prognose_verbleibende_leistung_heute
527 | above: 25
528 | sequence:
529 | - service: input_boolean.turn_off
530 | target:
531 | entity_id: input_boolean.speicher_eco_netzladen
532 | data: {}
533 | - service: input_number.set_value
534 | data:
535 | value: >-
536 | {{ states('sensor.electricity_price_musterstrasse_123')|
537 | float(0) }}
538 | target:
539 | entity_id: input_number.ladepreis
540 | alias: Ladepreis Helfer nach aktuellem Strompreis
541 | - service: input_select.select_option
542 | metadata: {}
543 | data:
544 | option: Akku Automatisch
545 | target:
546 | entity_id: input_select.akkusteuerung_sma_wr
547 | enabled: true
548 | mode: single
549 |
--------------------------------------------------------------------------------
/sma-se-akku-steuerung.yaml:
--------------------------------------------------------------------------------
1 | alias: Akkusteuerung
2 | description: ""
3 | trigger:
4 | - platform: state
5 | entity_id:
6 | - input_select.akkusteuerung_sma_wr
7 | - input_number.akkusteuerung_ladestaerke_soll
8 | - input_number.akkusteuerung_entladestaerke_soll
9 | from: null
10 | to: null
11 | for:
12 | hours: 0
13 | minutes: 0
14 | seconds: 1
15 | - platform: time_pattern
16 | minutes: /30
17 | enabled: true
18 | - platform: homeassistant
19 | event: start
20 | condition: []
21 | action:
22 | - alias: Wenn Akku schnell Laden ...
23 | if:
24 | - condition: state
25 | entity_id: input_select.akkusteuerung_sma_wr
26 | state: Akku schnell Laden
27 | then:
28 | - service: modbus.write_register
29 | data:
30 | hub: sma-sr_wr
31 | address: 40151
32 | slave: 3
33 | value:
34 | - 0
35 | - 802
36 | - delay:
37 | hours: 0
38 | minutes: 0
39 | seconds: 5
40 | milliseconds: 0
41 | - service: modbus.write_register
42 | data:
43 | hub: sma-sr_wr
44 | address: 40149
45 | slave: 3
46 | value:
47 | - 65535
48 | - >-
49 | {{ 65535 - states('input_number.akkusteuerung_ladestaerke_soll') |
50 | int }}
51 | - alias: Wenn Akku schnell Entaden ...
52 | if:
53 | - condition: state
54 | entity_id: input_select.akkusteuerung_sma_wr
55 | state: Akku schnell Entladen
56 | then:
57 | - service: modbus.write_register
58 | data:
59 | hub: sma-sr_wr
60 | address: 40151
61 | slave: 3
62 | value:
63 | - 0
64 | - 802
65 | - delay:
66 | hours: 0
67 | minutes: 0
68 | seconds: 5
69 | milliseconds: 0
70 | - service: modbus.write_register
71 | data:
72 | hub: sma-sr_wr
73 | address: 40149
74 | slave: 3
75 | value:
76 | - 0
77 | - >-
78 | {{ states('input_number.akkusteuerung_entladestaerke_soll') |
79 | int }}
80 | - alias: Wenn Akku Pause ...
81 | if:
82 | - condition: state
83 | entity_id: input_select.akkusteuerung_sma_wr
84 | state: Akku Pause
85 | then:
86 | - service: modbus.write_register
87 | data:
88 | hub: sma-sr_wr
89 | address: 40151
90 | slave: 3
91 | value:
92 | - 0
93 | - 802
94 | - delay:
95 | hours: 0
96 | minutes: 0
97 | seconds: 5
98 | milliseconds: 0
99 | - service: modbus.write_register
100 | data:
101 | hub: sma-sr_wr
102 | address: 40149
103 | slave: 3
104 | value:
105 | - 0
106 | - 0
107 | - if:
108 | - condition: state
109 | entity_id: input_select.akkusteuerung_sma_wr
110 | state: Akku Automatisch
111 | then:
112 | - service: modbus.write_register
113 | data:
114 | hub: sma-sr_wr
115 | address: 40151
116 | slave: 3
117 | value:
118 | - 0
119 | - 803
120 | alias: Wenn Akku Automatik
121 | - alias: Wenn Akku 0.2C Laden
122 | if:
123 | - condition: state
124 | entity_id: input_select.akkusteuerung_sma_wr
125 | state: Akku 0.2C Laden
126 | then:
127 | - service: modbus.write_register
128 | data:
129 | hub: sma-sr_wr
130 | address: 40151
131 | slave: 3
132 | value:
133 | - 0
134 | - 802
135 | - delay:
136 | hours: 0
137 | minutes: 0
138 | seconds: 5
139 | milliseconds: 0
140 | - service: modbus.write_register
141 | data:
142 | hub: sma-sr_wr
143 | address: 40149
144 | slave: 3
145 | value:
146 | - 65535
147 | - >-
148 | {{ 65535 - states('input_number.akkusteuerung_02c_ladestaerke') |
149 | int }}
150 | mode: single
151 |
--------------------------------------------------------------------------------