Licht im Haus ausschalten beim Verlassen

Hi Leute,
Ich habe mir mal kurz und schnell ein Skript angelegt, welches mir beim Verlassen des Hauses alle Lichter und Geräte an diversen Steckdosen ausschaltet.


fibaro:call(355, "turnOff"); -- AR.0 Licht
fibaro:call(305, "turnOff"); -- AR.Stiege
fibaro:call(358, "turnOff"); -- VZ.0
fibaro:call(357, "turnOff"); -- WC.0
fibaro:call(340, "turnOff"); -- Küche Licht
fibaro:call(388, "turnOff"); -- Terasse 
fibaro:call(302, "turnOff"); -- Abstellraum
-- u.s.w

Zusätzlich habe ich in jedem Raum einen Funkschalter, der mir alles ausschaltet AUSSER den Raum in dem ich mich befinde!
Dort habe ich die oben im Beispiel angeführte Liste wieder drinnen, was nicht sehr elegant und auch nicht sehr wartungsfreundlich ist ;-(

Inzwischen sind es schon fast 30 Geräte und daher bin ich auf der Suche nach einer eleganteren Lösung, die vielleicht etwas intelligenter ist als Meine.

Somit bin ich auf der Suche nach einem Skript der mir in einem Array alles ausschaltet was nicht in dem aktuellen Raum ist.
Am liebsten wär mir ein Skript mit mehreren Sprungzielen oder mit Raumabfrage oder was ähnliches.

Vielleicht habt ihr Tipps wie man das eleganter lösen könnte?
Oder Beispiele von euch ?
Freue mich über jede Anregung :wink:

Hi,
Schau mal hier rein:
https://forum.fibaro.com/index.php?/topic/23942-tutorial-using-a-hometable-to-store-device-and-scene-ids/

Viele Grüße Hoggle

Danke @Hoggle für den Tipp!

Ich habs mir durchgelesen, soweit mein englisch reicht :wink:
Hab zwar die Grundidee verstanden, aber umsetzen könnt ich es nicht, dazu fehlt mir noch etwas LUA Erfahrung.
Hast du diese Lösung im Einsatz?

Nein.
Das war mir fürs erste zu komplex…

Und Header müsste man eh anpassen, und ob ich in 6 Mobaten noch die Namenskonvention kenne…

Geht mir genauso :wink:
Wobei die Idee ist genial!

Kann man eigentlich aus einem Skript nur EINE Funktion in einem anderen Skript aufrufen?
Zum Beispiel habe ich EIN Skript für alle Räume

--[[
%% properties
%% events
%% globals
--]]

function Wohnzimmer()
	fibaro:call(47, "turnOff"); -- WZ RGB
	fibaro:call(91, "turnOff"); -- WZ Vitrine
	fibaro:call(145, "turnOff"); -- WZ Decke RE
	fibaro:call(143, "turnOff"); -- WZ Decke LI
	fibaro:call(182, "turnOff"); -- WZ Esstisch
	fibaro:call(254, "turnOff"); -- WZ Pokale
end

function Arbeitszimmer()
fibaro:call(185, "turnOff"); -- AZ.1 Licht
fibaro:call(246, "turnOff"); -- AZ Monitore
end

und rufe von woanders nur die “function Arbeitszimmer” auf !?
Geht das?

Die LUA-Skripte vom HC2 laufen alle in einer Sandbox und können andere Skripte nicht beeinflussen (außer durch den Aufruf bestimmter Funktionen oder durch Änderungen von globalen Variablen)

Gruß

du könntest für jeden Raum eine einzelne Off-Szene stricken und diese jeweils über andere Szenen starten. Sind dann quasi auch ausgelagerte Funktionen. Dann musst du bei neuen Modulen nur eine Szene anpassen, also etwa einfacher zu warten. Aber trotzdem noch recht unübersichtlich.

Viele Grüße
Schnuckman

Danke für eure Tipps!
Habe jetzt mal für jede Ebene des Hauses ein AUS Skript gemacht und schaue wie das in der Praxis taugt.
Danach überlege ich ir einzelne Räume …

Inzwischen habe ich jedem Raum, der mehr als EINE Licht Komponente hat, ein “Raum-AUS-Skript” verpasst.
Ich denke, dass es so am Besten klappt, denn man muss dann nur jeden Raum administrieren und kann die übergeordneten Aufrufe (Ebenen, Haus AUS) statisch belassen.

Und neue Räume gibt es in meinem Haus derzeit keine zu entdecken :wink: