Advertisement
Guest User

Untitled

a guest
Sep 20th, 2014
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.07 KB | None | 0 0
  1. #!/usr/local/bin/lua
  2.  
  3. --[[
  4. %% properties
  5. 30 value
  6. 9 value
  7. %% globals
  8. --]]
  9. -- VARIABLEN (Bewegungsmelder muss oben unter %% properties aufgeführt sein)
  10.  
  11. local scene = 1 -- ID dieser Szene
  12. local motion = 30 -- ID des Bewegungssensors
  13. local switch = 9 -- ID des Relay Switches
  14. -- Lösche doppelte Szene(n)
  15.  
  16. if (fibaro:countScenes()>1)
  17.   then
  18.     fibaro:abort();
  19. end
  20. -- SCHALTE LICHT EIN & AUS
  21. if (tonumber(fibaro:getValue(motion, "value"))) > 0
  22. and (tonumber(fibaro:getValue(switch, "value"))) < 1
  23. and ((tonumber(os.date("%H%M"))) >= (tonumber(string.format("%02d%02d", "19", "30"))) or (tonumber(os.date("%H%M"))) <= (tonumber(string.format("%02d%02d", "07", "00")))) --wenn die zeit größer als 1930 oder kleiner als 0700 ist. also zwischen 19.30 und 7.00 Uhr geht das licht an
  24.   then
  25.     fibaro:call(switch, "turnOn");
  26.     fibaro:debug("Schalte Licht ein");
  27. end
  28. -- Verzögerung in Sekunden nach der letzten erkannten Bewegung, bevor das Licht ausgeschaltet wird
  29. if (tonumber(fibaro:getValue(switch, "value"))) > 0
  30.   then  
  31.     local starttimer = 900;
  32.     local timer = (starttimer);
  33.     fibaro:debug("Starte Timer");
  34.     repeat
  35.       fibaro:sleep(1000);  
  36.       -- Schalte Licht aus, wenn Schalter manuell betätigt wird und warte 10 Sekunden, um ein
  37.       -- versehentliches (erneutes) Aktivieren der Szene zu verhindern
  38.       if (tonumber(fibaro:getValue(switch, "value"))) < 1
  39.         then
  40.           timer=1;
  41.           fibaro:call(switch, "turnOff");
  42.           fibaro:sleep(10000);
  43.           break
  44.       end
  45.       timer=timer-1;
  46.       -- Timer zurücksetzen, wenn neue Bewegung erkannt wird innherhalb der Verzögerungszeit
  47.       if (tonumber(fibaro:getValue(motion, "value"))) > 0
  48.         then  
  49.           timer=starttimer;
  50.           fibaro:debug("Resete Time, Bewegung erkannt bzw. Motionsensor sendet noch nicht (vgl. Parameter 6)");
  51.       end
  52.     until (timer<1)
  53.  
  54.   -- Schalte Licht aus, wenn Timer vollständig abgelaufen ist
  55.   fibaro:call(switch, "turnOff");
  56.   fibaro:debug("Timer abgelaufen/Schalte Licht aus");
  57.   fibaro:killScenes(scene);
  58. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement