Actions

Difference between revisions of "AEOS (Nedap) - ICX-AlphaCom integration"

From Zenitel Wiki

Line 10: Line 10:
 
# Opening doors in AEOS environment during an intercom conversation (ICX-AlphaCom to AEOS) after providing the “open door” command in ICX-AlphaCom and playing a prerecorded audio message on the intercom when the door is opened by AEOS. By default, this involves pressing the “6” key during an intercom conversation.
 
# Opening doors in AEOS environment during an intercom conversation (ICX-AlphaCom to AEOS) after providing the “open door” command in ICX-AlphaCom and playing a prerecorded audio message on the intercom when the door is opened by AEOS. By default, this involves pressing the “6” key during an intercom conversation.
 
# Play a prerecorded audio message in an intercom station or make a call when an access key or badge is authorized or denied (AEOS to ICX-AlphaCom).
 
# Play a prerecorded audio message in an intercom station or make a call when an access key or badge is authorized or denied (AEOS to ICX-AlphaCom).
 +
<br>
  
=== ICX-AlphaCom requirements ===
+
=== Requirements Zenitel ===
==== General equipment ====
+
<br>
* AlphaCom XE server, or ICX-500 server
 
This link has been realized with AlphaPro: 12.1.3.0 and AMC firmware: 13.1.3.4
 
  
==== Door control to AEOS ====
+
==== Compatability list ====
* No further licenses required for AlphaCom XE
 
* License ILI-IF Interface enabling ('''1002602400''') required for ICX-500
 
  
==== Action after access badge is allowed or denied from AEOS ====
+
*AlphaCom XE AMC version 11.2.3.11 (or higher).
Making a call
+
*ICX 500/ICX-core Server FW 1.2.3.9. (or higher).
* Display names of the intercom stations should be the same as the service name of the AEpu (door controller)
+
*AlphaPro 11.7 when using AC XE
* No further licenses required
+
*AlphaPro 12.1.3 (or higher) for AC ICX 500/ICX-CORE.
 +
<br>
  
==== Playback of audio messages ====
+
==== Zenitel (ICX-AlphaCom) License for Interfacing ====
* The display names of the intercom stations should be identical to the service names of the AEpu (door controller)
+
*1002602400 ILI-IF Interface Enabling license for ICX 500/ICX-CORE.
* Audio Messaging License (basic '''1009648500''' or enhanced '''1009648501''' depending on the number of audio messages required)
+
*1002604000 (basic) or 1002604100 (enhanced) Audio Messaging License for ICX 500/ICX-core (Depending on the desired number of audio messages).
 +
*1009648500 (basic) or 1009648501 (enhanced) Audio Messaging License for AlphaCom XE (Depending on the desired number of audio messages).
 +
<br>
  
=== AEOS requirements ===
+
=== Requirements AEOS ===
* No further licenses required
+
<br>
  
=== Connection settings ===
+
==== Compatibility list Nedap ====
The communication is via TCP/IP on eth0 of the ICX-AlphaCom. The IP address is determined per project. The TCP port used is 8035 (default port AEOS socket interface) where the ICX-AlphaCom acts as a client and logs into the interface.
+
*AEOS version 2021.X (or higher)
 +
*System user credentials
 +
<br>
  
== Messages from ICX-AlphaCom to AEOS ==
+
==== Nedap (AEOS) License for Interfacing ====
 +
*No additional License(s) needed.
 +
<br>
  
=== Login ===
+
=== Connection settings / Logins ===
To establish a connection to the Socket interface in AEOS, the ICX-AlphaCom must log in to AEOS. In the Event handler an event needs to be created that will be used to log in.
+
Communication runs through TCP/IP on eth0 or eth1 of the ICX-AlphaCom exchange. IP addresses should be determined on project requirements.
 +
Settings for the ICX-AlphaCom and Nedap controller:
  
The following commands are sent to AEOS.
+
- IP-address AlphaCom xxx.xxx.xxx.xxx  (eth0 or eth1)
 +
- IP-address AEOS Server xxx.xxx.xxx.xxx
 +
- IP-address Nedap door controller xxx.xxx.xxx.xxx
  
'''String:'''
 
''EDO 1 "<span style="color:#0000FF">login</span>(<span style="color:#008000">socketuser</span>,<span style="color:#FF0000">socketpw</span>)\x3B\r\n"''
 
* <span style="color:#0000FF">Login</span>    =login command
 
* <span style="color:#008000">Socketuser</span>    =user name
 
* <span style="color:#FF0000">Socketpw</span>    =user password
 
  
'''String:'''
+
The TCP port used is 8035 (default port socket interface AEOS), where the AlphaCom acts as a client and logs in to the AEOS server. TCP port 8035 must be added to the filter settings of the intercom center (via web interface of the server)
''EDO 1 "<span style="color:#00BFFF">setRmiCommandConnection</span>(true)\x3B\r\n"''
+
Display texts of the stations must be the same as the service name of the AEpu (door controller)
*<span style="color:#0000FF">setRmiCommandConnection </span>= enable sending commands towards the socket interface
 
  
'''String:'''
+
== Communication from ICX-AlphaCom to AEOS ==
''EDO 1 "<span style="color:#00BFFF">setRmiEventConnection(true)</span>\x3B\r\n"''
 
*<span style="color:#0000FF">setRmiEventConnection(true) </span>"= activate receiving events from the socket interface
 
  
=== Door control ===
+
The following relates to a test setup, but can be used as a template for the solution in a production environment.
During a call, a master station can activate door control by pressing the 6 during the call. The command below is sent by the ICX-AlphaCom to the socket interface of AEOS for door control:
 
  
'''String:'''
+
=== Login ===
''EDO 1 "executeArgs(provideAccess\,[]\,\"<span style="color:#00BFFF">aepu1</span>:<span style="color:#008000">frontdoor</span>\")\x3B\n\r" ''
+
 
*<span style="color:#0000FF">Aepu1</span> = name of the Aepu (“Hostname” in AEOS)
+
To establish a connection with the Socket interface in AEOS, the ICX-AlphaCom needs to log in to AEOS. An event must be created in the Event Handler to log in.
*<span style="color:#008000">frontdoor</span> = service name of the door in the Aepu (“Access Point” in AEOS)
+
The commands below are sent to AEOS.
 +
 
 +
String:
 +
EDO 1 "login(socketuser,socketpw)\x3B\r\n"
 +
 
 +
Login =login command
 +
Socketuser =username
 +
Socketpw =user password
 +
 
 +
String:
 +
EDO 1 "setRmiCommandConnection(true)\x3B\r\n"
 +
 
 +
setRmiCommandConnection = activate commands to the socket interface
 +
 
 +
String:
 +
EDO 1 "setRmiEventConnection(true)\x3B\r\n"
 +
 
 +
"setRmiEventConnection(true) = enable receiving events from the socket interface
 +
 
 +
=== Door control (opening) ===
 +
 
 +
During a conversation, a main intercom station can activate the door control by pressing digit “6” during the conversation. The command below is sent by ICX-AlphaCom to the socket interface of AEOS
 +
to establish door opening.
 +
 
 +
EDO 1 "executeArgs(provideAccess\,[]\,\"aepu1:frontdoor\")\x3B\n\r"
 +
 
 +
Aepu1 = The name of the AEpu (door controller “Hostname” in AEOS )
 +
frontdoor = The service name / Display text of door on the Aepu1 (“Access Point” in AEOS)
  
 
== Messages from AEOS to ICX-AlphaCom ==
 
== Messages from AEOS to ICX-AlphaCom ==
  
When a badge is denied or allowed, one or more actions can be performed by means of the link, such as a call to reception when a badge is expired. Or a welcome message when access is granted. The connection from AEOS is also checked for a heartbeat. When the heartbeat is lost, the ICX-AlphaCom will try to log on again once per minute.
+
When an access control badge is denied or allowed, one or more actions can be performed using the link. Likely actions are a call to reception in the event of an expired or blocked badge, or a welcome message when access has been granted.
 +
The connection from AEOS is also verified on heartbeat. When no heartbeat is determined, ICX-AlphaCom will attempt to log in again once per minute.
 +
 
 +
The string from the AEOS is made up of several fields, each separated by one “|”.
 +
E.g.:
 +
 
 +
Event:GE|40|AEOS|210|nvc2522aepu1:voordeur|1015|20240105|154723|NedapXS Cards 3|Pietje Puk||0||#003;
 +
 
 +
Field numbers:
 +
Event: -- 1 -- | -- 2 -- |-- 3 -- |-- 4 -- |-- 5 -- |-- 6 -- |-- 7 -- |-- 8 -- |-- 9 -- |-- 10 -- | -- 11 -- |#003;
 +
 
 +
In the ICX-AlphaCom event handler, the various fields are filtered from the string and the desired action is performed based on the content.
  
 
=== Heartbeat ===
 
=== Heartbeat ===
AEOS sends a heartbeat once a minute as a live check, see string below. The ICX-AlphaCom responds to "HB" in the string. If it is not received the ICX-AlphaCom will try again to log in to the socket interface of AEOS.
 
  
'''String:'''
+
AEOS sends a heartbeat once per minute as a live check, see string below.
 +
ICX-AlphaCom filters on “HB” in the string. If the heartbeat is not detected and timeout occurs, ICX-AlphaCom will try to log in again to the AEOS socket interface (see section 2.1).
 +
 
 +
String:
 +
Event:HB|3||#003;#015 #012#015
 +
HB = heartbeat
 +
When the heartbeat is detected, the timer for L699 (test device) is reset to 61 sec.
 +
 +
=== Access granted ===
 +
When access is granted after presenting a valid access badge, a corresponding message is sent from AEOS to which ICX-AlphaCom can respond with a selected audio message or other action.
 +
The AlphaCom filters on the code 1015 (field 6) in the string. 1015 stands for “Authorized Badge Access” in AEOS.
  
Event:<span style="color:#0000FF">HB</span>|409||;
+
String:
 +
Event:GE|40|AEOS|210|nvc2522aepu1:voordeur|1015|20240105|154723|NedapXS Cards 3|Pietje Puk||0||#003;#015 #012#015
  
<span style="color:#0000FF">HB</span> = heartbeat
+
voordeur = The service name of the door in the Aepu1.
 +
1015 = Access granted.
 +
  
=== Action in ICX-AlphaCom after "Access granted"===
+
=== Access denied ===
When access is granted after presenting a badge, a message can be sent from AEOS to which the ICX-AlphaCom can respond with an audio message or other action. The ICX-AlphaCom responds to the code 1015 (field 6) of the string. 1015 stands for "Authorized Badge Access" in AEOS.
+
If access is denied after presenting an access badge, a corresponding message is sent from AEOS to which the AlphaCom can respond with a selected audio message or other action.
 +
