Home Assistant: EVCC-Daten zu dynamischen Strompreisen auslesen, visualisieren und damit rechnen

Verwandle dein Smart Home mit dynamischen Strompreisen! In diesem Video zeigen wir dir, wie du mit Home Assistant und EVCC nicht nur die aktuellen Strompreise ausliest, sondern auch visualisierst und clever damit rechnest. Spare bares Geld und optimiere deinen Energieverbrauch – jetzt reinschauen und profitieren! Plus: Erfahre alles über eine exklusive Bonusautomatisierung, die dir noch mehr Effizienz bringt! 💡🔌💸

Wenn du mehr über EVCC kennenlernen willst, dann findest du hier weitere nützliche Informationen.

Aus meiner Sicht ist EVCC nicht nur eine Managementsoftware für eure Wallbox und Elektroauto. Mit EVCC könnt ihr unabhängig von der Schnittstelle eures Wechselrichters, Batteriespeichers, dynamischen Stromanbieter etc… auf aufbereiteten Daten agieren und diese für tolle Automatisierungen und Visualisierungen in Home Assistant nutzen.

Ich möchte euch heute einen allgemeinen Amazon-Link teilen, über den ihr eine Vielzahl von Produkten entdecken könnt. Egal, ob ihr nach Smart Home-Geräten, Gadgets oder anderen nützlichen Artikeln sucht, Amazon hat für jeden etwas zu bieten.

Wenn ihr über diesen Link einkauft, unterstützt ihr meinen Kanal, ohne dass es für euch zusätzliche Kosten verursacht. Das hilft mir, weiterhin spannende Inhalte für euch zu erstellen!

Hier ist der Link zu Amazon: https://amzn.to/3KsGngK

https://amzn.to/3KsGngK

Um die Inhalte besser verstehen zu können, empfehle ich euch folgende Videos ebenfalls anzuschauen:

YouTube player
Hier erfährst du in wenigen Minuten, wie man HACS installiert.
YouTube player
Basisinstallation der Software EVCC
YouTube player
In diesem Video zeige ich euch, wie man mit Home Assistant aus den Daten von EVCC MQTT Sensoren erstellt.

Links , in denen ihr weitere Informationen findet:

Restful Sensor in der Configuration.yaml

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sensor:
- platform: rest
name: EVCC Tariff Forecast
unique_id: evcc_tariff_forecast
resource: http://192.168.101.3:7070/api/tariff/grid
value_template: "{{value_json.result.rates[0].price}}"
json_attributes:
- result
scan_interval: 60
sensor: - platform: rest name: EVCC Tariff Forecast unique_id: evcc_tariff_forecast resource: http://192.168.101.3:7070/api/tariff/grid value_template: "{{value_json.result.rates[0].price}}" json_attributes: - result scan_interval: 60
sensor:

  - platform: rest
    name: EVCC Tariff Forecast
    unique_id: evcc_tariff_forecast
    resource: http://192.168.101.3:7070/api/tariff/grid
    value_template: "{{value_json.result.rates[0].price}}"
    json_attributes:
       - result
    scan_interval: 60

Template Helfer : sensor.evcc_tibber_forecast_max_value_today

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{state_attr('sensor.evcc_tariff_forecast', 'result')['rates'] | selectattr('start', 'ge', now().strftime('%Y-%m-%dT00:00:00%z')) | selectattr('start','lt', now().strftime('%Y-%m-%dT23:59:59%z')) | map(attribute='price') | max }}
{{state_attr('sensor.evcc_tariff_forecast', 'result')['rates'] | selectattr('start', 'ge', now().strftime('%Y-%m-%dT00:00:00%z')) | selectattr('start','lt', now().strftime('%Y-%m-%dT23:59:59%z')) | map(attribute='price') | max }}
{{state_attr('sensor.evcc_tariff_forecast', 'result')['rates'] | selectattr('start', 'ge', now().strftime('%Y-%m-%dT00:00:00%z')) | selectattr('start','lt', now().strftime('%Y-%m-%dT23:59:59%z')) | map(attribute='price') | max }}

Template Helfer: evcc_tibber_forecast_min_value_today

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{state_attr('sensor.evcc_tariff_forecast', 'result')['rates'] | selectattr('start', 'ge', now().strftime('%Y-%m-%dT00:00:00%z')) | selectattr('start','lt', now().strftime('%Y-%m-%dT23:59:59%z')) | map(attribute='price') | min }}
{{state_attr('sensor.evcc_tariff_forecast', 'result')['rates'] | selectattr('start', 'ge', now().strftime('%Y-%m-%dT00:00:00%z')) | selectattr('start','lt', now().strftime('%Y-%m-%dT23:59:59%z')) | map(attribute='price') | min }}
{{state_attr('sensor.evcc_tariff_forecast', 'result')['rates'] | selectattr('start', 'ge', now().strftime('%Y-%m-%dT00:00:00%z')) | selectattr('start','lt', now().strftime('%Y-%m-%dT23:59:59%z')) | map(attribute='price') | min }}

Template Helfer: evcc_tibber_forecast_max_value_tomorrow

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{state_attr('sensor.evcc_tariff_forecast', 'result')['rates'] | selectattr('start', 'ge', (now() + timedelta(days=1)).strftime('%Y-%m-%dT00:00:00%z')) | selectattr('start','lt',(now() + timedelta(days=1)).strftime('%Y-%m-%dT23:59:59%z')) | map(attribute='price') | max | default(0) }}
{{state_attr('sensor.evcc_tariff_forecast', 'result')['rates'] | selectattr('start', 'ge', (now() + timedelta(days=1)).strftime('%Y-%m-%dT00:00:00%z')) | selectattr('start','lt',(now() + timedelta(days=1)).strftime('%Y-%m-%dT23:59:59%z')) | map(attribute='price') | max | default(0) }}
{{state_attr('sensor.evcc_tariff_forecast', 'result')['rates'] | selectattr('start', 'ge', (now() + timedelta(days=1)).strftime('%Y-%m-%dT00:00:00%z')) | selectattr('start','lt',(now() + timedelta(days=1)).strftime('%Y-%m-%dT23:59:59%z')) | map(attribute='price') | max | default(0) }}

Template Helfer: evcc_tibber_forecast_min_value_tomorrow

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{{state_attr('sensor.evcc_tariff_forecast', 'result')['rates'] | selectattr('start', 'ge', (now() + timedelta(days=1)).strftime('%Y-%m-%dT00:00:00%z')) | selectattr('start','lt',(now() + timedelta(days=1)).strftime('%Y-%m-%dT23:59:59%z')) | map(attribute='price') | min| default(0) }}
{{state_attr('sensor.evcc_tariff_forecast', 'result')['rates'] | selectattr('start', 'ge', (now() + timedelta(days=1)).strftime('%Y-%m-%dT00:00:00%z')) | selectattr('start','lt',(now() + timedelta(days=1)).strftime('%Y-%m-%dT23:59:59%z')) | map(attribute='price') | min| default(0) }}
{{state_attr('sensor.evcc_tariff_forecast', 'result')['rates'] | selectattr('start', 'ge', (now() + timedelta(days=1)).strftime('%Y-%m-%dT00:00:00%z')) | selectattr('start','lt',(now() + timedelta(days=1)).strftime('%Y-%m-%dT23:59:59%z')) | map(attribute='price') | min| default(0) }}

Für die Visualisierung habe ich die Apex Chart Card aus dem Video ein wenig optimiert. Hier findet ihr die optimierte Variante als Code Beispiel ( die nötigen MQTT Sensoren aus EVCC findet ihr weiter unten ) :

Weitere Infos zum Umgang mit der Apex Chart Card, habe ich in diesem Video erklärt:

