Lichtsteuerung mit TV HC2

Hallo zusammen, schon öfters konnte mit hier geholfen werden. Habe bei meiner Lichtsteuerung ein kleines aber nerviges Problem das ich nicht in den Griff bekomme! Das Licht im Wohnzimmer sollte nicht ausgehen wenn die Türe zum Freisitz geöffnet wurde oder der TV an ist! Klappt prima soweit, nur beim manuellen abschalten des Lichts geht dieses sofort wieder an. Beim erneuten abschalten greift dann der 30 Sekunden Timer um eben dieses sofortige einschalten zu verhindern. Hoffe dass mir jemand von den LUA Spezis einen Tip geben kann, vielen Dank schonmal.

Blockzitat

–[[
%% properties
672 value
672 power
647 value
101 value
134 value
165 value
318 value
%% globals
–]]


local scene = 681
local currentDate = os.date(„*t“);
local stecker = 672 – STROMVERBRAUCHER (BITTE AUCH IM TRIGGER EINTRAGEN)
local verbrauch = 40 – WATT-ZAHL
local power = fibaro:getValue(stecker, „power“)

– Sensor Nr. aus Variable
local bm_decke = tonumber(fibaro:getGlobalValue(„bm_decke“, „value“))
local bm_sued = tonumber(fibaro:getGlobalValue(„bm_sued“, „value“))
local bm_nord = tonumber(fibaro:getGlobalValue(„bm_nord“, „value“))
local bm_ost = tonumber(fibaro:getGlobalValue(„bm_ost“, „value“))
– Handy
local handy_willi = tonumber(fibaro:getGlobalValue(„handy_willi“, „value“))
– Licht
local licht_wz = tonumber(fibaro:getGlobalValue(„licht_wz“, „value“))

local sensors = {bm_decke,bm_sued,bm_nord,bm_ost}