The AlphaCom filters on the code 1201 (field 6) of the string.
  
'''String:'''
+
1201 stands for “BadgeNoAccesEvent” in AEOS.
  
Event:GE|411|AEOS|210|nvc2522aepu1:<span style="color:#008000">voordeur</span>|<span style="color:#0000FF">1015</span>|20161108|104548|NedapXS Cards 9|Darthvader||0|| ;
+
String:
* <span style="color:#008000">voordeur</span> = The service name of the door on Aepu1
+
Event:GE|42|AEOS|210|nvc2522aepu1:voordeur|1201|20240105|154823|NedapXS Cards 7|Darthvader||0||#003;#015 #012#015
* <span style="color:#0000FF">1015</span> = Access granted
 
  
=== Action in ICX-AlphaCom after "Badge unknown" ===
+
voordeur = The service name of the door in the Aepu1.
When an unauthorized access badge is presented, a message can be sent from AEOS to which the ICX-AlphaCom can respond with an audio message or other action. The ICX-AlphaCom responds to code 1015 (field 6) of the string.  
+
1201 = No Access
1227 stands for "Badge unknown" in AEOS.
 
  
'''String:'''
 
  
Event:GE|411|AEOS|210|nvc2522aepu1:<span style="color:#008000">voordeur</span>|<span style="color:#0000FF">1227</span>|20161108|104548|NedapXS Cards 9|Darthvader||0|| ;
+
=== Door control from ICX-AlphaCom ===
* <span style="color:#008000">voordeur</span> = The service name of the door on Aepu1
 
* <span style="color:#0000FF">1227</span> = Badge unknown
 
  
=== Action in ICX-AlphaCom after "Access Denied" ===
+
When a conversation has been established between a secondary intercom station and e.g. the main station at the reception, the door can also be opened from the main station. (6)
When access is denied after presenting an access badge, a message can be sent from AEOS to which the ICX-AlphaCom can respond with an audio message or other action. The ICX-AlphaCom responds to the code 1201 (field 6) of the string. 1201 stands for "BadgeNoAccessEvent" in AEOS.
+
With this action, an “Execute command” is sent from AlphaCom to AEOS, containing the device ID and the relevant AEOS controller.
  
'''String:'''
+
String from AlphaCom to AEOS (triggered by event type-2):
Event:GE|411|AEOS|210|nvc2522aepu1:<span style="color:#008000">voordeur</span>|<span style="color:#0000FF">1201</span>|20161108|104548|NedapXS Cards 9|Darthvader||0|| ;
+
EDO 1 "executeArgs(provideAccess\,[]\,\"nvc2522aepu1: %1.NAM\")\x3B\n\r"
  
* <span style="color:#008000">voordeur</span> = The service name of the door on Aepu1
+
%1.NAM = The display name of the intercom device in question
* <span style="color:#0000FF">1201</span> = No Access
+
nvc2522aepu1 = The relevant door controller.
  
=== AEOS Socket interface documentation ===
 
For more explanation about the Socket interface and the related events, please refer to the following Nedap documents:
 
* AEOS Socket Interface
 
* AEOS Generic Event Description
 
 
  
== Description configuration/events ICX-AlphaCom ==
+
AEOS responds to this string with a feedback message that the DoorOpenAction has been carried out.
 +
ICX-AlphaCom filters this string on the code 1196 (field 6).
  
=== EDIO port ===
+
1196 stands for “ProvideAccesEvent” in AEOS.
In AlphaPro, create an EDIO port under "Exchange & system -> Serial Ports -> EDIO" with the following settings
 
* Port type: TCP/IP Client
 
* IP address: IP address of the AEOS server 
 
* Port:     <span style="color:#0000FF">8035</span>
 
* Keep Alive: Checked
 
* Write option: Connect at ICX-AlphaCom startup
 
  
[[File:Nedap1.png|thumb|left|750px]]
+
String from AEOS to AlphaCom:
<br style="clear:both;" />
+
Event:GE|33|AEOS|210|nvc2522aepu1:voordeur|1196|20240105|154435||||0||#003;#015 #012#015
  
[[File:Nedap2.png|thumb|left|750px]]
+
voordeur = The service name of the door in the Aepu1
<br style="clear:both;" />
+
1196 = Access granted.
  
=== ICX-AlphaCom Firewall Filter Settings ===
+
ICX-AlphaCom then triggers an event that controls the visual indication on the intercom relay LED (relay control) and plays a voice message on the relevant intercom.
In the ICX-AlphaCom - System Configuration - Filters, create a rule to open port TCP 8035.
 
* Protocol name: AEOS Socket interface
 
* TCP/UDP: TCP 
 
* Port:     8035
 
  
Activate the rule for the wanted Eth0 and/or Eth1 port.
 
  
[[File:Nedap3.png|thumb|left|750px]]
+
=== AEOS Socket interface documentation ===
<br style="clear:both;" />
 
 
=== Events ===
 
==== Login AEOS ====
 
The event below is used to log onto the AEOS socket interface with authentication.
 
* Owner Type: EDI text config
 
* Even type: 28
 
