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.
Um die Inhalte besser verstehen zu können, empfehle ich euch folgende Videos ebenfalls anzuschauen:
Links , in denen ihr weitere Informationen findet:
Restful Sensor in der Configuration.yaml
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
{{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
{{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
{{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
{{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:
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:
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
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:
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.