Name von Fibaro Motion Melder

Hallo zusammen
Wer kann mir einen Input geben, was ich in der untenstehenden Szene ergänzen muss damit der Name des Motion Melders der getriggert hat im Debug ausegeben wird?
Vielen Dank…

--[[
%% properties
101 value
134 value
165 value
182 value
%% globals
--]]
 
-----------------------------------------------------------------------------------------------------------------------------------------
local scene = 324
local sensors = {101,134,165,182}
local licht = 128
local tv_licht = 14
local handy_willi = 189
local currentDate = os.date("*t");
-------------------------------------------- 
local start = 0600
local ende = 2100
local starttimer = 1800 --Sekunden
 
local sourceTrigger = fibaro:getSourceTrigger();

-----------------------------------------------------------------------------------------------------------------------------------------
-- Zeit 1500 = 15:00 
---------------------Script-----------------
    Debug = function ( color, message ) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) end

if  (fibaro:countScenes()> 1) 
  
then
	--fibaro:debug("Es läuft mehr als eine Instanz");
	fibaro:abort();
end

    function getSensorStatus()  
    for i,n in ipairs(sensors) do
if  (tonumber(fibaro:getValue(n, "value")) > 0) then
return 1;
end
end
return 0;
end

    -- TV Simulator aus bei Anwesenheit
    ------------------------------------------------------------------------------------------------------------

if  (fibaro:getSourceTriggerType() == 'property' and getSensorStatus() == 1)
  
then
if  tonumber(fibaro:getValue(tv_licht, "value")) > 0
 
then
    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 
    x= DT(os.date())
    fibaro:debug (x) 
  
    fibaro:call(tv_licht, "turnOff"); -- TV Simulator ausgeschaltet
    --fibaro:debug("------------------------------------------------------------------------------------------"); 
    Debug("yellow",("TV Simulator ist noch eingeschaltet!"));
    Debug("lime",(os.date("TV Simulator ausgeschaltet!")));
    fibaro:debug("------------------------------------------------------------------------------------------"); 
end
 end

    -- Variable auf ABWESENHEIT vorgefunden

if  (fibaro:getSourceTriggerType() == 'property' and getSensorStatus() == 1)
  
then  
if  fibaro:getGlobalValue("AnwesenheitsCheck") == "Abwesend" 
    
then 
    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 
    x= DT(os.date())
    fibaro:debug (x)     
    Debug("white",("Bewegung erkannt..."));
    Debug("steelblue",("Variable *AnwesenheitsCheck* auf ABWESEND vorgefunden!"));
    Debug("lime",("Variable auf ANWESEND geschaltet..!"));
    fibaro:setGlobal("AnwesenheitsCheck", "Anwesend")

  
elseif 
  
    -- BM Schalte Abwesenheit ein/aus

    (fibaro:getSourceTriggerType() == 'property' and getSensorStatus() == 1)
  
then  
if  (tonumber(os.date("%H%M")) >= start and tonumber(os.date("%H%M")) <= ende)
  
then 
    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 
    x= DT(os.date())
    fibaro:debug (x) 
 	--ibaro:debug("------------------------------------------------------------------------------------------"); 
    Debug("white",("Bewegung erkannt..."));
    Debug("cyan",(starttimer /60 .. " Minuten Timer aktiviert..."));
    fibaro:debug("------------------------------------------------------------------------------------------");         

    timer = os.time();
	while os.time() - timer < starttimer do
    fibaro:sleep(1000);

      
    -- Timer zurücksetzen, wenn neue Bewegung erkannt wird innherhalb der Verzögerungszeit
    
if  (fibaro:getSourceTriggerType() == 'property' and getSensorStatus() == 1)
      
then 
if  (tonumber(os.date("%H%M")) >= start and tonumber(os.date("%H%M")) <= ende)

