PSIA Integration


Overview

Access It! Universal.NET complies with the PSIA specification allowing the server machine to act as a PSIA host. By default the Access It! Universal.NET PSIA service will listen on TCP port 7777. Third party PSIA client requests can be made to the service allowing for the following:

  • Reader change of states (Unlock / Lock / Grant Access)
  • Input change of states (Enable / Disable)
  • Output change of states (Activate / Deactivate / Pulse)
  • Status monitoring for Readers (Inputs / Outputs)
  • Monitoring of system events and alarms
  • Retrieval of system history

Access It! Universal.NET version 6.1 includes the PSIA service built in and does not require a secondary download and installation process.

Access It! Universal.NET v5.2 through v5.6 requires a secondary download and installation process.

Access It! Universal.NET Licensing
The following licensing option must be enabled within the Access It! Universal.NET dongle and is a system wide license.

  • PSIA Service - Yes

Software Requirements

Access It! Universal.NET PSIA Service

Installation
To obtain a copy of the PSIA installation, contact RS2 Technical Support group.

  1. Uninstall any previous version, if necessary.
  2. Extract the contents of the AccessIt!UniversalPSIA.zip
  3. Run Setup.exe
  4. Click Next
  5. Click I Agree
  6. Click Next
  7. Select installation directory
  8. Click Next
  9. Click Next
  10. Click Close

Service Startup

  1. Navigate to the Microsoft Windows service snap in (Services.msc)
  2. Select the Access It! Universal PSIA Service
  3. Select Start form the left hand menu

Obtaining the PSIA ID

The PSIAID is a required argument when trying to control or request status of a device. To retrieve the list of Portals, Inputs, and Outputs, perform a GET request for the "info" on the corresponding section.

Supported Service URIs

All testing was completed using the Poster extension within Mozilla Firefox.

Service Command Details

URI: /PSIA/AreaControl/configuration

Return to Supported Service URIs

Method: GET

Query String(s):

Inbound Data:

Return Result: <AreaControlConfiguration>

Example Response:

<AreaControlConfiguration xmlns="urn:psialliance-org">
<CapabilityList>
<Capability>AccessControl</Capability>
</CapabilityList>
<Manufacturer>RS2 Technologies</Manufacturer>
<ModelName>AccessIt! Universal PSIA Service</ModelName>
<HardwareVersion>N/A</HardwareVersion>
<FirmwareVersion>N/A</FirmwareVersion>
</AreaControlConfiguration>

URI: /PSIA/AreaControl/PartitionMembers/Portals/info

Return to Supported Service URIs

Method: GET

Query String(s): [optional] partitionID=[partitionID]

Inbound Data:

Return Result: <PortalInfoList>

Example Response:

<PortalInfoList xmlns="urn:psialliance-org">
<PortalInfo>
<ID>12</ID>
<UID>{253C5B53-A585-4ED5-83F9-61A4C5EEA193}</UID>
<Name>SCP 000 - SIO 01-Reader 1</Name>
<Description>SCP 000 - SIO 01-Reader 1</Description>
<AssociatedPartitionID>
<ID>1</ID>
<GUID>{46BACF4A-B653-4C0C-ACA2-444489C4AB31}</GUID>
<Name>Main</Name>
</AssociatedPartitionID>
</PortalInfo>
<PortalInfo>
<ID>13</ID>
<UID>{1C8D262C-B01A-4619-82FF-A23400217C21}</UID>
<Name>SCP 000 - SIO 00-Reader 1</Name>
<Description>SCP 000 - SIO 00-Reader 1</Description>
<AssociatedPartitionID>
<ID>1</ID>
<GUID>{46BACF4A-B653-4C0C-ACA2-444489C4AB31}</GUID>
<Name>Main</Name>
</AssociatedPartitionID>
</PortalInfo>
<PortalInfo>
<ID>14</ID>
<UID>{64BCF6A8-0F9D-4F25-9BDB-B65E4D7C10CC}</UID>
<Name>SCP 000 - SIO 01-Reader 2</Name>
<Description>SCP 000 - SIO 01-Reader 2</Description>
<AssociatedPartitionID>
<ID>1</ID>
<GUID>{46BACF4A-B653-4C0C-ACA2-444489C4AB31}</GUID>
<Name>Main</Name>
</AssociatedPartitionID>
</PortalInfo>
</PortalInfoList>

