Szene verstehen

Hallo, ich habe bei mir folgende Szene laufen welche ich durch umstellen von Block auf LUA erstellt habe.
Passieren soll einfach ein Abfolge von Befehlen, HUE´s an, Radio an, etc. wenn ich an einem Lichtschalter doppelt klicke. Das klappt auch.
Aber rein vom Verständniss, kann ich den zweiten Teil der Szene nicht löschen? Sieht für mich ab Zeile 58 doppelt aus und wenn ich was ändern will, muss ich das immer zweimal machen.

--[[
%% autostart
%% properties
%% weather
%% events
%% globals
--]]

local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
 ( string.format("%04d-%02d-%02d %02d:%02d", currentDate.year, currentDate.month, currentDate.day, currentDate.hour, currentDate.min) == "2011-09-22 03:45" )
)
then
    fibaro:setGlobal("Shower", "Ja");
	--fibaro:call(555, "turnOn");
	--fibaro:call(556, "turnOn");
	fibaro:call(26, "setTargetLevel", "28");
	fibaro:call(26, "setTime", tonumber(os.time(t)) + 30*60);
	fibaro:setGlobal("SONOS_RADIO", "swr-mp3-m-swr3.akacast.akamaistream.net/7/720/137136/v1/gnl.akacast.akamaistream.net/swr-mp3-m-swr3");
	fibaro:call(575, "pressButton", "1");
	fibaro:call(575, "setSlider", "6", "15");
    -- HUE Bad Leuchten --
    fibaro:call(558, "changeSaturation", 255)
    fibaro:call(558, "changeBrightness", 30)
    fibaro:call(558, "changeHue", 5840)
    fibaro:call(558, "turnOn")
    fibaro:call(571, "changeSaturation", 255)
    fibaro:call(571, "changeBrightness", 30)
    fibaro:call(571, "changeHue", 5840)
    fibaro:call(571, "turnOn")
    fibaro:call(576, "changeSaturation", 255)
    fibaro:call(576, "changeBrightness", 30)
    fibaro:call(576, "changeHue", 5840)
    fibaro:call(576, "turnOn")
    fibaro:call(572, "changeSaturation", 255)
    fibaro:call(572, "changeBrightness", 150)
    fibaro:call(572, "changeHue", 9000)
    fibaro:call(572, "turnOn")
    fibaro:call(559, "changeSaturation", 255)
    fibaro:call(559, "changeBrightness", 30)
    fibaro:call(559, "changeHue", 5840)
    fibaro:call(559, "turnOn")
    fibaro:call(573, "changeSaturation", 255)
    fibaro:call(573, "changeBrightness", 30)
    fibaro:call(573, "changeHue", 5840)
    fibaro:call(573, "turnOn")
	setTimeout(function()
        fibaro:setGlobal("Shower", "Nein");
	fibaro:call(575, "pressButton", "4");
	end, 2700000)
end

setTimeout(tempFunc, 60*1000)
end
if (sourceTrigger["type"] == "autostart") then
tempFunc()
else

