Elprishämtning från Tibber

Post Reply
ZeeSweden
Ny medlem
Posts: 24
Joined: 07 Dec 2013, 09:35
Location: Göteborg

18 Oct 2020, 20:42

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
Ny medlem
Posts: 24
Joined: 07 Dec 2013, 09:35
Location: Göteborg

19 Oct 2020, 09:33

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

19 Oct 2020, 09:54

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
Ny medlem
Posts: 24
Joined: 07 Dec 2013, 09:35
Location: Göteborg

20 Oct 2020, 05:03

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: 288
Joined: 05 Jan 2014, 00:44
Location: Stockholm

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