This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

HTTP event from camera
#1
Hi, i connect camera HTTP event to LM and i need to write group adress on the bus if event {alarm} is true.

this is log from LM
* table:
["alarm_2"]
  * bool: true

this is .lp script
<?

require('apps')
vars = getvars()
log(vars)
Reply
#2
Try this:
Code:
<?

require('apps')
vars = getvars()

if vars.alarm_2 then
  grp.write('1/1/1', true)
end
Reply
#3
(06.02.2023, 11:54)admin Wrote: Try this:
Code:
<?

require('apps')
vars = getvars()

if vars.alarm_2 then
  grp.write('1/1/1', true)
end

Thanks, what if alarm_2 wil be false?
Reply
#4
Nothing will happen. It cannot be really false. It can be either nil, true or a string. You can add an else clause to write a different value to the object if needed.
Reply
#5
(06.02.2023, 12:04)admin Wrote: Nothing will happen. It cannot be really false. It can be either nil, true or a string. You can add an else clause to write a different value to the object if needed.

Ok, this is works fine. I want to use scritp with 16 cam, each camera has diferent event name ( alarm_1, alarm_2, alarm_3,.....a, alarm_16) for log from witch is alarm send.
how to change script to works with this changing event name?
Reply
#6
You can do it like this, alarm_1 will write to 1/1/1, alarm_2 to 1/1/2 and so on.
Code:
<?

require('apps')
vars = getvars()

for i = 1, 16 do
  if vars['alarm_' .. i] then
    grp.write('1/1/' .. i, true)
  end
end
But you cannot use else clause here because it will reset all other alarms. Either the alarm variable should have some value (like 1/0) or you should check the IP address of the camera that sent this event.
Reply
#7
(06.02.2023, 12:17)admin Wrote: You can do it like this, alarm_1 will write to 1/1/1, alarm_2 to 1/1/2 and so on.
Code:
<?

require('apps')
vars = getvars()

for i = 1, 16 do
  if vars['alarm_' .. i] then
    grp.write('1/1/' .. i, true)
  end
end
But you cannot use else clause here because it will reset all other alarms. Either the alarm variable should have some value (like 1/0) or you should check the IP address of the camera that sent this event.

ok, i thank for your help, only one adress i need to write, but log each of event, something like this:
Code:
<?
require('apps')
vars = getvars()
for i = 1, 16 do
  if vars['alarm_' .. i] then
    grp.write('33/2/1', true)
  end
end
log(vars)

it looks to work from each cam
Reply


Forum Jump: