You have to add a string variable 'luaWatt' with value 0;1493412184;0;0
The script needs 'device' as trigger
Example Log of the output:
2017-04-28 22:45:54.590 EventSystem: Script event triggered: luaTuinlichtTeller
2017-04-28 22:45:54.682 LUA: Agelopen 10 seconden was het gemiddeld verbruik 2533 Watt. Kosten ca. 0.18 ct
2017-04-28 22:45:54.685 EventSystem: Script event triggered: luaWatt
Here is the lua:
Code: Select all
local function round(num, n)
--n is het aantal decimalen, maar kun je ook weglaten
local mult = 10^(n or 0)
return math.floor(num * mult + 0.5) / mult
end
commandArray = {}
tijdgrens = 0 --seconden afvalvertraging
grenswaarde = 1500 --Watt
kwh=25 -- eurocent
dv=tostring(next(devicechanged))
if dv == 'Stroom' then
stroom1, stroom2, temp1, temp2, verbruik1, verbruik2 = otherdevices_svalues['Stroom']:match("([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);([^;]+)")
verbruik=verbruik1+verbruik2
eerste,laatste,aantal,totaal=uservariables['luaWatt']:match("([^;]+);([^;]+);([^;]+);([^;]+)")
--nieuwe energiepiek, start timer:
if verbruik > grenswaarde then
print ('<font color="purple">hoog verbruik')
if eerste == '0' then eerste = tostring(os.time()) end
aantal=aantal+1
totaal=totaal+verbruik
laatste = tostring(os.time()) --tijdstip vastleggen
end
aantal = tonumber (aantal)
verbruik = tonumber (verbruik)
--al een tijdje laag energieniveau?
if aantal > 0 and verbruik < grenswaarde and os.difftime (os.time(), laatste) > tijdgrens then
duur= os.difftime (laatste, eerste)
kosten=round((kwh/3600/1000)*totaal*duur/aantal,2)
if duur > 120 then
melding = 'Afgelopen '..tostring(round(duur/60))..' minuten was het gemiddeld verbruik '..tostring(round(totaal/aantal))..' Watt. Kosten ca. '..kosten..' ct'
else
melding = 'Afgelopen '..duur..' seconden was het gemiddeld verbruik '..tostring(round(totaal/aantal))..' Watt. Kosten ca. '..kosten..' ct'
end
print ('<font color="purple">'..melding)
commandArray['SendNotification']='energie#'..melding..'#'..0
aantal = 0
totaal = 0
eerste = 0
end
-- save the globals
commandArray['Variable:luaWatt'] = eerste..';'..laatste..';'..aantal..';'..totaal
end
return commandArray