– Zeit 1500 = 15:00
– Wenn erste Zeit grösser als zweite dann „OR“ sonst „AND“
local nachtstart = „13:00“
local nachtende = „06:00“
local lichtaus = „06:30“ – Zeitlimit von Nachtende bis Licht sofort aus (ansonsten Timer)
local starttimer = 900 – Sekunden
local inaktiv = 30 – Sekunden nach manuelem Licht aus (Damit Licht nicht durch BM sofort wieder ein

local separator = („------------------------------------------------------------------------------------------“)

---------------------Script-----------------
Debug = function ( color, message ) fibaro:debug(string.format(‚<%s style=„color:%s;“>%s‘, „span“, color, message, „span“)) end

function DT(DATETIME)
local WD = {'Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'}
local M = {'Januar','Februar','M‰rz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'}
local tableDT= (os.date('*t', tonumber(DATETIME))) 
tableDT.month = M[tonumber(tableDT.month)]
tableDT.wday =  WD[tonumber(tableDT.wday)]
return ""..tableDT.wday ..', ' ..tableDT.day ..'. ' ..tableDT.month ..' ' ..tableDT.year ..' '..os.date " / %H:%M Uhr" 
end 

if (fibaro:countScenes()> 1)

then
–fibaro:debug(„Es läuft mehr als eine Instanz“);
fibaro:abort();
end

function getSensorStatus()
for i,n in pairs(sensors) do
if (tonumber(fibaro:getValue(n, „value“)) > 0) then
local name = fibaro:getName(n);
return 1, name;
end
end
return 0;
end

-- BM Lichteuerung Szene Check

status, name = getSensorStatus() 

if (status == 1 )

then
if (((string.format(„%02d:%02d“, currentDate.hour, currentDate.min) >= nachtende
and string.format(„%02d:%02d“, currentDate.hour, currentDate.min) <= nachtstart))
and fibaro:getGlobalValue(„Tageslicht“) == „Hell“
and fibaro:getGlobalValue(„Lichtsteuerung“) == „Ausgeschaltet“)

then
x= DT(os.date())
fibaro:debug (x)

fibaro:setGlobal("Lichtsteuerung", "Eingeschaltet");
Debug("tan",('Bewegung durch ' .. name .. " erkannt!")); 
Debug("orange",(os.date("Lichtsteuerung Variable auf Ausgeschaltet vorgefunden!")));
Debug("lime",(os.date("Lichtsteuerung Variable auf EINGESCHALTET gestellt!")));
Debug("white",(separator));
fibaro:call(handy_willi, "sendPush",os.date("(%d.%m.%Y) %H:%M Uhr. Lichtsteuerung automatisch aktiviert!"));

end
end

-- BM Schalte Licht ein/aus

status, name = getSensorStatus() 

if (status == 1 )

then
if (((string.format(„%02d:%02d“, currentDate.hour, currentDate.min) >= nachtstart
or string.format(„%02d:%02d“, currentDate.hour, currentDate.min) <= nachtende))
and fibaro:getGlobalValue(„Tageslicht“) == „Dunkel“
and fibaro:getGlobalValue(„Lichtsteuerung“) == „Eingeschaltet“
and tonumber(fibaro:getValue(licht_wz, „value“)) < 1)
then
– Verzögerung wegen Licht Abwesenhenheit (Licht „ausser Wohnzimmer“ muss erst gelöscht werden!)
x= DT(os.date())
fibaro:debug (x)
Debug(„tan“,'Bewegung durch ’ … name … " erkannt!")
Debug(„gray“,(„Prüfe Licht Abwesenheit…“));

while
fibaro:getGlobalValue(„LichtAbwesenheit“) ~= „Ausgeschaltet“ do
Debug(„red“,(„Licht Abwesenheit läuft noch!“));
Debug(„white“,„Warten…“);
fibaro:sleep(1*1000)
end

Debug("lime","Licht Abwesenheit meldet: "..fibaro:getGlobalValue("LichtAbwesenheit").."");
Debug("yellow",("Licht wird eingeschaltet!"));
Debug("white",(separator))


x= DT(os.date())
fibaro:debug (x) 

Debug("tan",'Bewegung durch ' .. name .. " erkannt!") 
Debug("gray",("Die Dämmerung hat eingesetzt, Licht wird eingeschaltet!"));
Debug("yellow",(os.date("Licht automatisch eingeschaltet!")));
Debug("cyan",(starttimer /60 .. " Minuten Timer aktiviert..."));
Debug("white",(separator))          
fibaro:call(licht_wz, "turnOn");
timer = os.time();
while os.time() - timer < starttimer do
fibaro:sleep(1000);

  
-- Schalte Licht aus, wenn Schalter manuell bet‰tigt wird und warte ... Minuten, um ein 
-- versehentliches (erneutes) aktivieren der Szene zu verhindern

if fibaro:getGlobalValue(„Licht“) == „Ausgeschaltet“
and fibaro:getGlobalValue(„Tageslicht“) == „Dunkel“

then
x= DT(os.date())
fibaro:debug (x)

Debug("gray",(os.date("Licht manuell ausgeschaltet...!")));       
Debug("red",(os.date("Sensoren für "..inaktiv/60 ..  " Minuten deaktiviert....!"))); 
Debug("white",(separator))     
fibaro:sleep(inaktiv*1000);
--Debug("white",(separator))       
Debug("lime",(os.date("%H:%M Uhr / Timer (Licht manuell aus) abgelaufen, Sensoren wieder aktiviert....!"))); 
Debug("white",(separator))     
fibaro:abort();

end

-- Licht AUS wenn nach Zeitvorgabe (Morgens) wenn noch eingeschaltet 
  
status, name = getSensorStatus() 

if (status == 1 )

then
if (((string.format(„%02d:%02d“, currentDate.hour, currentDate.min) > nachtende
and string.format(„%02d:%02d“, currentDate.hour, currentDate.min) <= lichtaus))
and tonumber(fibaro:getValue(licht_wz, „value“)) > 0)

then
timer = os.time() - starttimer
Debug(„tan“,(„Bewegung durch " … name … " erkannt!“));
Debug(„tan“,(„Ausserhalb des vorgegebenen Zeitlimits“));
Debug(„yellow“,(„Beleuchtung ist noch eingeschaltet!“));
Debug(„cyan“,(„Timer wird gestoppt…“));
–Debug(„gray“,(os.date(„Es ist %H:%M Uhr, Licht wird ausgeschaltet“)));
Debug(„white“,(separator))
end
end

-- Timer zurücksetzen, wenn neue Bewegung erkannt wird innherhalb der Verzögerungszeit

status, name = getSensorStatus() 

if (status == 1 )

then
if (((string.format(„%02d:%02d“, currentDate.hour, currentDate.min) >= nachtstart
or string.format(„%02d:%02d“, currentDate.hour, currentDate.min) <= nachtende))
and tonumber(fibaro:getValue(licht_wz, „value“)) > 0
and fibaro:getGlobalValue(„Tageslicht“) == „Dunkel“
and fibaro:getGlobalValue(„Lichtsteuerung“) == „Eingeschaltet“)

then
x= DT(os.date())
fibaro:debug (x)

zeit = os.time();      
timer = os.time();
Debug("white",(separator))       
Debug("tan",('Erneute Bewegung durch ' .. name .. " erkannt!")); 
Debug("yellow",("Beleuchtung ist bereits eingeschaltet!"));
Debug("cyan",("Timer wird zurückgesetzt..."));
Debug("gray",(os.date("Es ist %H:%M Uhr, ohne weitere Aktivität wird das Licht")));
Debug("gray",(os.date("in "..starttimer /60 .." Minuten also um %H:%M Uhr ausgeschaltet!",zeit+starttimer)))
Debug("white",(separator))            

end
end
end
end

-- Schalte Licht aus, wenn Timer vollständig abgelaufen ist

if (tonumber(fibaro:getValue(licht_wz, „value“)) > 0)
and fibaro:getGlobalValue(„TimerLicht“) == „Eingeschaltet“
and (tonumber(fibaro:getValue(stecker, „power“)) < verbrauch)

then
x= DT(os.date())
fibaro:debug (x)

fibaro:call(licht_wz, "turnOff");
Debug("cyan",(os.date("" ..starttimer /60 .. " Minuten Timer wurde gestoppt oder ist abgelaufen!")));
Debug('gray',('Timer Licht ist '..fibaro:getGlobalValue('TimerLicht')..'')); 
Debug("green",("Verbrauch ist kleiner als die vorgegebenen " ..verbrauch.. " Watt"));
Debug("green",("Effektiver Verbrauch = "..power.." Watt, TV ist ausgeschaltet!"));      
Debug("gray",(os.date("Es ist %H:%M Uhr, Licht wird ausgeschaltet")));
Debug("red",("Szene angehalten..."));
Debug("white",(separator))       
--fibaro:abort();
--fibaro:killScenes(scene);

elseif

(tonumber(fibaro:getValue(stecker, "power")) > verbrauch)  

then

x= DT(os.date())
fibaro:debug (x)
    
Debug("yellow",("Licht wird NICHT automatisch ausgeschaltet..."));
Debug("white",("TV ist noch eingeschaltet!"));
Debug("tan",("Effektiver Energieverbrauch vom TV = "..power.." Watt"));
Debug("red",("Szene angehalten..."));
Debug("white",(separator))          
--fibaro:abort();
--fibaro:killScenes(scene);

elseif

fibaro:getGlobalValue("TimerLicht") == "Ausgeschaltet"    

then

x= DT(os.date())
fibaro:debug (x) 
  
Debug("yellow",("Licht wird NICHT automatisch ausgeschaltet..."));
Debug('tan',('Timer Licht ist '..fibaro:getGlobalValue('TimerLicht')..''));
Debug("red",("Szene angehalten..."));
Debug("white",(separator)) 
--fibaro:abort();

end
end
–end

Blockzitat

Schade dass es niemanden mehr interessiert wenn jemand Probleme mit einer LUA Szene hat, vor einigen Jahren war die Hilfsbereitschaft hier noch ganz anders.
Habe das Problem mittlerweile selber den Griff bekommen, da bekanntlich viele Wege nach Rom führen hätte mich die Meinung eines LUA Spezis sehr gefreut. Die Zeit läuft und die Dinge ändern sich, schade!