Fibaro Wall Plug aus nach Zeit bei Last < 10 Watt

Hallo,
ich suche nach einer Möglichkeit meinen Wall Plug nach folgenden Kriterien zu schalten.

  1. Ich schalte den Wall Plug manuell über die APP ein.
  2. Jetzt schalte ich mein Gerät das im Wall Plug steckt per Fernbedienung ein, P > 20 Watt.
  3. Später schalte ich mein Gerät über die Fernbedienung AUS, dann ist P < 10 Watt
  4. Das Gerät geht in Standby und muss jetzt noch z. B. 30 Minuten am Netz bleiben bevor ich das Gerät über den WALL PLUG vom Netzt trenne darf.
    Kann ich das mit dem Wall PLUG realisieren?
    Danke im Voraus

Ich habe die gleiche Anforderung wie folgt mit LUA gelöst:
Der Fernseher hägt an einem Wallplug (bei ID 765)
Wenn ich den Fernseher mit Fernbedienung in Standby schalte, geht die Leisung unterhalb 10W.
Nun wartet das Script 60 Sekunden. Ist dann die Leistung immer noch unter 10W, wird das WallPlug abgeschaltet.

Ich hoffe das hilft weiter.

Liebe Grüße

–[[
%% properties
%% autostart
765 power
%% weather
%% events
%% globals
–]]
local Geraet = 765
local Zeit = 60 --Sekunden
local MinLeistung = 10 --Watt
local Leistung0 = tonumber(fibaro:getValue(Geraet, „power“))

if Leistung0 > MinLeistung then fibaro:abort() end

fibaro:sleep(Zeit * 1000)
local Leistung1 = tonumber(fibaro:getValue(Geraet, „power“))

fibaro:debug(„P0:“… Leistung0… „W“… „P1:“… Leistung1… „W“)

if Leistung0 < MinLeistung and Leistung1 < MinLeistung then
fibaro:debug(„Aus“)
fibaro:call(Geraet, „turnOff“)
end

Hallo msv,
vielen Dank für das Script, das ist die Aufgabenlösung die ich suche.
Mein Wall Plug hat die ID 651. Ich habe die ID geändert und 30 Sekunden testweise eingegeben.
Leider kriege ich eine Fehlermeldung, kenne mich mit LUA aber leider nicht aus.
Hier die Fehlermeldung:
[DEBUG] 19:11:18: 2025-06-01 19:11:18.617731 [ fatal] Unknown exception: /opt/fibaro/scenes/118.lua:1: unexpected symbol near char(226)

Hier noch meine geänderte Scene:
–[[
%% properties
%% autostart
651 power
%% weather
%% events
%% globals
–]]
local Geraet = 651
local Zeit = 30 --Sekunden
local MinLeistung = 10 --Watt
local Leistung0 = tonumber(fibaro:getValue(Geraet, „power“))

if Leistung0 > MinLeistung then fibaro:abort() end

fibaro:sleep(Zeit * 1000)
local Leistung1 = tonumber(fibaro:getValue(Geraet, „power“))

fibaro:debug(„P0:“… Leistung0… „W“… „P1:“… Leistung1… „W“)

if Leistung0 < MinLeistung and Leistung1 < MinLeistung then
fibaro:debug(„Aus“)
fibaro:call(Geraet, „turnOff“)
end

Moin
Den Fehler konnte ich zwar nicht reproduzieren, da ich ein HC3 im Einsatz habe, aber beim HC3 werden nur zwei Punkte zum verbinden von Strings angegeben. Vielleicht ist das Deine Fehlermeldung.
Gruß KaWi

Hallo KaWi,
das übersteigt jetzt meine Kenntnisse. Das Programm das du mir geschickt hattest hat doch 3 Punkte gehabt, ich habe da nichts verändert. Ich weiß auch nicht wie ich in LUA mir die „unexpected symbol near char(226)“ anzeigen lassen könnte.
Trotzdem vielen Dank, das Programm hätte genau gepasst, jetzt muss ich irgendwie weitersuchen oder vielleicht kann mir noch jemand aus dem Forum noch weiterhelfen.

Hallo KaWi,
ich habe die 3 Punkte durch 2 Punkte mit Blank davor ersetzt. Problem besteht weiterhin.

Hallo hjk,
ich hatte Dir keine umgeschriebene LUA-Zeile gesendet sondern lediglich Deine Angaben zitiert. Deshalb hat sich bei der Ausführung der Scene bei Dir auch nichts geändert.

Zur Erklärung:
In LUA werden Stirngs (also Zeichenketten) mittels doppelten Punkten verbunden.
Beispiel:

fibaro:debug("Text1," .. "Text2," .. " Text3")

In dem von mir zitierten Beispiel waren zwischen den Strings drei Punkte. Das kann also nicht funtionieren.
Außerdem kann LUA mit den deutschen Gänsefüßchen nicht wirklich was anfangen. Hier also die einfachen Zeichen (Shift+2) verwenden. Dein Code würde mit den Änderungen also wie folgt aussehen:

local Geraet = 651
local Zeit = 30 --Sekunden
local MinLeistung = 10 --Watt
local Leistung0 = tonumber(fibaro:getValue(Geraet, "power"))

if Leistung0 > MinLeistung then fibaro:abort() end

fibaro:sleep(Zeit * 1000)
local Leistung1 = tonumber(fibaro:getValue(Geraet, "power"))

fibaro:debug("P0:"..Leistung0.. "W".. "P1:".. Leistung1.. "W")

if Leistung0 < MinLeistung and Leistung1 < MinLeistung then
fibaro:debug("Aus")
fibaro:call(Geraet, "turnOff")
end

…und noch ein Hinweis:
die Sleep-Funktion legt übertieben gesagt den ganzen HC lahm, weil auf den Ablauf der Zeitschleife gewartet wird. Bei 10 Sekunden ist das wohl nicht das Problem. Grundsätzlich besser ist es ein setTimeout zu verwenden. Dann wäre aus meiner Sicht aber auch eine Funktion besser, die man dann pausieren lässt. Aber das ggf. später.

Versuch bitte mal den oben geänderten Code. Der gesamte Code ist zwar aus meiner Sicht nicht perfekt, aber zum üben und lernen von LUA durchaus gut. Ich selbst habe viel aus diesem Tutorial gelernt Lua Tutorial - Anleitungen und Tutorials - 3D-Modellbahn Studio

Gruß
KaWi