Stromsparmaßnahmen

Guten Morgen,

da meine Suche nach schlauen LUA Szenen zur Steuerung meiner Multimedia Geräte im Wohnzimmer nur auf mäßigen Erfolg gestoßen ist, habe ich mich selbst ans Werk gemacht und etwas dafür entwickelt.
Das Skript ist natürlich nicht 1:1 auf die Gegebenheiten anderer SmartHomes zu übertragen, dennoch möchte ich es Euch nicht vorenthalten. Vielleicht hat ja der ein oder andere noch Verbesserungsvorschläge oder kann es als Inspiration für eigene Szenen nutzen.

Die Ausgangslage:
Ich bin Multimedia verrückt :wink: und habe in meinem Wohnzimmer einen ganzen Haufen von Verbrauchern die mir viel Spaß bereiten wenn ich sie nutze. Als da wären, Onkyo A/V Receiver nebst hochwertigem 5.1 System, ein VU+ TV Receiver, Sonos Connect, PS4 plus Ladestation für Controller, Kodi auf einem SFF Desktop PC, Raspberry als DNSMASQ Server, Netzwerkswitch, QNAP NAS, Hue Lampen nebst Bridge und noch 2 oder 3 kleinere Verbraucher.

Die Motivation:
Kurz gesagt: 150 Watt Verbrauch im Standby! Bei 20 Stunden Standby am Tag sind das rund 1.000 KWh im Jahr. Bei meinem Tarif also etwa 300 € Stromkosten im Jahr dafür, dass die Geräte auf ihre Nutzung warten.

Das Vorhaben:
Die Standbyzeiten auf ein Minimum reduzieren. Im ersten Schritt einmal auf Standby verzichten, wenn ich gar nicht zu Hause bin oder schlafe.

Die Herausforderung:
Meine erste Überlegung war die Platzierung eines Fibaro Wallplugs um erst alle Geräte per LUA herunterzufahren und dann den Strom komplett abzuschalten. Diese Idee habe ich dann schnell zu den Akten gelegt, da auch Komponenten dabei sind, die ich nicht abschalten möchte (DNSMASQ Server und Netzwerkswitch) und die Investition in 4-6 Wallplugs mir dann doch etwas übertrieben vorkam. Ich brauchte also eine Möglichkeit die Geräte entsprechend gruppieren und selektiv ein und ausschalten zu können ohne x mal 50 € zu investieren. Durch Zufall lief mir die Greenpower PowerNode 6 - eine über Z-Wave gesteuerte Steckdosenleiste - über den Weg und ich habe gleich zugeschlagen, die rund 100€ schienen mir für eine Steckerleiste als zu hoch, aber deutlich günstiger als 5 oder 6 Wallplugs. Noch dazu kann die PowerNode 6 genau wie der Wallplug schalten und messen. Das Gerät ist für mein Vorhaben die perfekte Lösung. Also habe ich die Geräte nach dem Prinzip “Welches Gerät brauche ich für welche Aktion?” gruppiert und waren bereit für den smarten Einsatz in meiner Szene.

Die Szenen Idee:
Wie bereits erwähnt wollte ich erstmal alles so steuern, dass zu den Zeiten in denen ich die Geräte definitiv nicht brauche kein Strom verbraucht wird. Also alles aus, wenn ich nicht da bin oder schlafe. Für beide Szenarien gab es bereits globale Variablen, nämlich “SleepState” und “PresentState” aus der intelligenten Lichtsteuerung. Mit diesen konnte ich die Szene triggern. Die Variable “PresentState” hatte ich schon mit dem einschalten des Alarms entsprechend verwendet, “SleepState” war bisher nur in meinem HC2 anwesend und stand immer auf “Awake”.
Die Idee war nun, dass ich beim Wechsel einer der beiden Variablen (Anmerkung: ein gleichzeitiger Wechsel, also das doppelte starten der Szene ist bei mir praktisch unmöglich, denn ich schlafe entweder zu Hause, oder ich bin “Away” :wink: ) all meine Multimediagerät ggf. herunterfahre und dann den Strom abschalte.

