Rollladen nicht zu bei offener Tür

Hallo Gemeinde,

ich bin der absolute Null LUA Blicker, anpassen geht, selber schreiben… ne.

Ich will eine simple Szene haben.

Roll fährt zu bestimmter Uhrzeit runter (kein Problem), er soll nicht runter fahren, wenn Fenter offnen (bekomm ich nicht hin)

Danke für die Hilfe

Hi Scanner 35…hier vielleicht das was du suchst!


local doorID1 =       xxx;   -- ID des Türkontakts

local rs_Wohnzimmer = xxx;   -- ID des Rollershutters

--############################################################################################################
--#########################   Rollos in der Woche (Mo, Di, Mi, Do) mit Prüfung zu   ##########################
--############################################################################################################		
	while		(tonumber(fibaro:getValue(doorID1, 'value')) > 0) do	--prüft ob Tür offen, wenn ja wird Rolladen nicht geschlossen
				fibaro:sleep(10*1000)
	end

  fibaro:call(rs_Wohnzimmer, "setValue", 15);   --fährt Rollo bis auf 15% runter (nur diese oder nächste Zeile)
--fibaro:call(rs_Wohnzimmer, 'close');	-- fährt Rollo komplett runter	(nur diese oder nächste Zeile)
  fibaro:debug('Rollos mit Prüfung zu');


schau mal ob das hilft

Hallo Sven,

ich hab folgenden Code:

--[[
%% autostart
%% properties
%% weather
%% events
%% globals
--]]
local doorID1 = 7;   -- ID des Türkontakts
local rs_Wohnzimmer = 203;   -- ID des Rollershutters

local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
 ( ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format("%02d", currentDate.hour) .. ":" .. string.format("%02d", currentDate.min) == "19:05") )
)
then
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
end
	while		(tonumber(fibaro:getValue(doorID1, 'value')) > 0) do	--prüft ob Tür offen, wenn ja wird Rolladen nicht geschlossen
				fibaro:sleep(10*1000)
	end
  
  fibaro:call(rs_Wohnzimmer, 'close');
  
  
  
end


Das funktioniert nicht. Kannst du den feintunen?

Wie geschrieben, ich blick LUA nicht :frowning:

Hallo Scanner 35,
dann schreib bitte genau was deine Scene tun soll! Auf und zu…nur zu…am besten mit deinen Uhrzeiten, damit du sie hinterher verstehst

Also,

jeden Tag soll der Rolladen um 19:30 Uhr zugehen, außer wenn die Türe offen ist, dann soll nichts geschehen.

Hallo Scanner 35…auch nicht wenn die Türe zu gemacht wird? Willst du dann von Hand schließen ?

Das kannst du doch selber in einer grafischen Scene lösen:

Wenn richtige Uhrzeit und Türkontakt geschlossen dann fahre Rollo runter, sonst mach nichts (so verstehe ich deine Aussage)

Hi Sven,

oh man, klar, sieht auf jeden Fall logisch aus. Und ich hab gebaut und geschoben und gemacht und getan…
Ich check das mal und bedanke mich schon recht herzlich für den Schupser in die richtige Richtung!!!

Danke

ähm, sobald ich die Türe auf mach und wieder zu mach geht der Rollo runter. Ich habe aber die Bedingung wenn Tür nicht gleich ausgelöst genommen.

Kannst du mir nochmal helfen. Anbei der Screenshot

welche trigger stehen denn oben bei dir angehakt? Der Türkontakt darf nicht angehakt sein :wink:

sorry, sehe gerade dass es bei meinem Beispiel so ist…aber das darf natürlich nicht! weil dann löst es bei jedem ändern des Türkontaktes aus. Also Haken raus und noch mal testen, weil es soll ja nur bei der Uhrzeit auslösen und wenn die richtige Uhrzeit erreicht wird, erst dann soll er prüfen, ob die Tür offen ist

Funktioniert, vielen Dank!!!

