Gå til innhold
  • Bli medlem

Anbefalte innlegg

Skrevet (endret)

Legger dette i egen tråd i stedet for inne i andre tråder, så blir det lettere å finne for de som leter.

 

Spot strømprisene i Norden for neste døgn (den såkalte Day-ahead prisen) besluttes hver formiddag for kommende døgn, time for time - og publiseres så vidt jeg vet klokka 12 norsk tid.

 

Jeg har funnet tre steder de kan leses fra:

  1. Tibber, men kun om du er kunde hos de.
  2. Nord Pool publiserer Day-ahead priser for kommende døgn hver dag ca klokka 12: https://www.nordpoolgroup.com/Market-data1/Dayahead/Area-Prices/ALL1/Hourly/?view=table
    De er imidlertid veldig tydelige på at det ikke er tillatt å lage noen autmatisk nedlasting derfra.
    Man kan kjøpe en avtale med de, men det er dyrt.
  3. Entsoe: Prisene publiseres imidlertid samtidig på en Europeisk nettside hvor det er gratis både å registrere seg og få Web API token, som trengs for å bruke deres API.
    https://transparency.entsoe.eu/
    Dette er løsningen jeg bruker, og det fungerer helt fint. Det er en beskrivelse av APIet på nettsiden der et sted.


Jeg henter prisene fra Entsoe hver kveld for neste døgn. De aktuelle linjene i mitt LUA-script ser slik ut:

	year 	= os.date("%Y", tomorrow);
	month 	= os.date("%m", tomorrow);
	day 	= os.date("%d", tomorrow);

	urlApi = "'https://transparency.entsoe.eu/api?documentType=A44&in_Domain=10YNO-2--------T&out_Domain=10YNO-2--------T&periodStart="..year..month..day.."0000&periodEnd="..year..month..day.."2300&securityToken=SETT-INN-DIN-TOKEN-HER'"

Den svarer med en XML streng som du så må hente ut dataene fra.
Scriptet leser så dagens valutakurs fra Norges bank (åpent API, trenger ikke token), som brukes for å regne om til spotprisen i kroner.
Her er min LUA-kode for funksjon som henter dagens EUR kurs:

function eurRate()
    local url = "https://data.norges-bank.no/api/data/EXR/M.EUR.NOK.SP?lastNObservations=1"
    local XML_string_eur=XML_Capture("curl -s "..url,1)
    local valid = string.find(XML_string_eur, "<message:Test>false</message:Test>")    
    if valid == nil then
        print ("Bad XML status read - info NOT updated [in eurRate()]")
    else
        local p = string.find(XML_string_eur,"DECIMALS=") + 10    -- read position of NoOfDecimals
        local dec = string.sub(XML_string_eur,p,p)
        p = string.find(XML_string_eur,"OBS_VALUE=") + 11    -- read position of eurRate
        return tonumber(string.sub(XML_string_eur,p,p+1+dec))
    end
end

Husk at dette er ikke hele strømprisen. Nettleie og andre tillegg kommer i tillegg. Se faktura fra din leverandør om du vil regne helt om til full estimert kWh-pris.

Endret av ArnieO
Fjerne token fra koden...
  • Like 1
  • Thanks 1
Skrevet
  bjornepappa skrev (På 19.12.2018 den 16.07):

Bra! 

For dei av oss som har HomeSeer så har jo @Moskus utvikla det fantastiske TibberSeer ?

Ekspander  

Joda, og den er selvfølgelig konge. Men men som @ArnieO sier:

  ArnieO skrev (På 19.12.2018 den 15.15):

Tibber, men kun om du er kunde hos de.

Ekspander  

 

Men så er APIen dems så bra at det omtrent er verdt å være kunde bare for det. :) 

  • Like 3
Skrevet
  Moskus skrev (På 19.12.2018 den 18.09):

Men så er APIen dems så bra at det omtrent er verdt å være kunde bare for det. :) 

Ekspander  

Tibber er en spennende bedrift i et høyaktuelt segment!

Siden jeg ikke er kunde der og ikke bruker HomeSeer har jeg ikke sett på TibberSeer, så det er fint å få den påminnelsen i tråden her!

Skrevet
  ArnieO skrev (På 19.12.2018 den 15.15):

De aktuelle linjene i mitt LUA-script ser slik ut:

Ekspander  

 

Takk for tips til @ArnieO. Har sett på Entsoe og skaffet meg token. Siden jeg kjører Homeseer så kan jeg vel ikke bruke LUA direkte?

Men det er jo ikke umulig å lage tilsvarende med VB.net. Er ingen racer på denslags, men får vurderer å bruke litt juletid på dette. 

Skrevet
  Gizmo skrev (På 19.12.2018 den 19.54):

 

Takk for tips til @ArnieO. Har sett på Entsoe og skaffet meg token. Siden jeg kjører Homeseer så kan jeg vel ikke bruke LUA direkte?

Men det er jo ikke umulig å lage tilsvarende med VB.net. Er ingen racer på denslags, men får vurderer å bruke litt juletid på dette. 

Ekspander  

Om du har HomeSeer, kvifor ikkje gjere det enkelt og gå for Tibber? 

  • Like 1
Skrevet (endret)
  bjornepappa skrev (På 19.12.2018 den 20.14):

kvifor ikkje gjere det enkelt og gå for Tibber? 

Ekspander  

 

Jeg har valgt å være rasjonell aktør i ett marked, strømmarkedet. Så kjøper kun strøm til nordpool prisen uten noen som helst påslag eller andre avgifter. Er som regel 3-4 selskaper til enhver tid som tilbyr en slik deal. De tjener jo ingenting på det, så er for å lokke kunder før de endrer dealen. Da skifter jeg leverandør. Gir glede i hverdagen, men sparer neppe så mye.

Endret av Gizmo
skriveleif fjernet
  • Like 2
Skrevet
  ZoRaC skrev (På 19.12.2018 den 20.26):

så sparer du 39 kr/mnd

Ekspander  

Eller en ekstra z-wave dings pr år. ?Skal vurdere Tibber, men sitter langt inne å binde seg til en bestemt leverandør bare for å få inne strømpriser i Homeseer. Plutselig skal de ha 70,- hver måned!

Skrevet
  Gizmo skrev (På 19.12.2018 den 20.29):

Eller en ekstra z-wave dings pr år. ?Skal vurdere Tibber, men sitter langt inne å binde seg til en bestemt leverandør bare for å få inne strømpriser i Homeseer. Plutselig skal de ha 70,- hver måned!

Ekspander  

 

Si fra hvis du skal bli kunde, så kan du få en invite-kode hos meg. Da får vi begge 500 kr hver. :) 

 

Hvis de skrur opp prisen kan du bytte på

dagen - ingen binding hos dem. ;) 

  • Like 1
Skrevet
  Gizmo skrev (På 19.12.2018 den 19.54):

 

Siden jeg kjører Homeseer så kan jeg vel ikke bruke LUA direkte?

Ekspander  

Jeg kjenner ikke HomeSeer, så det vet jeg ikke. Det mest plundrete med slike API-kall er å finne ut av hvordan tekststrengen skal settes opp, og det ser du i koden min.

Det må forresten justeres ørlite dersom man er i en annen tariffsone enn meg. Jeg er i den sonen Nord Pool nå kaller «Kristiansand». Det skal være greit å finne ut av den nødvendige endringen fra dokumentasjonen.

Skrevet (endret)

Var ikke helt lett det ja, i alle fall ikke uten bedre forståelse for vb.net. Har ikke fått til det første API kallet enda...

Vurderer faktisk å heller bruke løsningen som er laget for Home assistant, og sende data fra Home assistant til Homeseer med MQTT . 

 

 

Endret av Gizmo
presisering
Skrevet
  Gizmo skrev (På 20.12.2018 den 15.55):

Vurderer faktisk å heller bruke løsningen som er laget for Home assistant, og sende data fra Home assistant til Homeseer med MQTT . 

Ekspander  

Oi, da går man ikke over en bekk etter vann. Mer en elv... ;) 

Skrevet
  Dag Sunde skrev (På 21.12.2018 den 11.40):
Ekspander  

 

Tusen takk! Dette er jo i ytterkanten av mine begrensede programmeringskunnskaper. Men dersom jeg forstår det riktig så er dette et skript i C# som leser data via APien og parser dette til en sql database (?). Med mine kunnskaper er det jo ikke helt rett frem å få trukket ut de relevante verdiene til devicer i Homeseer, men mye nyttig lærdom i hvordan dette er bygget opp! . Forsøker å lese meg opp på dette nå. Har forøvrig sluttet med rafting, er nok enklere å kjøre det som en daglig event rett fra Homeseer.

Skrevet

Du har forstått riktig ?

 

Bunnlinja er at det er en klasse som kan holde på verdiene.

 

Etter API kallet, og før save, inneholder alle attributtene i klassen de verdiene du er interessert i.

 