Die Sonderfälle:
Natürlich war es mit dem einfachen herunterfahren und ausschalten nicht getan, denn das ein oder andere Gerät wurde trotz gesetztem “SleepState” noch benötigt - zumindest temporär. So nutze ich zum einschlafen einen CuboxTV mit Kodi. Dieser empfängt sein TV Signal über IP vom VU+ Receiver im Wohnzimmer. Da mir alle Basteleien rund um “wenn keine Bewegung …oder… seit x Minuten keine Aktion ausgeführt” zu unsicher sind habe ich diese Ausnahme also in die Szene mit übernommen indem diese prüft, ob der Wallplug an dem Fernseher und CuboxTV im Schlafzimmer hängen mehr also 20 Watt Strom verbraucht. Ist dies der Fall, ist der Fernseher noch eingeschaltet und das Herunterfahren und Ausschalten im Wohnzimmer wartet. Sobald der TV sich per SleepTimer ausgeschaltet hat, läuft die Szene zu Ende und fährt alles im Wohnzimmer herunter.

Das LUA Skript:

--[[
%% properties
%% globals
PresentState
SleepState
--]]

-----------------------------------
--------- Verwendung ---------
--[[
Steuerung Multimediageräte (Wohnzimmer)

Trigger: globale Variablen PresentState und SleepState

bei Away/Sleeping
- Ausschalten aller Lichtquellen
- Herunterfahren von Rechnern
- Abschalten des Stroms

bei Home/Awake
- Einschalten des Stroms
- Geräte hochfahren
--]]

-----------------------------------
--------- Schleifenschutz ---------

if (fibaro:countScenes()>1) then
fibaro:debug('Kill the second scene!');
fibaro:abort();
end

-----------------------------------
---------- Einstellungen ----------
vardebug = true

-----------------------------------
------------- Config --------------
SleepState = fibaro:getGlobal("SleepState") 		-- Schlafstatus abfragen
PresentState = fibaro:getGlobal("PresentState")		-- Präsenzstatus abfragen
local powerdown = {144,145,147,143,146}			-- ID der Steckdosen der Greenworks Leiste die ab-/angeschaltet werden sollen
local qnap = 139					-- ID QNAP (VD)
local vu = 122						-- ID VU+ (VD)
local edimax = {75,76}					-- ID Edimax Zwischenstecker (VD)
local lights = {8,10}					-- ID Lampen Wohnzimmer
local hue = 79						-- ID Hue (VD)
local wallplug = 105					-- ID Wallplug Schlafzimmer

--------------------------------
---------- Funktionen ----------

-- ### Debug Funktion
function debug(color, message) 
	if (vardebug) then 
		--fibaro:debug(message) 
		fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span"));
	end
end

-- ### Funktion state um zu ermitteln, was getan werden muss.
-- ### Bei Abwesendheit oder Schlaf ist die Variable state > 0
function state()
	state = 0
	if (fibaro:getGlobal("PresentState") == "Away")   then state = state + 1 end
	if (fibaro:getGlobal("SleepState")   == "Sleeping") then state = state + 1 end
end	

-- ## Funktion recheck_state zum erneuten prüfen.
-- ## Implementiert, damit nicht bei jedem aktivieren/deaktiviere des Alarms sofort alles hoch- und runtergefahren wird.
-- ## Siehe unten
function recheck_state()
	recheck_state = 0
	if (fibaro:getGlobal("PresentState") == "Away")   then recheck_state = recheck_state + 1 end
	if (fibaro:getGlobal("SleepState")   == "Sleeping") then recheck_state = recheck_state + 1 end
end	

-- ### Diverse Ausgaben zum debuggen
debug("green",PresentState)
debug("blue",SleepState)
state()
debug("red",state)

--------------------------------
------------ Skript ------------

