Website-Icon Dein Smart Home Blog

Kleine LUA Scripte Teil 8: Parameter von Modulen per Szene ändern

lua change parameter

lua change parameter

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.

Die mobile Version verlassen