Presenter strømpris og værvarsel i grafana

Plutselig måtte man holde øye med strømprisene og tenke litt på hva man gjør når. Dersom man har en strømleverandør som tilbyr et API for strømforbruk og strømpriser, slik som tibber gir det en del muligheter.

I tibbers api er det blant annet mulig å hente strømforbruke og strømpriser for lang tid tilbake og strømpriser for inneværende og kommende dag. (Sistnevnte når den er satt). Når man har hentet en API-token, kan strømprisene kan hentes ned:

/usr/bin/curl -H "Authorization: Bearer <min token>" -H "Content-Type: application/json" -X POST -d '{"query":"{ viewer { homes { currentSubscription{ priceInfo{ current{ total energy tax startsAt } today { total energy tax startsAt } tomorrow { total energy tax startsAt } } } } } }"}' https://api.tibber.com/v1-beta/gql > /var/www/html/temp/cost.json

Jeg kjører dette fra cron med passende intervall og lagrer datasettet til en katalog som en webserver har tilgang til, så bruker jeg grafana til å presentere data:

Dette viser nåværende strømpris (1.85 / kWh) og forventet utvikling for inneværende og neste dag

For å hente dette inn i grafana, må jeg først lage en datakilde. Jeg bruker JSON API datakilden. Denne setter jeg opp så webserveren henter inn jsonfilen jeg lagret. (http://<webserver>/temp/cost.json).

Når jeg har hentet json filen inn i grafana, må jeg hente ut dataene jeg ønsker. Dette settes opp med jsonpath queries. Jeg må gi grafana tidspunktene og prisene. For å få dette må jeg sette opp en datakilde med to felt:

$.data.viewer.homes[*].currentSubscription.priceInfo.today[*].startsAt
$.data.viewer.homes[*].currentSubscription.priceInfo.today[*].total

Det første feltet gir et starttidspunkt, det andre gir prisen fra det tidspunktet. Dataene ligger i to sett, et for inneværende dag og et for neste dag, dermed må man sette opp en datakilde til hvor feltene i stedet inneholder priceInfo.tomorrow. Siden grafana i utgangspunktet er et system for å logge noe som har skjedd, må det trikses til litt for å få plottet data for fremtiden. Gå inn på query options og sett “Relative time” til “+2d”

Den enkleste måten å få ut aktuell strømpris er å bruke priceInfo.current som et datasett

$.data.viewer.homes[*].currentSubscription.priceInfo.current.total 

Disse dataene kan også kombineres med temperaturvarsel.

This entry was posted in Diverse. Bookmark the permalink.