Alarm in der Werkstatt

Hallo Leute,
seit einiger Zeit geht mein Alarm nicht mehr.
hier ist mal das script.
Wenn ihr schonmal dabei seid das durchzulesen. Ich habe noch folgendes Problem. Da ist täglich in der Werkstatt bin löst der Bewegungsmelder andauernd aus und entläd so die Batterie. Kann man einstellen, dass der Bewegungsmelder auch nur zu den Zeiten Aktiv ist wenn auch der Alarm aktiv ist? Wenn ja, wie?

--[[ 
%% properties 
200 value
%% globals 
--]]

local motion = 200 			-- ID des Bewegungssensors
local switches = {	89,		-- 89 Außenbeleuchtung
    			  	94   	-- Parkplatzbeleuchtung 
						};	-- Kronleuchter Küche
					

local RauchmelderID = 133 -- Rauchmelder

-------------------Push Nachricht----------------------------------------
local Handychristoph = tonumber(fibaro:getGlobalValue("HandyIDChris"))
local HandyNici = tonumber(fibaro:getGlobalValue("HandyIDNici"))
local IpadNici = tonumber(fibaro:getGlobalValue("IpadNici"))
				
local phoneID = {HandyNici,  		-- Nici
    			 Handychristoph, 	-- Christoph
    			 IpadNici } 		-- Nici Ipad
local title = 'Bewegung Werkstatt!'
local message = 'Soll der Alarm ausgeschaltet werden?'
local category = 'YES_NO' -- or 'YES_NO' or RUN_CANCEL
local sceneID = 32
-------------------------------------------------------------------------

local abends  = {22,30}; -- HH:MM für Lichter Aus in der Nacht
local morgens  = {5, 30}; -- HH:MM für Lichter Aus in der Nacht
local morgens = os.date("%H:%M", -3600+ morgens[1]*60*60 + morgens[2]*60);
local abends = os.date("%H:%M", -3600+ abends[1]*60*60 + abends[2]*60);
local ostime = os.date("%H:%M", os.time());
local heute = os.date("%d.%m.%Y")

--------------------------- Lösche doppelte Szene(n)----------------------------
if (fibaro:countScenes()>1) then 
 fibaro:abort(); 
end
--------------------------------------------------------------------------------

	fibaro:debug("Alarmszene läuft")

if ostime > abends or ostime < morgens then
	fibaro:debug("Alarm scharf")
end

-- SCHALTE LICHT EIN & AUS
if (tonumber(fibaro:getValue(motion, "value")) > 0 ) and (ostime > abends or ostime < morgens) 
  then 
  local Count = 0
	for Index, Value in pairs( switches ) do
		Count = Count + 1
		fibaro:call(switches[Count], "turnOn")  
    end
    	fibaro:debug("Bewegung erkannt - Licht an")
  		fibaro:call(RauchmelderID, "turnOn")
  		fibaro:debug("Bewegung erkannt - Rauchmelder Alarm")
    for i=1, #phoneID do
   		if 	phoneID[i] ~= nil then
     		fibaro:debug('Versende Interactive Push an ID ' ..phoneID[i])
     		api.post('/mobile/push', {["mobileDevices"]={phoneID[i]}, ["message"]=message, ["title"]=title, ["category"]=category, ["data"]={["sceneId"]=sceneID}});
     	end 
  		fibaro:debug("Push gesendet")
    	fibaro:sleep(5*1000*60)
      local Count = 0
	for Index, Value in pairs( switches ) do
		Count = Count + 1
		fibaro:call(switches[Count], "turnOff")
    	fibaro:call(RauchmelderID, "turnOff")
  	end
 fibaro:debug("Timer abgelaufen/Schalte Licht aus");
 fibaro:killScenes(scene); 
	end
end