Nuki - Virtual Device

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)