hue lua app

Signed-off-by: Michael <michael.lindman@gmail.com>
This commit is contained in:
Michael 2020-10-25 04:04:05 +00:00
parent 4ea3244e48
commit 22d331e644

59
hue.lua Executable file
View File

@ -0,0 +1,59 @@
#!/usr/bin/env lua
local http = require("socket.http")
local ltn12 = require"ltn12"
local lunajson = require 'lunajson'
local addr = "http://10.0.30.24/api/"
local apikey = ""
function Request(path, req)
local resp = {}
local body, statusCode, respheaders, statusText = http.request {
method = "PUT",
url = path,
source = ltn12.source.string(req),
headers = {
["content-type"] = "application/json",
["content-length"] = tostring(#req)
},
sink = ltn12.sink.table(resp)
}
resp = table.concat(resp)
print(resp)
end
function Get(path)
local resp = {}
local body, statusCode, respheaders, statusText = http.request {
method = "GET",
url = path,
headers = {
["content-type"] = "application/json",
},
sink = ltn12.sink.table(resp)
}
resp = table.concat(resp)
return lunajson.decode(resp)
end
local js = Get(addr..apikey.."/lights/4/")
print(js["state"])
function LightsOn(on)
Request(addr..apikey.."/lights/4/state", "{\"on\":"..on.."}")
end
function LightsBri(bri)
Request(addr..apikey.."/lights/4/state", "{\"on\": true, \"bri\":"..bri.."}")
end
function Round(x)
return x>=0 and math.floor(x+0.5) or math.ceil(x-0.5)
end
if arg[1] == "on" then
LightsOn(arg[2])
elseif arg[1] == "bri" then
LightsBri(Round(arg[2]/100*255))
end