Außenbeleuchtung

Hallo Leute,

bräuchte mal wieder Hilfe. Weis nicht genau wie ich folgendes realisiere, über eine normale Szene oder LUA oder evtl. hat jemand so etwas schon am laufen!?

Ich habe an meine Außenbeleuchtung ein Dimmer2 Modul angeschlossen, und ich möchte das die Außenbeleuchtung von Sonnenuntergang bis ca. 60min nach Sonnenaufgang immer auf ca. 10% an ist. Zusätzlich möchte ich einen Bewegungsmelder (Fibaro) anbringen, der bei Bewegung das Licht auf volle Leistung an macht. Aber eben nur zwischen Sonnenuntergang und Sonnenaufgang.

Bisher habe ich nur zwei normale Szenen - Außenbeleuchtung an bei Sonnenuntergang und einen Szene aus bei 60min nach Sonnenaufgang.

Vielen Dank schon mal im Voraus!

Hallo maccwinn,

ich habe mir auf dem Weg zu Arbeit mal Gedanken gemacht.
Vom Grundsatz funktioniert es ganz einfach…

Anstatt mit Sonnenaufgang und Untergang arbeite ich mit der Globalen Variable “TOD” (time of day) wenn du diese Anpasst kannst du auch 60 min nach Sonnenaufgang die Szene ausführen.

Schau es dir mal an. Über Feedback würde ich mich freuen…

--[[
%% properties
yy value
%% globals
TOD
--]]

--- ### Schleifen Schutz ### ---
if (fibaro:countScenes()>1) then
 fibaro:abort(); 
  fibaro:debug("Doppelte Szene abgebrochen");
end

--# Funktionen #--

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

--- ### Debugger-Status ### ---
vardebug = true

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

local light = xx
local motion = yy

--- State-Funktion ---
function state()
 state = 0
 if (fibaro:getGlobalValue("TOD") == "Abend" or fibaro:getGlobalValue("TOD") == "Nacht") then state = state + 1 end
 if (tonumber(fibaro:getValue(motion, "value")) ~= 0) then state = state + 2 end
end
state()
----

--- Licht auf 10% ---  
if (state == 1) then
 fibaro:call(light , "setValue", 10);
 debug("Licht wurde auf 10% gedimmt")
 fibaro:abort()

--- Licht auf 100% ---     
elseif (state == 3) then
 fibaro:call(light , "setValue", 99;
 debug("Licht wurde auf 100% gedimmt")
 fibaro:abort()

--- Licht aus ---
elseif (state == 0 and tonumber(fibaro:getValue(light, "value")) ~= 0 ) then
 fibaro:call(light , "turnOff");
 debug("Licht wurde ausgeschaltet")
 fibaro:abort()
end

Hallo nevv,

sorry das ich mich jetzt erst melde! Vielen Dank für deine Antwort. Ich werde es testen und berichten.

Danke.

Was ich aber an deinem Skript och nicht verstanden habe, was ist die Bedingung für das aufkommen auf 100%?

Der Bewegungsmelder oder die Tageszeit?

Hi,
so wie es aussieht beides.
Abends bzw. Nachts wird durch state = state + 1 die Variable State auf 1 gesetzt und die Beleuchtung geht auf 10%.
Kommt jetzt noch Bewegung dazu wird durch state = state + 2 die Variable State auf 3 gesetzt und die Beleuchtung geht auf 100%.

Grüße

Super Danke! Weis evtl. Jemand wie weit der Bewegungsmelder bewegung erfassen kann? 10m oder mehr?

Noch eine Frage! Muss ich da noch eine Variable “TOD” anlegen? wenn ja wie?

Vielen Dank.

Ach ja noch was. (Sorry das ich so oft nachfrage, ich kenn mich mit der LUA Sprache leider garnicht aus)

Kann ich zusätzlich noch meinen Türsensor als Auslöser einfügen? Wenn ja wo und wie?

Danke Danke Danke

Hallo,

evtl, jemand Zeit?

Zu den Tageszeiten (ToD) findest Du hier etwas:
https://www.siio.de/connected-home/lichtsteuerung-teil-2-fibaro-tageszeiten-variable-via-lua-setzen/

oder:
https://www.siio.de/board/thema/tageszeiten-automatik-event-trigger-script-universell/

Danke! Ich werde es ausprobieren.

Hallo Leute,

ich hoffe jetzt, dass ich alles richtig habe. Ich bin mir nicht sicher aber in dem Skript von nevv muss oben bei Value doch die Szenen id von der TOD Szene rein richtig?

Wie kann ich denn jetzt noch einen trigger einfügen? Ich möchte, dass entweder der Motion, oder ein Türsensor die Lampen auf 100% setzt.

Und noch eine Verständnis Frage. Das Skript arbeitet mit beiden Zeiten? Also mit der vordefinierten, und mit Sonnen- auf und Untergang? Je nachdem was früher eintritt?

Danke an nevv nochmal für das Skript!

Hi,

Das yy im Header steht für die ID des Motion Sensors.
Somit wird die Szene durch diesen Motion Sensor getriggert/ gestartet.
Ein paar Zeilen weiter unten muss das yy auch zur Definition der lokalen Variablen getauscht werden.

Viele Grüße Hoggle

Zu den Triggern:
https://www.siio.de/fibaro-homecenter-einsteigerguide-teil-2-getriggerte-szenen/

Hallo Hoogle,

danke für die Info. Soweit glaube habe ich es jetzt verstanden. Die TOD Szene läuft, allerdings löst das Skript von nevv trotzdem nicht aus!?
Im Debug zeigt es nichts an. Woher weis denn das Skript von nevv welche Tageszeit es ist? Anbei mal die Szene.

–[[
%% properties
80 value
16 value
%% globals
TOD
–]]

— ### Schleifen Schutz ### —
if (fibaro:countScenes()>1) then
fibaro:abort();
fibaro:debug(“Doppelte Szene abgebrochen”);
end

–# Funktionen #–

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

— ### Debugger-Status ### —
vardebug = true

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

local light = 210
local motion = 80
local startSourc = 16

— State-Funktion —
function state()
state = 0
if (fibaro:getGlobalValue(“TOD”) == “Abend” or fibaro:getGlobalValue(“TOD”) == “Nacht”) then state = state + 1 end
if (tonumber(fibaro:getValue(motion, “value”)) ~= 0) then state = state + 2 end
if (tonumber(fibaro:getValue(startSourc, “value”)) ~= 0) then state = state + 2 end
end
state()

— Licht auf 8% —
if (state == 1) then
fibaro:call(light , “setValue”, 8);
debug(“Licht wurde auf 10% gedimmt”)
fibaro:abort()

— Licht auf 100% —
elseif (state == 3) then
fibaro:call(light , “setValue”, 99);
debug(“Licht wurde auf 100% gedimmt”)
fibaro:abort()

— Licht aus —
elseif (state == 0 and tonumber(fibaro:getValue(light, “value”)) ~= 0 ) then
fibaro:call(light , “turnOff”);
debug(“Licht wurde ausgeschaltet”)
fibaro:abort()
end

Die ID 16 ist der Türsensor!

Zum LUA-verstehen kannst Du Die am besten eine Blockdzrne anlegen und dieser dann in LUA umwandeln. Damit kommst Du schnell und einfach in den Syntax rein.

Setzte mal das “TOD” in Deinem Header eine Zeile nach oben.

Was ist “local startSourc = 16”?

Das versuche ich schon. Leider mit mäßigem Erfolg. local StartSourc habe ich aus eine Blockszene kopiert:) Das sollte der Trigger Türsensensor 16 sein.

Ich habe die Szene noch nicht mal am laufen, da ist mir schon wieder was eingefallen, dass ich ja keinen Timer im der Szene habe!?
Also die Außenbeleuchtung bei Bewegung oder Türöffner auf 100% und dann Zeit XX wieder aus.

Ou mann ich bin echt am verzweifeln. probiere schon den ganzen Tag rum.

Hi maccwinn,

mach Dir ruhig die Mühe und schreibe alles mal auf ein Blattpapier. Das hilft ungemein beim Verständnis und du kannst einfacher Dinge “einbauen”.

So nochmal korrigiert:

-[[
%% properties
80 value
16 value
TOD globals
–]]

— ### Schleifen Schutz ### —
if (fibaro:countScenes()>1) then
fibaro:abort();
fibaro:debug(“Doppelte Szene abgebrochen”);
end

–# Funktionen #–

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

— ### Debugger-Status ### —
vardebug = true

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

local light = 210
local motion = 80
local Haustuer = 16

— State-Funktion —
function state()
state = 0
if (fibaro:getGlobalValue(“TOD”) == “Abend” or fibaro:getGlobalValue(“TOD”) == “Nacht”) then state = state + 1 end
if (tonumber(fibaro:getValue(motion, “value”)) ~= 0) then state = state + 2 end
if (tonumber(fibaro:getValue(“value”)) ~= 0) then state = state + 2 end
end
state()

— Licht auf 8% —
if (state == 1) then
fibaro:call(light , “setValue”, 8);
debug(“Licht wurde auf 10% gedimmt”)
fibaro:abort()

— Licht auf 100% —
elseif (state == 3) then
fibaro:call(light , “setValue”, 99);
debug(“Licht wurde auf 100% gedimmt”)
fibaro:abort()

— Licht aus —
elseif (state == 0 and tonumber(fibaro:getValue(light, “value”)) ~= 0 ) then
fibaro:call(light , “turnOff”);
debug(“Licht wurde ausgeschaltet”)
fibaro:abort()
end

Dann kommt folgender Debug:

[DEBUG] 19:44:27: line 115: attempt to concatenate local ‘propertyName’ (a nil value)

Line 115 hab ich garnicht!!! Ich werd verrückt.

@Bastian

Ja da hast du Recht, aber wenn man sich mit LUA nicht auskennt hilft das nicht. Ich habe es auch mit zwei Blockszenen versucht aber da komme ich leider auch nicht weit. Scheint zu komplex für die Blockszenen zu sein?