Garagentorbeleuchtung

ja, ich steuere das tor über ein 1-fach relais.
0 sollte der zustand für geschlossen sein. bei dem Kontakt oben könnte es aber auch umgekehrt sein, da ich das da umgestellt habe, damit in der ansicht das tor auch offen erscheint, wenn der kontakt geschlossen ist.
habe das grade mal geändert…

if (tonumber(fibaro:getValue(garagentorunten, "value")) > 0)  -- Tor in Bewegung bzw. nicht geschlossen und nicht offen
  and (tonumber(fibaro:getValue(garagentoroben, "value")) < 1)
  then

aber dann passiert gar nichts.

Warum lässt Du das Script dann nicht durch das Relais triggern?

ginge wohl auch. die lösung hier kam noch von den blockszenen…
ich probiers mal…

hab mal versucht das Relais als Trigger zu nutzen und hatte den torkontakt oben zustand als geöffnet = 0 gesetzt…


--[[
%% autostart
%% properties
251 value
%% globals
--]]

local sourceTrigger = fibaro:getSourceTrigger();
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
local sonnenaufgang = fibaro:getValue(1, "sunriseHour")
local sonnenuntergang = fibaro:getValue(1, "sunsetHour")
local garagentorunten = 332
local garagentoroben = 341
local LEDstripe = 321
local lichtgarage = 257

-- function torbewegung()
if (tonumber(fibaro:getValue(garagentorunten, "value")) > 0)  -- Tor in Bewegung bzw. nicht geschlossen und nicht offen
  and (tonumber(fibaro:getValue(garagentoroben, "value")) < 1)
  then
    fibaro:call(LEDstripe, "startProgram", "286")               --Rot blinken
    fibaro:call(lichtgarage, "turnOn")
    fibaro:debug('Tor wird geöffnet')
    fibaro:sleep(5*60*1000)
    fibaro:call(lichtgarage, "turnOff")
    fibaro:debug('Licht aus')
  end
  
if (tonumber(fibaro:getValue(garagentoroben, "value")) == 0)    -- Tor offen
then fibaro:call(LEDstripe, "startProgram", "287")               --Grün leuchten
    fibaro:sleep(15*1000)                                       -- 15 Sekunden warten
    fibaro:call(LEDstripe, "turnOff")                                        -- wenn nein, dann LED ausschalten
    fibaro:debug('Tor geöffnet')
end

if (tonumber(fibaro:getValue(garagentorunten, "value")) == 0) -- Tor geschlossen
then fibaro:call(LEDstripe, "startProgram", "287")
    fibaro:sleep(15*1000)
    fibaro:call(LEDstripe, "turnOff")
    fibaro:debug('Tor geschlossen')
end

-- end
-- if (sourceTrigger["type"] == "property") then
-- torbewegung()
-- end

function nachtbeleuchtung()
if (tonumber(fibaro:getValue(garagentoroben, "value")) == 0 ) and ((sonnenaufgang > os.date("%H:%M", os.time())) or (os.date("%H:%M", os.time()) > sonnenuntergang))
or (tonumber(fibaro:getValue(garagentorunten, "value")) == 0 ) and ((sonnenaufgang > os.date("%H:%M", os.time())) or (os.date("%H:%M", os.time()) > sonnenuntergang))
then fibaro:sleep (15*1000)                                                                           --15 Sek warten damit es erst grün leuchtet nach öffnen
     fibaro:call(LEDstripe, "setValue", {R="255",G="255",B="255",W="255"})
end
setTimeout(nachtbeleuchtung, 60*1000)
end
if (sourceTrigger["type"] == "autostart") then
  nachtbeleuchtung()
end

es hat nichts genützt, ausser das die szene sofort wohl startet und folgender Debug kommt

[DEBUG] 16:34:16: Tor geöffnet
[DEBUG] 16:34:31: Tor geschlossen

obwohl nichts gedrückt wurde. das Tor hat sich nicht bewegt…
d.h. die szene startet automatisch, ok, und prüft aber schaltet kein licht und kein LED programm…

