M1 APPLICATION NOTE Access Control Interface to Ness IP Access Control Systems (i.e. Edge, V2000 and V1000 Controllers) The M1 can interface with the Ness IP Access Control Series of controllers (Edge, V2000 and V1000) via the LAN. This interfacing can perform a variety of commands such as Arming / Disarming the M1, activating M1 outputs, activating M1 tasks, lighting control through to making the M1 speak if required. This application note will look at a commonly asked feature of being able to Arm and Disarm the M1 when access is granted as a specific proximity reader that is connected to the Ness IP Series Access controllers. The activation of the event to Arm the M1 can be performed by a lot of different methods; however for this application we will use Tasks to trigger events. In this application we will Arm the area after 2 card presentations are made at the reader. (this can be adjusted in the following rules to 3, 4, 5 etc) and disarm on the first card presentation. Arming an M1 Area. As we are using Access Granted to Arm and Disarm the area from the same reader, the first rule will turn an unused output for one second so as to prevent the M1 disarming immediately a card is presentation after Arming. THEN TURN I/F Pulse (Out 64) ON FOR 1 SECS- The next rule will turn an unused output on for the period of time that he user has to present the card a second time. WHENEVER TURN I/F Pulse (Out 64) TURNS OFF THEN TURN 2 Card Time (Out 63) ON FOR 5 SECS- The next rule will add a value to a counter so it can count how many times the card has been presented within the above time. (Note the first card presentation above (that will trigger the Task) does not add one to the counter, subsequent presentations will) AND 2 Card Time (Out 63) STATE IS ON THEN ADD 1 to Area 1 Count (Counter 1) You need to reset the counter at the end of the card presentation time to maintain the card is presented within the time otherwise the system will arm on every few reads. WHENEVER 2 Card Time (Out 63) STATE IS TURNED OFF THEN SET Area 1 Count (counter 1) TO 0
The next rule sets up how many times the card needs to be presented within the set time in rule one and when it is reached to Arm the panel. Disarming an M1 Area. WHENEVER Area 1 Count (Counter 1) CHANGES TO 1 THEN ARM AREA(S) 1 TO AWAY IMMEDIATELY The next rule will disarm an area when the card is presented. AND 2 Card Time (Out 63) STATE IS OFF AND Main Office (Area 1) AMR STATE = ARMED THEN DISARM AREA(S) 1 IMMEDIATELY Sending trigger event from IP Access Control System. Within the Ness IP Access Control Systems is trigger and Macro s that can send ASCII messages to the M1 when any event within the Access control system occurs. ( Access Granted, Door open too long, Door forced open etc.) The ASCII messages sent to the M1 can control the M1 to do anything from Arming / Disarming, trigger tasks, activate outputs, turn lights on, through to commanding the M1 to activate its dialer and send an alarm event through to the control room. In our example we are going to send an event from the IP Access control system to activate the Arm / Disarm Task we had set up in the above M1 rules. To set the Triggers and Macro s in the Ness IP Series controllers either the IS2000 Security Management System Software can set them or they can be done using the IS100 onboard Web application software that comes with the controllers. In our example we will use the IS2000. In triggers and Macro s in the right hand Column under Trigger Commands, select Card Use / Access Granted then the door you wish to use for Arm / Disarm. If you wish, you can create additional Trigger commands for additional doors if the user will be entering and leaving from different doors. Then in the left hand column under Macro Reference commands, select TCP( HOST, PORT, MESSAGE ) and then click on Build Rules This will then build a rule and place it in the window at the bottom of the screen, as per the following.
TCP("HOST","PORT","MESSAGE") = ([interfaceid=0][reader=0](e(2,20))) You need to replace the "HOST","PORT","MESSAGE" with the IP Address, Port No. of the M1 you wish the message to be transmitted to and include the ASCII message you wish to send. The easiest way to complete this is to use Ness Advanced M1 SDK which can be downloaded as no cost from http://www.ness.com.au/software/advance_m1_sdk_full_install.exe From within the Ness Advanced M1 SDK select the M1 IP Address and Port No you wish to connect to. Then select the command you wish to send off. (In our example Task 01) and then click on Generate Code. The SDK will then generate the full IP Access Command that you require. Click on copy. You can now modify the TCP command by pasting (using Ctrl V) the command generated into the command line. TCP("192.168.0.251","2101","09tn00100C4^") = ([interfaceid=0][reader=0](e(2,20)))
Once this is saved and stored in the IP Series controller, when a card is granted access at the selected reader it will then send the Activate Task 01 command which will trigger the M1 rules as set above. 2 card presentations within a 5 second period will arm the area and 1 card present will disarm. Selecting specific card holders who can Arm and Disarm. The problem with the above is all card holders who has access to the door as specific times will also be able to Arm and Disarm the Security system, which is not always desirable. By adding an additional command to the TCP command you can restrict what cards will trigger the command. By adding [accessgroup=x] (x being the Access Level) the TCP command will only be sent when a card of the right access level is used. TCP("192.168.0.251","2101","09tn00100C4^") = ([interfaceid=0][reader=0][accessgroup=1](e(2,20))) By using this additional level you can also build TCP commands so different groups of card holders can Arm / Disarm different Areas. Other Access Control custom Macro Event triggers codes The following provides some examples of events that will trigger Macro's to send TCP events from the Ness IP Series Access Controllers ( V1000, V2000, Edge Controllers) for the Advanced Triggers and Macro programming of the IS100. TCP("HOST","PORT","MESSAGE") = ([interfaceid=0][reader=0](e(2,20))) NOTE : Reader 1 = 0, Reader 2 = 1 By adding [accessgroup=x] (x being the Access Level) the TCP command will only be sent when a card of the right access level is used. TCP("192.168.0.251","2101","09tn00100C4^") = ([interfaceid=0][reader=0][accessgroup=1](e(2,20))) This example = Access Granted at reader 1 (0), by any card from Access Level 1, then send the ASCII message 09tn00100C4^ to IP Address 192.168.0.251 on Port 2101. The following is a list of Trigger Codes to send TCP IP Messages CARD USE TCP("HOST","PORT","MESSAGE") = ([interfaceid=0][reader=0](e(2,xx))) XX = 20 Access Granted ( TCP("HOST","PORT","MESSAGE") = ([interfaceid=0][reader=0](e(2,20))) 20 = Access Granted 21 = Access Granted, by a card with Extended access 23 = Access Denied: No Reader/Time Access 24 = Access Denied: Time Schedule 25 = Access Denied: Reader Unknown
26 = Access Denied: Reader Unknown 27 = Access Denied: Card Inactive 29= Access Denied: Wrong PIN 30 = Timed Anti-Passback Violation 31 = Hard Anti-Passback Violation 32 = Area Violation 33 = Hard Anti-Passback Violation Exit 34 = Area Violation Exit 35 = Access Denied: Access Level Door Held Open Alarm Reader 1 = TCP("HOST","PORT","MESSAGE") = I(0,24) Reader 2 = TCP("HOST","PORT","MESSAGE") = I(0,26) Door Forced Open Alarm Reader 1 = TCP("HOST","PORT","MESSAGE") = I(0,25) Reader 2 = TCP("HOST","PORT","MESSAGE") = I(0,27) Input Change Input 1 Door Contact = TCP("HOST","PORT","MESSAGE") = I(0,12) Input 2 Door Contact = TCP("HOST","PORT","MESSAGE") = I(0,8) Input 3 Door Contact = TCP("HOST","PORT","MESSAGE") = I(0,14) Input 4 Door Contact = TCP("HOST","PORT","MESSAGE") = I(0,10) Advance Input Change. Sometime you may want to send a message for when the Input is Closed as well as open. Introducing a [/] in front of the input number will trigger when the input opens ( Door Opens) ~[\] before the input number will trigger when the input / condition closes / restores Input 1 Door Contact Open= TCP("HOST","PORT","MESSAGE") = [/]I(0,12) Input 1 Door Contact Closes = TCP("HOST","PORT","MESSAGE") = ~[\]I(0,12) Input 2 Door Contact Opens = TCP("HOST","PORT","MESSAGE") = [/]I(0,8) Input 2 Door Contact Closes = TCP("HOST","PORT","MESSAGE") = ~[\]I(0,8) This also includes an event such as Door Open Too Long, or Door Forced open Door 1 Door Open Too Long TCP("HOST","PORT","MESSAGE") = [/]I(0,24) Door 1 Door Open Too Long now closed TCP("HOST","PORT","MESSAGE") = ~[\]I(0,24) Or Door 1 Forced Open TCP("HOST","PORT","MESSAGE") = [/]I(0,25) Door 1 Forced Open now closed TCP("HOST","PORT","MESSAGE") = ~[\]I(0,25) Time Schedule Changed Time Schedule 1 = TCP("HOST","PORT","MESSAGE") = S(1) Time Schedule 2 = TCP("HOST","PORT","MESSAGE") = S(2).. to Time Schedule 100 = TCP("HOST","PORT","MESSAGE") = S(100) Got Questions or Ideas? We welcome your feedback and any application notes / Ideas you have. Please Email me at m1support@ness.com.au