-- ### Überprüfen des states (0 = Home oder Awake // > 0 = Away/Holiday oder Sleeping)
if (state == 0) then
	debug("blue","Status Home/Awake, 3 Minute warten ...")
	-- ### Nachdem der Status 0 gesetzt wurde, 3 Minuten warten. 
	-- ### Typisch: Haus verlassen und irgendwas vergessen
	-- ### So fährt nicht gleich alles wieder hoch
		fibaro:sleep(180000) -- 3 Minute
		-- ### Jetzt State erneut prüfen, ist dieser noch immer 0, dann fortfahren
			recheck_state()
			if (recheck_state == 0) then
				-- ## Alle oben definierten Dosen der Leiste einschalten
				debug("blue","Strom einschalten")
					for i = 1,#powerdown do
						fibaro:call(powerdown[i],"turnOn")
					end
				-- ## Edimax Zwischenstecker einschalten
				debug("green","Edimax WZ einschalten")	
					fibaro:call(75, "pressButton", "1")
				-- ## Eine Minute warten um anschließend VU+ in den Standby setzen zu können (Ist nach dem hochfahren immer AN)
				debug("blue","1 Minute warten")
					fibaro:sleep(60000) -- 1 Minute
				debug("blue","VU+ auf Standby schalten")
					fibaro:call(vu, "pressButton","5")
			end
elseif (state > 0) then
	-- ### Nachdem der Status 1 gesetzt wurde, 5 Minuten warten
	-- ### Selber Grund wie oben nur anders herum
		debug("blue","Status Away/Sleeping, 5 Minute warten ...")
		fibaro:sleep(300000) -- 5 Minuten warten
			-- ### Jetzt State erneut prüfen, ist dieser noch immer 0, dann fortfahren
				recheck_state()
					if (recheck_state > 0) then
						-- ## Hues ausschalten
							debug("red","Hues aus")
							fibaro:call(hue, "pressButton", 10)
						-- ## Lampen ausschalten
							debug("red","Lampen aus")
							for k = 1,#lights do
								fibaro:call(lights[k],"turnOff")
							end
						--## Edimax Zwischenstecker ausschalten
							debug("red","Edimax ausschalten")	
							for j = 1,#edimax do
								fibaro:call(edimax[j], "pressButton", "2")
							end
						-- ## Über Stromverbrauch Wallplug prüfen, ob der TV im Schlafzimmer läuft
							debug("yellow","Teste Stromverbrauch im Schlafzimmer...")
							if ( tonumber(fibaro:getValue(wallplug, "power")) > 20) then
									--## Solange der Verbrauch > 20 Watt Schleife laufen lassen
										while tonumber(fibaro:getValue(wallplug, "power")) > 20 do
											debug("yellow",powersz.." Watt - TV läuft...warten ")
											fibaro:sleep(120000) -- 2 Minute warten, dann erneut prüfen
										end
									--## Wenn Verbrauch < 20 Watt, dann Wallplug ausschalten
										debug("green","TV ausgeschaltet, Wallplug abschalten")
										fibaro:call(wallplug,"turnOff")
							else
									--## Wenn TV aus, dann einfach fortfahren
										debug("green","TV aus")
							end
						--## NAS herunterfahren
							debug("red","NAS herunterfahren")
							fibaro:call(qnap, "pressButton", "1")
						--## VU+ herunterfahren
							debug("red","VU+ herunterfahren")
							fibaro:call(vu, "pressButton", "1")
						--## 3 Minuten auf Herunterfahren warten
							debug("red","3 Minuten auf herunterfahren warten")
							fibaro:sleep(180000) -- 3 Minuten warten
						-- ## Alle oben definierten Dosen der Leiste ausschalten
							debug("red","Strom aus")
							for i = 1,#powerdown do
								fibaro:call(powerdown[i],"turnOff")
							end
							
					end
end

debug("green","Ende")

Ergebnis:
Es bleibt im Wohnzimmer genau eine Steckdose eingeschaltet. Diese versorgt meinen Raspberry und den Netzwerk-Switch mit Strom. Sind alle anderen Geräte aus liegt der Verbrauch dieser Geräte bei etwa 12 Watt. Ich spare also rund 800 KWh bzw. 220€ im Jahr.

Ist nun doch etwas mehr Test geworden als geplant. Über Kommentare und Verbesserungsvorschläge würde ich mich freuen.

Gruß
Neospin

PS: So eine Vorschaufunktion im Forum wäre schön :wink:

Hi,

um die Arrays abzuarbeiten

for i = 1,#powerdown do
 fibaro:call(powerdown[i],"turnOn")

nutzt Du unterschiedliche Buchstaben i, j, k
Müssen diese mal zurückgesetzt werden?
Oder weiß “i” immer wie viele IDs abzuarbeiten sind bzw die anderen?

vg Hoggle

Hi,

die i Variable existiert nur innerhalb der for-Schleife und ich hätte auch immer denselben nehmen können.
Habe mir aber irgendwann mal angewöhnt unterschiedliche zu verwenden. In erster Linie um in verschachtelten Schleifen zurecht zu kommen.

Gruß
Neospin

Danke!

Hi,

ich habe vor dein Skript für meine Zwecke zu nutzen. Erstmal habe ich nur die Elemente, welche ich vorerst nicht benötige auskommentiert.
Ich erhalte jedoch einen Fehler beim ausführen, line 98 sowie line 157.
[Debug]Zeit: line 157: attempt to get length of local ‘powerdown’ (a number value)

Leider kann ich mit der Codezeile noch nichts anfangen, hier wäre eine kleine “Übersetzung” hilfreich.

Hier der Code angepasste Code:


--[[
%% properties
%% globals
PresentState
SleepState
--]]
 
-----------------------------------
--------- Verwendung ---------
--[[
Steuerung Multimediageräte (Wohnzimmer)
 
Trigger: globale Variablen PresentState und SleepState
 
bei Away/Sleeping
- Ausschalten aller Lichtquellen
- Herunterfahren von Rechnern
- Abschalten des Stroms
 
bei Home/Awake
- Einschalten des Stroms
- Geräte hochfahren
--]]
 
-----------------------------------
--------- Schleifenschutz ---------
 
if (fibaro:countScenes()>1) then
fibaro:debug('Kill the second scene!');
fibaro:abort();
end
 
-----------------------------------
---------- Einstellungen ----------
vardebug = true
 
-----------------------------------
------------- Config --------------
SleepState = fibaro:getGlobal("SleepState") 		-- Schlafstatus abfragen
--PresentState = fibaro:getGlobal("PresentState")		-- Präsenzstatus abfragen
local powerdown = 73			-- ID der Steckdosen der Greenworks Leiste die ab-/angeschaltet werden sollen
--local qnap = 139					-- ID QNAP (VD)
--local vu = 122						-- ID VU+ (VD)
--local edimax = {75,76}					-- ID Edimax Zwischenstecker (VD)
--local lights = {8,10}					-- ID Lampen Wohnzimmer
--local hue = 79						-- ID Hue (VD)
local wallplug = 79					-- ID Wallplug Schlafzimmer
 
--------------------------------
---------- Funktionen ----------
 
-- ### Debug Funktion
function debug(color, message) 
	if (vardebug) then 
		--fibaro:debug(message) 
		fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span"));
	end
end
 
-- ### Funktion state um zu ermitteln, was getan werden muss.
-- ### Bei Abwesendheit oder Schlaf ist die Variable state > 0
function state()
	state = 0
	--if (fibaro:getGlobal("PresentState") == "Away")   then state = state + 1 end
	if (fibaro:getGlobal("SleepState")   == "Sleep") then state = state + 1 end
end	
 
