-- collect cumulative power data and log to pachube module(...,package.seeall) require("xap") require("xap.bsc") require("string") info={ version="1.0", description="Cumulative USE - TUSE" } local Power = 1 local Logtime = os.time() local TempCumulativeKwH = 0 local CumulativeKwH = 0 local CurrentKwH = 0 function powersave(self) local file = io.open("/etc/plugboard/CumulativeKwH","r") CumulativeKwH = file:read("*all") file:close() CumulativeKwH = tonumber(CumulativeKwH) + TempCumulativeKwH TempCumulativeKwH = 0 local cmd = string.format("echo '%s'>/etc/plugboard/CumulativeKwH", CumulativeKwH) os.execute(cmd) CurrentKwH= (math.ceil(tonumber(CumulativeKwH * 10))) / 10 -- Publish to the endpoint.....makes it visible to the Joggler bscCurrentKwH:setText( tostring(CurrentKwH) ) bscCurrentKwH:sendEvent() -- Publish to Pachube CumulativeDataPost0() CumulativeDataPost11() self:reset() end function powerlog() local CurrentPeriod = os.difftime(os.time(), Logtime) Logtime = os.time() local CurrentKwH = tonumber((Power * CurrentPeriod / 3600000) * 0.621) TempCumulativeKwH = TempCumulativeKwH + CurrentKwH Power = xap.getValue("input.state","text") end function CumulativeDataPost0() CumulativeData = string.format([[xap-header { class=pachube.update target=dbzoo.livebox.pachube } datastream { id=0 tag=DailyUSE Value=%s }]], CumulativeKwH) xap.sendShort(CumulativeData) end function CumulativeDataPost11() CumulativeData = string.format([[xap-header { class=pachube.update target=dbzoo.livebox.pachube } datastream { id=11 tag=DailyKwH Value=%s }]], CumulativeKwH) xap.sendShort(CumulativeData) end function init() bscCurrentKwH = bsc.Endpoint{source="dbzoo.livebox.Plugboard:TUSEkWh", direction=bsc.INPUT, type=bsc.STREAM} -- Get the previously stored TUSE value local file = io.open("/etc/plugboard/CumulativeKwH","r") CurrentKwH= file:read("*all") file:close() CurrentKwH= (math.ceil(tonumber(CurrentKwH * 10))) / 10 -- publish it bscCurrentKwH:setText( tostring(CurrentKwH) ) bscCurrentKwH:sendEvent() CurrentKwH = 0 -- Use the pre-formed endpoint for power local f = xap.Filter() f:add("xap-header","source","dbzoo.livebox.Plugboard:ConsumedW") f:add("xap-header","class","xAPBSC.event") f:callback(powerlog) xap.Timer(powersave, 60):start() end