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.

Paradox EVO192 integration
#1
The following scripts integrate Paradox EVO192 security panel. Paradox PRT3 printer module is used to connect the security panel to LM5 through RS232 serial port.
Thanks our forum member rebooter for contribution! Wink

guardZoneStatus library:


Code:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
function guardzonefunction(zonenumber, zonestatus)   guardZones = {   [255255] = 'An empty zone has arrived',   [01] = 'The main entrance. Motion Sensor.',    [02] = 'The cabinet. Motion Sensor.',   [03] = 'The garage. Motion Sensor.',   [04] = 'The stairs. Motion Sensor.',   [05] = 'The living room. Motion Sensor.',   [06] = 'The dining room. Motion Sensor.',   [07] = 'The kitchen. Motion Sensor.',   [08] = 'Garage entrance. Motion Sensor.',   [09] = 'The main entrance. Window Break Sensor ',   [10] = 'The cabinet. Window Break Sensor ',   [11] = 'The garage. Window Break Sensor ',   [13] = 'Living room. Window Break Sensor ',   [14] = 'Dining room. Window Break Sensor ',   [15] = 'The kitchen. Window Break Sensor ',   [16] = 'The garage door. Reed switch ',   [17] = 'The main entrance. Reed switch ',   [18] = 'Dining room. Curtain',   [19] = 'Boiler room. Motion Sensor.',   [20] = 'The boiler room. Window jammer   [21] = 'Cinema hall. Motion Sensor',   [22] = 'Pantry. Motion Sensor',   [24] = 'SPA room. Motion Sensor',   [25] = 'Children's 1. Motion sensor',   [26] = 'Hall 2 floor. Motion Sensor.',   [27] = 'Children's 2. Motion sensor',   [28] = 'Master bedroom. Motion Sensor',   [30] = 'Pajar basement',   [31] = 'Fire 1st floor',   [32] = 'Fire 2nd floor',   [33] = 'Fire Sauna',   [34] = 'Fire attic',   [35] = 'Server fire',   [36] = 'Under the stairs',   [50] = 'House is armed',   [51] = 'House is disarmed', } -- Arming with mast   zonename = guardZones[zonenumber] -- log ("Zone Nr triggered: "..zonenumber.." status: "..zonestatus.." "..zonename) -- log(zonename) -- log(zonestatus) -- log(guardZones[zonenumber])   if zonestatus == 'closed' then     status = 1   elseif zonestatus == 'opened' then     status = 0   end       if zonenumber == 1 then             grp.update('8/0/1', status)     elseif zonenumber == 2 then --   zonename = guardZones[zonenumber]           grp.update('8/0/2', status)     elseif zonenumber == 3 then           grp.update('8/0/3', status)     elseif zonenumber == 4 then           grp.update('8/0/4', status)     elseif zonenumber == 5 then           grp.update('8/0/5', status)     elseif zonenumber == 6 then           grp.update('8/0/6', status)     elseif zonenumber == 7 then           grp.update('8/0/7', status)     elseif zonenumber == 8 then           grp.update('8/0/8', status)     elseif zonenumber == 9 then           grp.update('8/0/9', status)     elseif zonenumber == 10 then           grp.update('8/0/10', status)     elseif zonenumber == 11 then           grp.update('8/0/11', status)     elseif zonenumber == 13 then           grp.update('8/0/13', status)     elseif zonenumber == 14 then           grp.update('8/0/14', status)     elseif zonenumber == 15 then           grp.update('8/0/15', status)     elseif zonenumber == 16 then           grp.update('8/0/16', status)     elseif zonenumber == 17 then           grp.update('8/0/17', status)     elseif zonenumber == 18 then           grp.update('8/0/18', status)     elseif zonenumber == 19 then           grp.update('8/0/19', status)     elseif zonenumber == 20 then           grp.update('8/0/20', status)     elseif zonenumber == 21 then           grp.update('8/0/21', status)     elseif zonenumber == 22 then           grp.update('8/0/22', status)     elseif zonenumber == 24 then           grp.update('8/0/24', status)     elseif zonenumber == 25 then           grp.update('8/0/25', status)     elseif zonenumber == 26 then           grp.update('8/0/26', status)     elseif zonenumber == 27 then           grp.update('8/0/27', status)     elseif zonenumber == 28 then           grp.update('8/0/28', status)     elseif zonenumber == 30 then           grp.update('8/0/30', status)     elseif zonenumber == 31 then           grp.update('8/0/31', status)     elseif zonenumber == 32 then           grp.update('8/0/32', status)     elseif zonenumber == 33 then           grp.update('8/0/33', status)     elseif zonenumber == 34 then           grp.update('8/0/34', status)     elseif zonenumber == 35 then           grp.update('8/0/35', status)     elseif zonenumber == 36 then           grp.update('8/0/36', status)     -- process the status of security panel     -- if armed then switch off lights in whole house     elseif zonenumber == 50 then     if grp.getvalue('0/5/8') == false then       --    grp.update('0/5/5', status) --lights off       grp.update('0/5/8', status) --security panel status     end    elseif zonenumber == 51 then      if grp.getvalue('0/5/8') then           grp.update('0/5/8', status) --security panel status     end     elseif zonenumber == 255255 then     log("An empty zone has arrived")     end --if zonenumber end



RS232 communication script:

Code:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
require('user.guardZoneStatus') if not port then   require('serial')   port = serial.open('/dev/RS232', { baudrate = 9600, parity = 'none', databits = '8', stopbits = '1'})   port:flush()   line = '' end char = port:read(1, 1) if char then   if char == '\r' then     line = line:trim()     --log(line)    -- mail('info@something.com', 'Installation X', line)   --  loghex(line)     zone = tonumber(string.sub(line,-2))     if zone == nil  then       zone = 255255      -- log("An empty zone has arrived")         end --   if (zone > 1) or (zone <37 ) then     if (string.match(line,'opened')) == ('opened') then       zoneStatus = 'opened'       armstatus = grp.getvalue('0/5/8') --reading current status of security system -- log(armstatus)     if armstatus == true then     grp.update('0/5/8', false) -- write those which are not armed     end     else       zoneStatus = 'closed'     end -- string.match       -- parsing logs for setting to alarm       if (string.match(line,'Arming')) == ('Arming') then         zoneStatus = 'closed'         zone = 50     --  elseif (string.match(line,'  in')) == ('  in') then     --    zoneStatus = 'closed'     --    zone = 50     elseif (string.match(line,'ode entere')) == ('ode entere') then         zoneStatus = 'opened'           zone = 51     end -- string.match       guardzonefunction(zone,zoneStatus)   --  end -- test for zone nember 1 - 36     line = ''   else     line = line .. char   end  -- if char '\r' end
Reply


Messages In This Thread
Paradox EVO192 integration - by edgars - 13.11.2019, 09:00
RE: Paradox EVO192 integration - by gtsamis - 25.03.2022, 02:02
RE: Paradox EVO192 integration - by mishoboss - 01.12.2020, 21:05
RE: Paradox EVO192 integration - by mishoboss - 26.06.2021, 05:27
RE: Paradox EVO192 integration - by Angeles - 27.10.2021, 11:41
RE: Paradox EVO192 integration - by admin - 22.02.2022, 12:09
RE: Paradox EVO192 integration - by admin - 22.02.2022, 15:16
RE: Paradox EVO192 integration - by JMemphix - 10.10.2022, 00:10
RE: Paradox EVO192 integration - by mishoboss - 22.04.2024, 08:47
RE: Paradox EVO192 integration - by Daniel - 22.04.2024, 08:54

Forum Jump: