Energieverbrauch-Check. Verbraucher nach bestimmter Zeit aus

Ein Skript, welches einen bestimmten Verbraucher checkt und nach einer bestimmten Zeit ausschaltet und eine Push-Mitteilung schickt. Bitte die oberen Variablen anpassen. HF.

--[[
%% properties
63 power
%% globals
--]]

-- ANPASSEN
 
local power_socket = 63 -- STROMVERBRAUCHER (BITTE AUCH OBEN VERÄNDERN)
local time = 20 -- ZEIT NACHDEM DER COUNTER BEENDET WERDEN SOLL (IN SEKUNDEN)
local usage = 12 -- WATT-ZAHL
local deviceID = 68 -- deviceID DES HANDYS
local pushMessage = "Verbraucher war länger als 10 min an" -- PUSH-MESSAGE

-- AB HIER NICHTS MEHR ÄNDERN

if (fibaro:countScenes()>1)
  then
 	fibaro:abort();
  fibaro:debug('abort');
end


local run = 0
local counter = 0

local currentDate = os.date("*t");
local power = fibaro:getValue(power_socket, "power")

if ( tonumber(fibaro:getValue(power_socket, "power")) > usage ) and run == 0 then
  local start = (os.time())
  fibaro:debug("Verbrauch über " ..usage.. "Watt")
  fibaro:debug("Verbrauch = "..power.." Watt")
  run = 1
end

while run == 1 do
 
if (tonumber(fibaro:getValue(power_socket, "value")) == 1) then
     counter = counter + 1
    end
       if (tonumber(fibaro:getValue(power_socket, "power")) > usage) and counter > time then
          fibaro:debug("Verbraucher ist immer noch an. Send Push")
          fibaro:call(deviceID, "sendPush", pushMessage, "usage");
    	  fibaro:call(power_socket, "turnOff");
          counter = 0
		  run = 0    
        elseif (tonumber(fibaro:getValue(power_socket, "value")) == 0 and counter < time) then
          fibaro:debug("Verbraucher wurde innnerhalb der vorgegebenen Zeit abgeschaltet... Abort scene")
          run = 0
          counter = 0
       end
  fibaro:sleep(1*1000)
end