Elprishämtning från Tibber

Dede
Medlem
Posts: 82
Joined: 14 Jan 2014, 16:15
10

MastrUsr wrote: 16 Mar 2022, 17:17 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.
Har en gammal elpanna från Nibe så ingen möjlighet att styra via Tibber.
Har kopplat in ett smart implant så jag kan stänga elpatronerna och sänka värmekurvan.
Tanken är att göra det under de timmar som priset är som högst relaterat till snittpriset för dagen.
WodzuSE
Medlem
Posts: 26
Joined: 11 Apr 2016, 01:45
8

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
Kan du skicka scenen som skickar info till Lametric? TACK
Lorryquai
Ny medlem
Posts: 1
Joined: 15 May 2022, 00:01
2

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
Hej, även jag är nyfiken på hur man går till väga för att få det att funka me LaMetricTime. Informationen är rätt gles gällande detta.

//Lorryquai
PeterM5
Medlem
Posts: 64
Joined: 13 Jul 2016, 10:55
8

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
local tibberToken = "MinEgen"


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("elpris = ".. TibberElpris)

end,
error = function (err) fibaro:debug ("Error: " .. err) end })
end

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

rule("elpris < 0.60 & sunset..sunrise => heather:on") -- start heather when price < 0.60 between sunset and sunrise
[/code]
Hej
Jag får inte detta att fungera, vad gör jag för fel?

[DEBUG] 15:33:19: Rule:1[@@01:00:00 => checkTibber()] = OK

[DEBUG] 15:33:19: Rule:2[elpris < 0.60 & sunset..sunrise => heather:on] = OK

ZeeSwedens funkar
Använder Home Assistant till min hemautomation, väldigt nöjd med det valet :D
PeterM5
Medlem
Posts: 64
Joined: 13 Jul 2016, 10:55
8



tonumber(decodedResponse.data.viewer.homes[2].currentSubscription.priceInfo.current.total)
Hej
Jag hittade felet, jag har två hem inlagda i Tibber :oops:
Det funkar klockrent
Använder Home Assistant till min hemautomation, väldigt nöjd med det valet :D
PeterM5
Medlem
Posts: 64
Joined: 13 Jul 2016, 10:55
8

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
Hej, detta fungerar jättebra.
Jag vill styra min bergvärmepump med hjälp av elpriset från Tibber.
Är det möjligt att få fram snittpriset istället?
Eller går det att hämta dagens och morgondagens priser och välja dom 5 lägsta och köra bergvärmepumpen efter det?
Använder Home Assistant till min hemautomation, väldigt nöjd med det valet :D
PeterM5
Medlem
Posts: 64
Joined: 13 Jul 2016, 10:55
8

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




-- Hämta Tibberdata
local tibberToken = "MinToken"

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 level}today{total energy tax startsAt level}tomorrow{total energy tax startsAt level}}}}}}"}'},
success = function (response)
local decodedResponse = json.decode(response.data)
local TibberElpris = tonumber(decodedResponse.data.viewer.homes[2].currentSubscription.priceInfo.current.total)
fibaro:debug ("Elpris: " .. TibberElpris)
rule("elpris = ".. TibberElpris)


fibaro:setGlobal ('Level', (decodedResponse.data.viewer.homes[2].currentSubscription.priceInfo.current.level))
fibaro:getGlobalValue('Level')
fibaro:debug ("response.data:"..response.data) -- Today Tomorrow

end,
error = function (err) fibaro:debug ("Error: " .. err) end })
end

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


rule("$Level=='VERY_CHEAP' | $Level=='CHEAP' => Bergvarmepump.tariffB:off;log('TariffB off')")
rule("$Level=='NORMAL' | $Level=='EXPENSIVE' | $Level=='VERY_EXPENSIVE' => Bergvarmepump.tariffB:on;log('Tariff B on ')")


-- Hämta Tibberdata
När den globala variabeln Level ändras så triggas ej regeln, hur gör jag det?
Tacksam för hjälp..
Använder Home Assistant till min hemautomation, väldigt nöjd med det valet :D
PeterM5
Medlem
Posts: 64
Joined: 13 Jul 2016, 10:55
8