Hier nochmals was (nicht von mir), von “früher”!


--[[
%% autostart
%% properties
%% globals
--]]
 
local minSonAuf = '-30' -- Vohrzeichen - + min. wo die Sonne Frueher auf geht... SonnenAufgang.
local minSonUnt = '60' -- Vohrzeichen - + min. wo die Sonne Spaeter unter geht... SonnenUntergang.
local zeitFruehstensAuf = '06:00'  --Fruehstens wenn die Sonne auf geht.
local zeitSpaetestensAuf = '07:00' --Spaetestens wenn die Sonne auf geht.
local zeitMaxUntergang = '23:00'   --Spaetestens wenn die Sonne unter geht.
 
local rs_living_1 = 1613; --WZ
local rs_living_2 = 573;  --KÜ
local rs_living_3 = 154;
local rs_living_4 = 579;
local rs_living_5 = 575;
local rs_living_6 = 590;
local rs_living_7 = 1477;	--GZ groß
local rs_living_8 = 1099;
local rs_living_9 = 1219;
local rs_living_10 = 1626;
local doorID1 = 672;  --WZ
local doorID2 = 675;  --KÜ

---------------------------------------------------------------------------------
debug = function ( color, message )
  fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
------------------------------------------------------------------------------------
 
----------------------------------------------------------------------------------------
local sourceTrigger = fibaro:getSourceTrigger();
local version = '2.0';
 
debug('darkgreen',"Rollershutter-Controller startet das erste mal (Ver." .. version .. ")");
---------------------------------------------------------------------------------------
function rollershutter()
   
      local Sonnenaufgang = fibaro:getValue(1,'sunriseHour');
      local string = Sonnenaufgang
      local a, b = string:match("([^,]+):([^,]+)")
      local VersetzteSonnenaufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
      ----------------------------------------------------------------------------------------
      local Sonnenuntergang = fibaro:getValue(1,'sunsetHour');
      local string = Sonnenuntergang
      local a, b = string:match("([^,]+):([^,]+)")
      local VersetzteSonnenuntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
      ----------------------------------------------------------------------------------------
      local version = '2.0';
      local currentDate = os.date('*t');
      local rollershutter_runs = tonumber(fibaro:getGlobalValue('rollershutterruns4'));
	  local random = math.random(30);
	  local min = math.floor((random*100)/60);
-----------------------------------------------------------------------------------------
---#################   Sonnenaufgang !!  ###############################################
-----------------------------------------------------------------------------------------
if ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
 and (((VersetzteSonnenaufgang >= zeitFruehstensAuf and os.date("%H:%M", os.time()) == VersetzteSonnenaufgang)
 or (VersetzteSonnenaufgang > zeitSpaetestensAuf and os.date("%H:%M", os.time()) == zeitSpaetestensAuf))
 or (VersetzteSonnenaufgang < zeitFruehstensAuf and os.date("%H:%M", os.time()) == zeitFruehstensAuf))
 and rollershutter_runs == 0)
	then
 
       debug('darkkhaki',"Rollershutter-Controller hat gestartet (Ver." .. version .. ")");
			fibaro:setGlobal('rollershutterruns4', '1');
			fibaro:debug('Sonnenaufgang... öffne Rollos');
			fibaro:debug('Waiting ' .. min .. ' min');
			fibaro:sleep(random*100000);
                fibaro:call(rs_living_1, 'open');
                fibaro:call(rs_living_2, 'open');
                fibaro:call(rs_living_3, 'open');
                fibaro:call(rs_living_4, 'open');
    		fibaro:call(rs_living_5, 'open');
    		fibaro:call(rs_living_6, 'open');
    		fibaro:call(rs_living_7, 'open');
    		fibaro:call(rs_living_8, 'open');
    		fibaro:call(rs_living_9, 'open');
 
       debug('yellow',"Rollos wurden geoefnet.");
       fibaro:setGlobal('rollershutterruns4', '0');
