Page 1 of 2

Elprishämtning från Tibber

Posted: 18 Oct 2020, 20:42
by ZeeSweden
För alla som är Tibberkunder så har jag här min LUA kod för att hämta elpriset och sätta i en global variabel. All annan data går såklart också att hämta ut enligt Tibbers API (beskrivet här:https://developer.tibber.com). Det ni behöver är en token för autentisiering som hämtas direkt från Tibber.

Detta gör att det går att styra elförbrukande apparater att endast köras när timpriset är acceptabelt. Jag kör avfuktaren i tvättstugan endast om timpriset är lägre än 60 öre.

Code: Select all

--[[
%% properties
%% autostart
%% events
%% globals
--]]


  -- Hämta Tibberdata
local payload= tostring('{ "query": "{viewer {homes {currentSubscription {priceInfo {current {total energy tax startsAt }}}}}}" }')
local Url = 'https://api.tibber.com/v1-beta/gql'
local httpClient = net.HTTPClient()
httpClient:request(Url, { 
       options = {
       method="POST",
       headers={
               ['Authorization'] = 'Bearer --här ska din Tibbertoken in--', 
               ['Content-Type'] = 'application/json'
               },
       data= payload
       },
        
    success = function (response) 
     local decodedResponse = json.decode(response.data)
     
    fibaro:debug ("Success fetching data: " .. response.data)
     
      TibberElpris = tonumber(decodedResponse.data.viewer.homes[1].currentSubscription.priceInfo.current.total)
    fibaro:debug ("Elpris: " .. TibberElpris)  
      fibaro:setGlobal('Elpris', TibberElpris)
     end,
           error  =  function (err) fibaro:debug ("Error: "  .. err) end
})


Om ni inte är Tibberkunder så tycker jag definitivt att ni skall bli det! Testa du också så får vi båda 500 kr att handla smarta prylar för! https://invite.tibber.com/4a1de51e

Re: Elprishämtning från Tibber

Posted: 19 Oct 2020, 09:33
by ZeeSweden
Här kommer logga att använda som ikon i HC2.
TibberLogo128x128.png
TibberLogo128x128.png (3.08 KiB) Viewed 38120 times

Re: Elprishämtning från Tibber

Posted: 19 Oct 2020, 09:54
by jang
Jag har tyvärr inte Tibber men om ngn använder EventRunner4 så skulle det kunna se ut såhär

Code: Select all

tibberToken = "......."

function QuickApp:main()

  function checkTibber()
    self:HTTPEvent{
      url = 'https://api.tibber.com/v1-beta/gql',
      method = "POST",
      data = '{ "query": "{viewer {homes {currentSubscription {priceInfo {current {total energy tax startsAt }}}}}}" }',
      headers = {['Authorization'] = 'Bearer '..tibberToken, ['Content-Type'] = 'application/json'},
      tag = 'tibber'
    }
  end

  Util.defTriggerVar('elpris',0)
  rule("#HTTPEvent{status='$<=204',data='$data',tag='tibber'} => elpris = fjson(data).data.viewer.homes[1].currentSubscription.priceInfo.current.total")
  rule("#HTTPEvent{status='$err>204',tag='tibber'} => log('Tibber error %s',err)")
  rule("@@+01:00 => checkTibber()") -- check Tibber every hour...?

  ---
  rule("elpris < 0.60 & sunset..sunrise => heather:on") -- start heather when price < 0.60 between sunset and sunrise

end

Re: Elprishämtning från Tibber

Posted: 20 Oct 2020, 05:03
by ZeeSweden
Grymt jang! Får ta mig en ordentlig titt på EventRunner4 verkar väldigt smidigt!

Re: Elprishämtning från Tibber

Posted: 20 Oct 2020, 09:54
by jang
För EventRunner3 (HC2) ser det lite annorlunda ut.

Code: Select all

 -- Hämta Tibberdata
local tibberToken = "......."
function checkTibber()
   net.HTTPClient():request( 'https://api.tibber.com/v1-beta/gql', { 
       options = {
           method="POST",
           headers={ ['Authorization'] = 'Bearer '..tibberToken, ['Content-Type'] = 'application/json' },
           data= '{ "query": "{viewer {homes {currentSubscription {priceInfo {current {total energy tax startsAt }}}}}}" }'
       },
    success = function (response) 
         local decodedResponse = json.decode(response.data)
        local TibberElpris = tonumber(decodedResponse.data.viewer.homes[1].currentSubscription.priceInfo.current.total)
        fibaro:debug ("Elpris: " .. TibberElpris)  
        Rule.eval("elpris = ".. TibberElpris)
     end,
     error  =  function (err) fibaro:debug ("Error: "  .. err) end
   })
end

  Util.defTriggerVar('elpris',0)
  rule("@@+01:00 => checkTibber()") -- check Tibber every hour...?

  ---
  rule("elpris < 0.60 & sunset..sunrise => heather:on") -- start heather when price < 0.60 between sunset and sunrise

Re: Elprishämtning från Tibber

Posted: 26 Oct 2020, 14:58
by StefanS
Hej ZeeSweden,

Skulle gärna få några printscreens på hur du har gjort i HC2.

Koder mm har jag fått att fungera men är lite osäker på Scen eller hur du har byggt ihop det.
Hoppas du har tid att hjälpa mig (och säkert fler) på väg framåt.

stort tack för koden by the way....

//StefanS

Re: Elprishämtning från Tibber

Posted: 27 Oct 2020, 06:10
by ZeeSweden
Finns säkert många smartare sätt att göra detta men jag har bara gjort en enkel blockscen som sätter på avfuktaren ifall avfuktaren är av samt priset lägre än 60 öre samt skickar en notis till min telefon.
AvfuktareOn.png
.

Samt omvänt, ifall avfuktaren är på och priset är över 60 öre så stänger den av avfuktaren.
AvfuktareOff.png
Avfuktaren i sig sitter i en enkel Telldus av/på switch.
AvfuktareSwitch.png
Så i dess scener kan jag sedan lägga till fler enheter som skall stängas av eller startas beroende av pris. Trigger har jag satt till att bara gå på förändrat pris, default när blockscenen byggs lägger den med både Elpris och Switchen som trigger. Förhoppningen är att då kan jag manuellt slå på switchen manuellt och den justeras inte förrän nästa prisuppdatering.

Re: Elprishämtning från Tibber

Posted: 27 Oct 2020, 09:38
by ZeeSweden
Slog mig att det förmodligen var fulla scenen för att hämta pris som du var intresserad av :D :

Code: Select all

--[[
%% autostart
%% properties
%% weather
%% events
%% globals
--]]

local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
 ( (math.floor(os.time()/60)-math.floor(1603689120/60))%5 == 0 )
)
then
	  -- Hämta Tibberdata