URI: /PSIA/AreaControl/PartitionMembers/Portals/status

Return to Supported Service URIs

Method: GET

Query String(s): [optional] partitionID=[partitionID]

Inbound Data:

Return Result: <PortalStatusList>

Example Response:

<PortalStatusList xmlns="urn:psialliance-org">
<PortalStatus>
<ID>12</ID>
<Connection>OK</Connection>
<PowerStatus>
<ACPower>OK</ACPower>
<BatteryPower>OK</BatteryPower>
</PowerStatus>
<Latch>Latched</Latch>
<AccessOverride>Normal</AccessOverride>
<PortalForcedMask>Monitored</PortalForcedMask>
<PortalHeldMask>Monitored</PortalHeldMask>
<PortalForced>Forced</PortalForced>
<PortalHeld>Held</PortalHeld>
<PortalAlarm>Alarm</PortalAlarm>
</PortalStatus>
<PortalStatus>
<ID>13</ID>
<Connection>OK</Connection>
<PowerStatus>
<ACPower>OK</ACPower>
<BatteryPower>OK</BatteryPower>
</PowerStatus>
<Latch>Latched</Latch>
<AccessOverride>Normal</AccessOverride>
<PortalForcedMask>Monitored</PortalForcedMask>
<PortalHeldMask>Monitored</PortalHeldMask>
<PortalForced>Forced</PortalForced>
<PortalHeld>Held</PortalHeld>
<PortalAlarm>Alarm</PortalAlarm>
</PortalStatus>
<PortalStatus>
<ID>14</ID>
<Connection>OK</Connection>
<PowerStatus>
<ACPower>OK</ACPower>
<BatteryPower>OK</BatteryPower>
</PowerStatus>
<Latch>Latched</Latch>
<AccessOverride>Normal</AccessOverride>
<PortalForcedMask>Monitored</PortalForcedMask>
<PortalHeldMask>Monitored</PortalHeldMask>
<PortalForced>Forced</PortalForced>
<PortalHeld>Held</PortalHeld>
<PortalAlarm>Alarm</PortalAlarm>
</PortalStatus>
</PortalStatusList>

URI: /PSIA/AreaControl/PartitionMembers/Portals/latchState

Return to Supported Service URIs

Method: PUT

Query String(s): [required] state=["latched","unlatched","pulse"], [optional] partitionID=[partitionID]

Inbound Data: <PulseData>.

Inbound Data Examples:

Content to Send:
<PulseData version="1.0" xmlns="urn:psialliance-org">
<DurationMillis>10000</DurationMillis>
</PulseData>

Return Result: <ResponseStatus>

Example Response: 200 OK

URI: /PSIA/AreaControl/PartitionMembers/Portals/accessOverride

Return to Supported Service URIs

Method: PUT

