InventoryServer is a new and excellent tool for creating RFID applications when multiple fixed RFID readers and external antennas are used in the same system.
Author: Ari Pöyhönen, System Specialist at Nordic ID
1. WHAT IS INVENTORYSERVER?
InventoryServer is a .NET Framework class library including
functionalities to perform inventory on UHF Gen2 tags with multiple
readers, connected via Ethernet or USB, simultaneously or
The inventory results of each reader/antenna are transmitted to
a centralized database (TagBase) enabling easy access to the data
for further analysis.
InventoryServer contains features that help system developers
create applications for projects, which use multiple fixed RFID
readers and external antennas in the same system. InventoryServer
is especially suitable for asset tracking applications that require
accurate location information on assets.
1.1 HOW DOES IT WORK?
The settings for the readers and the antennas should be defined
in the Readers.xml file. Define the technical specifications of the
antennas, the inventory parameters and the filters to be
The Host application will connect the reader(s) through
InventoryServer (USB and/or TCP/IP Client).
As the reader connects, the InventoryServer retrieves the reader
parameters in the Readers.xml file. If there is a matching serial
number for the connected reader in the Readers.xml file, the
inventory parameters assigned to it will be used. If a matching
serial number cannot be found, the settings can be defined and
saved in the Readers.xml file.
Once the reader is enabled, it starts to perform the inventory
according to the given parameters in the defined group.
Inventory Server performs continuous inventory by groups. There
can be one or more readers in one group. In the groups the
inventory gets performed one antenna (or reader, depending on the
InventoryMode) at a time to avoid radio interference. The groups
are independent of each other and perform inventory parallel to
The groups are meant to speed up inventory rounds when there are
several antennas in the system and should be placed as far
away from each other as possible (>5m) in order not to interfere
with each other's reading performance. Inventory parameters and the
amount of tags to be read determine how long the inventory
Inventory round for one Group = Number of antennas x (Inventory
time / antenna)
InventoryServer saves the inventory results of all the groups
into one TagBase list. This enables easier further use of the tag
data for the application developer. The tag data in the TagBase is
preserved there as long as the host application removes all defined
Once all the active antennas have performed the inventory, a
check-up will be performed to see if more than one antenna has read
the same tag. If a tag is read by two different antennas, the
antenna with the higher RSSI value is selected and the tag is saved
into the TagBase list.
If a tag is not in the list, it will be added and it will get its
first LocationHistory entry.
If the tag was already in the TagBase, "lastSeen" will be updated
with a timestamp and if the tag was read with a different antenna
compared to the previous read, a new ReaderID or AntennaID will be
added to the LocationHistory.
TagBase contains a LocationHistory list for each tag. This
enables tracking of each tag from one antenna to another. One line
contains the following information:
readerID - Reader ID
antennaID - Antenna ID (0-3)
eventTime - Timestamp
histEvent - Event 0=location change 1=seen 2=not
Every time the location of the tag changes (ReaderID / AntennaID
has changed), a new event/line is added. If a reader / antenna has
seen the same tag before only the eventTime timestamp gets
Host application will clear the LocationHistory list if needed. As
default the LocationHistory functionality is off.
Tag LocationHistory tracking using InventoryServerTest
1.1.4 EVENTS TO HOST APPLICATION
Following transactions cause the InventoryServer to transmit
events to the host application:
ReaderConnectedEvent - Reader is connected to
ReaderDisconnectedEvent - Connection to the reader is
InventoryDataEvent - An inventory has been completed in one
group. The parameters will tell that the inventory has been
performed in: "GroupID" on round: "RoundID". RoundID is basically a
serial number that grows by one each time all the active antennas
in the group have performed the inventory. On the basis of
the RoundID the application can identify just those tags out of the
TagBase that were counted at that specific inventory round.
ErrorEvent - A function cannot / has not been be
performed as planned. Log.txt also collects a log of the exception
FwUpdateStatusEvent - InventoryServer informs you of the
stage of a Firmware update process.
- Performing inventory using specified settings for each reader
- Collects inventory results to TagBase for further
- Automatic connection management. Connection management for
multiple USB devices and Client mode readers (Ethernet).
- Accurate location detection when multiple antennas reading same
- LocationHistory list for collecting antennaID, readerID and
timestamp to store information when tag has change location.
- Host application has full control over the readers and the
Inventory process. (start/stop)
- Firmware update remotely to connected readers.
- Shortens host app development time
- Asset tracking type of applications with accurate location
- OOS (Out-Of-Stock) applications
- Smart shelves
- Security Gate (EAS) applications
- Supply Management
InventoryServerTest Windows PC
The settings for the readers and the antennas can be configured
at the same time with the physical installation using the
InventoryServerTest software. The software can be installed into
Windows laptop PC and the connection to the readers can be made via
Ethernet (e.g. via WiFi) or USB. The settings can be saved into the
readers.xml file, which the InventoryServer application software
will use with all the readers connected to the system.
The software comes with a complete source code to help the
application developers to create similar functions in their own
- Sample programs
- Documents (InventoryServer.NET API)
For more information about InventoryServer or related issues,
contact Ari at firstname.lastname@example.org.