local payload= tostring('{ "query": "{viewer {homes {currentSubscription {priceInfo {current {total energy tax startsAt }}}}}}" }')
local Url = 'https://api.tibber.com/v1-beta/gql'
local httpClient = net.HTTPClient()
httpClient:request(Url, { 
       options = {
       method="POST",
       headers={
               ['Authorization'] = 'Bearer TibberTokenGoesHere', 
               ['Content-Type'] = 'application/json'
               },
       data= payload
       },
        
    success = function (response) 
     local decodedResponse = json.decode(response.data)
     
    fibaro:debug ("Success fetching data: " .. response.data)
     
      TibberElpris = tonumber(decodedResponse.data.viewer.homes[1].currentSubscription.priceInfo.current.total)
    fibaro:debug ("Elpris: " .. TibberElpris)  
      fibaro:setGlobal('Elpris', tonumber(TibberElpris))
    end,
           error  =  function (err) fibaro:debug ("Error: "  .. err) end

  })

end

setTimeout(tempFunc, 60*1000)
end
if (sourceTrigger["type"] == "autostart") then
tempFunc()
else

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
startSource["type"] == "other"
)
then

  -- Hämta Tibberdata
local payload= tostring('{ "query": "{viewer {homes {currentSubscription {priceInfo {current {total energy tax startsAt }}}}}}" }')
local Url = 'https://api.tibber.com/v1-beta/gql'
local httpClient = net.HTTPClient()
httpClient:request(Url, { 
       options = {
       method="POST",
       headers={
               ['Authorization'] = 'Bearer TibberTokenGoesHere', 
               ['Content-Type'] = 'application/json'
               },
       data= payload
       },
        
    success = function (response) 
     local decodedResponse = json.decode(response.data)
     
    fibaro:debug ("Success fetching data: " .. response.data)
     
      TibberElpris = tonumber(decodedResponse.data.viewer.homes[1].currentSubscription.priceInfo.current.total)
    fibaro:debug ("Elpris: " .. TibberElpris)  
      fibaro:setGlobal('Elpris', tonumber(TibberElpris))
    end,
           error  =  function (err) fibaro:debug ("Error: "  .. err) end

  })