Du hast ja auch im Header den Autostart drin…

ich dachte den brauche ich für die funktion der nachtbeleuchtung?
der letzte code abschnitt…

Als nächtrst solltest du dir Beispiele mit einer while-Schleife ansehen.

Dann solltest du deine Nachtbeleuchtung und das andere trennen.

ich dachte das while könnte ich umgehen durch die if abfragen nacheinander…

Die Nachtbeleuchtung würde ich dann auch mit der Time of Day (ToD) Variable kombinieren.

meine ToD Variable wird nach uhrzeit durch blockszenen gesetzt.
die würde nicht zur steuerung einer beleuchtung funktionieren. sonst ist das licht im winter noch aus oder im sommer schon an…

ich starte das tor auch nicht immer über das relais sondern hab auch noch “normale” funksender dafür.
dann muss ich die trigger wieder ändern.

Also ToD gibt es hier ein Script, das nach Sonnenuntergang etc arbeitet.

Aber auch wenn du per Funksender arbeitest, wird doch das Relais angesprochen, zumindest bei mir.

Ich checke mein Tor, ob es Abends ncoh offen ist und geben mir dann eine TTS Ansage aus:

--[[
%% properties
405 value
%% events
%% globals
TimeOfDay
--]]
   
--Szene prüft, ob nach Evening das Tor noch offen ist und macht ggf TTS Ansage.
if fibaro:countScenes() > 1 then
   fibaro:abort()
  	fibaro:debug("Szene abgebrochen")
end

local FensterID = 405  --und im Header anpasen - Garagentor Hinten
local TTSID = 279 --ID der TTSSayAll-Szene

local Temperatur = tonumber(fibaro:getValue(144, "value"))  --ID von Netatmoprint
local temp = tostring(fibaro:getValue(144, "value"))
local tempcurr = string.gsub(temp, "%.", ",", 1); --wegen TTS
local room = fibaro:getRoomNameByDeviceID(FensterID)

local countID = 500

------------------------------------------------------------------

if tonumber(fibaro:getValue(FensterID, "value")) == 0 then
	fibaro:debug(room.."-Tor Hinten ist GANZ Auf und ToD ist: "..fibaro:getGlobalValue("TimeOfDay"))
elseif tonumber(fibaro:getValue(FensterID, "value")) == 1 then
	fibaro:debug(room.."-Tor Hinten ist NICHT ganz auf und ToD ist: "..fibaro:getGlobalValue("TimeOfDay"))
end   

------------eigentliches Script
if (tonumber(fibaro:getValue(FensterID, "value")) == 0 and
   fibaro:getGlobalValue("TimeOfDay") == "Evening") then

      		fibaro:debug("Tor ist ganz offen und Sonne ist untergegangen")
      		local counter = 0
   			local counterRollo = 0
    		local Intervall = 600  --10 Minuten 
			while counter <= Intervall do
				fibaro:sleep(1000)
				counter = counter + 1
      			counterRollo = counterRollo + 1 --zählt Gesamt SChleifen und nach einem Min-Wert wird beim Fensterschließen das Rollo geschlossen
				--print("counter: "..counter)
    			--print("counterRollo: "..counterRollo)
    				if counter == Intervall then
						min = tonumber(string.format("%.0f", (counterRollo/60)))
        				fibaro:setGlobal("TTSSayAll", "Das "..room.."-Tor ist seit "..min.." Minuten auf.")
        				fibaro:debug("Das "..room.."-Tor ist seit "..min.." Minuten auf.")
      					fibaro:startScene(TTSID)
        				fibaro:debug("TTS-Szene gestartet")
      					fibaro:setGlobal("PopUpText", "Garagentor ist seit "..min.." Minuten auf.");
						fibaro:startScene(240);
        				counter = 0 --damit Intervall erneut läuft und neien weitere Ansage kommt
					end
					if tonumber(fibaro:getValue(FensterID, "value")) == 1 then
        				min = tonumber(string.format("%.0f", (counterRollo/60)))
   						fibaro:debug("Tor wurde nach "..counterRollo.." Sekunden ("..min..") Minuten geschlossen. ") 
		   				break
					end
			end  --der while-do-Schleife
