Logic Machine Forum
Read fire panel sensors current state - Printable Version

+- Logic Machine Forum (https://forum.logicmachine.net)
+-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1)
+--- Forum: Scripting (https://forum.logicmachine.net/forumdisplay.php?fid=8)
+--- Thread: Read fire panel sensors current state (/showthread.php?tid=4526)



Read fire panel sensors current state - Chmo - 23.01.2023

Hi. I have a fire panel and want to read the state of each sensor by RS232. I´m new at LUA but made some things like this:

-- Include library before calling serial functions
if not port then
require('serial')
-- Setting port parameters and open serial port
port = serial.open('/dev/RS232', {
baudrate = 19200,
databits = 8,
stopbits = 1,
parity = 'none',
duplex = 'full'
})
-- Flushes any read/unsent bytes
port:flush()

-- Read data from serial port
if port:read() == 'Powr___1'
-- Send alert when condition matched
then alert('Projector is ON')
end

-- Closing serial port
port:close()
end

¿How do I enter this contact ID event for reading the current state of the sensor in LUA command. Attached is the contact ID events codes.

-- Read data from serial port
port:read() == 'Powr___1' 
end

¿Is there a "Hello world" command to see if the communication is established between LM and Fire panel?


Thanks for your help


RE: Read fire panel sensors current state - admin - 24.01.2023

Do you have documentation for the serial protocol?


RE: Read fire panel sensors current state - Chmo - 24.01.2023

(24.01.2023, 07:12)admin Wrote: Do you have documentation for the serial protocol?

Just this.


RE: Read fire panel sensors current state - admin - 25.01.2023

Try running this script and see if you get anything in the Logs tab. Check that the panel is configured to send events to RS232.
Code:
if not port then
  port = require('serial').open('/dev/RS232', {
    baudrate = 19200,
  })

  buf = {}

  function logbuf()
    local txt = table.concat(buf)
    log(txt)
    buf = {}
  end
end

char, err = port:read(1, 1)
if char then
  if char == '\r' or char == '\n' then
    if #buf > 0 then
      logbuf()
    end
  else
    buf[ #buf + 1 ] = char

    if #buf == 100 then
      logbuf()
    end
  end
end