Hier ist mal wieder ein kleiner Artikel zu der beliebten Reihe "Kleine LUA Scripte". Diesmal zeigen wir euch, wie Ihr in einer Szene die Parameter von Modulen verändern könnt.
Ganz neu ist das Thema ja nicht. Wir hatten euch (hier) in einem älteren Beitrag mal ein Virtuelles Device vorgestellt, mit welchem Ihr die Farbe des Fibaro Wallplugs ändern könnt. Im nächsten Step gehen wir allerdings ein Schritt weiter und ändern die Parameter von Modulen in einer Szene. So könnt Ihr zum Beispiel den Alarmsound eurer Sirene kurz vor dem Einschalten verändern. Die notwendigen Angaben zu den Parametern findet Ihr in den entsprechenden Anleitungen der Geräte.
Das LUA Skript
Kommen wir nun zu dem kleinen Skript. Dies könnt Ihr hier heraus kopieren und in eine neue Szene auf dem Fibaro HomeCenter 2 einfügen.
--[[ %% properties %% globals --]] local ID = 137 local parameter = 37 local size = 2 local value = 771 function changeParameter(deviceid,set_parameter,set_size,set_value) local http = net.HTTPClient() http:request("http://127.0.0.1:11111/api/devices/"..deviceid, { options = { method = 'PUT', headers = {}, data = '{"properties":{"parameters":[{"id":'..set_parameter..',"size":'..set_size..',"value":'..set_value..'}}]}', timeout = 10000 }, success = function(response) local result = response.data; if response.status == 200 or response.status == 201 then fibaro:debug('Status: ' ..response.status.. ' - Parameter geändert') else fibaro:debug('Error: ' ..response.status.. ' - Zugriff verweigert') end end, error = function(err) fibaro:debug('[ERROR] ' .. err) end }) end changeParameter(ID,parameter,size,value)
Im ersten Step könnt Ihr nun die lokalen Variablen ID, parameter, size und value anpassen. Die Angaben sind zwingend erforderlich und müssen gesetzt werden. Diese bedeuten folgendes:
local ID = 137 -- ID des Moduls, bei dem der Parameter geändert werden soll local parameter = 37 -- Parameter, welcher geändet werden soll local size = 2 -- Größe des Parameter local value = 771 -- Inhalt, welcher beim Parameter gesetzt werden soll
Das waren auch schon alle benötigten Informationen und nach einem manuellen ausführen der Szene, wird der Parameter 37 von dem Modul mit der ID 137 auf den Wert 771 mit der Größe 2 gesetzt. Sollten die Werte nicht zu 100% stimmen, dann werdet Ihr oben in dem Debugfeld des HC2 eine Fehlermeldung erhalten, dass der Wert in der Form bei dem Modul nicht existent ist. In so einem Fall müssen die Werte erneut überprüft werden.
[alert variation="alert-info" dismiss="dismiss"]INFO: Es können natürlich auch die Parameter von batteriebetriebenen Modulen geändert werden. Diese werden aber erst bei der nächsten WakeUp-Time des Moduls übertragen. Bei strombetriebenen Modulen, sowie bei Modulen, welche FLIRS unterstützen, werden die Parameter sofort übertragen.[/alert]
Nutzung der Funktion in einer Szene
Wie Ihr sicherlich bereits erkannt habt, wird die oben gepostete Szene nur beim manuellen Ausführen aktiv. Dies ist ja nicht wirklich Sinn und Zweck des Ganzen. Wir geben euch aber mit dieser Szene eine function() (Zeile 6 - 32) mit, welche Ihr einfach in eine beliebige Szene kopieren könnt und dort dann diese Funktion einfach über den Aufruf
changeParameter(ID,parameter,size,value)
aufrufen könnt. Die notwendigen Angaben, welche Werte wo und wie gesetzt werden, findet Ihr wie oben beschrieben am Beginn der Szene. Eine andere Alternative wäre natürlich die erstelle Szene von einer anderen Szene aus zu starten. Dies könnt Ihr mit dem Befehl
fibaro:startScene(sceneID)
durchführen.
Und nun wünschen wir euch viel Spass mit dem kleinen Skript. Über Kommentare würden wir uns sehr freuen.