Um den Status der globalen Variable schneller zu setzen, kann man das Abfrageintervall verkürzen. Dann kann es allerdings passieren, dass die Abfrage nicht erfolgreich ist. In dieser Version ist das Intervall auf 3 Sekunden gesetzt und ein möglicherweise zurückgebener Fehler wird abgefangen:
nukiIP = '1.1.1.1'
local nukiport = 8080
http = Net.FHttp(nukiIP, nukiport);
response = http:GET("/lockstate?nukiId=123456789&token=aBcDef")
fibaro:debug(response)
result = json.decode(response);
if (result.success == true) then -- nur bei erfolgreichem GET ausführen
fibaro:debug("name: "..result.state)
function getIconAlarm(LockState)
if(LockState == 0) then return 1010, "unlocked" -- uncalibrated
elseif(LockState == 1) then return 1009,"locked" -- locked
elseif(LockState == 2) then return 1008,"unlocked" -- unlocking
elseif(LockState == 3) then return 1007,"unlocked" -- unlocked
elseif(LockState == 4) then return 1006,"locked" -- locking
elseif(LockState == 5) then return 1005,"unlocked" -- unlatched
elseif(LockState == 6) then return 1004,"unlocked" -- unlocked (lock 'n' go)
elseif(LockState == 7) then return 1003,"unlocked" -- unlatching
elseif(LockState == 254) then return 1002,"unlocked" -- motor blocked
elseif(LockState == 255) then return 1001,"unlocked" -- undefined
else return 1001,"unlocked" end -- error
end
local Icon, NukiState = getIconAlarm(result.state)
fibaro:call(999, "setProperty", "currentIcon", Icon) -- Setze Icon
fibaro:setGlobal("nukiState", NukiState) -- Setze Nuki Status
end
fibaro:sleep(3000)