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
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?
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
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
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
Es freut mich das du es noch hinbekommen hast.
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