Styra el användning. Få elpriser från Nordpol till Domoticz kanske?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
norlin
Inlägg: 434
Blev medlem: 29 november 2015, 23:12:54
Ort: Vänersborg, ish...

Styra el användning. Få elpriser från Nordpol till Domoticz kanske?

Inlägg av norlin »

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?

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
}
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:

Kod: Markera allt

2022-04-07 15:05:59.429 Error: EventSystem: Lua script Elpris did not return a commandArray
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....
Användarvisningsbild
JimmyAndersson
Inlägg: 26308
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Re: Styra el användning. Få elpriser från Nordpol till Domoticz kanske?

Inlägg av JimmyAndersson »

Om jag förstår rätt så vill du alltså att t.ex tvättmaskinen/diskmaskinen ska bli spänningslös ifall elpriset väntas bli för högt?
Det kan alltså bli så att man inte kommer åt något i maskinen tills elen blir billigare igen. Hur länge?

Alla är olika, men jag hade blivit knäpp om [kvittar vad] plötsligt skulle stängas av. :)
norlin
Inlägg: 434
Blev medlem: 29 november 2015, 23:12:54
Ort: Vänersborg, ish...

Re: Styra el användning. Få elpriser från Nordpol till Domoticz kanske?

Inlägg av norlin »

Nja så var det inte tänkt, även om man kan tolka det på det sättet.
Tanken var inte att stänga av under pågående program, det är nog inte riktigt praktiskt.
Så ett nytt problem att lösa... men först efter att jag fått in prisdata i Domoticz, då kan man välja om man bara vill varna för högt pris eller förhindra drift.
Användarvisningsbild
JimmyAndersson
Inlägg: 26308
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Re: Styra el användning. Få elpriser från Nordpol till Domoticz kanske?

Inlägg av JimmyAndersson »

Ah, då förstår jag. :)

Intressant idé.
Tyvärr har jag ingen lösning på problemet, (har glömt för mycket om Domoticz) men det ska bli intressant att följa.
norlin
Inlägg: 434
Blev medlem: 29 november 2015, 23:12:54
Ort: Vänersborg, ish...

Re: Styra el användning. Få elpriser från Nordpol till Domoticz kanske?

Inlägg av norlin »

Den där 1:a prylen jag hitta gick det inge vidare med, så jag la allt på is tills häromdagen och då sprang jag på:
https://github.com/flopp999/NordPoolSpotPrice-Domoticz
som jag inte fått att fungera det heller... men jag tror att jag lyckats installera allt så med lite assistans från https://www.facebook.com/groups/216808438762698/ så kanske det går.

Orsaken att det blev lite aktuellt var att jag fått bytt elmätare och jag skaffat en Smart elmätare - P1 / HAN från m.nu så då blev det intressant igen att få med sig priset då jag nu fått in förbrukningen i Domoticz.

Återkommer kanske om några månader...
Skriv svar