-- ## Funktion recheck_state zum erneuten prüfen.
-- ## Implementiert, damit nicht bei jedem aktivieren/deaktiviere des Alarms sofort alles hoch- und runtergefahren wird.
-- ## Siehe unten
function recheck_state()
	recheck_state = 0
	--if (fibaro:getGlobal("PresentState") == "Away")   then recheck_state = recheck_state + 1 end
	if (fibaro:getGlobal("SleepState")   == "Sleep") then recheck_state = recheck_state + 1 end
end	
 
-- ### Diverse Ausgaben zum debuggen
--debug("green",PresentState)
debug("blue",SleepState)
state()
debug("red",state)
 
--------------------------------
------------ Skript ------------
 
-- ### Überprüfen des states (0 = Home oder Awake // > 0 = Away/Holiday oder Sleeping)
if (state == 0) then
	debug("blue","Status Home/Awake, 3 Minute warten ...")
	-- ### Nachdem der Status 0 gesetzt wurde, 3 Minuten warten. 
	-- ### Typisch: Haus verlassen und irgendwas vergessen
	-- ### So fährt nicht gleich alles wieder hoch
		fibaro:sleep(180000) -- 3 Minute
		-- ### Jetzt State erneut prüfen, ist dieser noch immer 0, dann fortfahren
			recheck_state()
			if (recheck_state == 0) then
				-- ## Alle oben definierten Dosen der Leiste einschalten
				debug("blue","Strom einschalten")
					for i = 1,#powerdown do
						fibaro:call(powerdown[i],"turnOn")
					end
				-- ## Edimax Zwischenstecker einschalten
				--debug("green","Edimax WZ einschalten")	
				--	fibaro:call(75, "pressButton", "1")
				-- ## Eine Minute warten um anschließend VU+ in den Standby setzen zu können (Ist nach dem hochfahren immer AN)
				--debug("blue","1 Minute warten")
				--	fibaro:sleep(60000) -- 1 Minute
				--debug("blue","VU+ auf Standby schalten")
				--	fibaro:call(vu, "pressButton","5")
			end
elseif (state > 0) then
	-- ### Nachdem der Status 1 gesetzt wurde, 5 Minuten warten
	-- ### Selber Grund wie oben nur anders herum
		debug("blue","Status Away/Sleeping, 5 Minute warten ...")
		fibaro:sleep(300000) -- 5 Minuten warten
			-- ### Jetzt State erneut prüfen, ist dieser noch immer 0, dann fortfahren
				recheck_state()
					if (recheck_state > 0) then
						-- ## Hues ausschalten
						--	debug("red","Hues aus")
						--	fibaro:call(hue, "pressButton", 10)
						-- ## Lampen ausschalten
						--	debug("red","Lampen aus")
						--	for k = 1,#lights do
						--		fibaro:call(lights[k],"turnOff")
						--	end
						--## Edimax Zwischenstecker ausschalten
						--	debug("red","Edimax ausschalten")	
						--	for j = 1,#edimax do
						--		fibaro:call(edimax[j], "pressButton", "2")
						--	end
						-- ## Über Stromverbrauch Wallplug prüfen, ob der TV im Schlafzimmer läuft
						--	debug("yellow","Teste Stromverbrauch im Schlafzimmer...")
						--	if ( tonumber(fibaro:getValue(wallplug, "power")) > 20) then
									--## Solange der Verbrauch > 20 Watt Schleife laufen lassen
						--				while tonumber(fibaro:getValue(wallplug, "power")) > 20 do
						--					debug("yellow",powersz.." Watt - TV läuft...warten ")
						--					fibaro:sleep(120000) -- 2 Minute warten, dann erneut prüfen
						--				end
									--## Wenn Verbrauch < 20 Watt, dann Wallplug ausschalten
						--				debug("green","TV ausgeschaltet, Wallplug abschalten")
						--				fibaro:call(wallplug,"turnOff")
						--	else
									--## Wenn TV aus, dann einfach fortfahren
						--				debug("green","TV aus")
						--	end
						--## NAS herunterfahren
						--	debug("red","NAS herunterfahren")
						--	fibaro:call(qnap, "pressButton", "1")
						--## VU+ herunterfahren
						--	debug("red","VU+ herunterfahren")
						--	fibaro:call(vu, "pressButton", "1")
						--## 3 Minuten auf Herunterfahren warten
						--	debug("red","3 Minuten auf herunterfahren warten")
						--	fibaro:sleep(180000) -- 3 Minuten warten
						-- ## Alle oben definierten Dosen der Leiste ausschalten
							debug("red","Strom aus")
							for i = 1,#powerdown do
								fibaro:call(powerdown[i],"turnOff")
							end
							
					end
