Styra el användning. Få elpriser från Nordpol till Domoticz kanske?
Postat: 7 april 2022, 14:46:08
Hej.
Då jag idag använder Domoticz till att styra lampor känns det helt logiskt att styra lite större förbrukare. Värmepumpen, av modellen frånluft kan jag styra via Ngenic Tune och elen kan jag handla på timbasis från Greenely
Och detta bör fungera helt automatiskt. Kvar att styra blir då tvättmaskin & diskmaskin. Jo det fins en luft-luft värmepump i garaget men den får vänta då den mest står på "frost-fri" & ca 8 grader med manuell höjning till en mer behaglig temperatur när behovet uppstår, sen får den hjälp av en sol-luft panel som ger värme när den kan.
Det var bakgrunden, nu till frågan.
Hittade denna cod på https://www.domoticz.com/forum/viewtopic.php?t=30004 skulle det fungera?
Men jag kan ju inga språk frånsett Svenska och Engelska, så detta är inte så förståbart som jag skulle önska då jag använder Blockly för att få till att starta motorvärmare i tid mm
Eller om någon har en bättre lösning?
Tanken är att helt enkelt stänga av uttaget då priset är högt eller kommer att bli högt inom den beräknade driftcykeln för tvätt & disk.
Eller jag kanske jagar på fel apparater? Men att hindra frun från att köra vattenkokare/kaffebryggare när behovet fins lär inte vara av godo, oavsett sparade pengar eller inte.
Eller har forumet några andra smarta idéer?
Edit:
Provade och fick som en användare i tråden:
Men svaret det förstog jag inte...
Edit (igen)
Inser att skriptet är från 2019 så det kanske inte går att hämta önskad information där skriptet vill....
Då jag idag använder Domoticz till att styra lampor känns det helt logiskt att styra lite större förbrukare. Värmepumpen, av modellen frånluft kan jag styra via Ngenic Tune och elen kan jag handla på timbasis från Greenely
Och detta bör fungera helt automatiskt. Kvar att styra blir då tvättmaskin & diskmaskin. Jo det fins en luft-luft värmepump i garaget men den får vänta då den mest står på "frost-fri" & ca 8 grader med manuell höjning till en mer behaglig temperatur när behovet uppstår, sen får den hjälp av en sol-luft panel som ger värme när den kan.
Det var bakgrunden, nu till frågan.
Hittade denna cod på https://www.domoticz.com/forum/viewtopic.php?t=30004 skulle det fungera?
Kod: Markera allt
--[[
Author : Bjacobse
Description : Get current Electricity price for chosen area, set Electricity pric in text device and dummy switch.
Dummy switch selector show pricing as traffic light, to be used for enable/disable switches for heating
]]--
return {
-- optional active section,
-- when left out the script is active
-- note that you still have to check this script
-- as active in the side panel
active = {
true, -- either true or false, or you can specify a function
},
-- trigger
on = {
-- timer riggers
--timer = { 'every minute' },
timer = { 'every hour' },
httpResponses = { 'electricitycostresponse' }
},
--[[
-- custom logging level for this script
logging = {
level = domoticz.LOG_DEBUG,
marker = "Electricity Price"
},
]]--
-- actual event code
execute = function(domoticz, item)
-- execute when timer is trigger
if (item.isTimer) then
local myTimezone = 'HourDK'
--area to chose between SE3, SE4, DK1, DK2, NO2
-- The service provisder energidataservice.dk is only supporting above areas
local myPricearea = 'SE4'
--local Time = require('Time')
-- ISO 8601 timestamp
--Somehow only whole hour is giving results, so set min=00 and sec=00
--local myDateTime = os.date("!%Y-%m-%dT%H:%M:%S")
--local myDateTime = (os.date("!%Y-%m-%dT%H")..":00:00")
local myDateTime = (os.date("%Y-%m-%dT%H")..":00:00")
domoticz.log(myDateTime)
-- { = %7B
-- " = %22
-- } = %7D
--https://api.energidataservice.dk/datastore_search?resource_id=elspotprices&filters={"HourDK":"2019-11-01T22:00:00","PriceArea":"SE4"}
--local url = string.format("https://api.energidataservice.dk/datastore_search?resource_id=elspotprices&filters=%7B%22%s%22:%22%sT%s%22,%22PriceArea%22:%22%s%22%7D", myTimezone, myDate, myTime, myPricearea)
--local url = string.format("https://api.energidataservice.dk/datastore_search?resource_id=elspotprices&filters={\"%s\":\"%sT%s\",\"PriceArea\":\"%s\"}", myTimezone, myDate, myTime, myPricearea)
local url = string.format("https://api.energidataservice.dk/datastore_search?resource_id=elspotprices&filters={\"%s\":\"%s\",\"PriceArea\":\"%s\"}", myTimezone, myDateTime, myPricearea)
-- ulr to logfile
--domoticz.log(url)
domoticz.openURL({
url = url,
method = 'GET',
callback = 'electricitycostresponse'
})
end
-- execute when http response is received
if (item.isHTTPResponse and item.ok) then
local greenCostEUR_kWh = 0.04
-- Yellow is interval between green and red
local redCostEUR_kWh = 0.044
--domoticz.log("http response ok")
-- force to handle as json
-- we know it is json but dzVents cannot detect this
-- convert to Lua
local json = domoticz.utils.fromJSON(item.data)
-- json is now a Lua table
--domoticz.log(json.result.records[1].SpotPriceEUR)
local myCurrentpriceEUR = (json.result.records[1].SpotPriceEUR)
myCurrentpriceEUR = myCurrentpriceEUR /1000
domoticz.log((myCurrentpriceEUR .. "EUR/kWh"))
--Uncommnet below to get price in EUR/Kwh
-- update text device with current electricity price
--domoticz.devices('Elprice now').updateText((myCurrentpriceEUR .. " EUR/MWh"))
--convert to DKK, 7,46dkk/EUR. Change to 2 decimal points
local convert = tostring(tonumber(string.format("%.2f", (json.result.records[1].SpotPriceEUR) * 7.46/10)))
-- Denmark prefer to have comma as separator and not a dot (which in DK is a thousand separator)
-- replace . with , Remember that . is special char and needs to be %.
convert = convert:gsub("%.", ",")
--domoticz.log(convert)
--comment below to reomve price in øre/kWh
local myCurrentpriceDKK = (convert)
-- update text device with current electricity price
domoticz.devices('Elprice now').updateText((myCurrentpriceDKK .. " Øre/kWh"))
--Set traffic light colour
if tonumber(myCurrentpriceEUR) >= redCostEUR_kWh then
domoticz.devices('Elprice').switchSelector(0)
domoticz.log("Red")
end
--if tonumber(myCurrentpriceEUR) < yellowCostEUR_kWh then
if ((tonumber(myCurrentpriceEUR) < redCostEUR_kWh) and (tonumber(myCurrentpriceEUR) > greenCostEUR_kWh)) then
--domoticz.devices('Elprice').switchSelector("Yellow")
domoticz.devices('Elprice').switchSelector(10)
domoticz.log("yellow")
end
if tonumber(myCurrentpriceEUR) <= greenCostEUR_kWh then
domoticz.devices('Elprice').switchSelector(20)
domoticz.log("Green")
end
end
end
}
Eller om någon har en bättre lösning?
Tanken är att helt enkelt stänga av uttaget då priset är högt eller kommer att bli högt inom den beräknade driftcykeln för tvätt & disk.
Eller jag kanske jagar på fel apparater? Men att hindra frun från att köra vattenkokare/kaffebryggare när behovet fins lär inte vara av godo, oavsett sparade pengar eller inte.
Eller har forumet några andra smarta idéer?
Edit:
Provade och fick som en användare i tråden:
Kod: Markera allt
2022-04-07 15:05:59.429 Error: EventSystem: Lua script Elpris did not return a commandArray
Edit (igen)
Inser att skriptet är från 2019 så det kanske inte går att hämta önskad information där skriptet vill....