Ich möchte eine Automatisierung erstellen, die meine Heizung morgens zwischen 4 und 8 Uhr einschaltet. Ich habe einen dynamischen Energievertrag. Aktuell nutze ich NordPool, um die Preise einzusehen. Wie kann ich eine Automatisierung erstellen, die den niedrigsten Preis zwischen 4 und 8 Uhr ermittelt, damit die Heizung zu diesem Zeitpunkt eingeschaltet wird?
Wie bzw. in welchem Format stehen denn die kommenden Preise in HA zu Verfügung?
Gruß, Lars
Ich möchte die Daten aus der Nordpool-Integration abrufen.
Anhand des Beispielcodes von → hier, könnte man das in etwa so lösen:
# ============================================================================
# Nord Pool - Günstigster Preis zwischen 4-8 Uhr (Developer-Beispiel)
# ============================================================================
# Basierend auf dem offiziellen Entwickler-Beispiel der Nord Pool Integration
# ============================================================================
template:
- trigger:
# Prüfe alle 10 Minuten + beim Start von Home Assistant
- trigger: time_pattern
minutes: /10
- trigger: homeassistant
event: start
action:
# Hole die Preise für HEUTE
- action: nordpool.get_prices_for_date
data:
config_entry: "01JEDAR1YEHJ6DZ376MP24MRDG" # ← DEINE CONFIG_ENTRY!
date: "{{ now().date() }}" # HEUTE
areas: SE3 # ← DEINE REGION! (z.B. SE3, SE1, NO1, DK1, etc.)
currency: SEK # ← DEINE WÄHRUNG! (SEK, EUR, NOK, DKK, etc.)
response_variable: today_price
sensor:
# ========================================================================
# SENSOR 1: Günstigster Preis zwischen 4-8 Uhr
# ========================================================================
- name: "Nord Pool Günstigster Preis 4-8 Uhr"
unique_id: "nordpool_cheapest_4_8_hours"
unit_of_measurement: "SEK/kWh" # ← DEINE WÄHRUNG!
state_class: measurement
state: >
{% set data = namespace(prices=[]) %}
{% for state in today_price['SE3'][4:8] %}
{% set data.prices = data.prices + [(state.price / 1000)] %}
{% endfor %}
{{ min(data.prices) | round(3) if data.prices else 'N/A' }}
attributes:
# Stunde mit günstigstem Preis
cheapest_hour: >
{% set data = namespace(prices=[], hours=[]) %}
{% for state in today_price['SE3'][4:8] %}
{% set data.prices = data.prices + [(state.price / 1000)] %}
{% set data.hours = data.hours + [state.start[11:16]] %}
{% endfor %}
{% if data.prices %}
{% set min_price = min(data.prices) %}
{% set min_index = data.prices.index(min_price) %}
{{ data.hours[min_index] }}
{% else %}
N/A
{% endif %}
# Alle Preise 4-8 Uhr (formatiert)
prices_4_8: >
{% set data = namespace(prices=[]) %}
{% for state in today_price['SE3'][4:8] %}
{% set data.prices = data.prices + [
{
'hour': state.start[11:16],
'price': (state.price / 1000) | round(3)
}
] %}
{% endfor %}
{{ data.prices }}
# Maximaler Preis in diesem Zeitraum
max_price_4_8: >
{% set data = namespace(prices=[]) %}
{% for state in today_price['SE3'][4:8] %}
{% set data.prices = data.prices + [(state.price / 1000)] %}
{% endfor %}
{{ max(data.prices) | round(3) if data.prices else 'N/A' }}
# ========================================================================
# SENSOR 2: Alle Preise heute (optional, für Übersicht)
# ========================================================================
- name: "Nord Pool Alle Preise Heute"
unique_id: "nordpool_all_prices_today"
state: "{{ now().strftime('%Y-%m-%d') }}"
attributes:
all_prices: >
{% set data = namespace(prices=[]) %}
{% for state in today_price['SE3'] %}
{% set data.prices = data.prices + [
{
'hour': state.start[11:16],
'price': (state.price / 1000) | round(3)
}
] %}
{% endfor %}
{{ data.prices }}
# ========================================================================
# AUTOMATION: Gerät einschalten zur günstigsten Stunde
# ========================================================================
automation:
- alias: "Nord Pool - Gerät zur günstigsten Stunde (4-8 Uhr) einschalten"
description: "Schaltet ein Gerät zur günstigsten Stunde zwischen 4-8 Uhr ein"
trigger:
- platform: template
value_template: >
{% set cheapest_hour = state_attr('sensor.nord_pool_guenstigster_preis_4_8_uhr', 'cheapest_hour') %}
{% set current_time = now().strftime('%H:%M') %}
{{ cheapest_hour == current_time }}
condition: []
action:
# Schalte dein Gerät ein
- service: switch.turn_on
target:
entity_id: "switch.dein_geraet" # ← HIER ANPASSEN!
# Benachrichtigung
- service: notify.persistent_notification
data:
title: "⚡ Günstigster Strompreis aktiv!"
message: >
Die günstigste Stunde zwischen 4-8 Uhr ist jetzt:
{{ state_attr('sensor.nord_pool_guenstigster_preis_4_8_uhr', 'cheapest_hour') }}
Preis: {{ states('sensor.nord_pool_guenstigster_preis_4_8_uhr') }} SEK/kWh
mode: single
max_exceeded: silent
# ========================================================================
# OPTIONAL: Automation für Benachrichtigung um 23:00 Uhr
# (Zeigt den günstigsten Preis für den nächsten Tag an)
# ========================================================================
automation:
- alias: "Nord Pool - Tägliche Preisübersicht (nächster Tag)"
description: "Zeigt die günstigsten Preise für den kommenden Tag"
trigger:
- platform: time
at: "23:00:00"
action:
- service: notify.persistent_notification
data:
title: "📊 Morgens günstigste Stunde (4-8 Uhr)"
message: >
Preis: {{ states('sensor.nord_pool_guenstigster_preis_4_8_uhr') }} SEK/kWh
Stunde: {{ state_attr('sensor.nord_pool_guenstigster_preis_4_8_uhr', 'cheapest_hour') }}
mode: single
1 „Gefällt mir“