Einschalen niedrigste Preis zwichen 2 Uhrzeiten

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“