Home Assistant Tibber Preise

Hier eine kleine Anleitung wie man bei Home Assistant eine Grafik für die Strompreise der nächsten Tage erstellt.
Leider liefert die Tibber Integration diese Daten nicht, obwohl die Tibber API diese liefert.

Um diese Grafik erstellen zu lassen wird benötigt :

  • HACS
  • ApexCharts zu installieren über HACS
  • Die Tibber Integration
  • Tibber Api Key
  • File Editor Integration
  • Anpassungen an der configuration.yaml für die Sensoren
  • und dann die Grafik erstellen

Auf die HACS Installation werde ich jetzt nicht eingehen, dazu gibt es genügend Anleitungen im Netz

Die Tibber Integration könnt ihr auch ganz einfach über Home Assistant installieren da wird euch dann auch die URL für die Tibber Developer API angezeigt, wo man den Token erstellen kann. Falls ihr das schon gemacht habt, hier nochmal die URL https://developer.tibber.com/settings/access-token

Mittels der Files editor Integration könnt ihr ganz bequem die configuration.yaml editieren.

In dem File erstellen wir ein Paar Sensoren.
Da die Tibber Integration bereits einen Sensor mit eurer Adresse anlegt hab ich die anderen Sensoren auch nach diesem Beispiel erstellt.
Die Tibber Integration gibt euch im einen Sensor gleich mehrere Werte die Ihr damit dann in separate Sensoren exportieren könnt.

Das wäre einmal die min, max und average Preise.
Der Sensor heiß dann eigentlich immer „sensor.electricity_price_ADRESSE“ Adresse ist eure Adresse.
Der erste teil im Platform: Template Bereich nimmt genau diese Preise und erstellt dazu einen eigenen sensor den Ihr dann wieder überall verwenden könnt

Im zweiten Teil bei Platform: rest rufen wir die Tibber Api auf um dort an die Daten für die nächsten tage zu kommen.
Bei Authorization: –>TIBBER-API-KEY-HIER-EINTRAGEN<– Bitte durch Euren Tibber Api Key ersetzen

sensor:
  - platform: template
# Tibber Integration Sensor Splitter
    sensors:
      electricity_price_max_ADRESSE:
        friendly_name: Electricity Max price ADRESSE
        unique_id: sensor.electricity_max_price_ADRESSE
        value_template: "{{ state_attr('sensor.electricity_price_ADRESSE','max_price') }}"
        unit_of_measurement: EUR/kWh
        icon_template: mdi:currency-eur

      electricity_price_min_ADRESSE:
        friendly_name: Electricity Min price ADRESSE
        unique_id: sensor.electricity_min_price_ADRESSE
        value_template: "{{ state_attr('sensor.electricity_price_ADRESSE','min_price') }}"
        unit_of_measurement: EUR/kWh
        icon_template: mdi:currency-eur
        
      electricity_price_avg_ADRESSE:
        friendly_name: Electricity Avg price ADRESSE
        unique_id: sensor.electricity_avg_price_ADRESSE
        value_template: "{{ state_attr('sensor.electricity_price_ADRESSE','avg_price') }}"
        unit_of_measurement: EUR/kWh
        icon_template: mdi:currency-eur

# Tibber API
  - platform: rest
    name: "Electricity price Prognose ADRESSE"
    unique_id: sensor.electricity_price_prognose_ADRESSE
    resource: https://api.tibber.com/v1-beta/gql
    method: POST
    payload: '{ "query": "{ viewer { homes { currentSubscription { status priceInfo { current { total } today { total } tomorrow { total } } } } } }" }'
    json_attributes_path: "$.data.viewer.homes[0].currentSubscription.priceInfo"
    json_attributes:
      - today
      - tomorrow
    value_template: "{{ value_json.data.viewer.homes[0].currentSubscription.priceInfo.current.total | float }}"
    scan_interval: 300
    headers:
      Authorization: -->TIBBER-API-KEY-HIER-EINTRAGEN<--
      Content-Type: application/json
      User-Agent: REST
    unit_of_measurement: EUR/kWh

Wenn die Anpassungen vorgenommen wurden muss einmal Home Assistant neu gestartet werden. Das kann gleich beim File Editor oben rechts beim Zahnrad erledigt werden.

Dann wechsel wir zum Dashbord und erstellen eine neue Karte.
Dort wählen wir dann unter Benutzerdefinierten Karten die ApexCharts-Card aus.

