(30.09.2024, 07:43)admin Wrote: What exactly do you want to control via API?
Thanks for the feedback.
I want to have it detect me and send information via the API to trigger contexts that are specific to me. Or send a welcome home notification to the ceiling speaker.
Run this script as resident. Change host variable to your camera IP and auth variable to access credentials in username:password format. Make sure that Basic auth mode (not digest) is set on your camera. Then post what you get in LM Logs when running this script.
Code:
local json = require('json')
local socket = require('socket')
local mime = require('mime')
local host = '192.168.1.1'
local auth = 'user:password'
local sock = socket.tcp()
sock:settimeout(15)
local res, err = sock:connect(host, 80)
if not res then
sock:close()
log('connect failed', err)
os.sleep(5)
return
end
local function parse(resp)
resp = json.pdecode(resp)
log(resp)
end
init()
local pat, len = nil, nil
while true do
res, err = sock:receive(pat)
log('rx', pat, res, err)
if err then
sock:close()
log('receive error', err)
break
end
if type(pat) == 'number' then
pcall(parse, res)
pat, len = nil, nil
elseif #res == 0 then
pat = len
elseif not len then
len = res:match('Content%-Length: (%d+)')
len = tonumber(len)
end
end
(02.10.2024, 11:52)admin Wrote: Run this script as resident. Change host variable to your camera IP and auth variable to access credentials in username:password format. Make sure that Basic auth mode (not digest) is set on your camera. Then post what you get in LM Logs when running this script.
Code:
local json = require('json')
local socket = require('socket')
local mime = require('mime')
local host = '192.168.1.1'
local auth = 'user:password'
local sock = socket.tcp()
sock:settimeout(15)
local res, err = sock:connect(host, 80)
if not res then
sock:close()
log('connect failed', err)
os.sleep(5)
return
end
local function parse(resp)
resp = json.pdecode(resp)
log(resp)
end
init()
local pat, len = nil, nil
while true do
res, err = sock:receive(pat)
log('rx', pat, res, err)
if err then
sock:close()
log('receive error', err)
break
end
if type(pat) == 'number' then
pcall(parse, res)
pat, len = nil, nil
elseif #res == 0 then
pat = len
elseif not len then
len = res:match('Content%-Length: (%d+)')
len = tonumber(len)
end
end
Thanks for the reply.
I am sending the log again as attached file.
Please help me.
(07.10.2024, 06:33)admin Wrote: You need to trigger a face detection event and check if it's logged. You can disable the log call on line 40 to filter out debug info:
Code:
-- log('rx', pat, res, err)
I send the information back, admin please check it for me
I see LM has connected and recognized
Please give me the command to control
Thank you very much
(10.10.2024, 13:04)admin Wrote: Replace parse function in the script with the following code. The script will send ON to 1/1/1 each time the camera detects you.
Code:
local function parse(resp)
resp = json.pdecode(resp)
if resp.type == 'person' then
if resp.name == 'luan thanh' then
gpr.write('1/1/1', true)
end
end
end
I checked, tested everything works perfectly.
Thank you very much