end
 
debug("green","Ende")

Oh, die Nachfrage habe ich gerade erst gesehen, sorry.

Hallo erstmal,

auch wenn es vermutlich nicht mehr relevant ist, möchte ich zumindest für die Nachwelt die Lösung hier niederschreiben.

[Debug]Zeit: line 157: attempt to get length of local ‚powerdown‘ (a number value)

Der Fehler kommt dadurch zustande, dass es sich in meinem Skript bei der Variable powerdown um ein Array handelt. Also eine Variable mit mehreren ID als Inhalt. Diese werden in den Zeilen 158 bis 160 in der for Schleife nach einander abgearbeitet, so dass auch alle Steckdosen ausgeschaltet werden und nicht nur eine.

						debug("red","Strom aus")
							for i = 1,#powerdown do
								fibaro:call(powerdown[i],"turnOff")
							end

Du hast jetzt aus dem Array eine einfache Variable gemacht:
local powerdown = 73

Dadurch funkioniert die for-Schleife nicht mehr und das Skript wirf den oben genannten Fehler.

Funktionieren würde es, wenn Du Deine ID 73 als einzigen Wert in das Array legst:

local powerdown = {73}

Hallo nochmal,

mittlerweils hat sich das Skript auch noch ein wenig verändert. Ich starte die Geräte nur noch, wenn ich sie auch wirklich brauche.

--[[
%% properties
%% globals
PresentState
SleepState
--]]

-----------------------------------
--------- Verwendung ---------
--[[
Steuerung Multimediageräte (Wohnzimmer)

Trigger: globale Variablen PresentState und SleepState

bei Away/Sleeping
- Ausschalten aller Lichtquellen
- Herunterfahren von Rechnern
- Abschalten des Stroms

--]]

-----------------------------------
--------- Schleifenschutz ---------

if (fibaro:countScenes()>1) then
fibaro:debug('Kill the second scene!');
fibaro:abort();
end

-----------------------------------
---------- Einstellungen ----------
vardebug = true

-----------------------------------
------------- Config --------------
SleepState = fibaro:getGlobal("SleepState") 		-- Schlafstatus abfragen
PresentState = fibaro:getGlobal("PresentState")		-- Präsenzstatus abfragen
local powerdown = {209,211,213,215,217,219}				-- ID der Steckdosen der Greenworks Leiste die ab-/angeschaltet werden sollen
local qnap = 139									-- ID QNAP (VD)
local vu = 122										-- ID VU+ (VD)
local edimax = {76}								-- ID Edimax Zwischenstecker (VD)
local lights = {8,10,152,42,44,155}					-- ID Lampen
local hue = 79										-- ID Hue (VD)
local wallplug = 105								-- ID Wallplug Schlafzimmer

--------------------------------
---------- Funktionen ----------

-- ### Debug Funktion
function debug(color, message) 
	if (vardebug) then 
		--fibaro:debug(message) 
		fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span"));
	end
end

-- ### Funktion state um zu ermitteln, was getan werden muss.
-- ### Bei Abwesendheit oder Schlaf ist die Variable state > 0
function state()
	state = 0
	if (fibaro:getGlobal("PresentState") == "Away")   then state = state + 1 end
	if (fibaro:getGlobal("SleepState")   == "Sleeping") then state = state + 1 end
