ID`s erweitern in Szene

Hallo,

ich habe eine kurze Frage zu einer Szene die ich habe:

Die bestehende Szene hat einen Dimmer. Jetzt möchte ich noch zwei Dimmer hinzufügen. Ich habe folgende Varianten probiert aber keine funktioniert!?

Ursprünglich:
dimmerID = 210 --Dimmer
motionID = 80 --MotionSensor
doorID = 259 --Türsensor
lightLow = 1 --unterer Prozentwert für den Dimmer
lightHigh = 99 --oberer Prozentwert für den Dimmer
lightTimer = 300 --Zeit in Sekunden die das Licht auf lightHigh bleiben soll
offsetSunrise = 0 --Offset Sonnenaufgang in Minuten (+10 oder -10)
offsetSunset = 0 --Offset Sonnenuntergang in Minuten (+10 oder -10)

Probiert:

dimmerID = 210, 281, 286 --Dimmer
motionID = 80 --MotionSensor
doorID = 259 --Türsensor
lightLow = 1 --unterer Prozentwert für den Dimmer
lightHigh = 99 --oberer Prozentwert für den Dimmer
lightTimer = 300 --Zeit in Sekunden die das Licht auf lightHigh bleiben soll
offsetSunrise = 0 --Offset Sonnenaufgang in Minuten (+10 oder -10)
offsetSunset = 0 --Offset Sonnenuntergang in Minuten (+10 oder -10)

dimmerID = 210, --Dimmer
dimmerID = 281
dimmerID = 286
motionID = 80 --MotionSensor
doorID = 259 --Türsensor
lightLow = 1 --unterer Prozentwert für den Dimmer
lightHigh = 99 --oberer Prozentwert für den Dimmer
lightTimer = 300 --Zeit in Sekunden die das Licht auf lightHigh bleiben soll
offsetSunrise = 0 --Offset Sonnenaufgang in Minuten (+10 oder -10)
offsetSunset = 0 --Offset Sonnenuntergang in Minuten (+10 oder -10)

Muss ich evtl. in der Szene noch etwas ändern?

Hier noch die ganze Szene.

--[[
%% autostart
%% properties
80 value
259 value
%% globals
--]]
 
--[[ 
 
* Licht nach Sonnenuntergang auf 10% einschalten
* Bei Bewegung oder Tür auf Licht auf 99% für X Sekunden
* Nur zwischen sunset und sunrise Licht einschalten
 
** Max. running Instances muss auf 3 stehen!
 
--]]
 
---------------------------------------------------
--------- Schleifenschutz -------------------------
 
if (fibaro:countScenes()>2) then
fibaro:debug('Kill the third scene!');
fibaro:abort();
end
 
---------------------------------------------------
------------- stime -------------------------------
-- Funktion zum Umrechnen von Uhrzeiten in Sekunden
-- seit 0 Uhr
---------------------------------------------------
function stime(s)
	local pattern = "(%d+):(%d+)"
	local hours, minutes, seconds = string.match(s, pattern)
	return (hours*3600)+(minutes*60)
end
 
---------------------------------------------------
------------- Config ------------------------------
 
dimmerID        	= 210	--Dimmer
motionID			= 80 	--MotionSensor
doorID				= 259	--Türsensor
lightLow        	= 1	    --unterer Prozentwert für den Dimmer
lightHigh       	= 99	--oberer Prozentwert für den Dimmer
lightTimer			= 300	--Zeit in Sekunden die das Licht auf lightHigh bleiben soll
offsetSunrise		= 0	    --Offset Sonnenaufgang in Minuten (+10 oder -10)
offsetSunset		= 0		--Offset Sonnenuntergang in Minuten (+10 oder -10)
version 			= 'v0.1'
 
---------------------------------------------------
--------- Farbiges Debug --------------------------
function debug( color, message )
	fibaro:debug(string.format('<%s style="color:%s;">%s<!--%s-->', "span", color, message, "span"));
end
 
---------------------------------------------------
--------- GetGlobals ------------------------------
function getGlobals()
    sunset				= fibaro:getValue(1, "sunsetHour")
	sunsetSeconds		= stime(sunset)
    sunrise				= fibaro:getValue(1, "sunriseHour")
	sunriseSeconds		= stime(sunrise)
	timeNow				= stime(os.date("%H:%M"))
    sourceTrigger = fibaro:getSourceTrigger();
end
 
---------------------------------------------------
--------- setLightHighTimer -----------------------
-- (sec) -- Sekunden die das Licht auf 100% bleiben soll
---------------------------------------------------
function setLightHighTimer(sec)
	fibaro:call(dimmerID,"setValue",lightHigh)
	i = 1
	while i  <= sec do
		debug("yellow","Restzeit "..sec-i.." Sekunden")
		i = i + 1
		if fibaro:getValue(motionID, "value") == "1" or fibaro:getValue(doorID, "value") == "1" then
			i = 0
			debug("red","Bewegung dauert an / Tür ist noch offen, setzte Timer zurück")
		end
		 fibaro:sleep(1000)
	end
	debug("yellow","Timer abgelaufen, schalte wieder auf "..lightLow.."%")
	if timeNow > sunsetSeconds or timeNow < sunriseSeconds then
		fibaro:call(dimmerID,"setValue",lightLow)
	else
		fibaro:call(dimmerID,"setValue",0)
	end
end
 
---------------------------------------------------
--------- START -----------------------------------
 
--------- Globale Werte auslesen
getGlobals()
 
--------- Timerfunktion
function tempFunc()
getGlobals()
if os.date("%H:%M", os.time()+offsetSunset*60) == sunset then 
	debug("green","Sunset erkannt, schalte Licht auf "..lightLow.."% ein")
	fibaro:call(dimmerID,"setValue",lightLow)
elseif os.date("%H:%M", os.time()+offsetSunrise*60) == sunrise then 
	debug("green","Sunrise erkannt, schalte Licht aus")
	fibaro:call(dimmerID,"setValue",0)
else
	debug("green","Sunset "..sunset.." // Sunrise "..sunrise)
end
setTimeout(tempFunc, 60*1000)
end
 
-- Bei Autostart Timer aktivieren
if sourceTrigger["type"] == "autostart" then
	debug("green","Autostart erkannt, starte Timer")
	tempFunc()
else
	-- Wenn getriggert (Motion oder Door), dann Licht auf lightHigh für x Sekunden
	debug("red","Bewegung oder Tür auf erkannt, schalte Dimmer auf "..lightHigh.."%")
	if timeNow > sunsetSeconds or timeNow < sunriseSeconds then
		setLightHighTimer(lightTimer)
	end
end

Ja, du musst die Szene ändern. Es wird nur 1 Dimmer geschaltet:

fibaro:call(dimmerID,“setValue“,lightLow)

Bei so einer Konstellation kannst du nur die Szene erweitern.

Gruß

Ok. Vielen Dank!

Dann ist es für mich wahrscheinlich einfacher für jeden Dimmer eine extra Szene anzulegen.

Wenn du mehrere Lichter schalten willst kannst du entweder weitere „locals“ (dimmerID1, dimmerID2, etc…) anlegen oder du arbeitest mit einem array.
Damit kannst du dir die einzelnen calls pro device sparen.

Das würde dann so aussehen:

local dimmerID= {210, 281, 286}

for i, v in ipairs(dimmerID) do
fibaro:call(dimmerID[i], 'turnOn';
end

Schau dir mal folgenden Thead an:
https://www.siio.de/board/thema/erste-gehversuche-bitte-um-hilfe/#post-55316

Hallo nevv,

die “locals” habe ich so noch nicht verstanden!? Wenn ich es so in meinem Skript einfüge, muss doch dann in der Szene selbst auch noch das “local” einsetzen oder?

------------- Config ------------------------------
 
local dimmerID1     = 210	--Dimmer
local dimmerID2		= 281
local dimmerID3		= 286
motionID			= 80 	--MotionSensor
doorID				= 259	--Türsensor
lightLow        	= 1	    --unterer Prozentwert für den Dimmer
lightHigh       	= 99	--oberer Prozentwert für den Dimmer
lightTimer			= 300	--Zeit in Sekunden die das Licht auf lightHigh bleiben soll
offsetSunrise		= 0	    --Offset Sonnenaufgang in Minuten (+10 oder -10)
offsetSunset		= 0		--Offset Sonnenuntergang in Minuten (+10 oder -10)
version 			= 'v0.1'

Wenn ich mit einem Array arbeiten würde, bedeutet es doch, das ich es ganz oben einsetzen muss richtig?

hier:

--[[
%% autostart
%% properties
80 value
259 value
%% globals
--]]
 
--[[ 

Sorry für meine doofen Fragen aber mit dem LUA kriege ich es einfach nicht gebacken.

Noch eine Verständnis Frage,

spricht etwas dagegen, wenn ich jetzt für jeden einzelnen Dimmer die gleiche Szene anlege? Mit den selben Triggern also Motion und Türsensor?

Hallo maccwinn,
hier der, ungetestete, Code:

--[[
%% autostart
%% properties
80 value
259 value
%% globals
--]]
 
--[[ 
 
* Licht nach Sonnenuntergang auf 10% einschalten
* Bei Bewegung oder Tür auf Licht auf 99% für X Sekunden
* Nur zwischen sunset und sunrise Licht einschalten
 
** Max. running Instances muss auf 3 stehen!
 
--]]
 
---------------------------------------------------
--------- Schleifenschutz -------------------------
 
if (fibaro:countScenes()>2) then
fibaro:debug('Kill the third scene!');
fibaro:abort();
end
 
---------------------------------------------------
------------- stime -------------------------------
-- Funktion zum Umrechnen von Uhrzeiten in Sekunden
-- seit 0 Uhr
---------------------------------------------------
function stime(s)
	local pattern = "(%d+):(%d+)"
	local hours, minutes, seconds = string.match(s, pattern)
	return (hours*3600)+(minutes*60)
end
 
---------------------------------------------------
------------- Config ------------------------------

 
local dimmerID = {210, 281, 286} --Dimmer
motionID			= 80 	--MotionSensor
doorID				= 259	--Türsensor
lightLow        	= 1	    --unterer Prozentwert für den Dimmer
lightHigh       	= 99	--oberer Prozentwert für den Dimmer
lightTimer			= 300	--Zeit in Sekunden die das Licht auf lightHigh bleiben soll
offsetSunrise		= 0	    --Offset Sonnenaufgang in Minuten (+10 oder -10)
offsetSunset		= 0		--Offset Sonnenuntergang in Minuten (+10 oder -10)
version 			= 'v0.1'
 
---------------------------------------------------
--------- Farbiges Debug --------------------------
function debug( color, message )
	fibaro:debug(string.format('<%s style="color:%s;">%s<!--%s-->', "span", color, message, "span"));
end
 
---------------------------------------------------
--------- GetGlobals ------------------------------
function getGlobals()
    sunset				= fibaro:getValue(1, "sunsetHour")
	sunsetSeconds		= stime(sunset)
    sunrise				= fibaro:getValue(1, "sunriseHour")
	sunriseSeconds		= stime(sunrise)
	timeNow				= stime(os.date("%H:%M"))
    sourceTrigger = fibaro:getSourceTrigger();
end
 
---------------------------------------------------
--------- setLightHighTimer -----------------------
-- (sec) -- Sekunden die das Licht auf 100% bleiben soll
---------------------------------------------------
function setLightHighTimer(sec)
	fibaro:call(dimmerID,"setValue",lightHigh)
	i = 1
	while i  <= sec do
		debug("yellow","Restzeit "..sec-i.." Sekunden")
		i = i + 1
		if fibaro:getValue(motionID, "value") == "1" or fibaro:getValue(doorID, "value") == "1" then
			i = 0
			debug("red","Bewegung dauert an / Tür ist noch offen, setzte Timer zurück")
		end
		 fibaro:sleep(1000)
	end
	debug("yellow","Timer abgelaufen, schalte wieder auf "..lightLow.."%")
	if timeNow > sunsetSeconds or timeNow < sunriseSeconds then
		fibaro:call(dimmerID,"setValue",lightLow)
	else
		fibaro:call(dimmerID,"setValue",0)
	end
end
 
---------------------------------------------------
--------- START -----------------------------------
 
--------- Globale Werte auslesen
getGlobals()
 
--------- Timerfunktion
function tempFunc()
getGlobals()
if os.date("%H:%M", os.time()+offsetSunset*60) == sunset then 
	debug("green","Sunset erkannt, schalte Licht auf "..lightLow.."% ein")
  
  for i, v in ipairs(dimmerID) do
  fibaro:call(dimmerID[i], "setValue", lightLow)
  end

elseif os.date("%H:%M", os.time()+offsetSunrise*60) == sunrise then 
  debug("green","Sunrise erkannt, schalte Licht aus")
    
  for i, v in ipairs(dimmerID) do
  fibaro:call(dimmerID[i], 'turnOff')
  end

else
	debug("green","Sunset "..sunset.." // Sunrise "..sunrise)
end
setTimeout(tempFunc, 60*1000)
end
 
-- Bei Autostart Timer aktivieren
if sourceTrigger["type"] == "autostart" then
	debug("green","Autostart erkannt, starte Timer")
	tempFunc()
else
	-- Wenn getriggert (Motion oder Door), dann Licht auf lightHigh für x Sekunden
	debug("red","Bewegung oder Tür auf erkannt, schalte Dimmer auf "..lightHigh.."%")
	if timeNow > sunsetSeconds or timeNow < sunriseSeconds then
		setLightHighTimer(lightTimer)
	end
end

gib mal bescheid, ob es geklappt hat…

Hallo nevv,

danke für den Code. Ich habe es mal eins zu eins eingefügt. Leider bekomme ich wieder den gleichen Fehler:

Hier der Debug:

[DEBUG] 19:40:33: Autostart erkannt, starte Timer
[DEBUG] 19:40:33: Sunset 16:44 // Sunrise 07:13
[DEBUG] 19:41:33: Sunset 16:44 // Sunrise 07:13
[DEBUG] 19:41:35: Bewegung oder Tür auf erkannt, schalte Dimmer auf 99%
[DEBUG] 19:41:35: line 334: attempt to concatenate local ‘deviceID’ (a nil value)
[DEBUG] 19:41:53: Bewegung oder Tür auf erkannt, schalte Dimmer auf 99%
[DEBUG] 19:41:53: line 334: attempt to concatenate local ‘deviceID’ (a nil value)
[DEBUG] 19:42:33: Sunset 16:44 // Sunrise 07:13
[DEBUG] 19:43:33: Sunset 16:44 // Sunrise 07:13
[DEBUG] 19:43:38: Bewegung oder Tür auf erkannt, schalte Dimmer auf 99%
[DEBUG] 19:43:38: line 334: attempt to concatenate local ‘deviceID’ (a nil value)
[DEBUG] 19:44:33: Sunset 16:44 // Sunrise 07:13
[DEBUG] 19:45:33: Sunset 16:44 // Sunrise 07:13
[DEBUG] 19:46:33: Sunset 16:44 // Sunrise 07:13
[DEBUG] 19:47:33: Sunset 16:44 // Sunrise 07:13

muss ich in den Zeilen 106 und 113 wo das “i” in den Klammern steht evtl. alle ID`s der Dimmer eintragen?

Hi,

ist etwas komisch, da er im Debug sagt, in Zeile 334 sei ein Fehler, aber das Script oben hat nur 132 Zeilen.
Die IDs in Zeile 42 sind richtig?
Hast Du noch eine Variable “deviceID”?

Nein, das i arbeitet er durch die for-Schleife ab.

VG Hoggle.

Hi,

Ja das hat mich auch gewundert! Aber egal was ich bei den ID´s geändert hatte hat es immer diesen Fehler mit der Zeile ausgeworfen!

Die ID`s habe ich Schin kontrolliert die sind richtig.

Hallo maccwinn,

was hälst du davon wenn du einfach mal meine Szene testet… die macht genau das was du benötigsts.
Du musst nur die Trigger, die Variablen “lights2Check” / "motion2Check"und ggf. die Zeit “offTimeout” anpassen.

WICHTG:
Die Szene MUSS über den Trigger ausgelöst werden, da der debug den “Sensor” ausgibt der die Szene gestartet hat.

--[[
%% properties
30 value
27 value
%% globals
--]]

------------------------- 
--- ### Variablen ### --- 
------------------------- 
lights2Check = {9,7,5,11,38,58};
motion2Check = {27,30};
offTimeout = 20

vardebug = true
varextradebug = true
varspecialdebug = true

trigger = fibaro:getSourceTrigger();
sensorID = tonumber(trigger['deviceID']);
name = fibaro:getName(sensorID); 

 
---- ### Debug Funktionen ### ---- 
function debug(message) 
if (vardebug) then fibaro:debug(message); end 
end 

function extradebug(color, message)
if (varextradebug) then fibaro:debug(string.format('<%s style="color:%s;">%s<!--%s-->', "span", color, message, "span")); end
end 

function specialdebug(color, message)
if (varspecialdebug) then fibaro:debug(string.format('<%s style="color:%s;">%s<!--%s-->', "span", color, message, "span")); end
end 

---- ### checkMotion Funktion ### ---- 
function checkMotion(array)
  	specialdebug("grey", "Status der Sensoren...");

	for j=1, #motion2Check do
	status = fibaro:getValue(motion2Check[j], "value")
    sensorname = fibaro:getName(motion2Check[j])
		if status == "0" then
		specialdebug("yellowgreen", "" ..sensorname .. " sicher.");
      	motionOff = true; 
    	elseif status == "1" then
      	specialdebug("tomato","" ..sensorname .. " ist noch ausgelöst.");
      	motionOff = false; break
	  	end
   	end
end

---- ### checkLights Funktion ### ---- 
function checkLights(array)
  	specialdebug("grey", "Status der Lichter...");

	for j=1, #lights2Check do
	status = fibaro:getValue(lights2Check[j], "value")
	sensorname = fibaro:getName(lights2Check[j])
		if status == "0" then
 		specialdebug("yellowgreen", "Licht: " ..sensorname .. " ausgeschaltet.");
      	lightsOff = true;
    	elseif status == "1" then
      	specialdebug("tomato","" ..sensorname .. " ist noch eingeschaltet.");
		lightsOff = false; break
	  	end
   	end
end
--------------- ### Code ### ----------------------

--- ### Sensor ausgelöst ### --- 
if tonumber(fibaro:getValue(trigger['deviceID'], "value")) > 0 then
--extradebug("gold","Sensor: "..name .. " wurde ausgelöst"); 
	
	if (fibaro:getGlobalValue("TOD") == "Abend" or fibaro:getGlobalValue("TOD") == "Nacht") then
	debug("Szene wurde durch: "..name .. " ausgelöst");
    checkLights()
    
    	if lightsOff then
       		for i, v in ipairs(lights2Check) do
 	    	fibaro:call(lights2Check[i], 'turnOn');
        	end
      		debug(os.date("Licht um %H:%M Uhr eingeschaltet. (%d.%m.%Y)"));
    	else extradebug("firebrick","Lichter sind bereits eingeschaltet"); fibaro:abort(); end
    
	else specialdebug("lightgrey",""..name .. "  ausgelöst aber ≠ Abend/Nacht."); fibaro:abort(); end

--- ### Sensor sicher ### --- 
elseif fibaro:getGlobalValue("TOD") == "Abend" or fibaro:getGlobalValue("TOD") == "Nacht" then
extradebug("yellowgreen","Sensor: " ..name .. " ist sicher. Noch " ..offTimeout .. " Sekunden bis zum Ausschalten.")
fibaro:sleep(offTimeout*1000)
extradebug("grey","Check der Sensoren...");
  checkMotion();

 --- ### Prüfung auf weitere Bewegungen ### ---
  if motionOff then
  extradebug("goldenrod","Alle Sensoren sicher")
    extradebug("grey","Check der Lichter...");
	checkLights();
     --- ### Wenn Lichter AN sind und KEINE Bewegung mehr festgestellt wurde: wird das Licht ausgeschaltet ### ---
    if (lightsOff == false) then
    extradebug("goldenrod","Lichter werden ausgeschaltet.")
    	for i, v in ipairs(lights2Check) do
 	    fibaro:call(lights2Check[i], 'turnOff')
        end
	    debug(os.date("Licht um %H:%M Uhr ausgeschaltet. (%d.%m.%Y)"));
    	debug("--------------- ###+## ---------------")
    elseif lightsOff then extradebug("yellowgreen","Lichter sind bereits ausgeschaltet."); fibaro:abort(); end			
  else extradebug("lightcoral","Mindestens ein Sensor ist noch ausgelöst. Ausschalten wird verzögert.") end
else specialdebug("grey","" ..name .. " ist Sicher aber ≠ Abend/Nacht."); fibaro:abort(); end

Hallo nevv,

vielen Dank für das Angebot. So wie ich das verstehe, schaltet dein Skript die Lampen An und komplett aus? Ich wollte ja wie in dem Skript das ich verwende, das die Lampen von Sonnenunter- bis Sonnenaufgang immer an sind also gedimmt auf 2% und bei Bewegung auf 100% hoch dimmen.

Ich denke muss dann einfach für jeden Dimmer eine eigene Szene laufen lassen!? Spricht da etwas dagegen?

Stimmt…der Zustand ist an, aus… Ich werde mal schauen ob ich dazu komme meine Szene umzuschreiben.
Grundsätzlich spricht nichts dagegen für jede Lampe eine eigene Szene zu haben… außer das es nicht nötig ist :slight_smile:

PS: hast du mal vorherige Szene über den Trigger ausgelöst und nicht Manuell !?
Kommt dann auch die Fehlermeldung!?

Das habe ich noch nicht ausprobiert! Das werde ich heute Abend probieren und berichten.

Danke!

Hallo nevv,

also es leuchte alle Dimmer auf 1%, jedoch dimmen sie nicht hoch wenn Bewegung ist oder der Türsensor ausgelöst wird.

Im Debüt wird nichts angezeigt außer:

[DEBUG] 20:21:40: Sunset 16:43 // Sunrise 07:14
[DEBUG] 20:22:40: Sunset 16:43 // Sunrise 07:14
[DEBUG] 20:23:40: Sunset 16:43 // Sunrise 07:14
[DEBUG] 20:24:40: Sunset 16:43 // Sunrise 07:14
[DEBUG] 20:25:40: Sunset 16:43 // Sunrise 07:14
[DEBUG] 20:26:40: Sunset 16:43 // Sunrise 07:14
[DEBUG] 20:27:40: Sunset 16:43 // Sunrise 07:14

kleiner Nachtrag:

bei Auslösung durch den Trigger kommt dieser Debüt:

DEBUG] 19:41:35: Bewegung oder Tür auf erkannt, schalte Dimmer auf 99%
[DEBUG] 19:41:35: line 334: attempt to concatenate local ‚deviceID‘ (a nil value)
[DEBUG] 19:41:53: Bewegung oder Tür auf erkannt, schalte Dimmer auf 99%
[DEBUG] 19:41:53: line 334: attempt to concatenate local ‚deviceID‘ (a nil value)

Hallo maccwinn,

ich habe noch einmal den Originalcode von Bastian genommen um copy/paste Fehler auszuschließen…

Versuch einmal den code:

--[[
%% autostart
%% properties
80 value
259 value
%% globals

--]]

--- Max. running Instances muss auf 3 stehen! ---

--- ### Schleifen Schutz ### ---

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

------------------------- 
--- ### Variablen ### --- 
------------------------- 

dimmerID        	= 210 	--Dimmer
dimmerID1        	= 281 	--Dimmer
dimmerID2        	= 286 	--Dimmer

motionID		= 80 	--MotionSensor
doorID			= 259	--Türsensor

lightLow        	= 10	--unterer Prozentwert für den Dimmer
lightHigh       	= 99	--oberer Prozentwert für den Dimmer
lightTimer		= 30	--Zeit in Sekunden die das Licht auf lightHigh bleiben soll

offsetSunrise		= 0	--Offset Sonnenaufgang in Minuten (+10 oder -10)
offsetSunset		= 0	--Offset Sonnenuntergang in Minuten (+10 oder -10)
version 		= 'v0.1'

debug = true

------------------------- 
--- ### Funktionen ### --- 
------------------------- 

---- ### stime Funktion ### ----
-- Funktion zum Umrechnen von Uhrzeiten in Sekunden --

function stime(s)
	local pattern = "(%d+):(%d+)"
	local hours, minutes, seconds = string.match(s, pattern)
	return (hours*3600)+(minutes*60)
end

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

---- ### getGlobals Funktion ### ---- 
function getGlobals()

	sunset = fibaro:getValue(1, "sunsetHour")
	sunsetSeconds = stime(sunset)

	sunrise = fibaro:getValue(1, "sunriseHour")
	sunriseSeconds = stime(sunrise)

	timeNow = stime(os.date("%H:%M"))
	sourceTrigger = fibaro:getSourceTrigger();
end

---- ### setLightHighTimer Funktion ### ---- 
-- (sec) -- Sekunden die das Licht auf 100% bleiben soll --

function setLightHighTimer(sec)
	fibaro:call(dimmerID,"setValue",lightHigh);
	fibaro:call(dimmerID1,"setValue",lightHigh);
	fibaro:call(dimmerID2,"setValue",lightHigh);

	i = 1
	while i  <= sec do
		debug("yellow","Restzeit "..sec-i.." Sekunden")
		i = i + 1
		if fibaro:getValue(motionID, "value") == "1" or fibaro:getValue(doorID, "value") == "1" then
			i = 0
			debug("red","Bewegung dauert an / Tür ist noch offen, setzte Timer zurück")
		end
		fibaro:sleep(1000)
	end

	debug("yellow","Timer abgelaufen, schalte wieder auf "..lightLow.."%")

	if timeNow > sunsetSeconds or timeNow < sunriseSeconds then
		fibaro:call(dimmerID,"setValue",lightLow)
		fibaro:call(dimmerID1,"setValue",lightLow)
		fibaro:call(dimmerID2,"setValue",lightLow)
	else
		fibaro:call(dimmerID,"setValue",0)
		fibaro:call(dimmerID1,"setValue",0)
		fibaro:call(dimmerID2,"setValue",0)
	end
end

--------------- ### Code ### ----------------------

getGlobals()

function tempFunc()
getGlobals()

	if os.date("%H:%M", os.time()+offsetSunset*60) == sunset then 
		debug("green","Sunset erkannt, schalte Licht auf "..lightLow.."% ein")
		fibaro:call(dimmerID,"setValue",lightLow);
		fibaro:call(dimmerID1,"setValue",lightLow);
		fibaro:call(dimmerID2,"setValue",lightLow);

	elseif os.date("%H:%M", os.time()+offsetSunrise*60) == sunrise then 
		debug("green","Sunrise erkannt, schalte Licht aus")
		fibaro:call(dimmerID,"setValue",0);
		fibaro:call(dimmerID1,"setValue",0);
		fibaro:call(dimmerID2,"setValue",0);

	else
		debug("green","Sunset "..sunset.." // Sunrise "..sunrise)
	end

setTimeout(tempFunc, 60*1000)
end

-- Bei Autostart Timer aktivieren
if sourceTrigger["type"] == "autostart" then
	debug("green","Autostart erkannt, starte Timer")
	tempFunc()
else
	-- Wenn getriggert (Motion oder Door), dann Licht auf lightHigh für x Sekunden
	debug("red","Bewegung oder Tür auf erkannt, schalte Dimmer auf "..lightHigh.."%")
	if timeNow > sunsetSeconds or timeNow < sunriseSeconds then
		setLightHighTimer(lightTimer)
	end
end

Hallo nevv,

danke erstmal für deine Mühe, Du hast ja sogar meine ID`s eingetragen!

Also hier der Debug:

[DEBUG] 19:45:05: line 1: unexpected symbol near ‘%’

Kommando zurück!

habe gesehen, das ich die erste Zeile nicht eingefügt hatte. Jetzt scheint es zu laufen!

Ich werde es heute und morgen beobachten und berichten.

Vielen Danke schon mal im Voraus! Top!!!