Elprishämtning från Tibber

Post Reply
ZeeSweden
Medlem
Posts: 28
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
Medlem
Posts: 28
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 851 times
_________________________________________
Kör HC2 med diverse puckar :lol:
Tibber med Easee och Watty
https://invite.tibber.com/4a1de51e
jang
Medlem
Posts: 292
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
Medlem
Posts: 28
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: 292
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
StefanS
Ny medlem
Posts: 2
Joined: 26 Oct 2020, 13:47

26 Oct 2020, 14:58

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
Location: Göteborg

27 Oct 2020, 06:10

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
Location: Göteborg

27 Oct 2020, 09:38

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

27 Oct 2020, 10:58

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: 412
Joined: 14 Jul 2016, 14:38

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

27 Oct 2020, 11:27

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
Location: Göteborg

27 Oct 2020, 11:33

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