end    
    

nein, bei mir nicht. hab ne standard hörmann sender im auto. der funkt direkt das hörmann tor an.
ich glaube das skript hatte ich mal ausprobiert, aber bin da auf schwierigkeiten gestossen es an meine bedürfnisse anzupassen und habs dann über blockszenen gelöst.

also das LED blinken etc funktioniert jetzt hiermit

--[[
%% properties
332 value
341 value
%% globals
--]]

local sourceTrigger = fibaro:getSourceTrigger();
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
local sonnenaufgang = fibaro:getValue(1, "sunriseHour")
local sonnenuntergang = fibaro:getValue(1, "sunsetHour")
local garagentorunten = 332
local garagentoroben = 341
local LEDstripe = 321
local lichtgarage = 257

-- function torbewegung()
if (tonumber(fibaro:getValue(garagentorunten, "value")) == 1)  -- Tor in Bewegung bzw. nicht geschlossen und nicht offen
  and (tonumber(fibaro:getValue(garagentoroben, "value")) == 0)
  then
    fibaro:call(LEDstripe, "startProgram", "286")               --Rot blinken
    fibaro:call(lichtgarage, "turnOn")
    fibaro:debug('Tor in Bewegung')
    fibaro:sleep(5*60*1000)
    fibaro:call(lichtgarage, "turnOff")
    fibaro:debug('Licht aus')
  end
  
if (tonumber(fibaro:getValue(garagentoroben, "value")) == 1)    -- Tor offen
then fibaro:call(LEDstripe, "startProgram", "287")               --Grün leuchten
    fibaro:sleep(15*1000)                                       -- 15 Sekunden warten
    fibaro:call(LEDstripe, "turnOff")                                        -- wenn nein, dann LED ausschalten
    fibaro:debug('Tor geöffnet')
end

if (tonumber(fibaro:getValue(garagentorunten, "value")) == 0) -- Tor geschlossen
then fibaro:call(LEDstripe, "startProgram", "287")
    fibaro:sleep(15*1000)
    fibaro:call(LEDstripe, "turnOff")
    fibaro:debug('Tor geschlossen')
end

-- end
-- if (sourceTrigger["type"] == "property") then
-- torbewegung()
-- end

function nachtbeleuchtung()
if ((tonumber(fibaro:getValue(garagentoroben, "value")) == 1 ) and ((sonnenaufgang > os.date("%H:%M", os.time())) or (os.date("%H:%M", os.time()) > sonnenuntergang)))
or ((tonumber(fibaro:getValue(garagentorunten, "value")) == 0 ) and ((sonnenaufgang > os.date("%H:%M", os.time())) or (os.date("%H:%M", os.time()) > sonnenuntergang)))
then fibaro:sleep (15*1000)                                                                           --15 Sek warten damit es erst grün leuchtet nach öffnen
     fibaro:call(LEDstripe, "setValue", {R="255",G="255",B="255",W="255"})
end
setTimeout(nachtbeleuchtung, 60*1000)
end
if (sourceTrigger["type"] == "autostart") then
  nachtbeleuchtung()
end

da bin ich mal gespannt auf heute abend wenn die sonne untergeht…

bezgl. deinem post mit nachtbeleuchtung trennen…

ich hatte boomx auf der ersten seite so verstanden, dass ich diese beiden aktionen (LED Streifen bei Bewegung und Nachtbeleuchtung) in einer Szene kombinieren kann.
wenn ich nach Sonnenuntergang das Tor betätige möchte ich ja auch den Effekt bei Bewegung haben und danach soll es wieder in die Nachtbeleuchtung übergehen.
deswegen hatte ich das mit 2 Funktionen getrennt.

würde bei meinem letzten skript denn die nachtbeleuchtung funktionieren obwohl ich jetzt nicht mehr “autostart” im header habe?

