Bisher zuverlässige Szene läuft nicht mehr

Hallo,
ich habe seit langem eine eigentlich recht einfache Szene in einem Raum laufen. Diese lief auch lange völlig problemlos und zuverlässig.
Jedoch läuft sie ohne für mich erkennbaren Grund plötzlich nicht mehr. Wenn ich mich recht erinnere, ist die Szene aus diesem Forum, finde leider den Beitrag nicht mehr.

Die Szene sieht so aus:

--[[ 
%% properties
81 value
83 value
%% globals 
--]]
-- VARIABLEN (Bewegungsmelder muss oben unter %% properties aufgeführt sein)
local scene = 100 -- ID dieser Szene
local motion = 81 -- ID des Bewegungssensors
local switch1 = 44 -- ID des Relay Switches
local light = 83 -- ID des Lichtsensors
-- Lösche doppelte Szene(n)
if (fibaro:countScenes()>1) then
fibaro:abort(); 
end
-- SCHALTE LICHT EIN & AUS
if (tonumber(fibaro:getValue(motion, "value")) > 0 ) and (tonumber(fibaro:getValue(switch1, "value")) < 1 ) and (tonumber(fibaro:getValue(light, "value")) <= 90 ) then
fibaro:call(switch1, "turnOn");
fibaro:debug("Schalte Licht ein");
end

-- Verzögerung in Sekunden nach der letzten erkannten Bewegung, bevor das Licht ausgeschaltet wird
if (tonumber(fibaro:getValue(switch1, "value"))) > 0 then
local starttimer = 180;
local timer = (starttimer); 
fibaro:debug("Starte Timer");
repeat
fibaro:sleep(1000); 
-- Schalte Licht aus, wenn Schalter manuell betätigt wird und warte 10 Sekunden, um ein 
-- versehentliches (erneutes) Aktivieren der Szene zu verhindern
if (tonumber(fibaro:getValue(switch1, "value"))) < 1 then
timer=1; 
fibaro:call(switch1, "turnOff"); 
fibaro:sleep(10000); 
break 
end
timer=timer-1; 
-- Timer zurücksetzen, wenn neue Bewegung erkannt wird innherhalb der Verzögerungszeit
if (tonumber(fibaro:getValue(motion, "value"))) > 0 then
timer=starttimer; 
-- fibaro:debug("Resete Time, Bewegung erkannt bzw. Motionsensor sendet noch nicht (vgl. Parameter 6)");
end
until (timer<1)
-- Schalte Licht aus, wenn Timer vollständig abgelaufen ist
fibaro:call(switch1, "turnOff");
fibaro:debug("Timer abgelaufen/Schalte Licht aus");
fibaro:killScenes(scene); 
end

Wenn der Bewegungsmelder eine Bewegung erfasst, liefert das Debug Fenster folgende meldung:

[DEBUG] 17:12:36: [1;31m2018-10-03 17:12:36.386422 [ error] API: Not found
[DEBUG] 17:12:36: [1;31m2018-10-03 17:12:36.387841 [ fatal] Unknown exception: /opt/fibaro/scenes/8.lua:17: attempt to compare nil with number

Leider sagt mir das nichts.
Kann mir jemand sagen, wo ich anfangen soll mit Fehlersuche?

Danke

Hi,

In Zeile 17 werden 3 Geräte abgefragt. Vermutlich ist eines davon nicht erreichbar (nil). Die Fehlermeldungen sind seit dem letzten Update leider etwas undeutlich.

Ich kenne das Problem, einfach Script neu starten und es sollte wieder laufen. Und ja es passierte bei mir zum ersten mal auch nach dem Update.
Selbst wenn eines der 2 Geräte sich nicht mehr melden würde, stände in der API der letzte gemeldete “value” drin. Und der wird ja abgefragt.
Im Zweifelsfall in der API nachschauen.

Die Geräte sind erreichbar und reagieren auf Bewegung oder Befehle umgehend. Nur eben nicht in der Szene.
Ein Neustart der Szene oder gar des gesamten Homecenters bringt leider nichts.

Ich verstehe leider nicht, wie und wo man in der API nachschaut. Könnt ihr mir das erklären?

Danke

Dann mach doch einfach mal vor Zeile 17 ein
fibaro:debug(fibaro:getValue(motion, "value"))
Das machst Du mit switch1 und light auch und schaust was rauskommt. Das mit nil ist die Ursache für den Fehler, da die Funktion tonumber nil nicht in eine Zahl wandeln kann.
Oder es ist so wie Jeep sagt und es liegt noch ein ganz anderes Problem vor. Ich meine aber, dass es sich hier nur um sporadische Fehler handelt. Deswegen der Tipp mit dem Neustart der Szene, welchen Du ja schon befolgt hast.

Zum Beispiel:
http://Deine_HC2_IP/api/devices/44
Beim switch wird bei value false oder true stehen. Das bedeutet 0 oder 1.
Ich gehe davon aus Du hast das Update nicht erst heute gemacht. Manchmal hilft die Szene einfach zu in eine Neue leere Szene zu kopieren und zu speichern.

EDIT: Batterie mal für ein ca. 1 min. aus dem Motion Sensor nehmen wäre noch eine Idee.