YouTube player
Forecastdaten mit Apex Chart Card visualisieren.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
type: custom:apexcharts-card
apex_config:
chart:
height: 268px
all_series_config:
unit: kWh
header:
title: Evcc Tibber Forecast
show: true
standard_format: true
show_states: true
colorize_states: true
graph_span: 2d
span:
start: day
offset: '+0'
now:
show: true
label: Jetzt
yaxis:
- id: kwh
min: 0
apex_config:
tickAmount: 5
- id: header
show: false
series:
- entity: sensor.evcc_tariff_forecast
yaxis_id: kwh
type: area
name: Forecast heute
color: green
data_generator: >
let now = new Date().getTime();
let rates = entity.attributes.result.rates;
let filteredRates = rates.filter(rate => new Date(rate["start"]).getTime()
<= now);
return filteredRates.map(rate => [new Date(rate["start"]).getTime(),
rate["price"]]);
show:
legend_value: false
in_header: false
stroke_width: 4
float_precision: 2
extend_to: false
- entity: sensor.evcc_tariff_forecast
yaxis_id: kwh
type: area
name: Forecast heute (nach Jetzt)
color: yellow
data_generator: >
let now = new Date().getTime()- 3600000;
let rates = entity.attributes.result.rates;
let filteredRates = rates.filter(rate => new Date(rate["start"]).getTime()
> now);
return filteredRates.map(rate => [new Date(rate["start"]).getTime(),
rate["price"]]);
show:
legend_value: false
in_header: false
stroke_width: 4
float_precision: 2
extend_to: false
- entity: sensor.evcc_tariff_grid
color: green
yaxis_id: header
name: Aktueller Preis
unit: ' € '
float_precision: 2
show:
legend_value: true
in_header: true
in_chart: false
- entity: sensor.evcc_tibber_forecast_min_value_today
color: yellow
yaxis_id: header
name: Min(heute)
unit: ' € '
float_precision: 2
show:
legend_value: true
in_header: true
in_chart: false
- entity: sensor.evcc_tibber_forecast_max_value_today
color: yellow
yaxis_id: header
name: Max(heute)
unit: ' € '
float_precision: 2
show:
legend_value: true
in_header: true
in_chart: false
- entity: sensor.evcc_tibber_forecast_min_value_tomorrow
color: yellow
yaxis_id: header
name: Min(morgen)
unit: ' € '
float_precision: 2
show:
legend_value: true
in_header: true
in_chart: false
- entity: sensor.evcc_tibber_forecast_max_value_tomorrow
color: yellow
yaxis_id: header
name: Max(morgen)
unit: ' € '
float_precision: 2
show:
legend_value: true
in_header: true
in_chart: false
type: custom:apexcharts-card apex_config: chart: height: 268px all_series_config: unit: kWh header: title: Evcc Tibber Forecast show: true standard_format: true show_states: true colorize_states: true graph_span: 2d span: start: day offset: '+0' now: show: true label: Jetzt yaxis: - id: kwh min: 0 apex_config: tickAmount: 5 - id: header show: false series: - entity: sensor.evcc_tariff_forecast yaxis_id: kwh type: area name: Forecast heute color: green data_generator: > let now = new Date().getTime(); let rates = entity.attributes.result.rates; let filteredRates = rates.filter(rate => new Date(rate["start"]).getTime() <= now); return filteredRates.map(rate => [new Date(rate["start"]).getTime(), rate["price"]]); show: legend_value: false in_header: false stroke_width: 4 float_precision: 2 extend_to: false - entity: sensor.evcc_tariff_forecast yaxis_id: kwh type: area name: Forecast heute (nach Jetzt) color: yellow data_generator: > let now = new Date().getTime()- 3600000; let rates = entity.attributes.result.rates; let filteredRates = rates.filter(rate => new Date(rate["start"]).getTime() > now); return filteredRates.map(rate => [new Date(rate["start"]).getTime(), rate["price"]]); show: legend_value: false in_header: false stroke_width: 4 float_precision: 2 extend_to: false - entity: sensor.evcc_tariff_grid color: green yaxis_id: header name: Aktueller Preis unit: ' € ' float_precision: 2 show: legend_value: true in_header: true in_chart: false - entity: sensor.evcc_tibber_forecast_min_value_today color: yellow yaxis_id: header name: Min(heute) unit: ' € ' float_precision: 2 show: legend_value: true in_header: true in_chart: false - entity: sensor.evcc_tibber_forecast_max_value_today color: yellow yaxis_id: header name: Max(heute) unit: ' € ' float_precision: 2 show: legend_value: true in_header: true in_chart: false - entity: sensor.evcc_tibber_forecast_min_value_tomorrow color: yellow yaxis_id: header name: Min(morgen) unit: ' € ' float_precision: 2 show: legend_value: true in_header: true in_chart: false - entity: sensor.evcc_tibber_forecast_max_value_tomorrow color: yellow yaxis_id: header name: Max(morgen) unit: ' € ' float_precision: 2 show: legend_value: true in_header: true in_chart: false
type: custom:apexcharts-card
apex_config:
  chart:
    height: 268px
