Ihr habt eine Szene, um mit dem Ruf "Kinder, Bett gehen!" die Wohnung in gedämpftes, beruhigendes, müde machendes Licht zu tauchen? Ihr habt die Szene, doch die Kinder haben den Lichtschalter, um im Badezimmer die volle, höchst aktivierende Beleuchtung wieder einzuschalten? - Die Großeltern sind zu Besuch, und beim Versuch das Licht auf der Toilette auszuschalten veranstalten sie eine Lightshow mit Kinostimmung, Putzlicht und Partyszene?
Kommt euch bekannt vor? Wir haben die Lösung!
Dieses kleine Skript gibt euch die Macht zurück: Einen Knopf, mit dem ihr die Schalter von Dimmern und Jalousien deaktivieren könnt, kinder- und elternsicher. Es schaltet den "local protection state" ein, welcher bei beim Fibaro Dimmer 2 und Fibaro Roller Shutter eine Bedienung über die lokalen Eingänge, also die Wandschalter, blockiert. So geht's:
Konfiguration des Skripts
Lege im Home Center eine neue Szene an und kopiere den Code für die Szene dort hinein. (Der Code kann am Ende des Artikels heruntergeladen werden.) Den Namen und Raum der Szene kannst du frei vergeben. Er hat keine Auswirkungen. Jetzt musst du im Kopf der Szene die IDs der zu sperrenden Geräte eintragen.
1 2 3 4 5 6 7 8 9 10 11 |
--[[ %% properties %% events %% globals switchProtection --]] local switchList = {<ID Master>, <ID Master>, ...} -- ID master device of dimmers or roller shutters to protect |
Achtung: Anders als sonst verwenden wir diesmal nicht die IDs der Geräte aus der linken Leiste, sondern die IDs der zugehörigen Master-Geräte. Dazu wählst Du (in einem anderen Fenster) in der Geräteübersicht das zu sperrende Gerät aus, und klickst anschließend in der Baumstruktur der Master- und Slave-Geräte das Master-Gerät an. Jetzt siehst du die Master ID des Gerätes, welches du sperren willst. (Siehe Abbildung.)
Diese Master ID der zu sperrenden Geräte trägst Du mit Komma getrennt zwischen den geschwungenen Klammern ein. Vergiss nicht zu speichern, wenn Du fertig bist.
Das Skript wird über eine Variable gesteuert, in welcher der Status "gesperrt" oder "freigegeben" gespeichert wird. Diese Variable müssen wir jetzt anlegen. Gehe dazu im Home Center auf "Panels > Variables Panel" und klicke im unteren Bereich "Predefined variables" (nicht oben bei "Variables") auf "Add". Hier legst du einen neuen Eintrag mit zwei Werten an:
"switchProtection" mit den Werten "protected" und "released"
Du musst den Namen und die Werte genau so schreiben, ohne die Anführungszeichen. Auch hier das Speichern nicht vergessen.
Jetzt kommt der Knopf
Für unseren Knopf legen wir ein neues virtuelles Gerät an: Klicke in der Geräteübersicht "Devices" auf "Add or remove device", ganz so als wolltest du eine neues echtes Gerät verbinden. Hier importiere mit "Import virtual device" die JSON-Datei für das virtuelle Gerät aus dem Download. Diesen findest du am Ende des Artikels. Ordne noch zwei passende Symbole für die Zustände "gesperrt" und "freigegeben" zu, zum Beispiel das Schloss aus den Flat Icons von Andreas Vichr. Speichern und fertig.
Der Knopf des virtuellen Gerätes lässt sich über das Home Center, mit der Fibaro-App und, wenn ihr eine Homebridge habt, auch mit der Apple Home App und Siri bedienen: Ein Kopfdruck und die Schalter sind gesperrt, ein weiterer und sie funktionieren wieder. Auch in Szenen der Apple Home App lassen sich die Schalter des virtuellen Gerätes aufnehmen, so dass mit der Szene "Kinder, Bett gehen" die Schalter automatisch gesperrt werden können.
Über das Setzen der globalen Variable "switchProtection" kannst du die Schaltersperre auch auch in deine eigenen LUA-Szenen aufnehmen. Verwende diese beiden Code-Zeilen zum Sperren und Entsperren:
1 |
fibaro:setGlobal("switchProtection", "protected"); |
1 |
fibaro:setGlobal("switchProtection", "released"); |
Jetzt hast du die Hoheit über das Licht zurück. Möge die Macht mit dir sein.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
--[[ %% properties %% events %% globals switchProtection --]] local switchList = {<ID Master>, <ID Master>, ...} -- ID master device of dimmers or roller shutters to protect --Do not modify code below this line local function postMethod(requestUrl, data, successCallback, errorCallback) local http = net.HTTPClient() http:request(requestUrl, { options = { method = 'POST', headers = {}, data = data, timeout = data.timeout or 5000 }, success = successCallback, error = errorCallback }) end local function fibaroSwitchProtection(id, onOff) -- ID , [protect/release] local url = 'http://127.0.0.1:11111/api/devices/'..id..'/action/setProtection' local data = '{"args": [0,0]}' if onOff == "protected" then -- data = '{ "args": [2,1]}' -- Use this line to protect from switches and scenes data = '{ "args": [2,0]}' -- Use this line to protect from switches only end postMethod(url, data, function(resp) if resp.status < 300 then print('Connection successful, status ' .. resp.status .. ', ' .. data) else print('Connection failed, status ' .. resp.status .. ', ' .. data) end end, function(err) print('error ' .. err) end ) end local switchState = fibaro:getGlobalValue("switchProtection") for i, deviceID in ipairs(switchList) do print(deviceID, fibaro:getType(deviceID), fibaro:getName(deviceID), fibaro:getRoomNameByDeviceID(deviceID), switchState) fibaroSwitchProtection (deviceID, switchState) end |
Das Skript und Virtuelle Gerät kannst du dir hier herunterladen:
[icons icon="icon-folder-open" color="#dd3333" size="18"] Skript + virtuelles Gerät - DOWNLOAD ZIP
In der Zip-Datei befindet sich eine LUA-Datei mit dem oben geposteten Quellcode und eine JSON-Datei mit dem virtuellen Gerät. Dieses Zip muss nur entpackt werden, und der Inhalt kann dann mit einem beliebigen Text-Editor bearbeitet werden. Die JSON-Datei des virtuellen Gerätes wird im Home Center importiert.
Danke, das kann ich gebrauchen.
Auf die Idee, die Geräte darüber zu steuern, bin ich leider noch gar nicht gekommen.
Ich habe auch das Ü60-Problem ;)
ich habe jetzt nur das VD eingebaut ... weil ich auf dem iPhone eine per Home.app "schalbare" variable brauche.
leider bekomme ich das Device nicht angezeigt ... habe Homebridge schon neugestartet aber es wird nicht initialisiert,
also bei den eingebunden Devices gar nicht angezeigt. :(
https://www.siio.de/board/thema/kleine-lua-scripte-teil-16-kinder-und-elternsicherung/
Brauchte die Lösung zwar nicht unbedingt aber was man hat, dass hat man :) War mit der Anleitung leicht zu implementieren.
:-) Danke für das Feedback.
Die Anleitung ist echt gut, vielen Dank. Aber gibt es eine Möglichkeit das ich trotz Sperre die CentralSceneEvents der Schalter empfangen kann?