-----------------------------------------------------------------------------------------    
---################    Sonnenuntergang !!  ##########################################---
----------------------------------------------------------------------------------------- 
elseif ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
 and ((VersetzteSonnenuntergang <= zeitMaxUntergang and os.date("%H:%M", os.time()) == VersetzteSonnenuntergang)
  or (VersetzteSonnenuntergang >= zeitMaxUntergang and os.date("%H:%M", os.time()) == zeitMaxUntergang))
 and rollershutter_runs == 0)
 then
 
		debug('darkkhaki',"Rollershutter-Controller hat gestartet (Ver." .. version .. ")");
		fibaro:setGlobal('rollershutterruns4', '1');
		fibaro:debug('Sonnenunter... schließe Rollos');
		fibaro:debug('Waiting ' .. min .. ' min');
		fibaro:sleep(random*100000);
 
	fibaro:call(rs_living_4, 'close')
    	fibaro:call(rs_living_5, 'close')
   	fibaro:call(rs_living_6, 'close')
   	fibaro:call(rs_living_7, 'close')
    	fibaro:call(rs_living_8, 'close')
    	fibaro:call(rs_living_9, 'close')
    	fibaro:call(rs_living_10, 'close')--ID für close ohne prüfung eines offenen Fensters
    
		while 	
			(tonumber(fibaro:getValue(doorID1, 'value')) > 0) do	--prüft ob Fester offen, wenn ja wird fenster nicht geschlossen
  			fibaro:sleep(10*1000)
		end
			fibaro:call(rs_living_1, 'close');
              
		while
			(tonumber(fibaro:getValue(doorID2, 'value')) > 0) do	--prüft ob Fester offen, wenn ja wird fenster nicht geschlossen
			fibaro:sleep(10*1000)
		end
 			fibaro:call(rs_living_2, 'close');
			
		--while
			--(tonumber(fibaro:getValue(doorID3, 'value')) > 0) do	--prüft ob Fester offen, wenn ja wird fenster nicht geschlossen
			--fibaro:sleep(10*1000)
		--end
 			--fibaro:call(rs_living_3, 'close');
 
		debug('royalblue',"Rollos wurden geschlossen.");
		fibaro:setGlobal('rollershutterruns4', '0');
    
end
---#######################################################################################
   setTimeout(rollershutter, 60*1000);
end
------------------------------------------------------------------------------------------
----######## Wird geschaut ob tag oder nacht ist. #####################################---
------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
 
local Sonnenaufgang = fibaro:getValue(1,'sunriseHour');
debug('gold', ""..Sonnenaufgang.." ... echte Sonnenaufgang")
debug('steelblue', ""..minSonAuf.." Aufgesetzte zeit in minuten... Sonnen Aufgang.")
local string = Sonnenaufgang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenaufgang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonAuf*60));
debug('yellow',""..VersetzteSonnenaufgang.." Versetzte.... Sonnenaufgang")
 
----------------------------------------------------------------------------------------
 
local Sonnenuntergang = fibaro:getValue(1,'sunsetHour');
debug('orangered',""..Sonnenuntergang.. " ... echte Sonnenuntergang")
debug('steelblue', ""..minSonUnt.." Aufgesetzte zeit in minuten... Sonnen Untergang.")
local string = Sonnenuntergang
local a, b = string:match("([^,]+):([^,]+)")
local VersetzteSonnenuntergang = os.date("%H:%M", -3600+ a*60*60 + (b*60+minSonUnt*60));
debug('red',""..VersetzteSonnenuntergang.." Versetzte... Sonnenuntergang")
 
----------------------------------------------------------------------------------------
if (os.date("%H:%M", os.time()) > VersetzteSonnenaufgang)
and (os.date("%H:%M", os.time()) < VersetzteSonnenuntergang) then
    debug('coral',"Es ist Tag");
else
    debug('royalblue',"Es ist Nacht");
end
---###############################################################################
 
if (sourceTrigger['type'] == 'autostart') then
 rollershutter();
end