all_series_config:
  unit: kWh
header:
  title: Evcc Tibber Forecast
  show: true
  standard_format: true
  show_states: true
  colorize_states: true
graph_span: 2d
span:
  start: day
  offset: '+0'
now:
  show: true
  label: Jetzt
yaxis:
  - id: kwh
    min: 0
    apex_config:
      tickAmount: 5
  - id: header
    show: false
series:
  - entity: sensor.evcc_tariff_forecast
    yaxis_id: kwh
    type: area
    name: Forecast heute
    color: green
    data_generator: >
      let now = new Date().getTime();

      let rates = entity.attributes.result.rates;

      let filteredRates = rates.filter(rate => new Date(rate["start"]).getTime()
      <= now);

      return filteredRates.map(rate => [new Date(rate["start"]).getTime(),
      rate["price"]]);
    show:
      legend_value: false
      in_header: false
    stroke_width: 4
    float_precision: 2
    extend_to: false
  - entity: sensor.evcc_tariff_forecast
    yaxis_id: kwh
    type: area
    name: Forecast heute (nach Jetzt)
    color: yellow
    data_generator: >
      let now = new Date().getTime()- 3600000;

      let rates = entity.attributes.result.rates;

      let filteredRates = rates.filter(rate => new Date(rate["start"]).getTime()
      > now);

      return filteredRates.map(rate => [new Date(rate["start"]).getTime(),
      rate["price"]]);
    show:
      legend_value: false
      in_header: false
    stroke_width: 4
    float_precision: 2
    extend_to: false
  - entity: sensor.evcc_tariff_grid
    color: green
    yaxis_id: header
    name: Aktueller Preis
    unit: ' € '
    float_precision: 2
    show:
      legend_value: true
      in_header: true
      in_chart: false
  - entity: sensor.evcc_tibber_forecast_min_value_today
    color: yellow
    yaxis_id: header
    name: Min(heute)
    unit: ' € '
    float_precision: 2
    show:
      legend_value: true
      in_header: true
      in_chart: false
  - entity: sensor.evcc_tibber_forecast_max_value_today
    color: yellow
    yaxis_id: header
    name: Max(heute)
    unit: ' € '
    float_precision: 2
    show:
      legend_value: true
      in_header: true
      in_chart: false
  - entity: sensor.evcc_tibber_forecast_min_value_tomorrow
    color: yellow
    yaxis_id: header
    name: Min(morgen)
    unit: ' € '
    float_precision: 2
    show:
      legend_value: true
      in_header: true
      in_chart: false
  - entity: sensor.evcc_tibber_forecast_max_value_tomorrow
    color: yellow
    yaxis_id: header
    name: Max(morgen)
    unit: ' € '
    float_precision: 2
    show:
      legend_value: true
      in_header: true
      in_chart: false

Alle diese Daten habe ich auch aus EVCC extrahiert. Hier findet ihr die nötigen MQTT-Sensoren:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mqtt:
sensor:
- name: "EVCC Grid Power"
unique_id: evcc_grid_power
state_topic: "evcc/site/gridPower"
unit_of_measurement: "W"
availability_topic: "evcc/status"
- name: "EVCC PV Power"
unique_id: evcc_pv_power
state_topic: "evcc/site/pvPower"
#value_template: "{{ value | round(1) }}"
unit_of_measurement: "W"
availability_topic: "evcc/status"
- name: "EVCC Tariff Grid"
unique_id: evcc_tariff_grid
state_topic: "evcc/site/tariffGrid"
unit_of_measurement: "EUR/kWh"
availability_topic: "evcc/status"
- name: "EVCC Tariff Feed In"
unique_id: 3bd64d9d-0e8d-41ad-9db3-b0a4774120c1
state_topic: "evcc/site/tariffFeedIn"
unit_of_measurement: "EUR/kWh"
availability_topic: "evcc/status"
- name: "EVCC geladen an Wallbox"
unique_id: evcc_geladen_an_Wallbox
state_topic: "evcc/site/statistics/total/chargedKWh"
unit_of_measurement: "kWh"
availability_topic: "evcc/status"
device_class: energy
state_class: total_increasing
- name: "EVCC Hausverbrauch"
unique_id: evcc_hausverbrauch
state_topic: "evcc/site/homePower"
unit_of_measurement: "W"
availability_topic: "evcc/status"
- name: "EVCC Battery Power"
unique_id: evcc_battery_Power
state_topic: "evcc/site/batteryPower"
unit_of_measurement: "W"
availability_topic: "evcc/status"
mqtt: sensor: - name: "EVCC Grid Power" unique_id: evcc_grid_power state_topic: "evcc/site/gridPower" unit_of_measurement: "W" availability_topic: "evcc/status" - name: "EVCC PV Power" unique_id: evcc_pv_power state_topic: "evcc/site/pvPower" #value_template: "{{ value | round(1) }}" unit_of_measurement: "W" availability_topic: "evcc/status" - name: "EVCC Tariff Grid" unique_id: evcc_tariff_grid state_topic: "evcc/site/tariffGrid" unit_of_measurement: "EUR/kWh" availability_topic: "evcc/status" - name: "EVCC Tariff Feed In" unique_id: 3bd64d9d-0e8d-41ad-9db3-b0a4774120c1 state_topic: "evcc/site/tariffFeedIn" unit_of_measurement: "EUR/kWh" availability_topic: "evcc/status" - name: "EVCC geladen an Wallbox" unique_id: evcc_geladen_an_Wallbox state_topic: "evcc/site/statistics/total/chargedKWh" unit_of_measurement: "kWh" availability_topic: "evcc/status" device_class: energy state_class: total_increasing - name: "EVCC Hausverbrauch" unique_id: evcc_hausverbrauch state_topic: "evcc/site/homePower" unit_of_measurement: "W" availability_topic: "evcc/status" - name: "EVCC Battery Power" unique_id: evcc_battery_Power state_topic: "evcc/site/batteryPower" unit_of_measurement: "W" availability_topic: "evcc/status"
mqtt: 

  sensor:
   - name: "EVCC Grid Power"
     unique_id: evcc_grid_power
     state_topic: "evcc/site/gridPower"
     unit_of_measurement: "W"
     availability_topic: "evcc/status"
     
   - name: "EVCC PV Power"
     unique_id: evcc_pv_power
     state_topic: "evcc/site/pvPower"
     #value_template: "{{ value | round(1) }}"
     unit_of_measurement: "W"
     availability_topic: "evcc/status"
     
   - name: "EVCC Tariff Grid"
     unique_id: evcc_tariff_grid
     state_topic: "evcc/site/tariffGrid"
     unit_of_measurement: "EUR/kWh"
     availability_topic: "evcc/status"

   - name: "EVCC Tariff Feed In"
     unique_id: 3bd64d9d-0e8d-41ad-9db3-b0a4774120c1
     state_topic: "evcc/site/tariffFeedIn"
     unit_of_measurement: "EUR/kWh"
     availability_topic: "evcc/status"
     
   - name: "EVCC geladen an Wallbox"
     unique_id: evcc_geladen_an_Wallbox
     state_topic: "evcc/site/statistics/total/chargedKWh"
     unit_of_measurement: "kWh"
     availability_topic: "evcc/status"
     device_class: energy
     state_class: total_increasing

   - name: "EVCC Hausverbrauch"
     unique_id: evcc_hausverbrauch
     state_topic: "evcc/site/homePower"
     unit_of_measurement: "W"
     availability_topic: "evcc/status"
     
   - name: "EVCC Battery Power"
     unique_id: evcc_battery_Power
     state_topic: "evcc/site/batteryPower"
     unit_of_measurement: "W"
     availability_topic: "evcc/status"

Bonus shell_command Sensor für das Deaktivieren der EVCC Batteriemanagement Funktion über die REST API von EVCC in der Configuration.yaml

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
shell_command:
batterie_aus: curl -X POST http://192.168.101.3:7070/api/batterydischargecontrol/false
batterie_an: curl -X POST http://192.168.101.3:7070/api/batterydischargecontrol/true
shell_command: batterie_aus: curl -X POST http://192.168.101.3:7070/api/batterydischargecontrol/false batterie_an: curl -X POST http://192.168.101.3:7070/api/batterydischargecontrol/true
shell_command:
  batterie_aus: curl -X POST http://192.168.101.3:7070/api/batterydischargecontrol/false
  batterie_an: curl -X POST http://192.168.101.3:7070/api/batterydischargecontrol/true