* Subevent: 1 (refers to EDIO 1 port)
 
  
[[File:Nedap4.png|thumb|left|750px]]
+
For more information about the Socket interface and the associated events, please refer to the online documents from Nedap: https://portal.nedapsecurity.com/robohelp?file=index.htm
<br style="clear:both;" />
 
  
'''Comment:'''<br>
 
Login in AEOS
 
  
{{Code2|
+
== Description configuration/events AlphaCom ==
LOG "## Data received on EDI 2 from NEDAP >%scutc(%edi,0,95)"
 
tmp 0 "%sscan(%edi,Status:connected,16<)" Scan for “Status:connected” and store this in variable 0
 
tmp 1 "%sscan(%edi,true,4<)" “”
 
tmp 2 "%sscan(%edi,getServices,12<)" “”
 
tmp 3 "%sscan(%edi,getServiceKeys,14<)" “”
 
LOG " >%edi \n\r" Log string to system log for debugging
 
LOG " tmp0 <nowiki>=</nowiki> %tmp(0) \r\n"
 
LOG " tmp1 <nowiki>=</nowiki> %tmp(1) \r\n"
 
LOG " tmp2 <nowiki>=</nowiki> %tmp(2) \r\n"
 
IF %scmp(%tmp(0,16<),Status:connected)  Check if “Status:connected” then:
 
  LOG "login(socketuser,socketpw)\x3B"
 
  EDO 1 "login(socketuser,socketpw)\x3B\r\n" Login with username and password
 
  STOP
 
ENDIF
 
IF %scmp(%tmp(1,4<),true) Check if “true” is in string, then:
 
  LOG " setRmiCommandConnection(true)\x3B"
 
  LOG " setRmiEventConnection(true)\x3B\r\n"
 
  EDO 1 "setRmiCommandConnection(true)\x3B\r\n" Start sending commands to AEOS
 
  EDO 1 "setRmiEventConnection(true)\x3B\r\n" Start receiving events from AEOS
 
  STOP
 
ENDIF
 
}}
 
 
  
==== Scan heartbeat, access granted or access denied ====
+
=== EDIO serial port configuration ===  
The event below scans the incoming data for heartbeat and events when access is granted or denied by a card reader.
 
* Owner Type: EDI text config
 
* Even type: 28
 
* Subevent: 1 (refers to EDIO 1 port)
 
  
[[File:Nedap5.png|thumb|left|750px]]
+
Create an EDIO port in AlphaPro under “Exchange & system  Serial Ports  EDIO” with the following settings:  
<br style="clear:both;" />
 
  
'''Important:'''
+
Port type: TCP/IP Client
{{Note|Adjust the value of the last available physical number in the event, this occurs twice in this event. In the example below, the event stops at 553, as there can be a maximum of 552 stations in one ICX-AlphaCom.}}
+
IP address: IP-address of AEOS server 
 +
Port:     8035
 +
Keep Alive: Checked
 +
Write option: Connect at AlphaCom startup
  
{{Code2|
+
Create port filter 8035 (TCP) for the AEOS interface. Choose the appropriate ethernet connection.
IF %op(%tmp(7),<nowiki>=</nowiki>,553) Last physical number reached (in this case 553). STOP event ######
+
(eth0 or eth1 or both)
}}
 
  
'''Comment:'''
+
=== Configuration intercom devices ===
Filter incoming data on heartbeat and 1201 (badge denied) 1015 (badge allowed)
 
  
{{Code2|
+
To carry out actions after events from AEOS, it is important that the intercom devices have the same name as the service name of AEpu ( = door controller Nedap).
tmp 0 "%scutf(%edi,<nowiki>|</nowiki>,0)" Filter field 0 from string store in temp variable 0
+
This name is compared with the incoming data from the events. See the example below:
tmp 1 "%scutf(%edi,<nowiki>|</nowiki>,1)" “”     1
 
tmp 2 "%scutf(%edi,<nowiki>|</nowiki>,2)" “”     2
 
tmp 3 "%scutf(%edi,<nowiki>|</nowiki>,3)" “”     3
 
tmp 4 "%scutf(%edi,<nowiki>|</nowiki>,4)" “”     4
 
tmp 5 "%scutf(%tmp(4),:,1)" Filter name from filter 4 from string and store in temp variable 5
 
tmp 6 "%scutf(%edi,<nowiki>|</nowiki>,5)" Filter field 5 from string and store in temp variable 6
 
LOG " tmp0 <nowiki>=</nowiki> %tmp(0,2)" Write to System log for debugging
 
LOG " tmp1 <nowiki>=</nowiki> %tmp(1)"
 
LOG " tmp2 <nowiki>=</nowiki> %tmp(2)"
 
LOG " tmp3 <nowiki>=</nowiki> %tmp(3)"
 
LOG " tmp4 <nowiki>=</nowiki> %tmp(4)"
 
LOG " tmp5 <nowiki>=</nowiki> %tmp(5)"
 
LOG " tmp6 <nowiki>=</nowiki> %tmp(6)"
 
IF %scmp(%tmp(0,2),HB) If temp variable 2 contains “HB” then:
 
  $ST L699 W610 Start timer for heartbeat control on station (699)
 
  LOG "Heartbeat received"
 
  STOP
 
ENDIF
 
  
IF %scmp(%tmp(6),1201) If Temp variable 6 contains (1201) access refused, then:
 
  tmp 7 "1"
 
  LOG " tmp 7 <nowiki>=</nowiki> %tmp(7)"
 
  LOOP Start LOOP
 
    IF %op(%tmp(7),<nowiki>=</nowiki>,553) Last physical number reached (in this case 553). STOP event ######
 
      LOG "end of loop badge refused"
 
      STOP
 
    ENDIF
 
    OWN %rdir(%tmp(7)) Set Temp variable 7 (physical) owner of the event
 
    LOG "%1.nam"
 
    IF %scmp(%tmp(5),%1.nam) If Temp variable 7 is equal to the owner displaytext then:
 
      $DD L%1.dir G8182 Start playback of audio message 8182 (Access refused)
 
      STOP
 
    ENDIF
 
    tmp 7 "%op(%tmp(7),+,1)" Increment Temp variable 7 with +1
 
    LOG " value %tmp(7)"
 
  ENDLOOP STOP LOOP
 
ENDIF
 
  
IF %scmp(%tmp(6),1015) If Temp variable 6 contains (1015) access allowed then:
+
Event:GE|33|AEOS|210|nvc2522aepu1:voordeur|1196|20240105|154435||||0||#003;
  tmp 7 "1"
 
  LOG " tmp 7 <nowiki>=</nowiki> %tmp(7)"
 
  LOOP Start LOOP
 
    IF %op(%tmp(7),<nowiki>=</nowiki>,553) Last physical number reached (in this case 553). STOP event ######
 
      LOG "end of loop badge access"
 
      STOP
 
    ENDIF
 
    OWN %rdir(%tmp(7)) Set Temp variable 7 (physical) owner of the event
 
    LOG "%1.nam"
 
    IF %scmp(%tmp(5),%1.nam) If Temp variable 7 is equal to the owner displaytext then:
 
      $DD L%1.dir G8181 Start playback of audio message 8181 (Access allowed)
 
      STOP
 
    ENDIF
 
    tmp 7 "%op(%tmp(7),+,1)" Increment Temp variable 7 with +1.
 
    LOG " value %tmp(7)"
 
  ENDLOOP STOP LOOP
 
ENDIF
 
}}
 
  
==== Timer Heartbeat ====
+
The display text must be written exactly the same as the name in field 5 of the string.
The following event is used to initialize the heartbeat timer from AEOS.
 
