Fehler 2.Sensor in einer Scene.

Hallo, kann mal bitte jemand über die Scene schauen, ich finde den Fehler nicht.http://pastebin.com/kfDTutrC
Das Licht geht an und aus, das funktioniert also soweit, was nicht geht sind die Trigger 383,274,277 es ist egal was die machen das Licht geht immer an. Ich denke ich habe einen Fehler in der Formatierung von den Aufrufen von "and,or,then " usw.
Was ich raus gefunden habe bis jetzt ist , das es anscheinend am 2. Motionsensor liegt ,wenn ich diesen lösche funktioniert alles wie es soll.

Ich habe mir jetzt mal die Scribte http://www.siio.de/lichtschatten/fibaro-szene-licht-solange-bewegung/ und http://www.siio.de/connected-home/kleine-lua-scripte-teil-5-bewegung-im-raum-erkennen/ angesehen wenn ich das richtig verstehe kann ich es nur über eine Funktion lösen. Damit komme ich aber nicht klar wie das genau funktioniert.

Hi,

die Szene http://www.siio.de/connected-home/kleine-lua-scripte-teil-5-bewegung-im-raum-erkennen/ macht doch genau das was du möchtest. Warum nimmst du die nicht einfach? Dort kannst du eine beliebige Anzahl von MS hinzufügen.

Gruß

Hi,
In Deinem Script sind in der Tat viele ands drin.
Entweder du versuchst das mit Klammern in den Griff zu bekommen oder nimmst gleich das Script von boomx.

Viele Grüße Hoggle

Guten morgen,
Das Script habe ich mir angesehen, und würde auch das verwenden nur weiß ich nicht wo ich dort die weiteren Bedingungen von mir noch einbauen soll. Wie luxwerte abfrage oder ob andere Lampen noch an sind.

Bei if then Anweisungen da steige ich ja noch durch, aber Funktionen. Kann das einer erklären was da genau passiert? Der letzten Teil zb. Was bedeutet das genau also was wird gefragt.
Wie sieht eine einfache Funktion aus wo ich zb mehrere Sensoren zusammen packen kann.

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

Hi,

an dem Skript musst du gar nichts ändern. Es gibt dort 2 Funktionen, welche nach Bewegungserkennung und nach keiner Bewegung mehr ausgeführt werden. Dort kannst du dann deine Abfragen durchführen. Würde dann ungefähr so aussehen:

function actionsMotion()
 fibaro:debug('Führe Aktionen bei Bewegungserkennung aus')
 if (fibaro:getGlobal('TimeOfDay') == 'Day' or fibaro:getGlobal('TimeOfDay') == 'Evening') then
    fibaro:debug('Licht kann eingeschaltet werden.')
 	fibaro:call(86, "turnOn")
 else
    fibaro:debug('Es ist Nacht. Schalte das Licht nicht ein.')
 end
end

Gruß

Danke für die Hilfe, es funktioniert jetzt alles.
@Daniel kannst du Funktionen genauer erklären wie das zusammenhängt? Was macht was da genau?

Meinst du Funktionen im Allgemeinen? Oder die spezielle oben?

Gruß

Beides am besten :slight_smile: ich finde es ja super mit den ganzen Anleitung und Scripten hier aber nur Copy und paste ist auch nicht auf dauer das beste.

Mit Funktionen kannst du zum Beispiel mehrmals benötigte Codezeilen sparen. Zum Beispiel:

function debug(string)
   fibaro:debug(string)
 end

debug('Dies ist eine Funktion')

Funktionen müssen immer vor dem Aufruf in einer Szene deklariert werden. Weitere Beispiele findest du unter: http://lua.lickert.net/function/

Die oben gepostete Funktion fragt in einer for-Schleife das Array der SensorenIDs ab und sobald ein MS value > 0 (also ausgelöst) hat, gibt diese Funktion den Wert 1 zurück. Damit kann dann im weiteren Code mit gearbeitet werden.

Gruß