De andre klassene; Column, Row, Data og Wrapper er kun for å matche JSON datastrukturen som blir returnert av Nordpool.

 

Den lange "switchen" i dobbeltloopen er for å "vri" datasettet 90 grader, da det er en rad pr. Time, med en kolonne for hvert prisområde.

Jeg ville ha en rad pr. prisområde,  med alle timene i en rad.

 

  • 2 uker senere...
Skrevet

Fant en annen vei for å hente strømpriser til Homeseer (passer til det meste). 

Det er laget en løsning som henter data fra nordpool inn i node red: https://www.npmjs.com/package/nordpool
Så med litt mekking der kan time og dagspriser sendes med f.eks MQTT dit man vil.

Enkleste vei for meg var å bruke denne pakken her, slik at eksempelkoden kan brukes direkte i node red: https://www.npmjs.com/package/node-red-contrib-function-npm

  • 1 måned senere...
Skrevet
  Gizmo skrev (På 3.1.2019 den 23.15):

Fant en annen vei for å hente strømpriser til Homeseer (passer til det meste). 

Det er laget en løsning som henter data fra nordpool inn i node red: https://www.npmjs.com/package/nordpool
Så med litt mekking der kan time og dagspriser sendes med f.eks MQTT dit man vil.

Enkleste vei for meg var å bruke denne pakken her, slik at eksempelkoden kan brukes direkte i node red: https://www.npmjs.com/package/node-red-contrib-function-npm

Ekspander  

Hei.

 

Kan du dele et eksempel på kode du skriver i funksjonsnoden? Har installert og brukt koden fra eksemplene men får ikke noe ut på meldingen.

Skrevet
  ASL skrev (På 12.2.2019 den 18.56):

Kan du dele et eksempel på kode du skriver i funksjonsnoden? Har installert og brukt koden fra eksemplene men får ikke noe ut på meldingen.

Ekspander  

 

Den må skrives litt om ja. Jeg bruker denne for å hente timeprisene.

var nordpool = require('nordpool')
var prices = new nordpool.Prices()
var opts = {
  area: 'Bergen', // See http://www.nordpoolspot.com/maps/
  currency: 'NOK', // can also be 'DKK', 'NOK', 'SEK'
}
prices.hourly(opts, function (error, results) {
  if (error) console.error(error)
  for (var i=0; i<results.length; i++) {
    var date = results[i].date
    var price = results[i].value
    var time = date.tz('Europe/Helsinki').format("H:mm")
    node.send({payload:'{ "tid":'+'"'+time+'" ,"pris"-'+price})
  }
return;
})

 

Dersom du også ønsker dagspris kan det hentes med denne snutten her:

 

var nordpool = require('nordpool')
var prices = new nordpool.Prices()
var opts = {
  area: 'Bergen', // See http://www.nordpoolspot.com/maps/
  currency: 'NOK', // can also be 'DKK', 'NOK', 'SEK'
}
prices.daily(opts, function (error, results) {
  if (error) console.error(error)
  for (var i=0; i<1; i++) { //results.length
    var date = results[i].date // moment object (see http://momentjs.com/)
    var price = results[i].value // float, NOK/MWh
    node.send({payload:+price/10})
  }
  return;
})

Bør kanskje si at jeg på ingen måte er å regne som kodekyndig, er selvlært og omskrivingen er gjort ved å prøve meg frem. Men har sjekket det mot Nordpool og blir korrekt sluttresultat hos meg. 

 

Skrevet
  ArnieO skrev (På 19.12.2018 den 15.15):

Legger dette i egen tråd i stedet for inne i andre tråder, så blir det lettere å finne for de som leter.

 

Spot strømprisene i Norden for neste døgn (den såkalte Day-ahead prisen) besluttes hver formiddag for kommende døgn, time for time - og publiseres så vidt jeg vet klokka 12 norsk tid.

 

Jeg har funnet tre steder de kan leses fra:

  1. Tibber, men kun om du er kunde hos de.
  2. Nord Pool publiserer Day-ahead priser for kommende døgn hver dag ca klokka 12: https://www.nordpoolgroup.com/Market-data1/Dayahead/Area-Prices/ALL1/Hourly/?view=table
    De er imidlertid veldig tydelige på at det ikke er tillatt å lage noen autmatisk nedlasting derfra.
    Man kan kjøpe en avtale med de, men det er dyrt.
  3. Entsoe: Prisene publiseres imidlertid samtidig på en Europeisk nettside hvor det er gratis både å registrere seg og få Web API token, som trengs for å bruke deres API.
    https://transparency.entsoe.eu/
    Dette er løsningen jeg bruker, og det fungerer helt fint. Det er en beskrivelse av APIet på nettsiden der et sted.