* Owner Type: n.a.
 
* Even type: 27 – System status
 
* Subevent: 65
 
* When changed to: ON
 
  
[[File:Nedap6.png|thumb|left|750px]]
+
=== Programming events in ICX-AlphaCom ===
<br style="clear:both;" />
 
  
'''Comment:'''
+
==== System communications between AEOS - AlphaCom ====
Start watchdog timer
 
  
'''Action:'''
+
The event below is triggered when a text string is offered to the EDIO port by the AEOS server.
{{Code2|
 
$ST L699 W800 Start Timer for 80 seconds. For heartbeat check.
 
}}
 
  
==== Timeout heartbeat ====
+
Owner Type: EDI text config
The event below is used to re-login to the AEOS socket Interface in case there is no more heartbeat received from AEOS.
+
Event-type: 28
* Owner Type: testtoestel (any name)
+
Subevent: 1 (Refers to EDIO port 1)
* Even type: 21 – Event time out
+
When changed to: --
* Subevent: -
 
* When changed to: ON
 
  
[[File:Nedap7.png|thumb|left|750px]]
+
Various functions are completed in this event:
<br style="clear:both;" />
 
  
'''Comment:'''
+
- Heartbeat Control.
 +
- Logging into AEOS and Command Connection handling bi-directional.
 +
- Action for “access denied” with access badge presentation. (1201)
 +
- Action for “door control allowed” door opening is initiated from AlphaCom. (1196)
 +
- Action for “access permitted” with access badge presentation.         (1015)
  
Log back in after heartbeat is no longer received.
+
'''Important:
 +
if %op(%tmp(7),=,5)                          / Last Physical Number Intercoms Reached'''
  
{{Code2|
+
'''Change the value of the last available physical number in the event; this occurs three times in this event. In the example below, the event stops at 5, considering that there can be maximum 552 available in ICX-AlphaCom.
LOG "timer heartbeat ended"
+
''' 
LOG "login(socketuser,socketpw)\x3B"
 
EDO' 1 "login(socketuser,socketpw)\x3B\r\n"
 
$ST L%1.dir W610
 
}}
 
  
==== Door control to AEOS ====
+
==== Init Timer Heartbeat ====
The following event is used to control a door in AEOS.
 
* Owner Type: Station with door control
 
* Even type: 2 – Door opening
 
* Subevent: -
 
* When changed to: ON
 
  
In the action command, the AEOS controller and AccessPoint name must be entered, exactly as programmed in AEOS:
+
The event below is used to initialize the heartbeat timer at system start-up.
  
'''Example:''' nvc2522aepu1:voordeur
+
Owner Type: n.a.
 +
Event-type: 27 – System status
 +
Sub-event: 65
 +
When changed to: ON
  
[[File:Nedap8.png|thumb|left|750px]]
 
<br style="clear:both;" />
 
  
'''Comment:'''
+
Action:
Door open control to AEOS
+
$ST L699 W800 Start Timer for 80 seconds. To check heartbeat.
  