Automatisierung , um bei sehr günstigem Strompreis ( Preis liegt unter der Einspeisevergütung) den Batteriespeicher zu laden:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
alias: Speicher Laden und abschalten, da so günstiger
description: ""
trigger:
- platform: numeric_state
entity_id:
- sensor.evcc_tariff_grid
below: sensor.evcc_tariff_feed_in
id: Es ist günstiger aus dem Netz zu beziehen
- platform: numeric_state
entity_id:
- sensor.evcc_tariff_grid
id: Es ist teurer aus dem Netz zu beziehen
above: sensor.evcc_tariff_feed_in
- platform: numeric_state
entity_id:
- sensor.evcc_battery_soc
above: 99
id: Speicher hat 100 % erreicht
condition:
- condition: time
after: "06:00:00"
before: "20:00:00"
action:
- choose:
- conditions:
- condition: trigger
id:
- Es ist günstiger aus dem Netz zu beziehen
sequence:
- service: shell_command.batterie_aus
metadata: {}
data: {}
- device_id: 1659e926aef842a56f4fc8960bf10ca1
domain: select
entity_id: 6427b7e3fd03320c47261c2767cc0c41
type: select_option
option: Charge from Solar Power and Grid
- delay:
hours: 0
minutes: 0
seconds: 10
milliseconds: 0
- device_id: 1659e926aef842a56f4fc8960bf10ca1
domain: number
entity_id: cedb1c19907bf5f26d82807c7a46b72e
type: set_value
value: 36000
- conditions:
- condition: trigger
id:
- Es ist teurer aus dem Netz zu beziehen
sequence:
- service: shell_command.batterie_an
metadata: {}
data: {}
- device_id: 1659e926aef842a56f4fc8960bf10ca1
domain: select
entity_id: 6427b7e3fd03320c47261c2767cc0c41
type: select_option
option: Maximize Self Consumption
- delay:
hours: 0
minutes: 0
seconds: 10
milliseconds: 0
- device_id: 1659e926aef842a56f4fc8960bf10ca1
domain: number
entity_id: cedb1c19907bf5f26d82807c7a46b72e
type: set_value
value: 3600
- conditions:
- condition: and
conditions:
- condition: trigger
id:
- Speicher hat 100 % erreicht
- condition: numeric_state
entity_id: sensor.evcc_tariff_grid
below: sensor.evcc_tariff_feed_in
sequence:
- device_id: 1659e926aef842a56f4fc8960bf10ca1
domain: select
entity_id: 6427b7e3fd03320c47261c2767cc0c41
type: select_option
option: Solar Power Only (Off)
- delay:
hours: 0
minutes: 0
seconds: 10
milliseconds: 0
- device_id: 1659e926aef842a56f4fc8960bf10ca1
domain: number
entity_id: cedb1c19907bf5f26d82807c7a46b72e
type: set_value
value: 36000
mode: single
alias: Speicher Laden und abschalten, da so günstiger description: "" trigger: - platform: numeric_state entity_id: - sensor.evcc_tariff_grid below: sensor.evcc_tariff_feed_in id: Es ist günstiger aus dem Netz zu beziehen - platform: numeric_state entity_id: - sensor.evcc_tariff_grid id: Es ist teurer aus dem Netz zu beziehen above: sensor.evcc_tariff_feed_in - platform: numeric_state entity_id: - sensor.evcc_battery_soc above: 99 id: Speicher hat 100 % erreicht condition: - condition: time after: "06:00:00" before: "20:00:00" action: - choose: - conditions: - condition: trigger id: - Es ist günstiger aus dem Netz zu beziehen sequence: - service: shell_command.batterie_aus metadata: {} data: {} - device_id: 1659e926aef842a56f4fc8960bf10ca1 domain: select entity_id: 6427b7e3fd03320c47261c2767cc0c41 type: select_option option: Charge from Solar Power and Grid - delay: hours: 0 minutes: 0 seconds: 10 milliseconds: 0 - device_id: 1659e926aef842a56f4fc8960bf10ca1 domain: number entity_id: cedb1c19907bf5f26d82807c7a46b72e type: set_value value: 36000 - conditions: - condition: trigger id: - Es ist teurer aus dem Netz zu beziehen sequence: - service: shell_command.batterie_an metadata: {} data: {} - device_id: 1659e926aef842a56f4fc8960bf10ca1 domain: select entity_id: 6427b7e3fd03320c47261c2767cc0c41 type: select_option option: Maximize Self Consumption - delay: hours: 0 minutes: 0 seconds: 10 milliseconds: 0 - device_id: 1659e926aef842a56f4fc8960bf10ca1 domain: number entity_id: cedb1c19907bf5f26d82807c7a46b72e type: set_value value: 3600 - conditions: - condition: and conditions: - condition: trigger id: - Speicher hat 100 % erreicht - condition: numeric_state entity_id: sensor.evcc_tariff_grid below: sensor.evcc_tariff_feed_in sequence: - device_id: 1659e926aef842a56f4fc8960bf10ca1 domain: select entity_id: 6427b7e3fd03320c47261c2767cc0c41 type: select_option option: Solar Power Only (Off) - delay: hours: 0 minutes: 0 seconds: 10 milliseconds: 0 - device_id: 1659e926aef842a56f4fc8960bf10ca1 domain: number entity_id: cedb1c19907bf5f26d82807c7a46b72e type: set_value value: 36000 mode: single
alias: Speicher Laden und abschalten, da so günstiger
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - sensor.evcc_tariff_grid
    below: sensor.evcc_tariff_feed_in
    id: Es ist günstiger aus dem Netz zu beziehen
  - platform: numeric_state
    entity_id:
      - sensor.evcc_tariff_grid
    id: Es ist teurer aus dem Netz zu beziehen
    above: sensor.evcc_tariff_feed_in
  - platform: numeric_state
    entity_id:
      - sensor.evcc_battery_soc
    above: 99
    id: Speicher hat 100 % erreicht