local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
startSource["type"] == "other"
)
then
    fibaro:setGlobal("Shower", "Ja");
	--fibaro:call(555, "turnOn");
	--fibaro:call(556, "turnOn");
	fibaro:call(26, "setTargetLevel", "28");
	fibaro:call(26, "setTime", tonumber(os.time(t)) + 30*60);
	fibaro:setGlobal("SONOS_RADIO", "swr-mp3-m-swr3.akacast.akamaistream.net/7/720/137136/v1/gnl.akacast.akamaistream.net/swr-mp3-m-swr3");
	fibaro:call(575, "pressButton", "1");
	fibaro:call(575, "setSlider", "6", "15");
     -- HUE Bad Leuchten --
    fibaro:call(558, "changeSaturation", 255)
    fibaro:call(558, "changeBrightness", 30)
    fibaro:call(558, "changeHue", 5840)
    fibaro:call(558, "turnOn")
    fibaro:call(571, "changeSaturation", 255)
    fibaro:call(571, "changeBrightness", 30)
    fibaro:call(571, "changeHue", 5840)
    fibaro:call(571, "turnOn")
    fibaro:call(576, "changeSaturation", 255)
    fibaro:call(576, "changeBrightness", 30)
    fibaro:call(576, "changeHue", 5840)
    fibaro:call(576, "turnOn")
    fibaro:call(572, "changeSaturation", 255)
    fibaro:call(572, "changeBrightness", 150)
    fibaro:call(572, "changeHue", 9000)
    fibaro:call(572, "turnOn")
    fibaro:call(559, "changeSaturation", 255)
    fibaro:call(559, "changeBrightness", 30)
    fibaro:call(559, "changeHue", 5840)
    fibaro:call(559, "turnOn")
    fibaro:call(573, "changeSaturation", 255)
    fibaro:call(573, "changeBrightness", 30)
    fibaro:call(573, "changeHue", 5840)
    fibaro:call(573, "turnOn")
	setTimeout(function()
	     fibaro:setGlobal("Shower", "Nein");
	fibaro:call(575, "pressButton", "4");
	end, 2700000)
end

end

Hi,

ab Zeile 65 ist dafür da, das die Szene ausgeführt wird, wenn Du sie annuell startest bzw, auf Speichern drückst.

Zeile 58-60 startet die Szene nach Autostart und legt sie in eine Schleife.
also Zeile 13-54
Und der Part wird ausgeführt wenn es “2011-09-22 03:45” ist…

Schau Dir mal den Trigger-Beitrag von Boomx an.

VG Hoggle

Ach so,

dein Script startet aber nicht, wenn man einen Switch oä drückt - dafür fehlen (hier) die Trigger.

und der Beitrag:
https://www.siio.de/fibaro-homecenter-einsteigerguide-teil-2-getriggerte-szenen/

Hallo Hoggle, vielen Dank, mal wieder :wink:

Die Szene wird durch eine andere Szene getriggert.

        elseif (tostring(pressSource["keyAttribute"]) == "Pressed2") then
          fibaro:debug('S2 2x gedrückt')
          fibaro:startScene(518)

Das war irgendwann mal hier bei Siio als “Trick” beschrieben eine Szene mit einem Datum in der Vergangenheit anzulegen, damit diese mit einem anderen Trigger gestartet werden kann. Klappt ganz gut.

Verstehe ich das dann richtig, dass ich eigentlich alles nach Zeile 57 löschen kann? Die Szene soll ja nur auf den Taster reagieren. Autostart und Manuell benötige ich nicht.

Mit dem Zeitpunkt in der Vergangenheit war für Blockszenen.

Für Dich sind dann nur Zeile 17-49 relevant.

Diese Zeilen könntest du auch in deine zweite Szene kopieren, statt dem startscene.

Oder alternativ die Szene folgendermaßen aufbauen:


--[[
%% properties
%% weather
%% events
%% globals
--]]

fibaro:setGlobal("Shower", "Ja");
--fibaro:call(555, "turnOn");
--fibaro:call(556, "turnOn");
fibaro:call(26, "setTargetLevel", "28");
fibaro:call(26, "setTime", tonumber(os.time(t)) + 30*60);
fibaro:setGlobal("SONOS_RADIO", "swr-mp3-m-swr3.akacast.akamaistream.net/7/720/137136/v1/gnl.akacast.akamaistream.net/swr-mp3-m-swr3");
fibaro:call(575, "pressButton", "1");
fibaro:call(575, "setSlider", "6", "15");

usw…

Gruß

Vielen Dank. Mit jeder Frage lernte ich hier mehr.

Kurze Frage noch. Wie wichtig bzw. wofür ist das “;” am Ende einer Zeile. Manchmal wird es gesetzt, manchmal nicht. Gibt es da eine Regel?

Hi,

ein ; am Ende jeder Zeile ist nicht notwendig. Möchtest du allerdings mehrere Befehle in einer Zeile ausführen lassen, dann benötigst du nach jedem Befehl ein ;.

Gruß