{{Code2|
 
EDO 1 "executeArgs(provideAccess\,[]\,\"nvc2522aepu1:voordeur\")\x3B\n\r"
 
LOG "## Door open to AEOS S%2.dir,D%1.dir"
 
}}
 
  
=== Devices ===
+
==== Timeout heartbeat ====  
To perform actions after events from AEOS it is important that the devices at the door has the same name as the AccessPoint in the Aepu (door controller Nedap). The name is compared with the incoming data from the events.
 
  
DO NOT USE accented letters.
+
The event below is used to log into the AEOS socket Interface again when no heartbeat has been received from AEOS. The timer is also restarted for 61 seconds.
  
See the example below:
+
Owner Type: Test device
 +
Event-type: 21 – Event time out
 +
Subevent: -
 +
When changed to: ON
  
[[File:Nedap9.png|thumb|left|750px|<nowiki>Event:GE|411|AEOS|210|nvc2522aepu1:</nowiki>'''voordeur'''<nowiki>|1015|20161108|104548|NedapXS Cards 9|Darthvader||0||---- ;</nowiki>]]
 
<br style="clear:both;" />
 
  
=== NEDAP AEOS settings ===
+
Action:
'''AEOS version:'''
 
* 2019.2.3 or higher
 
  
'''Check if webservices are installed'''
+
LOG "timer heartbeat afgelopen"
* During the installation of AEOS you can check in 1 of the last steps whether the SOAP Webservices are installed or not. If not, the whole setup needs to be executed again. This means that AEOS will be down and nobody will be able to log in. The Controllers will continue to work as before.
+
LOG "login(socketuser,socketpw)\x3B"
 +
EDO 1 "login(socketuser,socketpw)\x3B\r\n"
 +
$ST L%1.dir W610
  
'''Starting Webservices'''
 
* In AEOS under system properties we need to look at section "44.15 SOAP WebService" and this should be checked. If not, it should be checked and the application service restarted from AEOS (under Services on the server).
 
  
'''Open windows firewall for TCP traffic on port 8035'''
+
==== Door control ICX-AlphaCom to AEOS ====
* Usually, we open all ports or disable the Windows Firewall since the server is well protected.
 
  
'''Creating the Socketuser'''
+
The event below is used to control (open) a door in the AEOS environment from ICX-AlphaCom.
* Name is free to choose (case sensitive).  
+
This event is triggered by pressing digit “6” (or any other programmed door-open key) on the main Intercom during a conversation with the corresponding door intercom.
::Suggestion : StentofonSocketUser
 
::Password : ****** (use only standard characters, no accented letters)
 
  
'''Assign the appropriate rights to this user'''
+
Owner Type: Intercom with door control (relays)
* This is done under the user role in AEOS and it is given the following properties:
+
Event-type: 2 – Door opening
 +
Subevent: -
 +
When changed to: ON
  
[[File:Nedap10.png|thumb|left|750px]]
 
<br style="clear:both;" />
 
  
'''How to check if this user is logged in?'''
+
Action:
* This can be checked under "Maintain connected users" in AEOS:
+
EDO 1 "executeArgs(provideAccess\,[]\,\"nvc2522aepu1:voordeur\")\x3B\n\r"
 +
LOG "Deuropen naar AEOS"
  
[[File:Nedap11.png|thumb|left|750px]]
+
== Nedap AEOS Settings ==
<br style="clear:both;" />
 
  
'''How to check if a door-open command comes in and is executed in AEOS?'''
+
Start web services
* This can be checked under Monitor => Events => View Log and best set a filter on "Provide access".
+
In AEOS, under system properties, look up section “44.15 SOAP WebService” and check if ticked. If not, tick it on and restart the application service of AEOS (Under Services on the server).
  
[[File:Nedap12.png|thumb|left|750px]]
+
Check whether the webs services are functioning properly. This can be reviewed by going on to the next link (Example with QRS): https://192.168.10.250:8443/aeosws?wsdl
<br style="clear:both;" />
 
  
* All the real socket interface operations are also found in the log:
+
If you see the following page there, it is in order:
  
[[File:Nedap13.png|thumb|left|750px]]
+
=== Nedap AEOS Documentation ===
<br style="clear:both;" />
 
  
'''Check the web services for correct operation.'''
+
For more information about the interface with Zenitel, see the link to the Tech WebHelp of Nedap.
* This can be checked by going to the following link (random example): <br> <nowiki>https://192.168.10.250:8443/aeosws?wsdl</nowiki>
+
In here you can find any further Nedap AEOS related information; AEOS Technical Webhelp
* If you see the following page there it is OK:
 
 
[[File:Nedap14.png|thumb|left|750px]]
 
<br style="clear:both;" />
 
  
* In the Event Handler action commands, the AEOS controller and the AccessPoint name must be entered EXACTLY as programmed in AEOS, Example: ''nvc2522aepu1:frontdoor''
 
* So, an export list is needed from AEOS with this data.
 
  
 
[[Category:3rd party integration]]
 
[[Category:3rd party integration]]

Revision as of 10:27, 19 March 2024

This article describes the integration between AEOS (Nedap) and ICX-AlphaCom. The main content is written by our platinum partner Elbo, with updates from Patrick Castelein.

Functional Specifications

The AEOS <-> AlphaCom interface is a bi-directional connection, based on the Socket interface on the AEOS side and a EDO/EDI connection on the AlphaCom side. The link is actualized on the basis of local intercom server ICX-500/ICX-Core to AEOS, without the inclusion of AlphaNet.

It is also possible to log in directly to the AEpu (door controller), but this is not included in this document. The functionalities below become available with this interface:

  1. Opening doors in AEOS environment during an intercom conversation (ICX-AlphaCom to AEOS) after providing the “open door” command in ICX-AlphaCom and playing a prerecorded audio message on the intercom when the door is opened by AEOS. By default, this involves pressing the “6” key during an intercom conversation.
  2. Play a prerecorded audio message in an intercom station or make a call when an access key or badge is authorized or denied (AEOS to ICX-AlphaCom).


Requirements Zenitel


Compatability list

  • AlphaCom XE AMC version 11.2.3.11 (or higher).
  • ICX 500/ICX-core Server FW 1.2.3.9. (or higher).
  • AlphaPro 11.7 when using AC XE
  • AlphaPro 12.1.3 (or higher) for AC ICX 500/ICX-CORE.


Zenitel (ICX-AlphaCom) License for Interfacing

  • 1002602400 ILI-IF Interface Enabling license for ICX 500/ICX-CORE.
  • 1002604000 (basic) or 1002604100 (enhanced) Audio Messaging License for ICX 500/ICX-core (Depending on the desired number of audio messages).
  • 1009648500 (basic) or 1009648501 (enhanced) Audio Messaging License for AlphaCom XE (Depending on the desired number of audio messages).


Requirements AEOS


Compatibility list Nedap

  • AEOS version 2021.X (or higher)
  • System user credentials


Nedap (AEOS) License for Interfacing

  • No additional License(s) needed.


Connection settings / Logins

Communication runs through TCP/IP on eth0 or eth1 of the ICX-AlphaCom exchange. IP addresses should be determined on project requirements. Settings for the ICX-AlphaCom and Nedap controller:

- IP-address AlphaCom xxx.xxx.xxx.xxx (eth0 or eth1) - IP-address AEOS Server xxx.xxx.xxx.xxx - IP-address Nedap door controller xxx.xxx.xxx.xxx


The TCP port used is 8035 (default port socket interface AEOS), where the AlphaCom acts as a client and logs in to the AEOS server. TCP port 8035 must be added to the filter settings of the intercom center (via web interface of the server) Display texts of the stations must be the same as the service name of the AEpu (door controller)

Communication from ICX-AlphaCom to AEOS

The following relates to a test setup, but can be used as a template for the solution in a production environment.

Login

To establish a connection with the Socket interface in AEOS, the ICX-AlphaCom needs to log in to AEOS. An event must be created in the Event Handler to log in. The commands below are sent to AEOS.

String: EDO 1 "login(socketuser,socketpw)\x3B\r\n"

Login =login command Socketuser =username Socketpw =user password

String: EDO 1 "setRmiCommandConnection(true)\x3B\r\n"

setRmiCommandConnection = activate commands to the socket interface

String: EDO 1 "setRmiEventConnection(true)\x3B\r\n"

"setRmiEventConnection(true) = enable receiving events from the socket interface

Door control (opening)

During a conversation, a main intercom station can activate the door control by pressing digit “6” during the conversation. The command below is sent by ICX-AlphaCom to the socket interface of AEOS to establish door opening.

EDO 1 "executeArgs(provideAccess\,[]\,\"aepu1:frontdoor\")\x3B\n\r"

Aepu1 = The name of the AEpu (door controller “Hostname” in AEOS ) frontdoor = The service name / Display text of door on the Aepu1 (“Access Point” in AEOS)

Messages from AEOS to ICX-AlphaCom

When an access control badge is denied or allowed, one or more actions can be performed using the link. Likely actions are a call to reception in the event of an expired or blocked badge, or a welcome message when access has been granted. The connection from AEOS is also verified on heartbeat. When no heartbeat is determined, ICX-AlphaCom will attempt to log in again once per minute.

The string from the AEOS is made up of several fields, each separated by one “|”. E.g.:

Event:GE|40|AEOS|210|nvc2522aepu1:voordeur|1015|20240105|154723|NedapXS Cards 3|Pietje Puk||0||#003;

Field numbers: Event: -- 1 -- | -- 2 -- |-- 3 -- |-- 4 -- |-- 5 -- |-- 6 -- |-- 7 -- |-- 8 -- |-- 9 -- |-- 10 -- | -- 11 -- |#003;

In the ICX-AlphaCom event handler, the various fields are filtered from the string and the desired action is performed based on the content.

Heartbeat

AEOS sends a heartbeat once per minute as a live check, see string below. ICX-AlphaCom filters on “HB” in the string. If the heartbeat is not detected and timeout occurs, ICX-AlphaCom will try to log in again to the AEOS socket interface (see section 2.1).

String: Event:HB|3||#003;#015 #012#015 HB = heartbeat When the heartbeat is detected, the timer for L699 (test device) is reset to 61 sec.

Access granted

When access is granted after presenting a valid access badge, a corresponding message is sent from AEOS to which ICX-AlphaCom can respond with a selected audio message or other action. The AlphaCom filters on the code 1015 (field 6) in the string. 1015 stands for “Authorized Badge Access” in AEOS.

String: Event:GE|40|AEOS|210|nvc2522aepu1:voordeur|1015|20240105|154723|NedapXS Cards 3|Pietje Puk||0||#003;#015 #012#015

voordeur = The service name of the door in the Aepu1. 1015 = Access granted.  