condition:
  - condition: time
    after: "06:00:00"
    before: "20:00:00"
action:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - Es ist günstiger aus dem Netz zu beziehen
        sequence:
          - service: shell_command.batterie_aus
            metadata: {}
            data: {}
          - device_id: 1659e926aef842a56f4fc8960bf10ca1
            domain: select
            entity_id: 6427b7e3fd03320c47261c2767cc0c41
            type: select_option
            option: Charge from Solar Power and Grid
          - delay:
              hours: 0
              minutes: 0
              seconds: 10
              milliseconds: 0
          - device_id: 1659e926aef842a56f4fc8960bf10ca1
            domain: number
            entity_id: cedb1c19907bf5f26d82807c7a46b72e
            type: set_value
            value: 36000
      - conditions:
          - condition: trigger
            id:
              - Es ist teurer aus dem Netz zu beziehen
        sequence:
          - service: shell_command.batterie_an
            metadata: {}
            data: {}
          - device_id: 1659e926aef842a56f4fc8960bf10ca1
            domain: select
            entity_id: 6427b7e3fd03320c47261c2767cc0c41
            type: select_option
            option: Maximize Self Consumption
          - delay:
              hours: 0
              minutes: 0
              seconds: 10
              milliseconds: 0
          - device_id: 1659e926aef842a56f4fc8960bf10ca1
            domain: number
            entity_id: cedb1c19907bf5f26d82807c7a46b72e
            type: set_value
            value: 3600
      - conditions:
          - condition: and
            conditions:
              - condition: trigger
                id:
                  - Speicher hat 100 % erreicht
              - condition: numeric_state
                entity_id: sensor.evcc_tariff_grid
                below: sensor.evcc_tariff_feed_in
        sequence:
          - device_id: 1659e926aef842a56f4fc8960bf10ca1
            domain: select
            entity_id: 6427b7e3fd03320c47261c2767cc0c41
            type: select_option
            option: Solar Power Only (Off)
          - delay:
              hours: 0
              minutes: 0
              seconds: 10
              milliseconds: 0
          - device_id: 1659e926aef842a56f4fc8960bf10ca1
            domain: number
            entity_id: cedb1c19907bf5f26d82807c7a46b72e
            type: set_value
            value: 36000
mode: single

Viel Spaß 🙂

Wenn ihr ebenfalls noch Automatisierungsideen oder Lösungen in diesem Zusammenhang habt, kommt gerne auf meinen Discord Server und präsentiert dort eure Lösung.