danke
Mit freundlichen Grüßen
bademeister

also die nachtbeleuchtung funktioniert nicht…

Hi,

ist klar, dass die nicht funktioniert. Du hast ja auch die Autostart-Funktion entfernt. Das musst du schon definieren und trennen. Ohne dein Skript jetzt Punkt für Punkt durchzugehen, müsste das ungefähr so aussehen:

--[[
%% autostart
%% properties
332 value
341 value
%% globals
--]]

local sourceTrigger = fibaro:getSourceTrigger()

function bewegung()
end

function nacht()
end

if (sourceTrigger["type"] == "autostart") then
  nachtbeleuchtung()
elseif (sourceTrigger["type"] == "property") then
  bewegung()
else
  fibaro:debug('Manuell ausgelöst. Keine Aktion wird ausgeführt.')
end

Beachte dabei bitte, dass die Instanzen immer auf mindestens 2 stehen müssen. Ansonsten läuft nur die autostart-Szene und die andere wird geblockt.

Gruß

hi,
habs mal versucht umzusetzen, leider ohne erfolg. die nachtbeleuchtung bleibt aus…

--[[
%% autostart
%% properties
332 value
341 value
%% globals
--]]

local sourceTrigger = fibaro:getSourceTrigger();
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
local sonnenaufgang = fibaro:getValue(1, "sunriseHour")
local sonnenuntergang = fibaro:getValue(1, "sunsetHour")
local garagentorunten = 332
local garagentoroben = 341
local LEDstripe = 321
local lichtgarage = 257

function torbewegung()
if (tonumber(fibaro:getValue(garagentorunten, "value")) == 1)  -- Tor in Bewegung bzw. nicht geschlossen und nicht offen
  and (tonumber(fibaro:getValue(garagentoroben, "value")) == 0)
  then
    fibaro:call(LEDstripe, "startProgram", "286")               --Rot blinken
    fibaro:call(lichtgarage, "turnOn")
    fibaro:debug('Tor in Bewegung')
    fibaro:sleep(5*60*1000)
    fibaro:call(lichtgarage, "turnOff")
    fibaro:debug('Licht aus')
  end
  
if (tonumber(fibaro:getValue(garagentoroben, "value")) == 1)    -- Tor offen
then fibaro:call(LEDstripe, "startProgram", "287")               --Grün leuchten
    fibaro:sleep(15*1000)                                       -- 15 Sekunden warten
    fibaro:call(LEDstripe, "turnOff")                                        -- LED ausschalten
    fibaro:debug('Tor geöffnet')
end

if (tonumber(fibaro:getValue(garagentorunten, "value")) == 0) -- Tor geschlossen
then fibaro:call(LEDstripe, "startProgram", "287")
    fibaro:sleep(15*1000)
    fibaro:call(LEDstripe, "turnOff")
    fibaro:debug('Tor geschlossen')
end

end

function nachtbeleuchtung()
if ((tonumber(fibaro:getValue(garagentoroben, "value")) == 1 ) and ((sonnenaufgang > os.date("%H:%M", os.time())) or (os.date("%H:%M", os.time()) > sonnenuntergang)))
or ((tonumber(fibaro:getValue(garagentorunten, "value")) == 0 ) and ((sonnenaufgang > os.date("%H:%M", os.time())) or (os.date("%H:%M", os.time()) > sonnenuntergang)))
then fibaro:sleep (15*1000)                                                                           --15 Sek warten damit es erst grün leuchtet nach öffnen
     fibaro:call(LEDstripe, "setValue", {R="255",G="255",B="255",W="255"})
end
setTimeout(nachtbeleuchtung, 60*1000)
end

if (sourceTrigger["type"] == "autostart") then
  nachtbeleuchtung()
elseif (sourceTrigger["type"] == "property") then
  torbewegung()
else
  fibaro:debug('Manuell ausgelöst. Keine Aktion wird ausgeführt.')
end

Mit freundlichen Grüßen
bademeister