Query String(s): [required] accessOverrideState=["latched","unlatched",released"], [optional] partitionID=[partitionID]

Inbound Data:

Return Result: <ResponseStatus>

Example Response: 200 OK

URI: /PSIA/AreaControl/PartitionMembers/Portals/forcedMaskState

Return to Supported Service URIs

Method: PUT

Query String(s): [required] state=["masked","monitored"], [optional] partitionID=[partitionID]

Inbound Data:

Return Result: <ResponseStatus>

Example Response: 200 OK

URI: /PSIA/AreaControl/PartitionMembers/Portals/heldMaskState

Return to Supported Service URIs

Method: PUT

Query String(s): [required] state=["masked","monitored"], [optional] partitionID=[partitionID]

Inbound Data:

Return Result: <ResponseStatus>

Example Response: 200 OK

URI: /PSIA/AreaControl/PartitionMembers/Portals/instanceDescription/<portalID>

Return to Supported Service URIs

Method: GET

Query String(s):

Inbound Data:

Return Result: <PortalDescriptionInfo>

Example Response:

<PortalDescriptionInfo version="1.0" xmlns="urn:psialliance-org">
<Name>SCP 000 - SIO 01-Reader 1</Name>
<Description>SCP 000 - SIO 01-Reader 1</Description>
</PortalDescriptionInfo>

URI: /PSIA/AreaControl/PartitionMembers/Portals/instanceDescription/<portalID>

Return to Supported Service URIs

Method: PUT

Query String(s):

Inbound Data: <PortalDescriptionInfo>

Inbound Data Examples:

Content to Send:

<PortalDescriptionInfo version="1.0" xmlns="urn:psialliance-org">
<Name>SCP 000 - SIO 01-Reader 1</Name>
<Description>SCP 000 - SIO 01-Reader 1</Description>
</PortalDescriptionInfo>

Return Result: <ResponseStatus>

Example Response: 200 OK

URI: /PSIA/AreaControl/PartitionMembers/Portals/requiredIdentifierTypes/<portalID>

Return to Supported Service URIs

Method: GET

Query String(s):

Inbound Data:

Return Result: <RequiredIdentifierList>

Example Response:

<RequiredIdentifierList version="1.0" xmlns="urn:psialliance-org">
<LogicalOr>
<RequiredIdentifierInfo>
<LogicalAnd>
<IdentifierType>Card</IdentifierType>
</LogicalAnd>
</RequiredIdentifierInfo>
</LogicalOr>
</RequiredIdentifierList>

URI: /PSIA/AreaControl/PartitionMembers/Portals/requiredIdentifierTypes/<portalID>

Return to Supported Service URIs

Method: PUT

Query String(s):

Inbound Data: <RequiredIdentifierList>

Inbound Data Examples:

<RequiredIdentifierList version="1.0" xmlns="urn:psialliance-org">
<LogicalOr>
<RequiredIdentifierInfo>
<LogicalAnd>
<IdentifierType>Card</IdentifierType>
</LogicalAnd>
</RequiredIdentifierInfo>
</LogicalOr>
</RequiredIdentifierList>

Return Result: <ResponseStatus>

Example Response: 200 OK

URI: /PSIA/AreaControl/Devices/Inputs/info

Return to Supported Service URIs

Method: GET

Query String(s): [optional] externalOnly=[true,false], [optional] portalID=[portalID], [optional] partitionID=[partitionID]

Inbound Data:

Return Result: <InputStatusList>

Example Response:

<InputInfoList xmlns="urn:psialliance-org">
<InputInfo>
<ID>15</ID>
<UID>{B777641C-12D4-4E98-B88D-72B1B000D29F}</UID>
<Name>SCP 000 - SIO 01-Input 8</Name>
<Description>SCP 000 - SIO 01-Input 8</Description>
<Supervised>false</Supervised>
<IsExternal>true</IsExternal>
</InputInfo>
<InputInfo>
<ID>16</ID>
<UID>{1080F1D2-4B94-47D9-8EBB-B2E4CF14789F}</UID>
<Name>SCP 000 - SIO 01-Input 7</Name>
<Description>SCP 000 - SIO 01-Input 7</Description>
<Supervised>false</Supervised>
<IsExternal>true</IsExternal>
</InputInfo>
<InputInfo>
<ID>17</ID>
<UID>{2CFF3644-E0E1-4A49-B736-F5ECC406D020}</UID>
<Name>SCP 000 - SIO 01-Input 6</Name>
<Description>SCP 000 - SIO 01-Input 6</Description>
<Supervised>false</Supervised>
<IsExternal>true</IsExternal>
</InputInfo>
<InputInfo>
<ID>18</ID>
<UID>{282DAAB6-788F-45EC-B07D-FB40EAD9A82C}</UID>
<Name>SCP 000 - SIO 01-Input 5</Name>
<Description>SCP 000 - SIO 01-Input 5</Description>
<Supervised>false</Supervised>
<IsExternal>true</IsExternal>
</InputInfo>
</InputInfoList>

URI: /PSIA/AreaControl/Devices/Inputs/status

Return to Supported Service URIs

Method: GET

Query String(s): [optional] externalOnly=[true,false], [optional] portalID=[portalID], [optional] partitionID=[partitionID]

Inbound Data:

Return Result: <PortalInfoList>

Example Response:

<InputStatusList xmlns="urn:psialliance-org">
<InputStatus>
<ID>15</ID>
<UID>{B777641C-12D4-4E98-B88D-72B1B000D29F}</UID>
<Connection>OK</Connection>
<SupervisionFault>OK</SupervisionFault>
<Input>Normal</Input>
<Mask>Monitored</Mask>
<Tamper>OK</Tamper>
</InputStatus>
<InputStatus>
<ID>16</ID>
<UID>{1080F1D2-4B94-47D9-8EBB-B2E4CF14789F}</UID>
<Connection>OK</Connection>
<SupervisionFault>OK</SupervisionFault>
<Input>Normal</Input>
<Mask>Monitored</Mask>
<Tamper>OK</Tamper>
</InputStatus>
<InputStatus>
<ID>17</ID>
<UID>{2CFF3644-E0E1-4A49-B736-F5ECC406D020}</UID>
<Connection>OK</Connection>
<SupervisionFault>OK</SupervisionFault>
<Input>Normal</Input>
<Mask>Monitored</Mask>
<Tamper>OK</Tamper>
</InputStatus>
<InputStatus>
<ID>18</ID>
<UID>{282DAAB6-788F-45EC-B07D-FB40EAD9A82C}</UID>
<Connection>OK</Connection>
<SupervisionFault>OK</SupervisionFault>
<Input>Normal</Input>
<Mask>Monitored</Mask>
<Tamper>OK</Tamper>
</InputStatus>
</InputStatusList>

URI: /PSIA/AreaControl/Devices/Inputs/maskState

Return to Supported Service URIs

Method: PUT

Query String(s): [required] state=[masked,monitored]

Inbound Data:

Return Result: <ResponseStatus>

Example Response: 200 OK

URI: /PSIA/AreaControl/Devices/Inputs/instanceDescription/<inputID>

Return to Supported Service URIs

Method: GET

Query String(s):

Inbound Data:

Return Result: <InputDescriptionInfo>

Example Response:

<InputDescriptionInfo version="1.0" xmlns="urn:psialliance-org">
<Name>SCP 000 - SIO 01-Input 8</Name>
<Description>SCP 000 - SIO 01-Input 8</Description>
</InputDescriptionInfo>

URI: /PSIA/AreaControl/Devices/Inputs/instanceDescription/<inputID>

Return to Supported Service URIs

Method: PUT

Query String(s):

Inbound Data: <InputDescrptionInfo>

Inbound Data Examples:

<InputDescriptionInfo version="1.0" xmlns="urn:psialliance-org">
<Name>SCP 000 - SIO 01-Input 8</Name>
<Description>SCP 000 - SIO 01-Input 8</Description>
</InputDescriptionInfo>

Return Result: <ResponseStatus>

Example Response: 200 OK

URI: /PSIA/AreaControl/Devices/Outputs/info

Return to Supported Service URIs

Method: GET

Query String(s): [optional] externalOnly=[true,false], [optional] portalID=[portalID], [optional] partitionID=[partitionID]

Inbound Data:

Return Result: <OutputInfoList>

Example Response:

<OutputInfoList xmlns="urn:psialliance-org">
<OutputInfo>
<ID>19</ID>
<UID>{E0065546-6B01-4742-BF92-466B63A4E502}</UID>
<Name>SCP 000 - SIO 01-Output 4</Name>
<Description>SCP 000 - SIO 01-Output 4</Description>
<Supervised>false</Supervised>
<IsExternal>true</IsExternal>
</OutputInfo>
<OutputInfo>
<ID>20</ID>
<UID>{89C79584-F1E2-4BA8-B5B4-599029B806E9}</UID>
<Name>SCP 000 - SIO 01-Output 6</Name>
<Description>SCP 000 - SIO 01-Output 6</Description>
<Supervised>false</Supervised>
<IsExternal>true</IsExternal>
</OutputInfo>
<OutputInfo>
<ID>21</ID>
<UID>{4E35F54F-727F-42E9-BA11-59A175D090D0}</UID>
<Name>SCP 000 - SIO 01-Output 2</Name>
<Description>SCP 000 - SIO 01-Output 2</Description>
<Supervised>false</Supervised>
<IsExternal>true</IsExternal>
</OutputInfo>
<OutputInfo>
<ID>22</ID>
<UID>{451A0ADB-756C-4B97-A6C9-92482BDD9D50}</UID>
<Name>SCP 000 - SIO 01-Output 5</Name>
<Description>SCP 000 - SIO 01-Output 5</Description>
<Supervised>false</Supervised>
<IsExternal>true</IsExternal>
</OutputInfo>
<OutputInfo>
<ID>23</ID>
<UID>{930EF234-6FBB-4302-8DFF-DE7258048C46}</UID>
<Name>SCP 000 - SIO 00-Output 2</Name>
<Description>SCP 000 - SIO 00-Output 2</Description>
<Supervised>false</Supervised>
<IsExternal>true</IsExternal>
</OutputInfo>
</OutputInfoList>

URI: /PSIA/AreaControl/Devices/Outputs/status

Return to Supported Service URIs

Method: GET

Query String(s): [optional] externalOnly=[true,false], [optional] portalID=[portalID], [optional] partitionID=[partitionID]

Inbound Data:

Return Result: <OutputStatusList>

Example Response:

<OutputStatusList xmlns="urn:psialliance-org">
<OutputStatus>
<ID>19</ID>
<Connection>OK</Connection>
<Output>Off</Output>
</OutputStatus>
<OutputStatus>
<ID>20</ID>
<Connection>OK</Connection>
<Output>Off</Output>
</OutputStatus>
<OutputStatus>
<ID>21</ID>
<Connection>OK</Connection>
<Output>Off</Output>
</OutputStatus>
<OutputStatus>
<ID>22</ID>
<Connection>OK</Connection>
<Output>Off</Output>
</OutputStatus>
<OutputStatus>
<ID>23</ID>
<Connection>OK</Connection>
<Output>Off</Output>
</OutputStatus>
</OutputStatusList>

URI: /PSIA/AreaControl/Devices/Outputs/state/<outputID>

Return to Supported Service URIs

Method: PUT

Query String(s): [required] state=[on,off]

Inbound Data:

Return Result: <ResponseStatus>

Example Response: 200 OK

URI: /PSIA/AreaControl/Devices/Outputs/instanceDescription/<outputID>

Return to Supported Service URIs

Method: GET

Query String(s):

Inbound Data:

Return Result: <OutputDescriptionInfo>

Example Response:

<OutputDescriptionInfo version="1.0" xmlns="urn:psialliance-org">
<Name>SCP 000 - SIO 01-Output 6</Name>
<Description>SCP 000 - SIO 01-Output 6</Description>
</OutputDescriptionInfo>

URI: /PSIA/AreaControl/Devices/Outputs/instanceDescription/<outputID>

Return to Supported Service URIs

Method: PUT

Query String(s):

Inbound Data: <OutputDescrptionInfo>

Inbound Data Examples:

<OutputDescriptionInfo version="1.0" xmlns="urn:psialliance-org">

<Name>SCP 000 - SIO 01-Output 6</Name>

<Description>SCP 000 - SIO 01-Output 6</Description>

</OutputDescriptionInfo>

Return Result: <ResponseStatus>

Example Response: 200 OK

Service details for Metadata and Events

URI: /PSIA/Metadata/stream

Return to Supported Service URIs

Method: GET

Query String(s): [required] send=[all,history], [optional with send=history] time=[2017-01-01T00:00:00]

Inbound Data:

Return Result: <AreaControlEvent>


  • 543
  • 31-Aug-2018
  • 4063 Views