end

end

Kollar priset var 5:e minut. Hanterar också att Tibber har fel i sitt API med jämna mellanrum. Då fortsätter den att hämta priset om 5 minuter.

Re: Elprishämtning från Tibber

Posted: 27 Oct 2020, 10:58
by StefanS
Hej,

Stort tack. Då var jag på rätt spår och såg att det var för sent på kvällen när jag skruvade ihop scenerna.

Skrev värdet 60 istället för 0,6. Så nu verkar det rulla på, även om jag har satt var 20 minut. Kanske skall göra som du och gå ner på 5 minuters intervall.

Bugar och tackar för tydligt svar !

//Stefan

Re: Elprishämtning från Tibber

Posted: 27 Oct 2020, 11:26
by alexndr
Stort tack för tipset. Jag la till informationen så att det pushas ut varannan minut till min LaMetric (tillsammans med vädret).
IMG_1578.jpg

Re: Elprishämtning från Tibber

Posted: 27 Oct 2020, 11:27
by ZeeSweden
Haha! Väldigt lätt hänt när man sitter sena nätter som det oftast blir för hemautomationsprojekten!

Re: Elprishämtning från Tibber

Posted: 27 Oct 2020, 11:33
by ZeeSweden
alexndr wrote: 27 Oct 2020, 11:26 Stort tack för tipset. Jag la till informationen så att det pushas ut varannan minut till min LaMetric (tillsammans med vädret).
IMG_1578.jpg
Väldigt snyggt! En sådan kanske det får bli för större tydlighet. Har fått frun så intresserad att hon självmant går in och schedulerar tvättmaskiner baserat på lägsta dygnspris så det inte bara är jag som jagar ören längre.

Re: Elprishämtning från Tibber

Posted: 06 Feb 2021, 11:37
by sege
Har Tibber-api’t någon funktion att ge dygnspris/själv berätta när det är dyrt/billigt över dygnet eller får man räkna ut det själv?

Tänker att man inte vill styra hårt på <>X öre utan mer ladda elbilen osv osv när det är billigt oavsett tid på dygnet för det måste ändå laddas.

Re: Elprishämtning från Tibber

Posted: 06 Feb 2021, 11:45
by MastrUsr
sege wrote:Har Tibber-api’t någon funktion att ge dygnspris/själv berätta när det är dyrt/billigt över dygnet eller får man räkna ut det själv?

Tänker att man inte vill styra hårt på <>X öre utan mer ladda elbilen osv osv när det är billigt oavsett tid på dygnet för det måste ändå laddas.
Det undrar jag också. De skickar ju i alla fall aviseringar dagen innan om det är väldigt högt.

Skickat från min SM-G998B via Tapatalk


Re: Elprishämtning från Tibber

Posted: 30 Apr 2021, 14:00
by ChristofferG
jang wrote: 20 Oct 2020, 09:54 För EventRunner3 (HC2) ser det lite annorlunda ut.

Code: Select all

 -- Hämta Tibberdata
