├── 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 | image 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 | image 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 | image 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 | --------------------------------------------------------------------------------