Jeg henter prisene fra Entsoe hver kveld for neste døgn. De aktuelle linjene i mitt LUA-script ser slik ut:

	year 	= os.date("%Y", tomorrow);
	month 	= os.date("%m", tomorrow);
	day 	= os.date("%d", tomorrow);

	urlApi = "'https://transparency.entsoe.eu/api?documentType=A44&in_Domain=10YNO-2--------T&out_Domain=10YNO-2--------T&periodStart="..year..month..day.."0000&periodEnd="..year..month..day.."2300&securityToken=SETT-INN-DIN-TOKEN-HER'"

Den svarer med en XML streng som du så må hente ut dataene fra.
Scriptet leser så dagens valutakurs fra Norges bank (åpent API, trenger ikke token), som brukes for å regne om til spotprisen i kroner.
Her er min LUA-kode for funksjon som henter dagens EUR kurs:

function eurRate()
    local url = "https://data.norges-bank.no/api/data/EXR/M.EUR.NOK.SP?lastNObservations=1"
    local XML_string_eur=XML_Capture("curl -s "..url,1)
    local valid = string.find(XML_string_eur, "<message:Test>false</message:Test>")    
    if valid == nil then
        print ("Bad XML status read - info NOT updated [in eurRate()]")
    else
        local p = string.find(XML_string_eur,"DECIMALS=") + 10    -- read position of NoOfDecimals
        local dec = string.sub(XML_string_eur,p,p)
        p = string.find(XML_string_eur,"OBS_VALUE=") + 11    -- read position of eurRate
        return tonumber(string.sub(XML_string_eur,p,p+1+dec))
    end
end

Husk at dette er ikke hele strømprisen. Nettleie og andre tillegg kommer i tillegg. Se faktura fra din leverandør om du vil regne helt om til full estimert kWh-pris.

Ekspander  

 

 

Entsoe fungerte kjempeflott. Takk for tips ? Jeg benytter PHP og skrev om koden:

 

$datetime = new DateTime('tomorrow');
$spotdate = $datetime->format('Ymd');
 
$urlapi = "https://transparency.entsoe.eu/api?documentType=A44&in_Domain=10YNO-2--------T&out_Domain=10YNO-2--------T&periodStart=".$spotdate."0000&periodEnd=".$spotdate."2300&securityToken=DIN_TOKEN_HER";
 
$xml = @file_get_contents($urlapi);
$xml = simplexml_load_string($xml);
 

 

Det er vel forskjell på de ulike strømområdene? Prøvde å skrive 10YNO-5 for Bergen/Hordaland, men det fungerte ikke. Noen som vet koden for Bergen/Hordaland?

Skrevet
  Polarnor skrev (På 13.2.2019 den 18.51):

 

 

Entsoe fungerte kjempeflott. Takk for tips ? Jeg benytter PHP og skrev om koden:

 

$datetime = new DateTime('tomorrow');
$spotdate = $datetime->format('Ymd');
 
$urlapi = "https://transparency.entsoe.eu/api?documentType=A44&in_Domain=10YNO-2--------T&out_Domain=10YNO-2--------T&periodStart=".$spotdate."0000&periodEnd=".$spotdate."2300&securityToken=DIN_TOKEN_HER";
 
$xml = @file_get_contents($urlapi);
$xml = simplexml_load_string($xml);
 

 

Det er vel forskjell på de ulike strømområdene? Prøvde å skrive 10YNO-5 for Bergen/Hordaland, men det fungerte ikke. Noen som vet koden for Bergen/Hordaland?

Ekspander  

Bare hyggelig!

Ja, du må bruke rett domain (og rette opp begge steder i http-linja). jeg husker ikke lengre hvor jeg fant rett kode.

Har du forsøkt å lete her? https://transparency.entsoe.eu/content/static_content/Static content/web api/Guide.html

  • 1 måned senere...
  • 4 uker senere...
Skrevet

For de som bruker Home Assistant (og sikkert andre også) så har jeg laget et oppsett likt det @ArnieO skisserte i det opprinnelige innlegget, dvs. henter priser fra ENTSO-E med valutaomregning basert på kurser fra Norges Bank.

Scriptet kan lett kjøres hver time via crontab og publiserer prisene på MQTT.

 

Kode og dokumentasjon ligger her: https://github.com/oysteinjakobsen/fetch-day-ahead-price

  • Like 1

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.