Mit Motion Sensor das Hue Plugin An oder AUs schalten

Guten Morgen,

ich bin kompletter Lua Anfänger und komme deshalb bei meinem Vorhaben leider nicht weiter.

Mein Ziel ist es, durch einen Motion Sensor der bei uns im Flur hängt, eine Hue Lampe im Bad mit dem Plugin an und aus zu schalten.
In unserer Küche habe ich schon eine Lichtsteuerung auf Bewegung mit einem Motion Sensor und einer Hue Lampe erfolgreich laufen.

Da unser Bad räumlich echt schwierig aufgebaut ist, würde ich gerne eine “simple an / aus” Schaltung haben.
Motion Sensor im Flur erfasst Bewegung, Lampe im Bad geht an und bleibt an, ohne auf Bewegung zu achten.
Komme ich wieder aus dem Bad raus und der Motion Sensor im Flur wird ausgelöst, dann soll das Licht im Bad aus gehen.
Also im Prinzip soll der Motion Sensor wie ein “Lichtschalter” funktionieren.

Mit einem Wallplug und einer Stehlampe habe ich das Ganze mit einem “else” Befehl schon hinbekommen.
Nur die Hue Lampen sollen in der normalen Lichtfassung oben im Bad hängen, also ohne Stehlampe und Wallplug.

Was habe ich bis jetzt versucht:

  • die Hue Lampe mit einem else Befehl zu schalten… da passiert leider überhaupt nichts, kein an, kein aus

  • zwei Szenen und eine Variable erstellt, welche beim auslösen des Motion Sensors die Variable ändert und dadurch eigentlich “angeben soll” ob an oder ausgeschaltet wird… da bei beiden Szenen der Motion Sensor als trigger dient, bekomme ich beim auslösen direkt zu viele Instanzen angezeigt und das Licht geht kurz an und dann wieder aus, da sich die Szenen wohl gegenseitig direkt triggern

Hat jemand eine Idee wie ich das ohne massives programmieren hinbekomme? Mir vielleicht einen Denkanstoß geben?

Vielen Dank im Voraus

Grüße Chris

Hi,

ich habe mir folgendes Script genommen:

--[[
%% properties
386 value
%% events
%% globals
--]]

local sensors = {386}

local delay = 0
local debug = false
local hueID = 415

function actionsMotion()
fibaro:debug('Führe Aktionen bei Bewegungserkennung aus')
 
	fibaro:call(hueID, "changeBrightness", 1)
	fibaro:call(hueID, "changeHue", 8418)
	fibaro:call(hueID, "changeSaturation", 140)
	fibaro:call(hueID, "turnOn")
end

function actionsNoMotion()
 fibaro:debug('Führe Aktionen nach Ende Bewegung aus')
  
  fibaro:call(hueID, "turnOff")

end

local instances = tonumber(fibaro:countScenes());

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

function getLastBreach()
local breach = 0;
for i,n in ipairs(sensors) do
 local nBreach = tonumber(fibaro:getValue(n, "lastBreached"));
 if(nBreach > breach) then
  breach = nBreach;
 end
end
 return breach;
end

function checkMotion()
lastBreached = getLastBreach();
time = os.time();
if (debug) then fibaro:debug("Zuletzt ausgelöst: Vor "..(time-lastBreached).." Sekunden"); end
if (getSensorStatus() == 1) then
 return true;
end

if ((time-lastBreached)>=delay) then
 return false;
end
 return true;
end

local lastBreached = getLastBreach()

if (fibaro:getSourceTriggerType() == 'property' and getSensorStatus() == 1) then
 if (instances > 1) then fibaro:abort(); end
  fibaro:debug('Bewegung im Raum erkannt - Starte Timer')
  actionsMotion()
 while (checkMotion()) do
  fibaro:sleep(5000);
 end
if (debug) then fibaro:debug("Keine Bewegung mehr erkannt."); end
 actionsNoMotion()
end

Das geht sicherlich aber auch kürzer, ich finde bloß gerade die Quelle zu dem Script nicht…

Hi Hoggle,

vielen Dank für das Skript, aber das geht wenn ich es richtig verstehe ja auf "keine Bewegung mehr erkannt (also sicher) dann licht aus).

Ich bräuchte das Ganze einfacher…

Bewegung erkannt -> Licht an
Licht an und Bewegung erkannt -> Licht aus

Der Motion Sensor sitzt im Flur vor der Badezimmertür

Ja, stimmt.
Aber was machst Du, wenn Bewegung erkannt wird und Du im Bad bist und jemand anders geht über den Flur, während Du noch im Bad bist? Dann sitzt Du im Dunkeln.
Kannst Du die Fälle ausschließen?
Warum setzt Du den Bewegungsmelder nicht ins Bad?

