Abschaltung bei bestimmtem Stromverbrauch

Hi Leute,
Ich habe mir ein Skript gebaut welches einen Fibaro Plug anschalten soll, sobald der angeschlossene Verbraucher weniger als 10 W Strom zieht.
Es geht dabei um ein PC Netzteil das im ausgeschalteten Zustand ca. 5 Watt verbraucht.
Leider “erwische” ich meine Szene immer wieder dass sie den Plug nicht abschaltet.

Da ich die Szene hier irgendwo abgekupfert habe, ist da auch ein 30 Sekunden Delay drinnen, das ich zwar nützlich finde, aber die Befehle dazu nicht wirklich verstanden hab

Hier mein Skript, vielleicht hat ja jemand einen Tipp!?.
Oder einen Hinweis auf ein Skript das besser funktioniert :wink:

--[[
%% properties
326 power
--]]
if (fibaro:countScenes()>2) then  fibaro:abort() end -- Lösche doppelte Szenen
Debug = function (color,message) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) end

local startSource = fibaro:getSourceTrigger()
if(startSource["type"] == "other") then
	Debug("green",(os.date("%d.%m.%Y - Schalte aus - bei Start")))
	fibaro:call(326, "turnOff")
else
if (( tonumber(fibaro:getValue(326, "power")) < 10 )) then
	setTimeout(function()
	local delayedCheck0 = false
	local tempDeviceState0, deviceLastModification0 = fibaro:get(326, "power")
		if (( tonumber(fibaro:getValue(326, "power")) < 10 ) and (os.time() - deviceLastModification0) >= 30) then
			delayedCheck0 = true
		end
	local startSource = fibaro:getSourceTrigger()
		if (
			( delayedCheck0 == true )
			or
			startSource["type"] == "other"
			)
		then
			Debug("green",(os.date("%d.%m.%Y - Schalte aus")))
            fibaro:call(326, "turnOff")
          fibaro:setGlobal("PushOver","PC4 Plug,PC4 abgeschaltet,-1,none")
			
		end
	end, 30000)
	end
end

Hi,

nimm das Skript “Push Waschmaschine” dafür. Sollte funktionieren.

Gruß

Stimmt Daniel, da war ich eh schon mal dran, hatte ich wieder vergessen,
Danke für den Tipp, läuft schon :wink:
Hab hier als Beispiel eine universelle Szene daraus gebastelt, wo man den Mindestverbrauch, Timer und das Device über Variablem einstellen kann.
Ist zwar noch nicht 100% sauber programmiert, aber läuft super…

--[[
%% properties
85 power
%% globals
  --]]
if (fibaro:countScenes()>1) then  fibaro:abort() end -- Lösche doppelte Szenen
Debug = function ( color, message ) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) end

---- Hier die Variablen anpassen, je nach Bedarf
local power_socket = 85 -- Geräte ID (Wallplug, Fibaro Switsch oder ähnliches Gerät)
local power_min = 10 -- minimaler Verbrauch, darunter wird abgeschaltet
local power_timer = 15 -- Zeit die der Verbrauch minimal bleiben darf

---- ab hier nix mehr ändern ;-)
local run = 0
local power = fibaro:getValue(power_socket, "power")
local counter = 0

if (tonumber(fibaro:getValue(power_socket, "power")) > power_min ) and run == 0 then
  Debug("green",("Gerät verbraucht  "..power.." Watt - Abschaltelimit bei " ..power_min.." Watt"))
  run = 1
end

while run == 1 do
  if (tonumber(fibaro:getValue(power_socket, "power")) < power_min) then
    counter = counter + 1
    local power2 = fibaro:getValue(power_socket, "power")
    Debug("yellow",("Verbrauch "..power2.." Watt, unter Limit: "..power_min.." Couter: "..counter.." "))
  end
  if (tonumber(fibaro:getValue(power_socket, "power")) > power_min ) then
    counter = 0
    local power2 = fibaro:getValue(power_socket, "power")
    Debug("green",("Verbrauch "..power2.." Watt, über Limit:  "..power_min.." Couter gestoppt"))
  end
  if (tonumber(fibaro:getValue(power_socket, "power")) < power_min) and counter > power_timer then
    local power3 =  fibaro:getValue(power_socket, "power")
    Debug("green",(os.date("%d.%m.%Y - Verbrauch "..power3.." Watt seit "..counter.." Sekunden - Schalte aus! "..power_min.." Watt")))
    fibaro:call(power_socket, "turnOff")
    run = 0
  end 
  fibaro:sleep(1*1000)
end