local tibberToken = "......."
function checkTibber()
   net.HTTPClient():request( 'https://api.tibber.com/v1-beta/gql', { 
       options = {
           method="POST",
           headers={ ['Authorization'] = 'Bearer '..tibberToken, ['Content-Type'] = 'application/json' },
           data= '{ "query": "{viewer {homes {currentSubscription {priceInfo {current {total energy tax startsAt }}}}}}" }'
       },
    success = function (response) 
         local decodedResponse = json.decode(response.data)
        local TibberElpris = tonumber(decodedResponse.data.viewer.homes[1].currentSubscription.priceInfo.current.total)
        fibaro:debug ("Elpris: " .. TibberElpris)  
        Rule.eval("elpris = ".. TibberElpris)
     end,
     error  =  function (err) fibaro:debug ("Error: "  .. err) end
   })
end

  Util.defTriggerVar('elpris',0)
  rule("@@+01:00 => checkTibber()") -- check Tibber every hour...?

  ---
  rule("elpris < 0.60 & sunset..sunrise => heather:on") -- start heather when price < 0.60 between sunset and sunrise
Hur får jag in denna i ER3?

Re: Elprishämtning från Tibber

Posted: 30 Apr 2021, 14:10
by ChristofferG
MastrUsr wrote: 06 Feb 2021, 11:45
sege wrote:Har Tibber-api’t någon funktion att ge dygnspris/själv berätta när det är dyrt/billigt över dygnet eller får man räkna ut det själv?

Tänker att man inte vill styra hårt på <>X öre utan mer ladda elbilen osv osv när det är billigt oavsett tid på dygnet för det måste ändå laddas.
Det undrar jag också. De skickar ju i alla fall aviseringar dagen innan om det är väldigt högt.

Skickat från min SM-G998B via Tapatalk
sege wrote: 06 Feb 2021, 11:37 Har Tibber-api’t någon funktion att ge dygnspris/själv berätta när det är dyrt/billigt över dygnet eller får man räkna ut det själv?

Tänker att man inte vill styra hårt på <>X öre utan mer ladda elbilen osv osv när det är billigt oavsett tid på dygnet för det måste ändå laddas.
I API-svaret listas kommande elpriser så långt de finns tillgängliga. Efter klockan 13 så finns morgondagens priser med.
Det man skulle kunna göra är att utvärdera priserna och få fram ett medelvärde och bara aktivera avfuktare, element, billaddare osv om priset är under medelvärdet.
Tyvärr brister mina minimala kunskaper i programmering här.

Re: Elprishämtning från Tibber

Posted: 07 Dec 2021, 08:37
by forumadmin
Är det någon som har en Home Center 3 QuickApp för detta?
Vore intressant i dessa tider...

Re: Elprishämtning från Tibber

Posted: 27 Feb 2022, 01:25
by WodzuSE
alexndr wrote: 27 Oct 2020, 11:26 Stort tack för tipset. Jag la till informationen så att det pushas ut varannan minut till min LaMetric (tillsammans med vädret).
IMG_1578.jpg
Hur görde du det?

Re: Elprishämtning från Tibber

Posted: 15 Mar 2022, 21:23
by Dede
sege wrote: 06 Feb 2021, 11:37 Har Tibber-api’t någon funktion att ge dygnspris/själv berätta när det är dyrt/billigt över dygnet eller får man räkna ut det själv?

Tänker att man inte vill styra hårt på <>X öre utan mer ladda elbilen osv osv när det är billigt oavsett tid på dygnet för det måste ändå laddas.
Någon som har löst detta till HC2?
Vill styra värmen så man stänger under de dyraste timmarna

Re: Elprishämtning från Tibber

Posted: 16 Mar 2022, 17:17
by MastrUsr
Dede wrote: 15 Mar 2022, 21:23
sege wrote: 06 Feb 2021, 11:37 Har Tibber-api’t någon funktion att ge dygnspris/själv berätta när det är dyrt/billigt över dygnet eller får man räkna ut det själv?

Tänker att man inte vill styra hårt på <>X öre utan mer ladda elbilen osv osv när det är billigt oavsett tid på dygnet för det måste ändå laddas.
Någon som har löst detta till HC2?
Vill styra värmen så man stänger under de dyraste timmarna
Tjena! Jag antar att du har Tibber? Hur styr du din värme idag? Det finns, om du råkat missa det, styrning för värme via Tibber. Jag själv använder det tillsammans med Sensibo och min värmepump.