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 der gleich mehrere Werte enthält, die Ihr dann in separate Sensoren aufsplitten könnt.

Bei mir heist der Sensor „sensor.electricity_price_steinmetzstr_12

Unten sehen wir dann die Attribute Max price, Avg price und Min price
Das wäre einmal die Min, Max und Average Preise.

Der erste teil im „platform: template“ Bereich nimmt genau diesen Sensor und holt sich daraus die entsprechenden Attribute und Preise und erstellt dazu einen eigenen sensor den Ihr dann wieder überall verwenden könnt.
Hier bitte electricity_price_max_ADRESSE die ADRESSE mit euren Tibber Sensor Namen ersetzen. Bei mir ist es sensor.electricity_price_max_steinmetzstr_12
Und dann bei allen anderen wo ADRESSE steht das gleiche machen.

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:
# Tibber Integration Sensor Splitter
  - platform: template
    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.
Hier könnt ihr gerne erstmal mittes Sensor Karte die neuen Sensoren suchen.

Diese sollten dann nach ein paar minuten, auch Daten liefern.

Wenn die Sensoren dann daten haben könnt ihr auch dann die Benutzerdefinierte Karte anlegen.
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
also
„- entity: sensor.electricity_price_prognose_ADRESSE“ mit
„- entity: sensor.electricity_price_prognose_steinmetzstr_12
und so weiter.

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öchsten 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