Und in dem Quellcode Bereich ersetzen wir den Inhalt mit diesem.
Auch hier muss wieder bei den Sensoren die ADRESSE durch eure Adresse / Sensor Namen ersetzt werden
Ganz unten gibt es noch die entity: sensor.smd630_energy_today hier könnt ihr euren gemessenen Verbrauch eintragen. Bei mir ist es ein Separater Stromzähler den ich auslese.

type: custom:apexcharts-card
experimental:
  hidden_by_default: true
graph_span: 48h
all_series_config:
  stroke_width: 2
span:
  start: hour
  offset: "-24h"
now:
  show: true
update_interval: 5min
header:
  show: true
  title: Strompreisprognose (€/kWh)
  show_states: true
  colorize_states: true
series:
  - entity: sensor.electricity_price_prognose_ADRESSE
    name: Prognose
    yaxis_id: left
    type: line
    float_precision: 5
    curve: stepline
    unit: €/kWh
    show:
      in_header: false
      extremas: true
      legend_value: false
    data_generator: |
      const noon = new Date()
      noon.setHours(0, 0, 0, 0)
      const prices = entity.attributes.today.concat(entity.attributes.tomorrow);
      const data = [];
      for(let i = 0; i < prices.length; i++) {
        data.push([noon.getTime() + i * 1000 * 3600, prices[i].total])
      }
      return data;
  - entity: sensor.electricity_price_min_ADRESSE
    name: Min Preis
    yaxis_id: left
    type: line
    float_precision: 5
    curve: stepline
    unit: €/kWh
    extend_to: now
    fill_raw: last
    show:
      hidden_by_default: false
      legend_value: false
  - entity: sensor.electricity_price_avg_ADRESSE
    name: Median
    yaxis_id: left
    type: line
    float_precision: 5
    curve: stepline
    unit: €/kWh
    extend_to: now
    fill_raw: last
    show:
      hidden_by_default: true
      legend_value: false
  - entity: sensor.electricity_price_max_ADRESSE
    name: Max Preis
    yaxis_id: left
    type: line
    float_precision: 5
    curve: stepline
    unit: €/kWh
    extend_to: now
    fill_raw: last
    show:
      hidden_by_default: false
      legend_value: false
  - entity: sensor.smd630_energy_today
    curve: stepline
    type: area
    opacity: 0.3
    name: Bezug
    extend_to: now
    show:
      in_header: false
      legend_value: false
    yaxis_id: right
    group_by:
      func: delta
      duration: 1h
      fill: zero
yaxis:
  - id: left
    decimals: 2
    min: 0
  - id: right
    opposite: true
    decimals: 2
    min: 0
    max: 10
    show: false

Und dann habt ihr diese Grafik

Kann man auch auf dem Dashboard als eine große Kachel anzeigen lassen. und mit der Maus sich die Preise anzeigen lassen

Viel Spass beim nachbauen

hier noch ein update.
Legende ausgeblendet.
Linien etwas smoother
Blau Linie sind die vergangen Preise.
Orange Linie die zukünftigen Preise.
Grün Area ist der Verbrauch in kWh.
Und es werden für Vergangenheit und Zukunft die hösten und niedrigsten Preise angezeigt.

type: custom:apexcharts-card
experimental:
  hidden_by_default: true
graph_span: 48h
brush:
  selection_span: 40h
  apex_config: 
    enable: true
    autoScaleYaxis: false
apex_config:
  chart:
    zoom:
      enabled: true
    toolbar:
      show: true
      tools:
        zoom: true
        zoomin: true
        zoomout: true
        pan: true
        reset: true
        download: false
  legend:
     show: false
  stroke:
    show: true
    width: 2
    curve: smooth
all_series_config:
  stroke_width: 2
span:
  start: hour
  offset: "-24h"
now:
  show: true
update_interval: 5min
header:
  show: true
  title: Strompreisprognose (€/kWh)
  show_states: true
  colorize_states: true
series:
  - entity: sensor.electricity_price_prognose_ADRESSE
    yaxis_id: left
    name: Future
    type: line
    float_precision: 5
    curve: stepline
    unit: €/kWh
    show:
      in_header: false
      extremas: true
      legend_value: false
    data_generator: |
      const noon = new Date()
      noon.setHours(0, 0, 0, 0)
      const prices = entity.attributes.today.concat(entity.attributes.tomorrow);
      const data = [];
      for(let i = 0; i < prices.length; i++) {
        data.push([noon.getTime() + i * 1000 * 3600, prices[i].total])
      }
      return data;
  - entity: sensor.electricity_price_ADRESSE
    yaxis_id: left
    name: Past
    type: line
    float_precision: 5
    curve: stepline
    unit: €/kWh
    extend_to: now
    show:
      in_header: false
      extremas: true
      legend_value: false
  - entity: sensor.electricity_price_min_ADRESSE
    yaxis_id: left
    name: Min Preis
    type: line
    float_precision: 5
    curve: stepline
    unit: €/kWh
    extend_to: now
    fill_raw: last
    show:
      hidden_by_default: false
      legend_value: false
  - entity: sensor.electricity_price_avg_ADRESSE
    yaxis_id: left
    name: Avg Preis
    type: line
    float_precision: 5
    curve: stepline
    unit: €/kWh
    extend_to: now
    fill_raw: last
    show:
      hidden_by_default: true
      legend_value: false
  - entity: sensor.electricity_price_max_ADRESSE
    yaxis_id: left
    name: Max Preis
    type: line
    float_precision: 5
    curve: stepline
    unit: €/kWh
    extend_to: now
    fill_raw: last
    show:
      hidden_by_default: false
      legend_value: false
  - entity: sensor.smd630_energy_today
    yaxis_id: right
    name: Bezug
    curve: stepline
    type: area
    opacity: 0.3
    extend_to: now
    show:
      in_header: false
      legend_value: false
    group_by:
      func: delta
      duration: 1h
      fill: zero
yaxis:
  - id: left
    decimals: 2
    min: 0
  - id: right
    opposite: true
    decimals: 2
    min: 0
    show: true

6 Kommentare zu „Home Assistant Tibber Preise

  1. Moin,
    danke für den Beitrag. Ich habe es direkt getestet, aber mir fehlt anscheind noch etwas. Die Meldung lautet:

    Invalid config for ’sensor‘ from integration ‚template‘ at configuration.yaml, line 17: required key ’sensors‘ not provided, please check the docs at https://www.home-assistant.io/integrations/template Invalid config for ’sensor‘ from integration ‚template‘ at configuration.yaml, line 19: ’sensors:sensor.electricity_price_prognose_xyweg_19′ is an invalid option for ‚template.sensor‘, check: sensors:sensor.electricity_price_prognose_xy_19, please check the docs at https://www.home-assistant.io/integrations/template

    Bisher habe ich noch keine Idee, was falsch sein könnte. Hast du einen Tipp?

  2. Hallo Fred,
    das schaut so aus als wäre die Sensor Entität noch nicht erstellt worden.
    Hast du HomeAssistant neugestartet und dann etwas gewartet. Der REST Sensor Code holt die Daten ja nur alle 5 Minuten (300s) ab.
    Eventuell ist im Homeassistant logfile dazu was zu finden.

    grüße

  3. Moin Alexander,
    ich habe ein seltsames Phänomen und verzweifel bald.
    Alle Sensoren wurden angelegt. Die Sensoren „price-prognose“ und „electricity_price_max_“ liefern mir Werte. Diese werden mir auch alle im Apex Chart angezeigt.
    Allerdings bekomme ich keine Werte aus „electricity_price_min_“ und „electricity_price_avg_“ angezeigt. Zustand wird als unknown angezeigt.
    Irgend eine Idee was ich falsch mache?

    Grüße
    Volker

  4. Moin Alexander zum zweiten,
    kaum hatte ich meinen Kommentar geschrieben, da blitzte dann bei mir das Licht auf.
    Wenn man die Sensoren auf den richtigen Bezug setzt (wie bei electricity_price_max_ ja bereits geschehen) – funktionieren natürlich auch die restlichen Sensoren.
    Ist schon ein Problem mit dem Wald und den Bäumen. ;-)
    Danke für das gute scripting und den Apex Chart.

    Grüße
    Volker

  5. Vielen Dank, genau das, was ich gesucht habe. Hat zwar etwas gedauert, bis ich es zum Laufen gebracht habe; ich bin noch recht neu in Home Assistant … Hatte das mit der ADRESSE einfach nicht gecheckt. Bis mir klar wurde, dass der Tibber-Sensor bei mir sensor.tibber_strompreis heißt.
    Alles umgemodelt und nun funktioniert es. Coole Sache.
    Gruß
    Markus

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*