Code: Select all

 local tibberToken = "MinToken"
    
	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 level}today{total energy tax startsAt level}tomorrow{total energy tax startsAt level}}}}}}"}'},
    success = function (response) 
         local decodedResponse = json.decode(response.data)
         local TibberElpris = tonumber(decodedResponse.data.viewer.homes[2].currentSubscription.priceInfo.current.total)
        fibaro:debug ("Elpris: " .. TibberElpris)  
        rule("elpris = ".. TibberElpris)
      
        local TibberLevel = (decodedResponse.data.viewer.homes[2].currentSubscription.priceInfo.current.level)
              fibaro:debug ("Level: " .. TibberLevel)  
             rule("level = ".. TibberLevel)
    
        
             if TibberLevel == "VERY_CHEAP" then
                --fibaro:debug ("very_cheap")  
                rule("Bergvarmepump.tariffB:off")
                         
         elseif TibberLevel == "CHEAP" then  
                --fibaro:debug ("cheap")  
                rule("Bergvarmepump.tariffB:off")
            
        elseif TibberLevel == "NORMAL" then  
               --fibaro:debug ("normal")  
               rule("Bergvarmepump.tariffB:off")
            
        elseif TibberLevel == "EXPENSIVE" then  
               --fibaro:debug ("expensive")  
               rule("Bergvarmepump.tariffB:on")
            
        elseif TibberLevel == "VERY_EXPENSIVE" then  
              -- fibaro:debug ("very_expensive")  
               rule("Bergvarmepump.tariffB:on")
        else
               error("invalid operation")
        end  
         
       
          
         fibaro:debug ("response.data:"..response.data)  --hela listan Today Tomorrow
 
          
        end,
     error  =  function (err) fibaro:debug ("Error: "  .. err) end })
end

  Util.defTriggerVar('elpris',0)
   
  
  rule("@@01:00:00 => checkTibber()") -- check Tibber every hour...?
  
  
  --rule("elpris < 0.60 & sunset..sunrise => heather:on") -- start heather when price < 0.60 between sunset and sunrise

  -- Hämta Tibberdata

Äntligen fungerar det som jag tänkt med prisnivån, nu bestämmer jag vilken nivå Bergvärmepumpen ska köra på,

VERY_CHEAP
CHEAP
NORMAL
EXPENSIVE
VERY_EXPENSIVE
Använder Home Assistant till min hemautomation, väldigt nöjd med det valet :D
jang
Medlem
Posts: 388
Joined: 05 Jan 2014, 00:44
10
Location: Stockholm

Du borde kunna göra så här

Code: Select all

  local tibberToken = "MinToken"

  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 level}today{total energy tax startsAt level}tomorrow{total energy tax startsAt level}}}}}}"}'},
        success = function (response) 
          local decodedResponse = json.decode(response.data)
          local TibberElpris = tonumber(decodedResponse.data.viewer.homes[2].currentSubscription.priceInfo.current.total)
          fibaro:debug ("Elpris: " .. TibberElpris)  
          local TibberLevel = (decodedResponse.data.viewer.homes[2].currentSubscription.priceInfo.current.level)
          fibaro:debug ("Level: " .. TibberLevel)  
          rule("level = '".. TibberLevel.."'; elpris = ".. TibberElpris)
          fibaro:debug ("response.data:"..response.data)  --hela listan Today Tomorrow
        end,
        error  =  function (err) fibaro:debug ("Error: "  .. err) end })
  end

  Util.defTriggerVar('elpris',0)
  Util.defTriggerVar('level',"")

  rule("level=='VERY_CHEAP'     => Bergvarmepump.tariffB:off")
  rule("level=='NORMAL'         => Bergvarmepump.tariffB:off")
  rule("level=='EXPENSIVE'      => Bergvarmepump.tariffB:on")
  rule("level=='VERY_EXPENSIVE' => Bergvarmepump.tariffB:on")

  rule("@@01:00:00 => checkTibber()") -- check Tibber every hour...?
  
tricket med 'level är att du måste göra en rule som ser ut som rule("level = 'VERY_CHEAP'") eftersom du tilldelar level en sträng.
Det blev rule("level = VERY_CHEAP") och VERY_CHEAP tolkas som variables med värde nil.
Dessutom måste level sättas som en trigger var.
PeterM5
Medlem
Posts: 64
Joined: 13 Jul 2016, 10:55
8

jang wrote: 29 Oct 2022, 09:10 Du borde kunna göra så här

Code: Select all

  local tibberToken = "MinToken"

  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 level}today{total energy tax startsAt level}tomorrow{total energy tax startsAt level}}}}}}"}'},
        success = function (response) 
          local decodedResponse = json.decode(response.data)
          local TibberElpris = tonumber(decodedResponse.data.viewer.homes[2].currentSubscription.priceInfo.current.total)
          fibaro:debug ("Elpris: " .. TibberElpris)  
          local TibberLevel = (decodedResponse.data.viewer.homes[2].currentSubscription.priceInfo.current.level)
          fibaro:debug ("Level: " .. TibberLevel)  
          rule("level = '".. TibberLevel.."'; elpris = ".. TibberElpris)
          fibaro:debug ("response.data:"..response.data)  --hela listan Today Tomorrow
        end,
        error  =  function (err) fibaro:debug ("Error: "  .. err) end })
  end

  Util.defTriggerVar('elpris',0)
  Util.defTriggerVar('level',"")

  rule("level=='VERY_CHEAP'     => Bergvarmepump.tariffB:off")
  rule("level=='NORMAL'         => Bergvarmepump.tariffB:off")
  rule("level=='EXPENSIVE'      => Bergvarmepump.tariffB:on")
  rule("level=='VERY_EXPENSIVE' => Bergvarmepump.tariffB:on")

  rule("@@01:00:00 => checkTibber()") -- check Tibber every hour...?
  
tricket med 'level är att du måste göra en rule som ser ut som rule("level = 'VERY_CHEAP'") eftersom du tilldelar level en sträng.
Det blev rule("level = VERY_CHEAP") och VERY_CHEAP tolkas som variables med värde nil.
Dessutom måste level sättas som en trigger var.
Tack för hjälpen jang :) , funkar som du skriver.
Ser ett annat problem, det är VERY_EXPENSIVE och EXPENSIVE från idag kl. 10.00 - 23.00 imorgon, som kompressorn ej kommer att starta om fibaron ska styra den.
Fick för mig att "levels" var procentuellt och att det blev olika nivåer även att det är högt elpris..
Vet inte hur jag ska göra där, det fina är kanske att leta efter lägsta elpriset i kombination med level för att starta den på dyrare "levels"?
Fast jag vet ej hur jag får till det.
Last edited by PeterM5 on 30 Oct 2022, 23:51, edited 2 times in total.
Använder Home Assistant till min hemautomation, väldigt nöjd med det valet :D
PeterM5
Medlem
Posts: 64
Joined: 13 Jul 2016, 10:55
8

Går det att hämta Tibbers elpris till HC3 Lite?
Använder Home Assistant till min hemautomation, väldigt nöjd med det valet :D
LtEriksson
Ny medlem
Posts: 1
Joined: 06 Apr 2022, 14:50
2

Hej,

Vet att detta är en gammal tråd men jag chansar ändå.

Jag har Tibber och styr det mesta hemma via Fibaro HC2, när det gäller elpriser så läser jag in dagpriser (och morgondagens när de kommer) och räknar ut medelpriset för dagen vilket jag använder som gräns för vad som är högt/lågt för dagen. Då min ambition är att hamna under rörligt elpris vill jag egentligen utgå från dagspriset vilket jag har upptäckt oftast ligger under medelpriset för dagen där det varierar från dag till dag. När man har rörligt elpris används dagspris för att beräkna ditt elpris vilket är anledningen till att jag vill utgå från det.

I nuläget har jag en fast beräkning där jag sänker medelpriset med 15%, något jag räknat fram baserat på ett antal dagar jag tittat på tidigare. Det jag helst skulle vilja göra är att hämta det faktiska dagspriset för dagen och använda det för min gräns men jag har inte hittat något sätt att göra det via Tibber API så jag undrar om det är någon som har koll på detta?
Post Reply