Access denied

If access is denied after presenting an access badge, a corresponding message is sent from AEOS to which the AlphaCom can respond with a selected audio message or other action. The AlphaCom filters on the code 1201 (field 6) of the string.

1201 stands for “BadgeNoAccesEvent” in AEOS.

String: Event:GE|42|AEOS|210|nvc2522aepu1:voordeur|1201|20240105|154823|NedapXS Cards 7|Darthvader||0||#003;#015 #012#015

voordeur = The service name of the door in the Aepu1. 1201 = No Access


Door control from ICX-AlphaCom

When a conversation has been established between a secondary intercom station and e.g. the main station at the reception, the door can also be opened from the main station. (6) With this action, an “Execute command” is sent from AlphaCom to AEOS, containing the device ID and the relevant AEOS controller.

String from AlphaCom to AEOS (triggered by event type-2): EDO 1 "executeArgs(provideAccess\,[]\,\"nvc2522aepu1: %1.NAM\")\x3B\n\r"

%1.NAM = The display name of the intercom device in question nvc2522aepu1 = The relevant door controller.


AEOS responds to this string with a feedback message that the DoorOpenAction has been carried out. ICX-AlphaCom filters this string on the code 1196 (field 6).

1196 stands for “ProvideAccesEvent” in AEOS.

String from AEOS to AlphaCom: Event:GE|33|AEOS|210|nvc2522aepu1:voordeur|1196|20240105|154435||||0||#003;#015 #012#015

voordeur = The service name of the door in the Aepu1 1196 = Access granted.

ICX-AlphaCom then triggers an event that controls the visual indication on the intercom relay LED (relay control) and plays a voice message on the relevant intercom.


AEOS Socket interface documentation

For more information about the Socket interface and the associated events, please refer to the online documents from Nedap: https://portal.nedapsecurity.com/robohelp?file=index.htm


Description configuration/events AlphaCom

EDIO serial port configuration

Create an EDIO port in AlphaPro under “Exchange & system  Serial Ports  EDIO” with the following settings:

Port type: TCP/IP Client IP address: IP-address of AEOS server Port: 8035 Keep Alive: Checked Write option: Connect at AlphaCom startup

Create port filter 8035 (TCP) for the AEOS interface. Choose the appropriate ethernet connection. (eth0 or eth1 or both)

Configuration intercom devices

To carry out actions after events from AEOS, it is important that the intercom devices have the same name as the service name of AEpu ( = door controller Nedap). This name is compared with the incoming data from the events. See the example below:


Event:GE|33|AEOS|210|nvc2522aepu1:voordeur|1196|20240105|154435||||0||#003;

The display text must be written exactly the same as the name in field 5 of the string.

Programming events in ICX-AlphaCom

System communications between AEOS - AlphaCom

The event below is triggered when a text string is offered to the EDIO port by the AEOS server.

Owner Type: EDI text config Event-type: 28 Subevent: 1 (Refers to EDIO port 1) When changed to: --

Various functions are completed in this event:

- Heartbeat Control. - Logging into AEOS and Command Connection handling bi-directional. - Action for “access denied” with access badge presentation. (1201) - Action for “door control allowed” door opening is initiated from AlphaCom. (1196) - Action for “access permitted” with access badge presentation. (1015)

Important: if %op(%tmp(7),=,5) / Last Physical Number Intercoms Reached

Change the value of the last available physical number in the event; this occurs three times in this event. In the example below, the event stops at 5, considering that there can be maximum 552 available in ICX-AlphaCom.

Init Timer Heartbeat

The event below is used to initialize the heartbeat timer at system start-up.

Owner Type: n.a. Event-type: 27 – System status Sub-event: 65 When changed to: ON


Action: $ST L699 W800 Start Timer for 80 seconds. To check heartbeat.


Timeout heartbeat

The event below is used to log into the AEOS socket Interface again when no heartbeat has been received from AEOS. The timer is also restarted for 61 seconds.

Owner Type: Test device Event-type: 21 – Event time out Subevent: - When changed to: ON


Action:

LOG "timer heartbeat afgelopen" LOG "login(socketuser,socketpw)\x3B" EDO 1 "login(socketuser,socketpw)\x3B\r\n" $ST L%1.dir W610


Door control ICX-AlphaCom to AEOS

The event below is used to control (open) a door in the AEOS environment from ICX-AlphaCom. This event is triggered by pressing digit “6” (or any other programmed door-open key) on the main Intercom during a conversation with the corresponding door intercom.

Owner Type: Intercom with door control (relays) Event-type: 2 – Door opening Subevent: - When changed to: ON


Action: EDO 1 "executeArgs(provideAccess\,[]\,\"nvc2522aepu1:voordeur\")\x3B\n\r" LOG "Deuropen naar AEOS"

Nedap AEOS Settings

Start web services In AEOS, under system properties, look up section “44.15 SOAP WebService” and check if ticked. If not, tick it on and restart the application service of AEOS (Under Services on the server).

Check whether the webs services are functioning properly. This can be reviewed by going on to the next link (Example with QRS): https://192.168.10.250:8443/aeosws?wsdl

If you see the following page there, it is in order:

Nedap AEOS Documentation

For more information about the interface with Zenitel, see the link to the Tech WebHelp of Nedap. In here you can find any further Nedap AEOS related information; AEOS Technical Webhelp