Naja hoffe es kommt nicht vor ^^ , versuche den Bewegungsmelder so anzubringen, dass er wirklich nur reagiert wenn man ins Bad geht. Muss ich aber noch genau testen.

Problem ist dass unser Bad sehr schmal und sehr lang ist. Habe da mal etwas getestet und entweder erfasst er nicht den ganzen Raum oder erkennt zu spät dass jemand das Bad betritt. Müsste also einen zweiten dann kaufen damit alles abgedeckt ist.

Okay.
Dann vergiss das Script oben.

Dann sollte genügen:

Wenn MS = ausgelöst DANN
   Wenn Hue = An Dann Hue Aus
   Wenn Hue = Aus Dann Hue An
end

Also prüfst Du erst auf Bewegung und dann stellst Du in Abhängigkeit der Hue das Licht an oder aus.

VG Hoggle

Du meinst jetzt aber nicht Variablen oder?

ms = ausgelöst
 then
 if hue = on then hue off
 if hue = off then hue on
end

So in etwas ? Kann leider erst heute Abend testen.

Muss aber gestehen dass ich gerade am überlegen bin mir einen zweiten Bewegungsmelder zu holen und das ganze vielleicht doch mit Bewegungsprüfung aufzubauen (oben dein Skript).

Keine Variablen
Die paar Zeilen ist kein fertiger Code, das war nur die Grundüberlegung.

Ach so ^^

sieht aber gut aus denke ich. Hatte das aber mal mit dem “else” probiert und da ging gar nichts. Als würde er den Zustand der Hue Lampen nicht abfragen.

Du Zustand der HUE-Lampen kannst du nicht über die Value abfragen, sondern musst die Daten des Plugins nutzen. Wenn du eine LUA-Szene erstellt hast, dann kannst du Links über das Menü alle notwendigen Werte finden.

Gruß

Hi boomx, ok vielen Dank, das erklärt (für mich) einniges vom verständnis her.

Habe mir eben noch einen zweiten Motion Sensor bestellt und werde mit den zwei Motion Sensoren das “kleine fibaro lua scripe teil 5” dann doch versuchen umszusetzen.

Werde aber bis der zweite eintrifft trotzdem versuchen, mein Anliegen hier aus dem Post hinzubekommen, damit ich es verstanden habe und was gelernt habe :slight_smile:
“musst du die Daten des Plugins nutzen” … ist das bei jedem Plugin so oder ganz speziell bei den Hue Leuchten?

Gruß

Das ist bei jedem Plugin so. Sei es netatmo, HUE, Sonos usw.

Bei den HUEs kannst du es über die Brightness machen: 0 = Aus, ansonsten sind die HUEs an. :slight_smile:

Gruß

Stimmt eigentlich. Ok, werde dann mal versuchen eine Szene zu schreiben :slight_smile:

Falls noch Fragen aufkommen, würde ich mich einfach nochmal melden.

Danke Dir

Gruß

Hast du dir mal das VD angesehen?
Die Butzins lassen sich auch über Block ansprechen

https://forum.fibaro.com/index.php?/topic/23519-vd-philips-hue-color-white-ambience-and-white-dimmable-only-v21mv21b/

Hallo Chris,

versuch mal den folgenden Code.

Du musst nur deine IDs anpassen… Einmal im Trigger (Zeile 3) und die locals in Zeile 7 und 8.

--[[
%% properties
XX value
%% globals
--]]

local motion = XX;
local hue = YY;

local HUElight = tonumber(fibaro:getValue(hue, "ui.onOff.value"))

  
if tonumber(fibaro:getValue(motion, "value")) > 0 then

  	if (HUElight ~= 0) then 
    	fibaro:call(hue, "turnOff"); 
    	fibaro:debug("Beleuchtung aus");
 	else 
    	fibaro:call(hue, "turnOn"); 
    	fibaro:debug("Beleuchtung an");
	end

end

Grüße

Guten Morgen,

vielen Dank nevv, werde das Skript mal heute Abend testen und Rückmeldung geben :slight_smile:

Auch dir Danke Hoggel, habe mir das VD mal gespeichert. Werde es aber nicht direkt verwenden, wären dann auf einmal zu viele Baustellen auf einmal für mich als Anfänger.

Gruße

Danke nevv…

Eine ui.OnOff.value gibt es ja auch. Hatte ich nicht mehr auf dem Schirm.

Gruß

boomx, dir nochmal Danke für gestern den Tipp, dass bei einer Lua Szene die Befehle angezeigt werden können rechts in der Zeile. Das ist sehr interessant und bietet super Möglichkeiten :slight_smile:

nevv: gerade dein Skript getestet! Läuft 1A. Vielen vielen Dank :slight_smile:

Einzige was ich noch versucht habe, ist eine zweite Lampe in dem Skript anzugeben bei “local”. Wollte aber irgendwie nicht klappen.
Habe die Szene einfach kopiert und dort dann die zweite Lampe eingetragen.