19 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

  6. Ich hätte es gerne probiert, aber als Anfänger erschließt es sich mir nicht so ganz um offen zu sein. Falls du Lust darauf hast es für mehr Leute zugänglich zu machen wäre eine tatsächliche Schritt für Schritt Anleitung sicher hilfreich – vermutlich nicht nur für mich. Viele Grüße

  7. Hallo Dominik,
    danke für das Feedback, kannst du mir vielleicht noch schreiben welche schritte dir fehlen oder wo du mehr Infos bräuchtest?
    Dann kann ich gerne die Tage das noch anpassen.

    Danke und grüße

  8. Hallo Zusammen,
    Ich bin neu in Home Assistant und erst ein paar Tage dabei deshalb noch etwas unsicher. Also ich wie oben beschrieben habe die ersten Sensoren eingerichtet hatte ist etwas kurioses passiert. Meine App hat mit auf einmal einen Meldung rausgeworfen das ich einen extrem hohen Stromverbrauch hätte und gleichzeitig sind alle meine (Pulse) Daten verschwunden. auch konnte ich keine Entitäten mehr einsehen über die Tibber integration. Ist das normal oder habe ich was falsch gemacht? Ein paar Minuten später war dann anscheinend wieder alles ok aber ich würde doch gerne wissen was da passiert ist? Habt Ihr eine Ahnung? ist das normal oder Zufall gewesen?

    Mfg
    Sven (der ängstliche)

  9. Hallo Sven,
    mir ist das noch nicht untergekommen. Aber was mir aufgefallen ist das die Tibber Integration ab und zu keine Daten mehr Sammelt und dann einfach neu geladen werden muss.
    Das kann man manuell machen unter Einstellungen –> Geräte & Dienste –> Tibber –> die … neben den Eintrag –> Neu Laden.
    Die Manuelle REST Implementation hingegen holt sich immer die Daten. Und die custom:apexcharts-card zeigt dann auch die Daten an, lediglich die Daten von der Tibber Integration fehlen dann halt.

    grüße
    Alex

  10. Erstmal vielen Dank für die Mühe!
    Ich finde allerdings den Fehler nicht, siehe Bild.
    https://imgur.com/GUZrGOx
    Min/AVG/Max Preis werden als N/A angezeigt.
    Die Sensoren sind in der configuration.yaml und heißen auch im Dashboard richtig.
    entity: sensor.electricity_price_min_
    Neugestartet und gewartet hatte ich auch.
    Idee was es sein kann?

  11. Moin Moin
    ich tu mich noch etwas schwer mit den Adressen…
    Hat mal jemand ein template was funktioniert…
    Ich glaube es scheitert bei mir auch an der Formatierung.
    Gruß
    Christoph

  12. Moin
    irgednwie hab ich das mit den „Adressen“ wohl noch nicht verstanden. Hab so einiges probiert..

    Hat jemnad ein lauffähiges Template was wo ich erkennen kann was ich eintragen muss und wie das richtig formatiert wird.
    Gruß

    Christoph

  13. Hi,
    du hast den Part mit dem „# Tibber Integration Sensor Splitter“ angelegt und hast dann auch drei neue Sensoren bekommen oder ?
    Die dann electricity_price_max_ADRESSE
    electricity_price_min_ADRESSE
    electricity_price_avg_ADRESSE
    heißen oder ?
    Ich hab bei mir halt den Hauptsensor von der Tibber Integration mit der Adresse versehen, daher ziehe ich das so auch weiter durch alle Sensoren.
    Falls ich mal umziehe…..

    In dem Template für die Grafik scheint ja alle da zu sein bis auf die Sensoren oben.
    Das wären diese Einträge in dem Template
    – entity: sensor.electricity_price_min_ADRESSE
    – entity: sensor.electricity_price_avg_ADRESSE
    – entity: sensor.electricity_price_max_ADRESSE

    Wenn die Sensoren da sind sollte das auch klappen.
    Du kannst ja mal mit einer Normalen Sensor-Karte nach den Sensor „sensor.electricity_price“ suchen. dann sollte er dir welche anbieten

    grüße

  14. Moin Alex
    nach einigem hin und herrücken geht nun alles.
    Vielen Dank für das tolle Tool. Hab dabei wieder etwas über Jaml gelernt.

    Gruß
    Christoph

  15. Super, bei mir funktioniert das wirklich klasse. Vielen Dank!

    Ich hätte nur auch gerne unten den stündlichen Verbrauch, den Du über den Sensor „sensor.smd630_energy_today“ abgebildet hast. Ich habe einen Shelly Pro 3EM verbaucht. Kannst Du mir einen Hinweis geben, wie ich aus diesem einen vergleichbaren Sensor zu „sensor.smd630_energy_today“ bauen kann?

    Vielen Dank!

  16. Hallo Marco, ich hab selber keinen Shelly Pro 3EM aber in einem anderen Projekt einen Shelly Pro 1EM der über die Shelly Integration eingebunden ist.
    Wenn du das auch über die Shelly Integation gemacht hast, dann solltest du da einen kWh zähler haben. Bei mir heist der so
    „sensor.shellyplus1pm_80646fe60588_switch_0_energy“

    Diesen Sensor hab ich dann mit dem „Helfer Verbrauchszähler“ zu einen neuen Täglich zurücksetzenden Energy_today Zähler gemacht.

    Hoffe da hilft dir erst mal weiter
    grüße

  17. Hallo zusammen, ich bin neu und versuche auch die Tibber Preisprognose in Home Assistant zu bekommen.
    Ich habe alles nach Anleitung gemacht und sehe dann auch die Sensoren, eine Entität und drei Helfer. Allerdings zeigt die Entität anderes an als im Vorschlag und erneuert keine Daten.
    Ich bin mir auch nicht sicher, mit was ich als ADRESSE ersetzen soll. Wo steht denn mein Identifier für API Aufrufe (den token habe ich) ? Ich habe eine Client ID, aber keinen Client Name

  18. Hallo Axel,

    Wenn du die Tibber Integration angelegt hast dann solltest du ein paar Sensoren bekommen haben. Diese Sensoren haben bei mir meine Adresse im Namen.
    sensor.electricity_price_MEINE_ADRESSE

    Einstellungen -> Geräte und Dienste -> Integration hinzufügen -> Tiber
    Dann kannst du nach der Einrichtung bei der Tibber Integration -> Geräte –> Electricity Hour price DEINE ADDRESSE sehen. Dann da drauf klicken und oben rechts bei dem Zahnrad dann, da findest du deine Editäts-ID
    sensor.electricity_price_DEINE_ADRESSE

    grüße

Schreibe einen Kommentar

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

*