end	

-- ## Funktion recheck_state zum erneuten prüfen.
-- ## Implementiert, damit nicht bei jedem aktivieren/deaktiviere des Alarms sofort alles hoch- und runtergefahren wird.
-- ## Siehe unten
function recheck_state()
	recheck_state = 0
	if (fibaro:getGlobal("PresentState") == "Away")   then recheck_state = recheck_state + 1 end
	if (fibaro:getGlobal("SleepState")   == "Sleeping") then recheck_state = recheck_state + 1 end
end	

-- ### Diverse Ausgaben zum debuggen
debug("green",PresentState)
debug("blue",SleepState)
state()
debug("red",state)

--------------------------------
------------ Skript ------------

-- ### Überprüfen des states (0 = Home oder Awake // > 0 = Away/Holiday oder Sleeping)
if (state == 0) then
 debug("green","Nothing to do")
elseif (state > 0) then
	-- ### Nachdem der Status 1 gesetzt wurde, 5 Minuten warten
	-- ### Selber Grund wie oben nur anders herum
		debug("blue","Status Away/Sleeping, 5 Minute warten ...")
		fibaro:sleep(300000) -- 5 Minuten warten
			-- ### Jetzt State erneut prüfen, ist dieser noch immer 0, dann fortfahren
				recheck_state()
					if (recheck_state > 0) then
						-- ## Hues ausschalten
							debug("red","Hues aus")
							fibaro:call(hue, "pressButton", 10)
						-- ## Lampen ausschalten
							debug("red","Lampen aus")
							for k = 1,#lights do
								fibaro:call(lights[k],"turnOff")
							end
						--## Edimax Zwischenstecker ausschalten
							debug("red","Edimax ausschalten")	
							for j = 1,#edimax do
								fibaro:call(edimax[j], "pressButton", "2")
							end
						-- ## Über Stromverbrauch Wallplug prüfen, ob der TV im Schlafzimmer läuft
							debug("yellow","Teste Stromverbrauch im Schlafzimmer...")
							if ( tonumber(fibaro:getValue(wallplug, "power")) > 20) then
									--## Solange der Verbrauch > 20 Watt Schleife laufen lassen
										while tonumber(fibaro:getValue(wallplug, "power")) > 20 do
											debug("yellow", "TV läuft...warten ")
											fibaro:sleep(120000) -- 2 Minute warten, dann erneut prüfen
										end
									--## Wenn Verbrauch < 20 Watt, dann Wallplug ausschalten
										debug("green","TV ausgeschaltet, Wallplug abschalten")
										fibaro:call(wallplug,"turnOff")
							else
									--## Wenn TV aus, dann einfach fortfahren
										debug("green","TV aus")
							end
						--## NAS herunterfahren
							debug("red","NAS herunterfahren")
							fibaro:call(qnap, "pressButton", "1")
						--## VU+ herunterfahren
							debug("red","VU+ herunterfahren")
							fibaro:call(vu, "pressButton", "1")
						--## 3 Minuten auf Herunterfahren warten
							debug("red","3 Minuten auf herunterfahren warten")
							fibaro:sleep(180000) -- 3 Minuten warten
						-- ## Alle oben definierten Dosen der Leiste ausschalten
							debug("red","Strom aus")
							for i = 1,#powerdown do
								fibaro:call(powerdown[i],"turnOff")
							end
							
					end
end

debug("green","Ende")

Bei Fragen…fragen!

Gruß
Neospin

Hallo Bastian,

Mit großem Interesse habe ich Deinen Beitrag hier gelesen. Ich könnte mir vorstellen, das Skript im großen und ganzen auch bei mir einzusetzen.
Leider weiß ich nicht, wie man z.B. Das NAS (QNAP) per Skript herunter fahren kann. Ich glaube, Du verwendest hier ein VD, oder?
Kannst Du mir dazu vielleicht einen Tip geben, wie man das macht.

Gruß Thomas