then     
    zeit = os.time();    
    timer = os.time();
    fibaro:debug("------------------------------------------------------------------------------------------");         
    Debug("white",("Erneute Bewegung erkannt!"));
    Debug("cyan",("Timer wird zurückgesetzt..."));
    Debug("steelblue",(os.date("Es ist %H:%M Uhr, ohne weitere Aktivität wird die Variable *AnwesenheitsCheck*")));
    --Debug("steelblue",(os.date("in " ..starttimer /60 .. " Minuten auf ABWESENHEIT geschaltet!")));  
    Debug("steelblue",(os.date("um %H:%M Uhr auf ABWESENHEIT geschaltet!",starttimer+zeit)))
    fibaro:debug("------------------------------------------------------------------------------------------");         
end
 end
  end
   end
    
    -- Schalte Variable um, wenn Timer vollständig abgelaufen ist

if  (tonumber(os.date("%H%M")) >= start and tonumber(os.date("%H%M")) <= ende)         
      
then
    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 
    x= DT(os.date())
    fibaro:debug (x) 
      
    fibaro:setGlobal("AnwesenheitsCheck", "Abwesend")
    --fibaro:debug("------------------------------------------------------------------------------------------");         
    Debug("cyan",(os.date("" ..starttimer /60 .. " Minuten Timer ist abgelaufen!")));      
    Debug("steelblue",("Variable auf ABWESEND geschaltet!"));
    Debug("orange",("Szene angehalten..."));
    fibaro:debug("------------------------------------------------------------------------------------------");         
    fibaro:abort();

else
      
    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     
    x= DT(os.date())
    fibaro:debug (x) 
    
    --fibaro:debug("------------------------------------------------------------------------------------------");      
    --Debug("white",(os.date("Es ist der (%d.%m.%Y) %H:%M Uhr.")));
    Debug("orange",("Abwesenheit wird von 06.00 Uhr bis 21.00 Uhr überwacht...!"))
    Debug("red",("Innerhalb der Zeitbeschränkung, Abwesenheit wird NICHT aktiviert!"))
    fibaro:debug("------------------------------------------------------------------------------------------");      
  
end
 end
  end

if  (sourceTrigger["type"] == "other") 

then
if  fibaro:getGlobalValue("AnwesenheitsCheck") == "Anwesend"   
  
then
    fibaro:setGlobal("AnwesenheitsCheck", "Abwesend")
    fibaro:debug("------------------------------------------------------------------------------------------");      
    Debug("steelblue","Variable *AnwesenheitsCheck* auf ABWESEND geschaltet!")
    fibaro:debug("------------------------------------------------------------------------------------------");      
  
elseif
    
    fibaro:getGlobalValue("AnwesenheitsCheck") == "Abwesend" 
    
then
    fibaro:setGlobal("AnwesenheitsCheck", "Anwesend")
    fibaro:debug("------------------------------------------------------------------------------------------");      
    Debug("lime","Variable *AnwesenheitsCheck* auf ANWESEND geschaltet!")
    fibaro:debug("------------------------------------------------------------------------------------------");      
end
 end
  

Dies funktioniert nur beim ersten getriggerten Motion Melder, wenn ein weiterer Melder triggert bleibt der Debug leer oder
es erscheint immer der Name des erst getriggerten Melders?

local trigger = fibaro:getSourceTrigger();
local sensorID = tonumber(trigger['deviceID']);
local name = fibaro:getName(sensorID); 

--- ### Sensor ausgelöst ### --- 

if tonumber(fibaro:getValue(trigger['deviceID'], "value")) > 0 then
Debug("cyan",("Bewegung von ".. name .. " erkannt!")); 

Könnte mir vorstellen dass es so funktioniert. Du musst die Funktion getSenSorStatus() so umbauen dass sie 2 Werte zurückgibt - den Status und den Namen.
Dann musst Du die if Abfrage ein wenig umbauen.
Hier mal ein Beispiel (ungetestet).

 
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

status, name = getSensorStatus() 
if (status == 1 ) then
  fibaro:debug('Bewegungung erkannt durch ' .. name) 
end

Hi Jeep
Vielen Dank für Deine Mühe, werde dies baldmöglichst austesten. Gruss fastsnake

Hallo Jeep
Habe Dein Script getestet, läuft super!! Vielen Dank für Deine spontane Hilfe, muss offenbar noch einiges lernen in LUA!!
Gut gemacht… Gruss fastsnake