Elprishämtning från Tibber

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

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
6

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

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
6

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
PeterM5
Medlem
Posts: 64
Joined: 13 Jul 2016, 10:55
6



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
PeterM5
Medlem
Posts: 64
Joined: 13 Jul 2016, 10:55
6

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?
PeterM5
Medlem
Posts: 64
Joined: 13 Jul 2016, 10:55
6

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..
PeterM5
Medlem
Posts: 64
Joined: 13 Jul 2016, 10:55
6

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
jang
Medlem
Posts: 387
Joined: 05 Jan 2014, 00:44
8
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
6

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.
PeterM5
Medlem
Posts: 64
Joined: 13 Jul 2016, 10:55
6

Går det att hämta Tibbers elpris till HC3 Lite?
Post Reply