Licht an wenn TV an

Hallo

Ich möchte gerne das mein Hü Leuchte sich einschaltet wenn ich den TV einschalte. Jedoch erst nach Sonnenuntergang und ich möchte die Leuchte auch manuell ein und ausschalten können.
Das Lua Script nur für ein und ausschalten wenn der Tv läuft habe ich schon geschafft. mit dem Rest haperts.

–[[
%% properties
9 power
%% events
%% globals
TimeOfDay
TVLampe
–]]

local startSource = fibaro:getSourceTrigger();
if (
( tonumber(fibaro:getValue(9, “power”)) > 10
and fibaro:getGlobalValue(“TimeOfDay”) == “Evening”
or fibaro:getGlobalValue(“TimeOfDay”) == “Night”
and fibaro:getGlobalValue(“TVLampe”) == “aus” )
end

then
fibaro:call(149, “turnOn”);
fibaro:setGlobal(“TVLampe”, “ein”);
fibaro:debug(“Schalte TV Lampe ein”);
end

if (
( tonumber(fibaro:getValue(9, “power”)) < 10
and fibaro:getGlobalValue(“TVLampe”) == “ein” )
or
startSource[“type”] == “other”
)
then
fibaro:call(149, “turnOff”);
fibaro:setGlobal(“TVLampe”, “aus”);
fibaro:debug(“Schalte TV Lampe aus”);
end

so gehts leider nicht.
Bitte um Hilfe

Hallo Alfred,

besser spät als nie :wink: Du hast vermutlich noch keine Antwort bekommen, weil Deine Frage schon sehr detailiert ist und der Beitrag nicht wirklich gut zu lesen ist. Wenn Du einen Beitrag schreibst, hast Du über dem Editor eine Leiste wo unteranderem der Button Code erscheint. Wenn Du diesen drückst, dann Deinen Lua Code nach dem Hochkomma einfügst und anschließend nochmal den Button drückst, dann ist es besser.

Ich habe mir Deine Szene einmal angesehen. Du hast hier einiges durcheinander gebracht. Zum einen triggerst Du die Szene über den Wert power des Wallplugs. Dadurch wird sie bei jeder Verbrauchsänderung Deines Fernsehers gestartet. Wenn Du damit erreichen möchtest, dass das Licht eingeschaltet wird, auch wenn der TV schon läuft wäre der Ansatz ein wenig anders. Aber ich gehe jetzt erstmal davon aus, dass beim Einschalten des TVs entschieden werden soll, ob die Hues angehen oder nicht. Zusätzlich hast Du eine globale Variable erstellt in der Du den Zustand der Hue Lampe(n) speicherst. Diese brauchst Du nicht.

Ich habe Dir - blind und ohne ausgiebig getestet zu haben - eine Szene erstellt mit der Du folgendes erreichen kannst:

  1. Wallplug am TV wird eingeschaltet und es wird geprüft, ob es Evening oder Night ist. Wenn ja, dann wird das Device 149 (hue) eingeschaltet.
  2. Bei manuellem Ausführen der Szene wechselt das Device 149 seinen Zustand, also von Aus zu An oder eben von An zu Aus.

Die Szene wird vermutlich nicht Deinen Anforderungen entsprechen, aber Dir hier eine fertige Szene für alle Anforderungen hinzustellen wird Dich zwar kurzfristig weiter bringen, aber dadurch lernst Du es nicht :wink: Nimm meinen Vorschlag und erweitere ihn so, wie Du ihn haben möchtest. Es geht erstmal darum den Ablauf der Szene vorher zu skizzieren. Anfangs auf einem Blatt Papier und später im Kopf. Mache Dir einen Plan, welche Bedingungen zu welcher Zeit erfüllt werden müssen und male es Dir als Ablaufdiagramm auf. Das hilft enorm. Bei konkreten Fragen stehen Dir hier viele fleißige User zur Verfügung.

Die Szene:

–[[
%% properties
9 value
%% events
%% globals
–]]

local startSource 	= fibaro:getSourceTriggerType()
local hueDevice		= 149
local TimeOfDay 	= fibaro:getGlobalValue("TimeOfDay")
local TVLampe 		= fibaro:getGlobalValue("TVLampe")
local wallplugTV 	= fibaro:getValue(9, "value")

if startSource["type"] == "other" then
	if wallplugTV == 0 then 
		fibaro:call(hueDevice, "turnOn");
	else
		fibaro:call(hueDevice, "turnOff");
	end
else
	if TimeOfDay == "Evening" of TimeOfDay == "Night" then
		fibaro:call(hueDevice, "turnOn");
	elseif wallplugTV == 0 then
		fibaro:call(hueDevice, "turnOff");
	end
end

Super Danke.

Gibt es eigentlich eine empfehlenswerte Lektüre um LUA Codieren zu lernen?

Ich hab noch eine Frage
bei: if wallplug == 0 ist wahrscheinlich gemeint wenn der Wallplug eingeschaltet wird. Bei ist es jedoch so das der Wallplug Immer eingeschaltet ist. Die Hue soll sich einschalten der der TV mehr Strom als im Standby betrieb braucht.

Hallo Alfred,

das Internet ist voll mit LUA Hilfen und Beispielen. Aber in meinen Augen ist es wichtiger sich mit Skriptsprachen und mit dem Ablauf der Szenen zu beschäftigen. Erst wenn Du das durchdrungen hast wirst Du LUA anwenden können. Klingt aber schlimmer als es ist.

Zu Deiner Frage bzgl. der Szene: Richtig, ich ging davon aus, dass der Wallplug ausgeschaltet ist und zum TV sehen einschaltest wird. Ist dem nicht so und die Szene soll gestartet werden, sobald die Geräte am Wallplug Strom verbrauchen brauchst Du einen anderen Trigger. Und zwar doch 9 power. Du hattest Dich ja Anfangs auch für diesen entschieden, jedoch keine weitere Abfrage nach den Verbrauchswerten gemacht. So wird die Szene jedes Mal ausgeführt, wenn Dein TV mehr oder weniger Strom verbraucht. Also eigentlich immer und immer wieder, solange der TV eingeschaltet ist.

Für mich ist der power-Wert kein geeigneter Trigger. Da würde ich mich entweder dazu entschließen den Wallplug bei Nichtbenutzung auszuschalten (spart nebenbei auch noch Standby-Strom) oder mir mit einer Autostart-Szene behelfen die Periodisch den power-Wert abfragt und ab einer bestimmten Wattzahl die Tageszeit prüft und dann ggf. Licht einschaltet.