Elprishämtning från Tibber

ZeeSweden
Medlem
Posts: 28
Joined: 07 Dec 2013, 09:35
10
Location: Göteborg

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
_________________________________________
Kör HC2 med diverse puckar :lol:
Tibber med Easee och Watty
https://invite.tibber.com/4a1de51e
ZeeSweden
Medlem
Posts: 28
Joined: 07 Dec 2013, 09:35
10
Location: Göteborg

Här kommer logga att använda som ikon i HC2.
TibberLogo128x128.png
TibberLogo128x128.png (3.08 KiB) Viewed 27852 times
_________________________________________
Kör HC2 med diverse puckar :lol:
Tibber med Easee och Watty
https://invite.tibber.com/4a1de51e
jang
Medlem
Posts: 388
Joined: 05 Jan 2014, 00:44
10
Location: Stockholm

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
ZeeSweden
Medlem
Posts: 28
Joined: 07 Dec 2013, 09:35
10
Location: Göteborg

Grymt jang! Får ta mig en ordentlig titt på EventRunner4 verkar väldigt smidigt!
_________________________________________
Kör HC2 med diverse puckar :lol:
Tibber med Easee och Watty
https://invite.tibber.com/4a1de51e
jang
Medlem
Posts: 388
Joined: 05 Jan 2014, 00:44
10
Location: Stockholm

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
StefanS
Ny medlem
Posts: 2
Joined: 26 Oct 2020, 13:47
3

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
ZeeSweden
Medlem
Posts: 28
Joined: 07 Dec 2013, 09:35
10
Location: Göteborg

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.
_________________________________________
Kör HC2 med diverse puckar :lol:
Tibber med Easee och Watty
https://invite.tibber.com/4a1de51e
ZeeSweden
Medlem
Posts: 28
Joined: 07 Dec 2013, 09:35
10
Location: Göteborg

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.
Last edited by ZeeSweden on 27 Oct 2020, 11:24, edited 1 time in total.
_________________________________________
Kör HC2 med diverse puckar :lol:
Tibber med Easee och Watty
https://invite.tibber.com/4a1de51e
StefanS
Ny medlem
Posts: 2
Joined: 26 Oct 2020, 13:47
3

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
alexndr
Medlem
Posts: 420
Joined: 14 Jul 2016, 14:38
7

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
ZeeSweden
Medlem
Posts: 28
Joined: 07 Dec 2013, 09:35
10
Location: Göteborg

Haha! Väldigt lätt hänt när man sitter sena nätter som det oftast blir för hemautomationsprojekten!
_________________________________________
Kör HC2 med diverse puckar :lol:
Tibber med Easee och Watty
https://invite.tibber.com/4a1de51e
ZeeSweden
Medlem
Posts: 28
Joined: 07 Dec 2013, 09:35
10
Location: Göteborg

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.
_________________________________________
Kör HC2 med diverse puckar :lol:
Tibber med Easee och Watty
https://invite.tibber.com/4a1de51e
sege
Medlem
Posts: 36
Joined: 27 Jul 2014, 21:54
9

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.
MastrUsr
Medlem
Posts: 202
Joined: 25 Apr 2017, 07:24
6

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

ChristofferG
Ny medlem
Posts: 21
Joined: 10 May 2016, 05:19
7

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?
ChristofferG
Ny medlem
Posts: 21
Joined: 10 May 2016, 05:19
7

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.
forumadmin
Site Admin
Posts: 276
Joined: 10 Dec 2011, 11:43
12

Är det någon som har en Home Center 3 QuickApp för detta?
Vore intressant i dessa tider...
WodzuSE
Medlem
Posts: 26
Joined: 11 Apr 2016, 01:45
7

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?
Dede
Medlem
Posts: 82
Joined: 14 Jan 2014, 16:15
10

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
MastrUsr
Medlem
Posts: 202
Joined: 25 Apr 2017, 07:24
6

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.
Post Reply