<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wiki.transcends.co/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.transcends.co/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bppause</id>
		<title>RifidiWiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.transcends.co/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bppause"/>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Special:Contributions/Bppause"/>
		<updated>2026-04-19T06:22:27Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.1</generator>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Management</id>
		<title>Edge Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Management"/>
				<updated>2021-06-03T19:15:27Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Starting in 3.1 Edge Management is now accessible though Restful Services (leveraging [http://restlet.com/ Restlet plugin]. Restlet allows all Rifidi Edge Management operations available through workbench to be accessible via Restful Services.Prior to Rifidi 3.1 Edge Management is available through RMI (currently used by Rifidi Workbench if looking for code examples). &lt;br /&gt;
&lt;br /&gt;
The types of operations available through Restful Services include:&lt;br /&gt;
*All &amp;quot;session&amp;quot; commands (for stopping and starting reader/sensor sessions)&lt;br /&gt;
*ExecuteCommand and deleteCommand  (for commands supported by a sensor such as a tag read)&lt;br /&gt;
*Readers (for getting a list of readers/sensors available on Edge Server instance)&lt;br /&gt;
*Commands (for issuing command line operations such as saving the Edge Server Configuration currently in memory)&lt;br /&gt;
*Get and Set Properties (for setting and getting sensor properties such as Setting the LLRP Reader Configuration dynamically)&lt;br /&gt;
*Create Reader (for creating a new reader connection)&lt;br /&gt;
*Managing Rifidi Applications (for stopping/starting, listing and deploying Rifidi Apps)&lt;br /&gt;
&lt;br /&gt;
Additional features can be found on [http://restlet.com/ Restlet User Guide ]&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
In rifidiserver.ini  - A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.port=8111&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.enabled=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source for Restful Rifidi Management Commands - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/&lt;br /&gt;
&lt;br /&gt;
=Configuration (HTTP over SSL) - Available as of version 3.1.1= &lt;br /&gt;
&lt;br /&gt;
A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SSL Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.port=8183&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.ssl.enabled=true&lt;br /&gt;
#Keystore Path&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepath=\config\serverX.jks&lt;br /&gt;
#Key store password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepassword=password&lt;br /&gt;
#Key Password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keypassword=password&lt;br /&gt;
#Key store Type&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystoretype=JKS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Note: Link to how to configure/setup certificates with REST - http://restlet.com/learn/guide/2.3/core/security/https&lt;br /&gt;
==REST HTTP over SSL Example Application==&lt;br /&gt;
link to https java client example - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge.rest/src/org/rifidi/edge/rest/test/HttpsTestClient.java&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user can add this jvm parameter to see detailed messages if getting any &lt;br /&gt;
trouble when running this example:&lt;br /&gt;
-Djavax.net.debug=all&lt;br /&gt;
&lt;br /&gt;
In order to successful get the https response from stand alone java &lt;br /&gt;
example, user must import the certificate into JVM:&lt;br /&gt;
&lt;br /&gt;
open command windows as administrator and execute keytool -import, like:&lt;br /&gt;
&lt;br /&gt;
keytool -import -alias localhost -keystore &amp;quot;C:\Program Files &lt;br /&gt;
(x86)\Java\jdk1.6.0_45\jre\lib\security\cacerts&amp;quot; -file &lt;br /&gt;
&amp;quot;D:\tmp\cert\localhost.cer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if requested, default password is: changeit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensure to place the generated JKS file in the Rifidi \config folder so the server can start via SSL and find the cert&lt;br /&gt;
&lt;br /&gt;
=Restlet Logging= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1. Add an entry to the rifidiserver.ini (if using windows; when using linux you add this JVM argument in the rifidi-server executable):&lt;br /&gt;
-Djava.util.logging.config.file=d:/myLogging.properties&lt;br /&gt;
&lt;br /&gt;
*2. Create logging properties file, for example like the below myLogging.properties&lt;br /&gt;
The entry in that file that determines where the log file will show up is the following: java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myLogging.properties&lt;br /&gt;
# ================================&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ==   Web Logging Properties   ==&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # ------------------&lt;br /&gt;
    # General properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # This defines a whitespace separated list of class names for handler classes to load and register as handlers on&lt;br /&gt;
    # the root Logger (the Logger named &amp;quot;&amp;quot;). Each class name must be for a Handler class which has a default constructor.&lt;br /&gt;
    # Note that these Handlers may be created lazily, when they are first used.&lt;br /&gt;
    handlers=java.util.logging.FileHandler&lt;br /&gt;
	# ------------------&lt;br /&gt;
    # Loggers properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
    .level=WARNING&lt;br /&gt;
    org.mortbay.level=WARNING&lt;br /&gt;
    org.restlet.level=INFO&lt;br /&gt;
    com.noelios.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    com.noelios.web.WebComponent.www.level=INFO&lt;br /&gt;
    com.noelios.web.WebComponent.www.handlers=com.noelios.restlet.util.AccessLogFileHandler&lt;br /&gt;
    com.noelios.web.WebComponent.www.useParentHandlers=false&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # ConsoleHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.INFO).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.formatter=&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.encoding=&lt;br /&gt;
	&lt;br /&gt;
	# ------------------------------&lt;br /&gt;
    # General FileHandler properties&lt;br /&gt;
    # ------------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # java.util.logging.FileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.FileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.FileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    java.util.logging.FileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    java.util.logging.FileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot;&lt;br /&gt;
    java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # java.util.logging.FileHandler.append=&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # LogFileHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.formatter=com.noelios.restlet.util.AccessLogFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot; .pattern=/home/prod/data/log/WebComponent-www-%u-%g.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # org.restlet.util.AccessLogFileHandler.append=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Tuning/Confguration (Jetty) as of Rifidi 3.4= &lt;br /&gt;
&lt;br /&gt;
As of Rifidi 3.4 Jetty was made the default HTTP container for Restlet to allow for extended performance and configuration of the REST interface.&lt;br /&gt;
&lt;br /&gt;
The parameters can for configured in the Rifidi Server (ini) configuration&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.minThreads=8	Thread pool minimum threads&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.maxThreads=200	Thread pool max threads&lt;br /&gt;
&lt;br /&gt;
Full list of Jetty parameters using the same naming convention can be found here  - http://restlet.com/technical-resources/restlet-framework/javadocs/snapshot/jse/ext/org/restlet/ext/jetty/JettyServerHelper.html&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
==Command Code Snippet - start session - example how to use Rifidi API in a Java App==&lt;br /&gt;
All Rifidi Management API Command Logic here - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/SensorManagerServiceRestletImpl.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
sensorManagerService.startSession((String) request&lt;br /&gt;
	.getAttributes().get(&amp;quot;readerID&amp;quot;), (String) request&lt;br /&gt;
		.getAttributes().get(&amp;quot;sessionID&amp;quot;));&lt;br /&gt;
	response.setEntity(self.generateReturnString(self&lt;br /&gt;
		.generateSuccessMessage()), MediaType.TEXT_XML);&lt;br /&gt;
} catch (Exception e) {&lt;br /&gt;
	response.setEntity(e.getMessage(), MediaType.TEXT_PLAIN);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Command Basic Flow Example==&lt;br /&gt;
#Create a Reader - http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
#Create a Session (on a reader/sensor)  - http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
#Create a Command (on a reader/sensor)) -/createcommand/{commandType}/{properties} &lt;br /&gt;
*Note: some readers do not require create/executing a command as there is only one command hence for convenience is part of the create session/start session  (Thinkify, CSL and Generic adapter (for handhelds/async push calls) are some examples of this)&lt;br /&gt;
#Set Command Properties - http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
#Execute Command (on a given reader/sensor and session) - http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1&lt;br /&gt;
#Start Session (to begin processing reads using associate command/reader/sensor configuration)  - http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
#Save Configuartion (optional -  to save/persist config in case of a server restart) - http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
=Command Example=&lt;br /&gt;
&lt;br /&gt;
Note: localhost can be substituted with IP address/Host name of Rifidi Edge Server. Port can be changed in Rifidi configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==commandtypes command example==&lt;br /&gt;
&lt;br /&gt;
*commandtypes - returns a list of available command types&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commandtypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commandtypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-ADD_ROSPEC-File&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader via an XML file. Any changes made to the reader are determined by the contents of the file. To generate xml code for the commands you want to submit, check out LLRP Commander here: http://www.fosstrak.org/llrp/index.html&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;ThingMagic-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the ThingMagic reader for its tags. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;ThingMagic&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Start&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Alien reader to send back tags using the autonomous mode. To monitor a read zone, configure an Alien autonomous reader to listen. Then submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader to collect tags. By default, this command will cause the LLRP reader to push back tag reads automatically. If you would rather use the Poll mode, you will need to use the LLRP Poll command. To use the LLRP Configure command, submit it for a one-time execution&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the LLRP reader to stop sending back tags. To use, supply the RO Spec that is currently executing on the reader, and submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Thingmagic6-Push&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Sets the Thingmagic to push tags back to the edge server&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Thingmagic6&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the Alien reader for its tag list. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the LLRP reader for its tags. For monitoring of the read zone, first use the LLRP Configure command to configure the LLRP reader for Poll Mode. Then submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Mask-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID With Mask command. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Alien reader to stop sending back tags in autonomous mode. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Read-Block-Data&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back memory bank tags using the Read Block Data commmand. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readertypes command example==&lt;br /&gt;
&lt;br /&gt;
*readertypes - returns a list of available reader/sensor types (such as LLRP, Alien, BarCode etc..)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readertypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readertypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Generic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;A generic Rifidi Adapter.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Opticon&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Adapter for the Opticon Barcode Sensor&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien-Autonomous&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien autonomous adapter is an endpoint to passively receive tag reads from an Alien reader operating in autonomous mode. You cannot send any commands on the alien autonomous session&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid2010&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thingmagic6&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thingmagic 6 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi LLRP adapter supports any reader that exposes a Low Level Reader Protocol (LLRP) interface. LLRP is a standard from EPCglobal.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid3014&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien adapter supports the Alien ALR protocol on the 9900, 9800, 8800 readers.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thinkify50&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thinkify TR50 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;ThingMagic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi ThingMagic adapater supports the ThingMagic RQL protocol on the Mercury 4 and Mercury 5 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader command example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader overriding default readerID command example==&lt;br /&gt;
&lt;br /&gt;
The reader id is important for applications' read zones to appropriate operate, and this id is used to link read zones with sensors. This command enables one to set the readerId versus the system generating one (default behavior).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: To override the default reader id, there must be included the property readerID, in order to assign a specific reader id and override the default. &lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletereader command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletereader/{readerID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid readerID: LLRP&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readers command example==&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readers&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
*readers - returns a list of readers/senors managed by the Edge Server&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readers  &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_2&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get reader properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{readerID} - returns the reader/sensor properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this, to get a reader properties:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;5084&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;192.168.1.48&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;DisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;null&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReaderConfigPath&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;config/SET_READER_CONFIG.llrp&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get command properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{commandID} - returns the command properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ROSpecID&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;AntennaIDs&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Duration&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1000&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;TriggerType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;PUSH&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set reader properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{readerID}/{properties}&amp;quot; - sets the reader/sensor properties&lt;br /&gt;
Note: if there is an existing session for updated reader properties to take effect the session will need to be deleted and recreated so the properties are moved to the session &lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/Alien_1/MaxNumConnectionAttempts=11;DisplayName=Alien_Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_1/IpAddress=127.0.0.15;Port=4567;att1=aa;att2=bbb;attt3=YY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: att1=aa|att2=bbb|attt3=YY&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set command properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{commandID}/{properties}&amp;quot; - sets the command properties&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=7500;cc=4;other=67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: cc=4|other=67&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==commands command example==&lt;br /&gt;
&lt;br /&gt;
*commands - returns a list of available commands&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commands&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commands&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commands&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;&lt;br /&gt;
         &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createcommand example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the command instance is created or the call fails therefore the rcommand instance is not created&lt;br /&gt;
&lt;br /&gt;
*createcomamnd/{commandType}/{properties} - creates a command to be executed on a reader session&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createcommand&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=5000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commandID&amp;gt;Alien_Poll_2&amp;lt;/commandID&amp;gt; Note: Added in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response error (if there is at least one non valid property, the command is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=4000;propX=123;prop2=AB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: propX=123|prop2=AB&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletecommand command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletecommand/{commandID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid commandID: LLRP_Configure&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createsession command example==&lt;br /&gt;
&lt;br /&gt;
*createsession/{readerID} - creates a session (with corresponding reader/sensor configuration) and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sessionID&amp;gt;1&amp;lt;/sessionID&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail -already a session for sensor id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
     java.lang.Exception: Reader Alien_1 already has a session.&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startsession command example==&lt;br /&gt;
&lt;br /&gt;
*startsession/{readerID}/{sessionID} - starts a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;startsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CONNECTING&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to start session, current state is CONNECTING  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readerstatus command example==&lt;br /&gt;
&lt;br /&gt;
*readerstatus/{readerID} - retuns teh status of a given reader/sensor&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readerstatus&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readerstatus/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensor&amp;gt;&lt;br /&gt;
      &amp;lt;serviceID&amp;gt;LLRP_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
      &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
   &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;sessions&amp;gt;&lt;br /&gt;
      &amp;lt;session&amp;gt;&lt;br /&gt;
         &amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;&lt;br /&gt;
         &amp;lt;status&amp;gt;PROCESSING&amp;lt;/status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;executingcommands&amp;gt;&lt;br /&gt;
            &amp;lt;executingcommand&amp;gt;&lt;br /&gt;
               &amp;lt;commandFactory&amp;gt;LLRP-Configure&amp;lt;/commandFactory&amp;gt;&lt;br /&gt;
              &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
              &amp;lt;interval&amp;gt;0&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;/executingcommand&amp;gt;&lt;br /&gt;
        &amp;lt;/executingcommands&amp;gt;&lt;br /&gt;
      &amp;lt;/session&amp;gt;&lt;br /&gt;
   &amp;lt;/sessions&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==stopsession command example==&lt;br /&gt;
&lt;br /&gt;
*stopsession/{readerID}/{sessionID} - stops a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;stopsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/stopsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CREATED&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to stop session, current state is CREATED  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==resetsession command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/resetsession/{readerID}/{sessionID}&lt;br /&gt;
&lt;br /&gt;
Used to stop and start an existing reader session&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/resetsession/LLRP_1/1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
==executecommand command example==&lt;br /&gt;
&lt;br /&gt;
*executecommand/{readerID}/{sessionID}/{commandID}/{repeatInterval} - Executes a command for a given session&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;executecommand&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/0 (for single shot - one time execution)&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletesession command example==&lt;br /&gt;
&lt;br /&gt;
*deletesession/{readerID}/{sessionID} - deletes a session and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;deletesession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletesession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==save command example==&lt;br /&gt;
&lt;br /&gt;
*save - Saves the current state of the Edge Server configuration (such as created readers/sensors, modified properties etc..&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;save&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ping - Used by failover feature==&lt;br /&gt;
*ping -  Returns a date/timestamp&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;ping&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/ping&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp&amp;gt;1414610247969&amp;lt;/timestamp&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==currenttags example (released in Rifidi 3.4)==&lt;br /&gt;
*currenttags/{readerID} -  Returns a list of tags on a given reader&lt;br /&gt;
&lt;br /&gt;
Note: timestamp, reader and RSSI added in 3.5.1&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;currenttags&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/currenttags/LLRP_1 &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;currenttags&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
   &amp;lt;/currenttags&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readermetadata - Used by Web Administration Dashboard for Dynamic Reader &amp;amp; Command Properties/Wizard (released in 3.2)==&lt;br /&gt;
*readermetadata-  Returns reader metadata&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readermetadata&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readermetadata&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;readers&amp;gt;&lt;br /&gt;
  &amp;lt;reader&amp;gt;&lt;br /&gt;
   &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;ReconnectionInterval&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Reconnection Interval&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;500&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;&lt;br /&gt;
     Upon connection failure, the time to wait between two connection attempts (ms)&lt;br /&gt;
     &amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;4.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Port&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Port&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;8090&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Port of the Reader&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;maxvalue&amp;gt;65535&amp;lt;/maxvalue&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;1.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thinkify RCS Command - Used for one time configuration of a Thinkify USB reader (Deprecated in 3.5.1)==&lt;br /&gt;
*rcs/{Thinkify Reader ID}/{sessionid}&lt;br /&gt;
&lt;br /&gt;
request (via HTTP Post/Get) &amp;quot;rcs&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/rcs/ThinkifyUSB_1/1&lt;br /&gt;
&lt;br /&gt;
==startbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/startbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==stopbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/stopbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to install a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==installbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/installbundle&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to start a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/installbundle&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==uninstallbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/uninstallbundle/{bundleID}&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to uninstall a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/uninstallbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==ss OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/ss&lt;br /&gt;
&lt;br /&gt;
Used to list the OSGI bundles&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/ss&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.osgi&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.weaving.hook&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;RESOLVED&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.simpleconfigurator&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;com.sun.mail.javax.mail&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set GPO Command Example (released in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*/setgpo/{readerID}/{sessionID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to set gpo&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/setgpo/LLRP_1/1/1,2,3&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flash GPO Command Example (released in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//flashgpo/{readerID}/{sessionID}/{ports}/{duration in seconds}&lt;br /&gt;
&lt;br /&gt;
Used to turn gpo on for a specified duration such as Flashing a light on for 4 seconds then turn it off again&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/flashgpo/LLRP_1/1/1,2,3/4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==stopapp command example==&lt;br /&gt;
&lt;br /&gt;
*//stopapp/{appID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a Rifidi App&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopapp/1&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startapp command example==&lt;br /&gt;
&lt;br /&gt;
*//startapp/{appID}&lt;br /&gt;
&lt;br /&gt;
Used to start a Rifidi App&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startapp/1&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==apps command example - List of Apps==&lt;br /&gt;
&lt;br /&gt;
*//apps&lt;br /&gt;
&lt;br /&gt;
Used to start a Rifidi App&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/apps&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
response&amp;gt;&lt;br /&gt;
&amp;lt;apps&amp;gt;&lt;br /&gt;
&amp;lt;app&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;AppService:ReadZones&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;0&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;status&amp;gt;STARTED&amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/app&amp;gt;&lt;br /&gt;
&amp;lt;app&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;AppService:ReadZones&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;1&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;status&amp;gt;STARTED&amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/app&amp;gt;&lt;br /&gt;
&amp;lt;app&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;AppService:SensorStatus&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;2&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;status&amp;gt;STARTED&amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/app&amp;gt;&lt;br /&gt;
&amp;lt;app&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;AppService:UniqueTagInterval&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;3&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;status&amp;gt;STARTED&amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/app&amp;gt;&lt;br /&gt;
&amp;lt;app&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;AppService:StableSet&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;4&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;status&amp;gt;STARTED&amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Management</id>
		<title>Edge Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Management"/>
				<updated>2021-06-03T19:14:09Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Starting in 3.1 Edge Management is now accessible though Restful Services (leveraging [http://restlet.com/ Restlet plugin]. Restlet allows all Rifidi Edge Management operations available through workbench to be accessible via Restful Services.Prior to Rifidi 3.1 Edge Management is available through RMI (currently used by Rifidi Workbench if looking for code examples). &lt;br /&gt;
&lt;br /&gt;
The types of operations available through Restful Services include:&lt;br /&gt;
*All &amp;quot;session&amp;quot; commands (for stopping and starting reader/sensor sessions)&lt;br /&gt;
*ExecuteCommand and deleteCommand  (for commands supported by a sensor such as a tag read)&lt;br /&gt;
*Readers (for getting a list of readers/sensors available on Edge Server instance)&lt;br /&gt;
*Commands (for issuing command line operations such as saving the Edge Server Configuration currently in memory)&lt;br /&gt;
*Get and Set Properties (for setting and getting sensor properties such as Setting the LLRP Reader Configuration dynamically)&lt;br /&gt;
*Create Reader (for creating a new reader connection)&lt;br /&gt;
*Managing Rifidi Applications (for stopping/starting, listing and deploying Rifidi Apps)&lt;br /&gt;
&lt;br /&gt;
Additional features can be found on [http://restlet.com/ Restlet User Guide ]&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
In rifidiserver.ini  - A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.port=8111&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.enabled=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source for Restful Rifidi Management Commands - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/&lt;br /&gt;
&lt;br /&gt;
=Configuration (HTTP over SSL) - Available as of version 3.1.1= &lt;br /&gt;
&lt;br /&gt;
A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SSL Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.port=8183&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.ssl.enabled=true&lt;br /&gt;
#Keystore Path&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepath=\config\serverX.jks&lt;br /&gt;
#Key store password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepassword=password&lt;br /&gt;
#Key Password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keypassword=password&lt;br /&gt;
#Key store Type&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystoretype=JKS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Note: Link to how to configure/setup certificates with REST - http://restlet.com/learn/guide/2.3/core/security/https&lt;br /&gt;
==REST HTTP over SSL Example Application==&lt;br /&gt;
link to https java client example - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge.rest/src/org/rifidi/edge/rest/test/HttpsTestClient.java&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user can add this jvm parameter to see detailed messages if getting any &lt;br /&gt;
trouble when running this example:&lt;br /&gt;
-Djavax.net.debug=all&lt;br /&gt;
&lt;br /&gt;
In order to successful get the https response from stand alone java &lt;br /&gt;
example, user must import the certificate into JVM:&lt;br /&gt;
&lt;br /&gt;
open command windows as administrator and execute keytool -import, like:&lt;br /&gt;
&lt;br /&gt;
keytool -import -alias localhost -keystore &amp;quot;C:\Program Files &lt;br /&gt;
(x86)\Java\jdk1.6.0_45\jre\lib\security\cacerts&amp;quot; -file &lt;br /&gt;
&amp;quot;D:\tmp\cert\localhost.cer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if requested, default password is: changeit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensure to place the generated JKS file in the Rifidi \config folder so the server can start via SSL and find the cert&lt;br /&gt;
&lt;br /&gt;
=Restlet Logging= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1. Add an entry to the rifidiserver.ini (if using windows; when using linux you add this JVM argument in the rifidi-server executable):&lt;br /&gt;
-Djava.util.logging.config.file=d:/myLogging.properties&lt;br /&gt;
&lt;br /&gt;
*2. Create logging properties file, for example like the below myLogging.properties&lt;br /&gt;
The entry in that file that determines where the log file will show up is the following: java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myLogging.properties&lt;br /&gt;
# ================================&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ==   Web Logging Properties   ==&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # ------------------&lt;br /&gt;
    # General properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # This defines a whitespace separated list of class names for handler classes to load and register as handlers on&lt;br /&gt;
    # the root Logger (the Logger named &amp;quot;&amp;quot;). Each class name must be for a Handler class which has a default constructor.&lt;br /&gt;
    # Note that these Handlers may be created lazily, when they are first used.&lt;br /&gt;
    handlers=java.util.logging.FileHandler&lt;br /&gt;
	# ------------------&lt;br /&gt;
    # Loggers properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
    .level=WARNING&lt;br /&gt;
    org.mortbay.level=WARNING&lt;br /&gt;
    org.restlet.level=INFO&lt;br /&gt;
    com.noelios.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    com.noelios.web.WebComponent.www.level=INFO&lt;br /&gt;
    com.noelios.web.WebComponent.www.handlers=com.noelios.restlet.util.AccessLogFileHandler&lt;br /&gt;
    com.noelios.web.WebComponent.www.useParentHandlers=false&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # ConsoleHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.INFO).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.formatter=&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.encoding=&lt;br /&gt;
	&lt;br /&gt;
	# ------------------------------&lt;br /&gt;
    # General FileHandler properties&lt;br /&gt;
    # ------------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # java.util.logging.FileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.FileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.FileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    java.util.logging.FileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    java.util.logging.FileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot;&lt;br /&gt;
    java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # java.util.logging.FileHandler.append=&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # LogFileHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.formatter=com.noelios.restlet.util.AccessLogFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot; .pattern=/home/prod/data/log/WebComponent-www-%u-%g.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # org.restlet.util.AccessLogFileHandler.append=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Tuning/Confguration (Jetty) as of Rifidi 3.4= &lt;br /&gt;
&lt;br /&gt;
As of Rifidi 3.4 Jetty was made the default HTTP container for Restlet to allow for extended performance and configuration of the REST interface.&lt;br /&gt;
&lt;br /&gt;
The parameters can for configured in the Rifidi Server (ini) configuration&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.minThreads=8	Thread pool minimum threads&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.maxThreads=200	Thread pool max threads&lt;br /&gt;
&lt;br /&gt;
Full list of Jetty parameters using the same naming convention can be found here  - http://restlet.com/technical-resources/restlet-framework/javadocs/snapshot/jse/ext/org/restlet/ext/jetty/JettyServerHelper.html&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
==Command Code Snippet - start session - example how to use Rifidi API in a Java App==&lt;br /&gt;
All Rifidi Management API Command Logic here - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/SensorManagerServiceRestletImpl.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
sensorManagerService.startSession((String) request&lt;br /&gt;
	.getAttributes().get(&amp;quot;readerID&amp;quot;), (String) request&lt;br /&gt;
		.getAttributes().get(&amp;quot;sessionID&amp;quot;));&lt;br /&gt;
	response.setEntity(self.generateReturnString(self&lt;br /&gt;
		.generateSuccessMessage()), MediaType.TEXT_XML);&lt;br /&gt;
} catch (Exception e) {&lt;br /&gt;
	response.setEntity(e.getMessage(), MediaType.TEXT_PLAIN);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Command Basic Flow Example==&lt;br /&gt;
#Create a Reader - http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
#Create a Session (on a reader/sensor)  - http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
#Create a Command (on a reader/sensor)) -/createcommand/{commandType}/{properties} &lt;br /&gt;
*Note: some readers do not require create/executing a command as there is only one command hence for convenience is part of the create session/start session  (Thinkify, CSL and Generic adapter (for handhelds/async push calls) are some examples of this)&lt;br /&gt;
#Set Command Properties - http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
#Execute Command (on a given reader/sensor and session) - http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1&lt;br /&gt;
#Start Session (to begin processing reads using associate command/reader/sensor configuration)  - http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
#Save Configuartion (optional -  to save/persist config in case of a server restart) - http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
=Command Example=&lt;br /&gt;
&lt;br /&gt;
Note: localhost can be substituted with IP address/Host name of Rifidi Edge Server. Port can be changed in Rifidi configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==commandtypes command example==&lt;br /&gt;
&lt;br /&gt;
*commandtypes - returns a list of available command types&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commandtypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commandtypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-ADD_ROSPEC-File&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader via an XML file. Any changes made to the reader are determined by the contents of the file. To generate xml code for the commands you want to submit, check out LLRP Commander here: http://www.fosstrak.org/llrp/index.html&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;ThingMagic-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the ThingMagic reader for its tags. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;ThingMagic&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Start&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Alien reader to send back tags using the autonomous mode. To monitor a read zone, configure an Alien autonomous reader to listen. Then submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader to collect tags. By default, this command will cause the LLRP reader to push back tag reads automatically. If you would rather use the Poll mode, you will need to use the LLRP Poll command. To use the LLRP Configure command, submit it for a one-time execution&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the LLRP reader to stop sending back tags. To use, supply the RO Spec that is currently executing on the reader, and submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Thingmagic6-Push&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Sets the Thingmagic to push tags back to the edge server&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Thingmagic6&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the Alien reader for its tag list. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the LLRP reader for its tags. For monitoring of the read zone, first use the LLRP Configure command to configure the LLRP reader for Poll Mode. Then submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Mask-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID With Mask command. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Alien reader to stop sending back tags in autonomous mode. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Read-Block-Data&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back memory bank tags using the Read Block Data commmand. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readertypes command example==&lt;br /&gt;
&lt;br /&gt;
*readertypes - returns a list of available reader/sensor types (such as LLRP, Alien, BarCode etc..)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readertypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readertypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Generic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;A generic Rifidi Adapter.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Opticon&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Adapter for the Opticon Barcode Sensor&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien-Autonomous&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien autonomous adapter is an endpoint to passively receive tag reads from an Alien reader operating in autonomous mode. You cannot send any commands on the alien autonomous session&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid2010&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thingmagic6&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thingmagic 6 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi LLRP adapter supports any reader that exposes a Low Level Reader Protocol (LLRP) interface. LLRP is a standard from EPCglobal.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid3014&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien adapter supports the Alien ALR protocol on the 9900, 9800, 8800 readers.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thinkify50&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thinkify TR50 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;ThingMagic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi ThingMagic adapater supports the ThingMagic RQL protocol on the Mercury 4 and Mercury 5 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader command example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader overriding default readerID command example==&lt;br /&gt;
&lt;br /&gt;
The reader id is important for applications' read zones to appropriate operate, and this id is used to link read zones with sensors. This command enables one to set the readerId versus the system generating one (default behavior).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: To override the default reader id, there must be included the property readerID, in order to assign a specific reader id and override the default. &lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletereader command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletereader/{readerID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid readerID: LLRP&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readers command example==&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readers&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
*readers - returns a list of readers/senors managed by the Edge Server&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readers  &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_2&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get reader properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{readerID} - returns the reader/sensor properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this, to get a reader properties:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;5084&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;192.168.1.48&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;DisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;null&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReaderConfigPath&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;config/SET_READER_CONFIG.llrp&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get command properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{commandID} - returns the command properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ROSpecID&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;AntennaIDs&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Duration&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1000&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;TriggerType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;PUSH&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set reader properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{readerID}/{properties}&amp;quot; - sets the reader/sensor properties&lt;br /&gt;
Note: if there is an existing session for updated reader properties to take effect the session will need to be deleted and recreated so the properties are moved to the session &lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/Alien_1/MaxNumConnectionAttempts=11;DisplayName=Alien_Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_1/IpAddress=127.0.0.15;Port=4567;att1=aa;att2=bbb;attt3=YY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: att1=aa|att2=bbb|attt3=YY&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set command properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{commandID}/{properties}&amp;quot; - sets the command properties&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=7500;cc=4;other=67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: cc=4|other=67&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==commands command example==&lt;br /&gt;
&lt;br /&gt;
*commands - returns a list of available commands&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commands&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commands&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commands&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;&lt;br /&gt;
         &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createcommand example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the command instance is created or the call fails therefore the rcommand instance is not created&lt;br /&gt;
&lt;br /&gt;
*createcomamnd/{commandType}/{properties} - creates a command to be executed on a reader session&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createcommand&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=5000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commandID&amp;gt;Alien_Poll_2&amp;lt;/commandID&amp;gt; Note: Added in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response error (if there is at least one non valid property, the command is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=4000;propX=123;prop2=AB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: propX=123|prop2=AB&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletecommand command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletecommand/{commandID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid commandID: LLRP_Configure&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createsession command example==&lt;br /&gt;
&lt;br /&gt;
*createsession/{readerID} - creates a session (with corresponding reader/sensor configuration) and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sessionID&amp;gt;1&amp;lt;/sessionID&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail -already a session for sensor id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
     java.lang.Exception: Reader Alien_1 already has a session.&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startsession command example==&lt;br /&gt;
&lt;br /&gt;
*startsession/{readerID}/{sessionID} - starts a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;startsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CONNECTING&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to start session, current state is CONNECTING  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readerstatus command example==&lt;br /&gt;
&lt;br /&gt;
*readerstatus/{readerID} - retuns teh status of a given reader/sensor&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readerstatus&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readerstatus/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensor&amp;gt;&lt;br /&gt;
      &amp;lt;serviceID&amp;gt;LLRP_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
      &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
   &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;sessions&amp;gt;&lt;br /&gt;
      &amp;lt;session&amp;gt;&lt;br /&gt;
         &amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;&lt;br /&gt;
         &amp;lt;status&amp;gt;PROCESSING&amp;lt;/status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;executingcommands&amp;gt;&lt;br /&gt;
            &amp;lt;executingcommand&amp;gt;&lt;br /&gt;
               &amp;lt;commandFactory&amp;gt;LLRP-Configure&amp;lt;/commandFactory&amp;gt;&lt;br /&gt;
              &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
              &amp;lt;interval&amp;gt;0&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;/executingcommand&amp;gt;&lt;br /&gt;
        &amp;lt;/executingcommands&amp;gt;&lt;br /&gt;
      &amp;lt;/session&amp;gt;&lt;br /&gt;
   &amp;lt;/sessions&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==stopsession command example==&lt;br /&gt;
&lt;br /&gt;
*stopsession/{readerID}/{sessionID} - stops a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;stopsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/stopsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CREATED&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to stop session, current state is CREATED  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==resetsession command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/resetsession/{readerID}/{sessionID}&lt;br /&gt;
&lt;br /&gt;
Used to stop and start an existing reader session&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/resetsession/LLRP_1/1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
==executecommand command example==&lt;br /&gt;
&lt;br /&gt;
*executecommand/{readerID}/{sessionID}/{commandID}/{repeatInterval} - Executes a command for a given session&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;executecommand&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/0 (for single shot - one time execution)&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletesession command example==&lt;br /&gt;
&lt;br /&gt;
*deletesession/{readerID}/{sessionID} - deletes a session and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;deletesession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletesession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==save command example==&lt;br /&gt;
&lt;br /&gt;
*save - Saves the current state of the Edge Server configuration (such as created readers/sensors, modified properties etc..&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;save&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ping - Used by failover feature==&lt;br /&gt;
*ping -  Returns a date/timestamp&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;ping&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/ping&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp&amp;gt;1414610247969&amp;lt;/timestamp&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==currenttags example (released in Rifidi 3.4)==&lt;br /&gt;
*currenttags/{readerID} -  Returns a list of tags on a given reader&lt;br /&gt;
&lt;br /&gt;
Note: timestamp, reader and RSSI added in 3.5.1&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;currenttags&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/currenttags/LLRP_1 &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;currenttags&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
   &amp;lt;/currenttags&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readermetadata - Used by Web Administration Dashboard for Dynamic Reader &amp;amp; Command Properties/Wizard (released in 3.2)==&lt;br /&gt;
*readermetadata-  Returns reader metadata&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readermetadata&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readermetadata&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;readers&amp;gt;&lt;br /&gt;
  &amp;lt;reader&amp;gt;&lt;br /&gt;
   &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;ReconnectionInterval&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Reconnection Interval&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;500&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;&lt;br /&gt;
     Upon connection failure, the time to wait between two connection attempts (ms)&lt;br /&gt;
     &amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;4.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Port&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Port&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;8090&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Port of the Reader&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;maxvalue&amp;gt;65535&amp;lt;/maxvalue&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;1.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thinkify RCS Command - Used for one time configuration of a Thinkify USB reader (Deprecated in 3.5.1)==&lt;br /&gt;
*rcs/{Thinkify Reader ID}/{sessionid}&lt;br /&gt;
&lt;br /&gt;
request (via HTTP Post/Get) &amp;quot;rcs&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/rcs/ThinkifyUSB_1/1&lt;br /&gt;
&lt;br /&gt;
==startbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/startbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==stopbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/stopbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to install a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==installbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/installbundle&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to start a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/installbundle&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==uninstallbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/uninstallbundle/{bundleID}&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to uninstall a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/uninstallbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==ss OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/ss&lt;br /&gt;
&lt;br /&gt;
Used to list the OSGI bundles&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/ss&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.osgi&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.weaving.hook&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;RESOLVED&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.simpleconfigurator&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;com.sun.mail.javax.mail&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set GPO Command Example (released in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*/setgpo/{readerID}/{sessionID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to set gpo&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/setgpo/LLRP_1/1/1,2,3&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flash GPO Command Example (released in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//flashgpo/{readerID}/{sessionID}/{ports}/{duration in seconds}&lt;br /&gt;
&lt;br /&gt;
Used to turn gpo on for a specified duration such as Flashing a light on for 4 seconds then turn it off again&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/flashgpo/LLRP_1/1/1,2,3/4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==stopapp==&lt;br /&gt;
&lt;br /&gt;
*//stopapp/{appID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a Rifidi App&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopapp/1&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startapp==&lt;br /&gt;
&lt;br /&gt;
*//startapp/{appID}&lt;br /&gt;
&lt;br /&gt;
Used to start a Rifidi App&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startapp/1&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==apps - List of Apps==&lt;br /&gt;
&lt;br /&gt;
*//apps&lt;br /&gt;
&lt;br /&gt;
Used to start a Rifidi App&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/apps&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
response&amp;gt;&lt;br /&gt;
&amp;lt;apps&amp;gt;&lt;br /&gt;
&amp;lt;app&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;AppService:ReadZones&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;0&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;status&amp;gt;STARTED&amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/app&amp;gt;&lt;br /&gt;
&amp;lt;app&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;AppService:ReadZones&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;1&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;status&amp;gt;STARTED&amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/app&amp;gt;&lt;br /&gt;
&amp;lt;app&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;AppService:SensorStatus&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;2&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;status&amp;gt;STARTED&amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/app&amp;gt;&lt;br /&gt;
&amp;lt;app&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;AppService:UniqueTagInterval&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;3&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;status&amp;gt;STARTED&amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/app&amp;gt;&lt;br /&gt;
&amp;lt;app&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;AppService:StableSet&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;4&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;status&amp;gt;STARTED&amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Management</id>
		<title>Edge Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Management"/>
				<updated>2021-06-03T19:13:32Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Starting in 3.1 Edge Management is now accessible though Restful Services (leveraging [http://restlet.com/ Restlet plugin]. Restlet allows all Rifidi Edge Management operations available through workbench to be accessible via Restful Services.Prior to Rifidi 3.1 Edge Management is available through RMI (currently used by Rifidi Workbench if looking for code examples). &lt;br /&gt;
&lt;br /&gt;
The types of operations available through Restful Services include:&lt;br /&gt;
*All &amp;quot;session&amp;quot; commands (for stopping and starting reader/sensor sessions)&lt;br /&gt;
*ExecuteCommand and deleteCommand  (for commands supported by a sensor such as a tag read)&lt;br /&gt;
*Readers (for getting a list of readers/sensors available on Edge Server instance)&lt;br /&gt;
*Commands (for issuing command line operations such as saving the Edge Server Configuration currently in memory)&lt;br /&gt;
*Get and Set Properties (for setting and getting sensor properties such as Setting the LLRP Reader Configuration dynamically)&lt;br /&gt;
*Create Reader (for creating a new reader connection)&lt;br /&gt;
*Managing Rifidi Applications (for stopping/starting, listing and deploying Rifidi Apps)&lt;br /&gt;
&lt;br /&gt;
Additional features can be found on [http://restlet.com/ Restlet User Guide ]&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
In rifidiserver.ini  - A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.port=8111&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.enabled=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source for Restful Rifidi Management Commands - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/&lt;br /&gt;
&lt;br /&gt;
=Configuration (HTTP over SSL) - Available as of version 3.1.1= &lt;br /&gt;
&lt;br /&gt;
A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SSL Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.port=8183&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.ssl.enabled=true&lt;br /&gt;
#Keystore Path&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepath=\config\serverX.jks&lt;br /&gt;
#Key store password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepassword=password&lt;br /&gt;
#Key Password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keypassword=password&lt;br /&gt;
#Key store Type&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystoretype=JKS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Note: Link to how to configure/setup certificates with REST - http://restlet.com/learn/guide/2.3/core/security/https&lt;br /&gt;
==REST HTTP over SSL Example Application==&lt;br /&gt;
link to https java client example - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge.rest/src/org/rifidi/edge/rest/test/HttpsTestClient.java&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user can add this jvm parameter to see detailed messages if getting any &lt;br /&gt;
trouble when running this example:&lt;br /&gt;
-Djavax.net.debug=all&lt;br /&gt;
&lt;br /&gt;
In order to successful get the https response from stand alone java &lt;br /&gt;
example, user must import the certificate into JVM:&lt;br /&gt;
&lt;br /&gt;
open command windows as administrator and execute keytool -import, like:&lt;br /&gt;
&lt;br /&gt;
keytool -import -alias localhost -keystore &amp;quot;C:\Program Files &lt;br /&gt;
(x86)\Java\jdk1.6.0_45\jre\lib\security\cacerts&amp;quot; -file &lt;br /&gt;
&amp;quot;D:\tmp\cert\localhost.cer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if requested, default password is: changeit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensure to place the generated JKS file in the Rifidi \config folder so the server can start via SSL and find the cert&lt;br /&gt;
&lt;br /&gt;
=Restlet Logging= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1. Add an entry to the rifidiserver.ini (if using windows; when using linux you add this JVM argument in the rifidi-server executable):&lt;br /&gt;
-Djava.util.logging.config.file=d:/myLogging.properties&lt;br /&gt;
&lt;br /&gt;
*2. Create logging properties file, for example like the below myLogging.properties&lt;br /&gt;
The entry in that file that determines where the log file will show up is the following: java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myLogging.properties&lt;br /&gt;
# ================================&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ==   Web Logging Properties   ==&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # ------------------&lt;br /&gt;
    # General properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # This defines a whitespace separated list of class names for handler classes to load and register as handlers on&lt;br /&gt;
    # the root Logger (the Logger named &amp;quot;&amp;quot;). Each class name must be for a Handler class which has a default constructor.&lt;br /&gt;
    # Note that these Handlers may be created lazily, when they are first used.&lt;br /&gt;
    handlers=java.util.logging.FileHandler&lt;br /&gt;
	# ------------------&lt;br /&gt;
    # Loggers properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
    .level=WARNING&lt;br /&gt;
    org.mortbay.level=WARNING&lt;br /&gt;
    org.restlet.level=INFO&lt;br /&gt;
    com.noelios.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    com.noelios.web.WebComponent.www.level=INFO&lt;br /&gt;
    com.noelios.web.WebComponent.www.handlers=com.noelios.restlet.util.AccessLogFileHandler&lt;br /&gt;
    com.noelios.web.WebComponent.www.useParentHandlers=false&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # ConsoleHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.INFO).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.formatter=&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.encoding=&lt;br /&gt;
	&lt;br /&gt;
	# ------------------------------&lt;br /&gt;
    # General FileHandler properties&lt;br /&gt;
    # ------------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # java.util.logging.FileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.FileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.FileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    java.util.logging.FileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    java.util.logging.FileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot;&lt;br /&gt;
    java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # java.util.logging.FileHandler.append=&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # LogFileHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.formatter=com.noelios.restlet.util.AccessLogFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot; .pattern=/home/prod/data/log/WebComponent-www-%u-%g.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # org.restlet.util.AccessLogFileHandler.append=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Tuning/Confguration (Jetty) as of Rifidi 3.4= &lt;br /&gt;
&lt;br /&gt;
As of Rifidi 3.4 Jetty was made the default HTTP container for Restlet to allow for extended performance and configuration of the REST interface.&lt;br /&gt;
&lt;br /&gt;
The parameters can for configured in the Rifidi Server (ini) configuration&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.minThreads=8	Thread pool minimum threads&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.maxThreads=200	Thread pool max threads&lt;br /&gt;
&lt;br /&gt;
Full list of Jetty parameters using the same naming convention can be found here  - http://restlet.com/technical-resources/restlet-framework/javadocs/snapshot/jse/ext/org/restlet/ext/jetty/JettyServerHelper.html&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
==Command Code Snippet - start session - example how to use Rifidi API in a Java App==&lt;br /&gt;
All Rifidi Management API Command Logic here - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/SensorManagerServiceRestletImpl.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
sensorManagerService.startSession((String) request&lt;br /&gt;
	.getAttributes().get(&amp;quot;readerID&amp;quot;), (String) request&lt;br /&gt;
		.getAttributes().get(&amp;quot;sessionID&amp;quot;));&lt;br /&gt;
	response.setEntity(self.generateReturnString(self&lt;br /&gt;
		.generateSuccessMessage()), MediaType.TEXT_XML);&lt;br /&gt;
} catch (Exception e) {&lt;br /&gt;
	response.setEntity(e.getMessage(), MediaType.TEXT_PLAIN);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Command Basic Flow Example==&lt;br /&gt;
#Create a Reader - http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
#Create a Session (on a reader/sensor)  - http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
#Create a Command (on a reader/sensor)) -/createcommand/{commandType}/{properties} &lt;br /&gt;
*Note: some readers do not require create/executing a command as there is only one command hence for convenience is part of the create session/start session  (Thinkify, CSL and Generic adapter (for handhelds/async push calls) are some examples of this)&lt;br /&gt;
#Set Command Properties - http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
#Execute Command (on a given reader/sensor and session) - http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1&lt;br /&gt;
#Start Session (to begin processing reads using associate command/reader/sensor configuration)  - http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
#Save Configuartion (optional -  to save/persist config in case of a server restart) - http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
=Command Example=&lt;br /&gt;
&lt;br /&gt;
Note: localhost can be substituted with IP address/Host name of Rifidi Edge Server. Port can be changed in Rifidi configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==commandtypes command example==&lt;br /&gt;
&lt;br /&gt;
*commandtypes - returns a list of available command types&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commandtypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commandtypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-ADD_ROSPEC-File&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader via an XML file. Any changes made to the reader are determined by the contents of the file. To generate xml code for the commands you want to submit, check out LLRP Commander here: http://www.fosstrak.org/llrp/index.html&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;ThingMagic-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the ThingMagic reader for its tags. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;ThingMagic&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Start&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Alien reader to send back tags using the autonomous mode. To monitor a read zone, configure an Alien autonomous reader to listen. Then submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader to collect tags. By default, this command will cause the LLRP reader to push back tag reads automatically. If you would rather use the Poll mode, you will need to use the LLRP Poll command. To use the LLRP Configure command, submit it for a one-time execution&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the LLRP reader to stop sending back tags. To use, supply the RO Spec that is currently executing on the reader, and submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Thingmagic6-Push&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Sets the Thingmagic to push tags back to the edge server&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Thingmagic6&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the Alien reader for its tag list. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the LLRP reader for its tags. For monitoring of the read zone, first use the LLRP Configure command to configure the LLRP reader for Poll Mode. Then submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Mask-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID With Mask command. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Alien reader to stop sending back tags in autonomous mode. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Read-Block-Data&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back memory bank tags using the Read Block Data commmand. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readertypes command example==&lt;br /&gt;
&lt;br /&gt;
*readertypes - returns a list of available reader/sensor types (such as LLRP, Alien, BarCode etc..)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readertypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readertypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Generic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;A generic Rifidi Adapter.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Opticon&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Adapter for the Opticon Barcode Sensor&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien-Autonomous&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien autonomous adapter is an endpoint to passively receive tag reads from an Alien reader operating in autonomous mode. You cannot send any commands on the alien autonomous session&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid2010&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thingmagic6&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thingmagic 6 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi LLRP adapter supports any reader that exposes a Low Level Reader Protocol (LLRP) interface. LLRP is a standard from EPCglobal.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid3014&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien adapter supports the Alien ALR protocol on the 9900, 9800, 8800 readers.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thinkify50&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thinkify TR50 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;ThingMagic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi ThingMagic adapater supports the ThingMagic RQL protocol on the Mercury 4 and Mercury 5 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader command example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader overriding default readerID command example==&lt;br /&gt;
&lt;br /&gt;
The reader id is important for applications' read zones to appropriate operate, and this id is used to link read zones with sensors. This command enables one to set the readerId versus the system generating one (default behavior).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: To override the default reader id, there must be included the property readerID, in order to assign a specific reader id and override the default. &lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletereader command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletereader/{readerID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid readerID: LLRP&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readers command example==&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readers&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
*readers - returns a list of readers/senors managed by the Edge Server&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readers  &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_2&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get reader properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{readerID} - returns the reader/sensor properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this, to get a reader properties:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;5084&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;192.168.1.48&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;DisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;null&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReaderConfigPath&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;config/SET_READER_CONFIG.llrp&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get command properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{commandID} - returns the command properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ROSpecID&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;AntennaIDs&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Duration&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1000&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;TriggerType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;PUSH&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set reader properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{readerID}/{properties}&amp;quot; - sets the reader/sensor properties&lt;br /&gt;
Note: if there is an existing session for updated reader properties to take effect the session will need to be deleted and recreated so the properties are moved to the session &lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/Alien_1/MaxNumConnectionAttempts=11;DisplayName=Alien_Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_1/IpAddress=127.0.0.15;Port=4567;att1=aa;att2=bbb;attt3=YY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: att1=aa|att2=bbb|attt3=YY&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set command properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{commandID}/{properties}&amp;quot; - sets the command properties&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=7500;cc=4;other=67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: cc=4|other=67&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==commands command example==&lt;br /&gt;
&lt;br /&gt;
*commands - returns a list of available commands&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commands&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commands&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commands&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;&lt;br /&gt;
         &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createcommand example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the command instance is created or the call fails therefore the rcommand instance is not created&lt;br /&gt;
&lt;br /&gt;
*createcomamnd/{commandType}/{properties} - creates a command to be executed on a reader session&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createcommand&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=5000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commandID&amp;gt;Alien_Poll_2&amp;lt;/commandID&amp;gt; Note: Added in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response error (if there is at least one non valid property, the command is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=4000;propX=123;prop2=AB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: propX=123|prop2=AB&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletecommand command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletecommand/{commandID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid commandID: LLRP_Configure&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createsession command example==&lt;br /&gt;
&lt;br /&gt;
*createsession/{readerID} - creates a session (with corresponding reader/sensor configuration) and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sessionID&amp;gt;1&amp;lt;/sessionID&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail -already a session for sensor id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
     java.lang.Exception: Reader Alien_1 already has a session.&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startsession command example==&lt;br /&gt;
&lt;br /&gt;
*startsession/{readerID}/{sessionID} - starts a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;startsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CONNECTING&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to start session, current state is CONNECTING  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readerstatus command example==&lt;br /&gt;
&lt;br /&gt;
*readerstatus/{readerID} - retuns teh status of a given reader/sensor&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readerstatus&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readerstatus/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensor&amp;gt;&lt;br /&gt;
      &amp;lt;serviceID&amp;gt;LLRP_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
      &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
   &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;sessions&amp;gt;&lt;br /&gt;
      &amp;lt;session&amp;gt;&lt;br /&gt;
         &amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;&lt;br /&gt;
         &amp;lt;status&amp;gt;PROCESSING&amp;lt;/status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;executingcommands&amp;gt;&lt;br /&gt;
            &amp;lt;executingcommand&amp;gt;&lt;br /&gt;
               &amp;lt;commandFactory&amp;gt;LLRP-Configure&amp;lt;/commandFactory&amp;gt;&lt;br /&gt;
              &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
              &amp;lt;interval&amp;gt;0&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;/executingcommand&amp;gt;&lt;br /&gt;
        &amp;lt;/executingcommands&amp;gt;&lt;br /&gt;
      &amp;lt;/session&amp;gt;&lt;br /&gt;
   &amp;lt;/sessions&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==stopsession command example==&lt;br /&gt;
&lt;br /&gt;
*stopsession/{readerID}/{sessionID} - stops a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;stopsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/stopsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CREATED&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to stop session, current state is CREATED  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==resetsession command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/resetsession/{readerID}/{sessionID}&lt;br /&gt;
&lt;br /&gt;
Used to stop and start an existing reader session&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/resetsession/LLRP_1/1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
==executecommand command example==&lt;br /&gt;
&lt;br /&gt;
*executecommand/{readerID}/{sessionID}/{commandID}/{repeatInterval} - Executes a command for a given session&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;executecommand&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/0 (for single shot - one time execution)&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletesession command example==&lt;br /&gt;
&lt;br /&gt;
*deletesession/{readerID}/{sessionID} - deletes a session and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;deletesession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletesession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==save command example==&lt;br /&gt;
&lt;br /&gt;
*save - Saves the current state of the Edge Server configuration (such as created readers/sensors, modified properties etc..&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;save&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ping - Used by failover feature==&lt;br /&gt;
*ping -  Returns a date/timestamp&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;ping&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/ping&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp&amp;gt;1414610247969&amp;lt;/timestamp&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==currenttags example (released in Rifidi 3.4)==&lt;br /&gt;
*currenttags/{readerID} -  Returns a list of tags on a given reader&lt;br /&gt;
&lt;br /&gt;
Note: timestamp, reader and RSSI added in 3.5.1&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;currenttags&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/currenttags/LLRP_1 &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;currenttags&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
   &amp;lt;/currenttags&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readermetadata - Used by Web Administration Dashboard for Dynamic Reader &amp;amp; Command Properties/Wizard (released in 3.2)==&lt;br /&gt;
*readermetadata-  Returns reader metadata&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readermetadata&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readermetadata&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;readers&amp;gt;&lt;br /&gt;
  &amp;lt;reader&amp;gt;&lt;br /&gt;
   &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;ReconnectionInterval&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Reconnection Interval&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;500&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;&lt;br /&gt;
     Upon connection failure, the time to wait between two connection attempts (ms)&lt;br /&gt;
     &amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;4.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Port&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Port&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;8090&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Port of the Reader&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;maxvalue&amp;gt;65535&amp;lt;/maxvalue&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;1.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thinkify RCS Command - Used for one time configuration of a Thinkify USB reader (Deprecated in 3.5.1)==&lt;br /&gt;
*rcs/{Thinkify Reader ID}/{sessionid}&lt;br /&gt;
&lt;br /&gt;
request (via HTTP Post/Get) &amp;quot;rcs&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/rcs/ThinkifyUSB_1/1&lt;br /&gt;
&lt;br /&gt;
==startbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/startbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==stopbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/stopbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to install a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==installbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/installbundle&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to start a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/installbundle&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==uninstallbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/uninstallbundle/{bundleID}&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to uninstall a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/uninstallbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==ss OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/ss&lt;br /&gt;
&lt;br /&gt;
Used to list the OSGI bundles&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/ss&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.osgi&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.weaving.hook&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;RESOLVED&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.simpleconfigurator&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;com.sun.mail.javax.mail&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set GPO Command Example (released in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*/setgpo/{readerID}/{sessionID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to set gpo&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/setgpo/LLRP_1/1/1,2,3&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flash GPO Command Example (released in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//flashgpo/{readerID}/{sessionID}/{ports}/{duration in seconds}&lt;br /&gt;
&lt;br /&gt;
Used to turn gpo on for a specified duration such as Flashing a light on for 4 seconds then turn it off again&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/flashgpo/LLRP_1/1/1,2,3/4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==stopapp==&lt;br /&gt;
&lt;br /&gt;
*//stopapp/{appID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a Rifidi App&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopapp/1&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startapp==&lt;br /&gt;
&lt;br /&gt;
*//startapp/{appID}&lt;br /&gt;
&lt;br /&gt;
Used to start a Rifidi App&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startapp/1&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List Rifidi Apps==&lt;br /&gt;
&lt;br /&gt;
*//apps&lt;br /&gt;
&lt;br /&gt;
Used to start a Rifidi App&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/apps&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
response&amp;gt;&lt;br /&gt;
&amp;lt;apps&amp;gt;&lt;br /&gt;
&amp;lt;app&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;AppService:ReadZones&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;0&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;status&amp;gt;STARTED&amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/app&amp;gt;&lt;br /&gt;
&amp;lt;app&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;AppService:ReadZones&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;1&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;status&amp;gt;STARTED&amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/app&amp;gt;&lt;br /&gt;
&amp;lt;app&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;AppService:SensorStatus&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;2&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;status&amp;gt;STARTED&amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/app&amp;gt;&lt;br /&gt;
&amp;lt;app&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;AppService:UniqueTagInterval&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;3&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;status&amp;gt;STARTED&amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/app&amp;gt;&lt;br /&gt;
&amp;lt;app&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;AppService:StableSet&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;4&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;status&amp;gt;STARTED&amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Management</id>
		<title>Edge Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Management"/>
				<updated>2021-06-03T19:12:39Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Starting in 3.1 Edge Management is now accessible though Restful Services (leveraging [http://restlet.com/ Restlet plugin]. Restlet allows all Rifidi Edge Management operations available through workbench to be accessible via Restful Services.Prior to Rifidi 3.1 Edge Management is available through RMI (currently used by Rifidi Workbench if looking for code examples). &lt;br /&gt;
&lt;br /&gt;
The types of operations available through Restful Services include:&lt;br /&gt;
*All &amp;quot;session&amp;quot; commands (for stopping and starting reader/sensor sessions)&lt;br /&gt;
*ExecuteCommand and deleteCommand  (for commands supported by a sensor such as a tag read)&lt;br /&gt;
*Readers (for getting a list of readers/sensors available on Edge Server instance)&lt;br /&gt;
*Commands (for issuing command line operations such as saving the Edge Server Configuration currently in memory)&lt;br /&gt;
*Get and Set Properties (for setting and getting sensor properties such as Setting the LLRP Reader Configuration dynamically)&lt;br /&gt;
*Create Reader (for creating a new reader connection)&lt;br /&gt;
*Managing Rifidi Applications (for stopping/starting, listing and deploying Rifidi Apps)&lt;br /&gt;
&lt;br /&gt;
Additional features can be found on [http://restlet.com/ Restlet User Guide ]&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
In rifidiserver.ini  - A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.port=8111&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.enabled=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source for Restful Rifidi Management Commands - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/&lt;br /&gt;
&lt;br /&gt;
=Configuration (HTTP over SSL) - Available as of version 3.1.1= &lt;br /&gt;
&lt;br /&gt;
A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SSL Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.port=8183&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.ssl.enabled=true&lt;br /&gt;
#Keystore Path&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepath=\config\serverX.jks&lt;br /&gt;
#Key store password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepassword=password&lt;br /&gt;
#Key Password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keypassword=password&lt;br /&gt;
#Key store Type&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystoretype=JKS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Note: Link to how to configure/setup certificates with REST - http://restlet.com/learn/guide/2.3/core/security/https&lt;br /&gt;
==REST HTTP over SSL Example Application==&lt;br /&gt;
link to https java client example - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge.rest/src/org/rifidi/edge/rest/test/HttpsTestClient.java&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user can add this jvm parameter to see detailed messages if getting any &lt;br /&gt;
trouble when running this example:&lt;br /&gt;
-Djavax.net.debug=all&lt;br /&gt;
&lt;br /&gt;
In order to successful get the https response from stand alone java &lt;br /&gt;
example, user must import the certificate into JVM:&lt;br /&gt;
&lt;br /&gt;
open command windows as administrator and execute keytool -import, like:&lt;br /&gt;
&lt;br /&gt;
keytool -import -alias localhost -keystore &amp;quot;C:\Program Files &lt;br /&gt;
(x86)\Java\jdk1.6.0_45\jre\lib\security\cacerts&amp;quot; -file &lt;br /&gt;
&amp;quot;D:\tmp\cert\localhost.cer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if requested, default password is: changeit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensure to place the generated JKS file in the Rifidi \config folder so the server can start via SSL and find the cert&lt;br /&gt;
&lt;br /&gt;
=Restlet Logging= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1. Add an entry to the rifidiserver.ini (if using windows; when using linux you add this JVM argument in the rifidi-server executable):&lt;br /&gt;
-Djava.util.logging.config.file=d:/myLogging.properties&lt;br /&gt;
&lt;br /&gt;
*2. Create logging properties file, for example like the below myLogging.properties&lt;br /&gt;
The entry in that file that determines where the log file will show up is the following: java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myLogging.properties&lt;br /&gt;
# ================================&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ==   Web Logging Properties   ==&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # ------------------&lt;br /&gt;
    # General properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # This defines a whitespace separated list of class names for handler classes to load and register as handlers on&lt;br /&gt;
    # the root Logger (the Logger named &amp;quot;&amp;quot;). Each class name must be for a Handler class which has a default constructor.&lt;br /&gt;
    # Note that these Handlers may be created lazily, when they are first used.&lt;br /&gt;
    handlers=java.util.logging.FileHandler&lt;br /&gt;
	# ------------------&lt;br /&gt;
    # Loggers properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
    .level=WARNING&lt;br /&gt;
    org.mortbay.level=WARNING&lt;br /&gt;
    org.restlet.level=INFO&lt;br /&gt;
    com.noelios.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    com.noelios.web.WebComponent.www.level=INFO&lt;br /&gt;
    com.noelios.web.WebComponent.www.handlers=com.noelios.restlet.util.AccessLogFileHandler&lt;br /&gt;
    com.noelios.web.WebComponent.www.useParentHandlers=false&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # ConsoleHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.INFO).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.formatter=&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.encoding=&lt;br /&gt;
	&lt;br /&gt;
	# ------------------------------&lt;br /&gt;
    # General FileHandler properties&lt;br /&gt;
    # ------------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # java.util.logging.FileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.FileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.FileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    java.util.logging.FileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    java.util.logging.FileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot;&lt;br /&gt;
    java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # java.util.logging.FileHandler.append=&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # LogFileHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.formatter=com.noelios.restlet.util.AccessLogFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot; .pattern=/home/prod/data/log/WebComponent-www-%u-%g.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # org.restlet.util.AccessLogFileHandler.append=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Tuning/Confguration (Jetty) as of Rifidi 3.4= &lt;br /&gt;
&lt;br /&gt;
As of Rifidi 3.4 Jetty was made the default HTTP container for Restlet to allow for extended performance and configuration of the REST interface.&lt;br /&gt;
&lt;br /&gt;
The parameters can for configured in the Rifidi Server (ini) configuration&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.minThreads=8	Thread pool minimum threads&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.maxThreads=200	Thread pool max threads&lt;br /&gt;
&lt;br /&gt;
Full list of Jetty parameters using the same naming convention can be found here  - http://restlet.com/technical-resources/restlet-framework/javadocs/snapshot/jse/ext/org/restlet/ext/jetty/JettyServerHelper.html&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
==Command Code Snippet - start session - example how to use Rifidi API in a Java App==&lt;br /&gt;
All Rifidi Management API Command Logic here - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/SensorManagerServiceRestletImpl.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
sensorManagerService.startSession((String) request&lt;br /&gt;
	.getAttributes().get(&amp;quot;readerID&amp;quot;), (String) request&lt;br /&gt;
		.getAttributes().get(&amp;quot;sessionID&amp;quot;));&lt;br /&gt;
	response.setEntity(self.generateReturnString(self&lt;br /&gt;
		.generateSuccessMessage()), MediaType.TEXT_XML);&lt;br /&gt;
} catch (Exception e) {&lt;br /&gt;
	response.setEntity(e.getMessage(), MediaType.TEXT_PLAIN);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Command Basic Flow Example==&lt;br /&gt;
#Create a Reader - http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
#Create a Session (on a reader/sensor)  - http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
#Create a Command (on a reader/sensor)) -/createcommand/{commandType}/{properties} &lt;br /&gt;
*Note: some readers do not require create/executing a command as there is only one command hence for convenience is part of the create session/start session  (Thinkify, CSL and Generic adapter (for handhelds/async push calls) are some examples of this)&lt;br /&gt;
#Set Command Properties - http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
#Execute Command (on a given reader/sensor and session) - http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1&lt;br /&gt;
#Start Session (to begin processing reads using associate command/reader/sensor configuration)  - http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
#Save Configuartion (optional -  to save/persist config in case of a server restart) - http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
=Command Example=&lt;br /&gt;
&lt;br /&gt;
Note: localhost can be substituted with IP address/Host name of Rifidi Edge Server. Port can be changed in Rifidi configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==commandtypes command example==&lt;br /&gt;
&lt;br /&gt;
*commandtypes - returns a list of available command types&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commandtypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commandtypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-ADD_ROSPEC-File&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader via an XML file. Any changes made to the reader are determined by the contents of the file. To generate xml code for the commands you want to submit, check out LLRP Commander here: http://www.fosstrak.org/llrp/index.html&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;ThingMagic-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the ThingMagic reader for its tags. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;ThingMagic&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Start&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Alien reader to send back tags using the autonomous mode. To monitor a read zone, configure an Alien autonomous reader to listen. Then submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader to collect tags. By default, this command will cause the LLRP reader to push back tag reads automatically. If you would rather use the Poll mode, you will need to use the LLRP Poll command. To use the LLRP Configure command, submit it for a one-time execution&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the LLRP reader to stop sending back tags. To use, supply the RO Spec that is currently executing on the reader, and submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Thingmagic6-Push&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Sets the Thingmagic to push tags back to the edge server&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Thingmagic6&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the Alien reader for its tag list. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the LLRP reader for its tags. For monitoring of the read zone, first use the LLRP Configure command to configure the LLRP reader for Poll Mode. Then submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Mask-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID With Mask command. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Alien reader to stop sending back tags in autonomous mode. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Read-Block-Data&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back memory bank tags using the Read Block Data commmand. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readertypes command example==&lt;br /&gt;
&lt;br /&gt;
*readertypes - returns a list of available reader/sensor types (such as LLRP, Alien, BarCode etc..)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readertypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readertypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Generic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;A generic Rifidi Adapter.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Opticon&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Adapter for the Opticon Barcode Sensor&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien-Autonomous&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien autonomous adapter is an endpoint to passively receive tag reads from an Alien reader operating in autonomous mode. You cannot send any commands on the alien autonomous session&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid2010&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thingmagic6&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thingmagic 6 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi LLRP adapter supports any reader that exposes a Low Level Reader Protocol (LLRP) interface. LLRP is a standard from EPCglobal.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid3014&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien adapter supports the Alien ALR protocol on the 9900, 9800, 8800 readers.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thinkify50&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thinkify TR50 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;ThingMagic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi ThingMagic adapater supports the ThingMagic RQL protocol on the Mercury 4 and Mercury 5 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader command example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader overriding default readerID command example==&lt;br /&gt;
&lt;br /&gt;
The reader id is important for applications' read zones to appropriate operate, and this id is used to link read zones with sensors. This command enables one to set the readerId versus the system generating one (default behavior).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: To override the default reader id, there must be included the property readerID, in order to assign a specific reader id and override the default. &lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletereader command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletereader/{readerID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid readerID: LLRP&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readers command example==&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readers&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
*readers - returns a list of readers/senors managed by the Edge Server&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readers  &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_2&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get reader properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{readerID} - returns the reader/sensor properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this, to get a reader properties:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;5084&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;192.168.1.48&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;DisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;null&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReaderConfigPath&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;config/SET_READER_CONFIG.llrp&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get command properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{commandID} - returns the command properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ROSpecID&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;AntennaIDs&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Duration&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1000&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;TriggerType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;PUSH&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set reader properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{readerID}/{properties}&amp;quot; - sets the reader/sensor properties&lt;br /&gt;
Note: if there is an existing session for updated reader properties to take effect the session will need to be deleted and recreated so the properties are moved to the session &lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/Alien_1/MaxNumConnectionAttempts=11;DisplayName=Alien_Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_1/IpAddress=127.0.0.15;Port=4567;att1=aa;att2=bbb;attt3=YY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: att1=aa|att2=bbb|attt3=YY&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set command properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{commandID}/{properties}&amp;quot; - sets the command properties&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=7500;cc=4;other=67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: cc=4|other=67&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==commands command example==&lt;br /&gt;
&lt;br /&gt;
*commands - returns a list of available commands&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commands&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commands&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commands&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;&lt;br /&gt;
         &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createcommand example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the command instance is created or the call fails therefore the rcommand instance is not created&lt;br /&gt;
&lt;br /&gt;
*createcomamnd/{commandType}/{properties} - creates a command to be executed on a reader session&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createcommand&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=5000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commandID&amp;gt;Alien_Poll_2&amp;lt;/commandID&amp;gt; Note: Added in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response error (if there is at least one non valid property, the command is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=4000;propX=123;prop2=AB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: propX=123|prop2=AB&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletecommand command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletecommand/{commandID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid commandID: LLRP_Configure&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createsession command example==&lt;br /&gt;
&lt;br /&gt;
*createsession/{readerID} - creates a session (with corresponding reader/sensor configuration) and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sessionID&amp;gt;1&amp;lt;/sessionID&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail -already a session for sensor id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
     java.lang.Exception: Reader Alien_1 already has a session.&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startsession command example==&lt;br /&gt;
&lt;br /&gt;
*startsession/{readerID}/{sessionID} - starts a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;startsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CONNECTING&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to start session, current state is CONNECTING  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readerstatus command example==&lt;br /&gt;
&lt;br /&gt;
*readerstatus/{readerID} - retuns teh status of a given reader/sensor&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readerstatus&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readerstatus/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensor&amp;gt;&lt;br /&gt;
      &amp;lt;serviceID&amp;gt;LLRP_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
      &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
   &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;sessions&amp;gt;&lt;br /&gt;
      &amp;lt;session&amp;gt;&lt;br /&gt;
         &amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;&lt;br /&gt;
         &amp;lt;status&amp;gt;PROCESSING&amp;lt;/status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;executingcommands&amp;gt;&lt;br /&gt;
            &amp;lt;executingcommand&amp;gt;&lt;br /&gt;
               &amp;lt;commandFactory&amp;gt;LLRP-Configure&amp;lt;/commandFactory&amp;gt;&lt;br /&gt;
              &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
              &amp;lt;interval&amp;gt;0&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;/executingcommand&amp;gt;&lt;br /&gt;
        &amp;lt;/executingcommands&amp;gt;&lt;br /&gt;
      &amp;lt;/session&amp;gt;&lt;br /&gt;
   &amp;lt;/sessions&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==stopsession command example==&lt;br /&gt;
&lt;br /&gt;
*stopsession/{readerID}/{sessionID} - stops a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;stopsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/stopsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CREATED&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to stop session, current state is CREATED  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==resetsession command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/resetsession/{readerID}/{sessionID}&lt;br /&gt;
&lt;br /&gt;
Used to stop and start an existing reader session&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/resetsession/LLRP_1/1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
==executecommand command example==&lt;br /&gt;
&lt;br /&gt;
*executecommand/{readerID}/{sessionID}/{commandID}/{repeatInterval} - Executes a command for a given session&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;executecommand&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/0 (for single shot - one time execution)&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletesession command example==&lt;br /&gt;
&lt;br /&gt;
*deletesession/{readerID}/{sessionID} - deletes a session and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;deletesession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletesession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==save command example==&lt;br /&gt;
&lt;br /&gt;
*save - Saves the current state of the Edge Server configuration (such as created readers/sensors, modified properties etc..&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;save&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ping - Used by failover feature==&lt;br /&gt;
*ping -  Returns a date/timestamp&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;ping&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/ping&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp&amp;gt;1414610247969&amp;lt;/timestamp&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==currenttags example (released in Rifidi 3.4)==&lt;br /&gt;
*currenttags/{readerID} -  Returns a list of tags on a given reader&lt;br /&gt;
&lt;br /&gt;
Note: timestamp, reader and RSSI added in 3.5.1&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;currenttags&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/currenttags/LLRP_1 &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;currenttags&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
   &amp;lt;/currenttags&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readermetadata - Used by Web Administration Dashboard for Dynamic Reader &amp;amp; Command Properties/Wizard (released in 3.2)==&lt;br /&gt;
*readermetadata-  Returns reader metadata&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readermetadata&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readermetadata&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;readers&amp;gt;&lt;br /&gt;
  &amp;lt;reader&amp;gt;&lt;br /&gt;
   &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;ReconnectionInterval&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Reconnection Interval&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;500&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;&lt;br /&gt;
     Upon connection failure, the time to wait between two connection attempts (ms)&lt;br /&gt;
     &amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;4.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Port&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Port&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;8090&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Port of the Reader&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;maxvalue&amp;gt;65535&amp;lt;/maxvalue&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;1.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thinkify RCS Command - Used for one time configuration of a Thinkify USB reader (Deprecated in 3.5.1)==&lt;br /&gt;
*rcs/{Thinkify Reader ID}/{sessionid}&lt;br /&gt;
&lt;br /&gt;
request (via HTTP Post/Get) &amp;quot;rcs&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/rcs/ThinkifyUSB_1/1&lt;br /&gt;
&lt;br /&gt;
==startbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/startbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==stopbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/stopbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to install a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==installbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/installbundle&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to start a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/installbundle&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==uninstallbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/uninstallbundle/{bundleID}&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to uninstall a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/uninstallbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==ss OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/ss&lt;br /&gt;
&lt;br /&gt;
Used to list the OSGI bundles&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/ss&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.osgi&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.weaving.hook&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;RESOLVED&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.simpleconfigurator&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;com.sun.mail.javax.mail&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set GPO Command Example (released in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*/setgpo/{readerID}/{sessionID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to set gpo&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/setgpo/LLRP_1/1/1,2,3&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flash GPO Command Example (released in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//flashgpo/{readerID}/{sessionID}/{ports}/{duration in seconds}&lt;br /&gt;
&lt;br /&gt;
Used to turn gpo on for a specified duration such as Flashing a light on for 4 seconds then turn it off again&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/flashgpo/LLRP_1/1/1,2,3/4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Stop Rifidi App==&lt;br /&gt;
&lt;br /&gt;
*//stopapp/{appID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a Rifidi App&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopapp/1&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Start Rifidi App==&lt;br /&gt;
&lt;br /&gt;
*//startapp/{appID}&lt;br /&gt;
&lt;br /&gt;
Used to start a Rifidi App&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startapp/1&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List Rifidi Apps==&lt;br /&gt;
&lt;br /&gt;
*//apps&lt;br /&gt;
&lt;br /&gt;
Used to start a Rifidi App&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/apps&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
response&amp;gt;&lt;br /&gt;
&amp;lt;apps&amp;gt;&lt;br /&gt;
&amp;lt;app&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;AppService:ReadZones&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;0&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;status&amp;gt;STARTED&amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/app&amp;gt;&lt;br /&gt;
&amp;lt;app&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;AppService:ReadZones&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;1&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;status&amp;gt;STARTED&amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/app&amp;gt;&lt;br /&gt;
&amp;lt;app&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;AppService:SensorStatus&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;2&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;status&amp;gt;STARTED&amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/app&amp;gt;&lt;br /&gt;
&amp;lt;app&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;AppService:UniqueTagInterval&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;3&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;status&amp;gt;STARTED&amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/app&amp;gt;&lt;br /&gt;
&amp;lt;app&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;AppService:StableSet&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;4&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;status&amp;gt;STARTED&amp;lt;/status&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Web_Administration_Dashboard</id>
		<title>Web Administration Dashboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Web_Administration_Dashboard"/>
				<updated>2020-12-31T12:58:41Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* Prerequisites for Managing Remote Rifidi Servers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Dashboard Vision/Roadmap=&lt;br /&gt;
&lt;br /&gt;
The key components of the enterprise-wide dashboard we added with this release – and how they improve ease of use – are summarized below.&lt;br /&gt;
#Edge Server Node Management – Let’s you monitor multiple Rifidi Edge server nodes across the enterprise to see connection states, properties, sensors and applications.&lt;br /&gt;
#Sensor Management – Provides an interface to monitor sensors’ state, manage sensors’ properties and dynamically update sensors’ execution.&lt;br /&gt;
#Rifidi Application Management – Allows you to monitor application states, manage sensor/reader read zones, and update both out-of-the-box business solutions and custom (via SDK) Rifidi sensor/IoT device properties, providing the foundation for a Rifidi Application marketplace.&lt;br /&gt;
=Introduction=&lt;br /&gt;
The Web Administration Dashboard enables users to manage, monitor and configure Rifidi Servers, Sensors/Readers and Applications.&lt;br /&gt;
&lt;br /&gt;
Go to http://localhost:8111/dashboard&lt;br /&gt;
&lt;br /&gt;
[[File:dashboard_sections.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dashboard_wizard_section.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Menu section==&lt;br /&gt;
The menu is a hierarchical tree component, where all the configured servers are listed, and under each server there are three fixed sections:&amp;lt;br&amp;gt;&lt;br /&gt;
#Sensor Management: Allows call operations related to sensors, such as listing sensors, create a new sensor connection, modify sensor properties, associate sessions to sensors, submit a command on a session&lt;br /&gt;
#Command Management: Allows create and delete command instances.&lt;br /&gt;
#App Management: Allows list the applications, start and stop them, modify application properties, group properties. It allows manage readzones, create, modify properties and delete.&lt;br /&gt;
&lt;br /&gt;
==Facility floor plan section==&lt;br /&gt;
It will be available in a future release&lt;br /&gt;
&lt;br /&gt;
==Wizard section==&lt;br /&gt;
When there is the need to create a component by using a wizard, it is displayed in wizard section.&lt;br /&gt;
&lt;br /&gt;
==Properties editor section==&lt;br /&gt;
When a tree element is selected then its properties are displayed in this section, offering the possibility to read or modify them&lt;br /&gt;
&lt;br /&gt;
=Server Management=&lt;br /&gt;
&lt;br /&gt;
==Prerequisites for Managing Remote Rifidi Servers==&lt;br /&gt;
Due to browser security enhancements in order to use dashboard to manage remote Rifidi servers please follow these steps&lt;br /&gt;
&lt;br /&gt;
1. Update the following JVM argument in the Rifidi Sever startup script to use the external ip address in place of localhost/127.0.0.1 &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
example: -Djava.rmi.server.hostname=192.168.86.58 where 192.168.86.58 is the External IP Address of the device&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
2. Configure the Rifidi servers to run via https/ssl with a trusted signed cert from a CA&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Steps for this can be found [[Edge_Management#Configuration_.28HTTP_over_SSL.29_-_Available_as_of_version_3.1.1|Rifidi Server Rest SSL Configuration]]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Go to dashboard using the ssl address: Example: https://192.168.86.58:8183/dashboard/#/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another less ideal option is to turn off the browser security. Here is an example on how to do so in Chrome.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;C:\Program Files (x86)\Google\Chrome\Application\chrome.exe&amp;quot; --disable-web-security --user-data-dir=&amp;quot;c:/someFolderName&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Add Server==&lt;br /&gt;
Add a new server connection to rest services&lt;br /&gt;
# Right click on 'Servers' node and then choose 'Add server'&amp;lt;br&amp;gt;[[File:add_server_link.png]]&lt;br /&gt;
# Provide the values for attributes: Display name, IP address, protocol and port where rest services are deployed on that server.&amp;lt;br&amp;gt;[[File:add_server.png]]&lt;br /&gt;
# Click on 'Create' button and confirm&amp;lt;br&amp;gt;[[File:add_server_confirm2.png]]&lt;br /&gt;
&lt;br /&gt;
==Delete Server==&lt;br /&gt;
Delete a server connection&lt;br /&gt;
# Right click on server node to delete and then choose 'Delete server'&amp;lt;br&amp;gt;[[File:delete_server_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_server_confirm2.png]]&lt;br /&gt;
&lt;br /&gt;
==Update Server Connection Properties==&lt;br /&gt;
Update connection properties for server&lt;br /&gt;
# Click on server node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_server_link.png]]&lt;br /&gt;
# Provide the values for attributes: Display name, IP address, protocol and port where rest services are deployed on that server.&amp;lt;br&amp;gt;[[File:modify_server.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:modify_server_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Update Server Auto Refresh settings==&lt;br /&gt;
Enables or disables the menu auto refresh feature, so web app periodically synchronizes with server to reflect actual state of elements&lt;br /&gt;
# Click on servers node and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_servers_link.png]]&lt;br /&gt;
# Provide the values for attributes: Enable auto refresh and auto refresh delay.&amp;lt;br&amp;gt;[[File:modify_servers.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:modify_servers_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Save Server Configuration==&lt;br /&gt;
Save config changes made on this server&lt;br /&gt;
# Right click on server node and then choose 'Save server config'&amp;lt;br&amp;gt;[[File:save_server_link.png]]&lt;br /&gt;
# Confirm the save operation&amp;lt;br&amp;gt;[[File:save_server_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Save all servers Configuration==&lt;br /&gt;
Save config changes made on all connected servers&lt;br /&gt;
# Right click on &amp;quot;Servers&amp;quot; node and then choose 'Save all servers config'&amp;lt;br&amp;gt;[[File:save_all_servers_link.png]]&lt;br /&gt;
# Confirm the save operation&amp;lt;br&amp;gt;[[File:save_all_servers_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Get/Set Server JVM Configuration==&lt;br /&gt;
&lt;br /&gt;
==Configure Primary/Secondary Nodes==&lt;br /&gt;
&lt;br /&gt;
==Start Server==&lt;br /&gt;
&lt;br /&gt;
==Stop Server==&lt;br /&gt;
&lt;br /&gt;
==Configure logging==&lt;br /&gt;
&lt;br /&gt;
==View/Filter logs==&lt;br /&gt;
&lt;br /&gt;
==Monitor Server via Jolokia ==&lt;br /&gt;
leveraging edge monitoring Jolokia rest interface&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sensor Management=&lt;br /&gt;
&lt;br /&gt;
===Add Sensor Wizard===&lt;br /&gt;
&lt;br /&gt;
Steps user through creating sensor, session and command (where applicable).&lt;br /&gt;
&lt;br /&gt;
# Right click on 'Sensor Management' node and then choose 'Add Sensor'&amp;lt;br&amp;gt;[[File:add_sensor_link.png]]&lt;br /&gt;
# Choose the sensor type and optionally provide the reader id and click Next&amp;lt;br&amp;gt;[[File:add_sensor_readertype_selection.png]]&lt;br /&gt;
# Set the connection properties for sensor and optionally check if automatically start session, and click Next&amp;lt;br&amp;gt;[[File:add_sensor_set_sensor_properties.png]]&lt;br /&gt;
# Create the command for sensor, choose the command type and choose to create a new command instance or select an existing one, set the properties for command instance and set the scheduling options for executing command, and click Next&amp;lt;br&amp;gt;[[File:add_sensor_create_command.png]]&lt;br /&gt;
# Review steps summary and confirm&amp;lt;br&amp;gt;[[File:add_sensor_summary.png]]&lt;br /&gt;
&lt;br /&gt;
===Update Sensor Properties===&lt;br /&gt;
Option to modify sensor properties&lt;br /&gt;
# Click on sensor node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_sensor_link.png]]&lt;br /&gt;
# Provide the values for sensor attributes&amp;lt;br&amp;gt;[[File:edit_sensor.png]]&lt;br /&gt;
# Click on 'Save sensor properties' button and confirm&amp;lt;br&amp;gt;[[File:edit_sensor_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Delete Sensor===&lt;br /&gt;
Option to delete a sensor connection&lt;br /&gt;
# Right click on sensor node to delete and then choose 'Delete Sensor'&amp;lt;br&amp;gt;[[File:delete_sensor_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_sensor_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Session==&lt;br /&gt;
===Start Session===&lt;br /&gt;
To start a session on sensor&lt;br /&gt;
# Click on session node to start and then click on 'Start Session'&amp;lt;br&amp;gt;[[File:start_session_link.png]]&lt;br /&gt;
&lt;br /&gt;
===Stop Session===&lt;br /&gt;
To stop a session on sensor&lt;br /&gt;
# Click on session node to stop and then click on 'Stop Session'&amp;lt;br&amp;gt;[[File:stop_session_link.png]]&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
===Update Command properties===&lt;br /&gt;
Allows the updating of properties for a command&lt;br /&gt;
# Click on command instance node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_command_link.png]]&lt;br /&gt;
# Provide the values for command attributes&amp;lt;br&amp;gt;[[File:edit_command.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:edit_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Deleted Command===&lt;br /&gt;
Deletes a command template&lt;br /&gt;
# Right click on command node to delete and then choose 'Delete Command Template'&amp;lt;br&amp;gt;[[File:delete_command_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Create Command===&lt;br /&gt;
Creates a command template&lt;br /&gt;
# Right click on command type node, select 'Create Command Template' and then go to properties editor area&amp;lt;br&amp;gt;[[File:create_command_link.png]]&lt;br /&gt;
# Provide the values for command attributes&amp;lt;br&amp;gt;[[File:create_command.png]]&lt;br /&gt;
# Click on 'Create' button and confirm&amp;lt;br&amp;gt;[[File:create_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Execute Command===&lt;br /&gt;
Executes a command on a session&lt;br /&gt;
# Right click on session element where you want to submit the job and then choose 'Submit Job'&amp;lt;br&amp;gt;[[File:execute_command_link.png]]&lt;br /&gt;
# Choose the command type and choose to create a new command instance or select an existing one, set the properties for command instance and set the scheduling options for executing command, and click Submit&amp;lt;br&amp;gt;[[File:execute_command.png]]&lt;br /&gt;
# Confirm the operation clicking on 'Submit Job' buton &amp;lt;br&amp;gt;[[File:execute_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==LLRP==&lt;br /&gt;
===Add Reader Configuarions===&lt;br /&gt;
===Update Reader Configurations===&lt;br /&gt;
===Delete Reader Configuratins===&lt;br /&gt;
===Add RoSpec===&lt;br /&gt;
===Update RoSpec===&lt;br /&gt;
===Delete RoSpec===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Diagnostic==&lt;br /&gt;
===View Current Tags on a Sensor===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Management==&lt;br /&gt;
===Map on Floor Plan (Overlay Google Maps===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Application Management=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Rifidi Applications==&lt;br /&gt;
===Add Application===&lt;br /&gt;
===Update Application===&lt;br /&gt;
===Remove Application===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Readzones==&lt;br /&gt;
===Get Readzones===&lt;br /&gt;
Option to list the readzones associated with an application group&lt;br /&gt;
# Click on 'ReadZones' menu element and it will display the readzones belonging to parent application group&amp;lt;br&amp;gt;[[File:readzones_link.png]]&lt;br /&gt;
&lt;br /&gt;
===Add Readzone===&lt;br /&gt;
To add a readzone definition associated with an application group&lt;br /&gt;
# Right click on 'ReadZones' node and then choose 'Add Read Zone'&amp;lt;br&amp;gt;[[File:add_readzone_link.png]]&lt;br /&gt;
# Set the readzone name and readerID, and optionally provide the antennas, matchPattern and tagPattern, and click on 'Create' button&amp;lt;br&amp;gt;[[File:add_readzone.png]]&lt;br /&gt;
# Confirm the readzone creation operation&amp;lt;br&amp;gt;[[File:add_readzone_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Delete Readzone===&lt;br /&gt;
Deletes a readzone definition&lt;br /&gt;
# Right click on readzone node to delete and then choose 'Delete Command Template'&amp;lt;br&amp;gt;[[File:delete_readzone_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_readzone_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Update Readzone properties===&lt;br /&gt;
Updates the properties for a readzone&lt;br /&gt;
# Click on readzone node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:update_readzone_link.png]]&lt;br /&gt;
# Provide the values for readerID, and optionally provide the antennas, matchPattern and tagPattern attributes&amp;lt;br&amp;gt;[[File:update_readzone.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:update_readzone_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Application Properties==&lt;br /&gt;
===Get / Update Group Properties===&lt;br /&gt;
List and modify the application group properties&lt;br /&gt;
# Click on application group node to get / update and then go to properties editor area&amp;lt;br&amp;gt;[[File:update_groupproperties_link.png]]&lt;br /&gt;
# Provide the values for application group properties and click on 'Save'&amp;lt;br&amp;gt;[[File:update_groupproperties.png]]&lt;br /&gt;
# Click on 'Save app group properties' button and confirm&amp;lt;br&amp;gt;[[File:update_groupproperties_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Add Group Properties===&lt;br /&gt;
===Delete Group Properties===&lt;br /&gt;
===Update Group Properties===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Get / Update Application Properties===&lt;br /&gt;
List and modify the application properties&lt;br /&gt;
# Click on application node to get / update and then go to properties editor area&amp;lt;br&amp;gt;[[File:update_appproperties_link.png]]&lt;br /&gt;
# Provide the values for application properties and click on 'Save'&amp;lt;br&amp;gt;[[File:update_appproperties.png]]&lt;br /&gt;
# Click on 'Save app properties' button and confirm&amp;lt;br&amp;gt;[[File:update_appproperties_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Add  Application  Properties===&lt;br /&gt;
===Delete  Application  Properties===&lt;br /&gt;
===Update  Application  Properties===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Diagnostic=&lt;br /&gt;
==Current Tags View==&lt;br /&gt;
# Right click on reader/sensor name &amp;lt;br&amp;gt;[[File:Currenttagsmenu.png]]&lt;br /&gt;
# Click on Current tags to view tags on reader &amp;lt;br&amp;gt;[[File:Currenttagsview.png]]&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Web_Administration_Dashboard</id>
		<title>Web Administration Dashboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Web_Administration_Dashboard"/>
				<updated>2020-12-31T12:53:18Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* Prerequisites for Managing Remote Rifidi Servers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Dashboard Vision/Roadmap=&lt;br /&gt;
&lt;br /&gt;
The key components of the enterprise-wide dashboard we added with this release – and how they improve ease of use – are summarized below.&lt;br /&gt;
#Edge Server Node Management – Let’s you monitor multiple Rifidi Edge server nodes across the enterprise to see connection states, properties, sensors and applications.&lt;br /&gt;
#Sensor Management – Provides an interface to monitor sensors’ state, manage sensors’ properties and dynamically update sensors’ execution.&lt;br /&gt;
#Rifidi Application Management – Allows you to monitor application states, manage sensor/reader read zones, and update both out-of-the-box business solutions and custom (via SDK) Rifidi sensor/IoT device properties, providing the foundation for a Rifidi Application marketplace.&lt;br /&gt;
=Introduction=&lt;br /&gt;
The Web Administration Dashboard enables users to manage, monitor and configure Rifidi Servers, Sensors/Readers and Applications.&lt;br /&gt;
&lt;br /&gt;
Go to http://localhost:8111/dashboard&lt;br /&gt;
&lt;br /&gt;
[[File:dashboard_sections.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dashboard_wizard_section.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Menu section==&lt;br /&gt;
The menu is a hierarchical tree component, where all the configured servers are listed, and under each server there are three fixed sections:&amp;lt;br&amp;gt;&lt;br /&gt;
#Sensor Management: Allows call operations related to sensors, such as listing sensors, create a new sensor connection, modify sensor properties, associate sessions to sensors, submit a command on a session&lt;br /&gt;
#Command Management: Allows create and delete command instances.&lt;br /&gt;
#App Management: Allows list the applications, start and stop them, modify application properties, group properties. It allows manage readzones, create, modify properties and delete.&lt;br /&gt;
&lt;br /&gt;
==Facility floor plan section==&lt;br /&gt;
It will be available in a future release&lt;br /&gt;
&lt;br /&gt;
==Wizard section==&lt;br /&gt;
When there is the need to create a component by using a wizard, it is displayed in wizard section.&lt;br /&gt;
&lt;br /&gt;
==Properties editor section==&lt;br /&gt;
When a tree element is selected then its properties are displayed in this section, offering the possibility to read or modify them&lt;br /&gt;
&lt;br /&gt;
=Server Management=&lt;br /&gt;
&lt;br /&gt;
==Prerequisites for Managing Remote Rifidi Servers==&lt;br /&gt;
Due to browser security enhancements in order to use dashboard to manage remote Rifidi servers please follow these steps&lt;br /&gt;
&lt;br /&gt;
# Update the following JVM argument in the Rifidi Sever startup script to use the external ip address in place of localhost/127.0.0.1 - &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Djava.rmi.server.hostname=192.168.86.58&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Configure Rifidi servers to run via https/ssl with a trusted signed cert from a CA&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Steps for this can be found [[Edge_Management#Configuration_.28HTTP_over_SSL.29_-_Available_as_of_version_3.1.1|Rifidi Server Rest SSL Configuration]]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Add Server==&lt;br /&gt;
Add a new server connection to rest services&lt;br /&gt;
# Right click on 'Servers' node and then choose 'Add server'&amp;lt;br&amp;gt;[[File:add_server_link.png]]&lt;br /&gt;
# Provide the values for attributes: Display name, IP address, protocol and port where rest services are deployed on that server.&amp;lt;br&amp;gt;[[File:add_server.png]]&lt;br /&gt;
# Click on 'Create' button and confirm&amp;lt;br&amp;gt;[[File:add_server_confirm2.png]]&lt;br /&gt;
&lt;br /&gt;
==Delete Server==&lt;br /&gt;
Delete a server connection&lt;br /&gt;
# Right click on server node to delete and then choose 'Delete server'&amp;lt;br&amp;gt;[[File:delete_server_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_server_confirm2.png]]&lt;br /&gt;
&lt;br /&gt;
==Update Server Connection Properties==&lt;br /&gt;
Update connection properties for server&lt;br /&gt;
# Click on server node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_server_link.png]]&lt;br /&gt;
# Provide the values for attributes: Display name, IP address, protocol and port where rest services are deployed on that server.&amp;lt;br&amp;gt;[[File:modify_server.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:modify_server_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Update Server Auto Refresh settings==&lt;br /&gt;
Enables or disables the menu auto refresh feature, so web app periodically synchronizes with server to reflect actual state of elements&lt;br /&gt;
# Click on servers node and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_servers_link.png]]&lt;br /&gt;
# Provide the values for attributes: Enable auto refresh and auto refresh delay.&amp;lt;br&amp;gt;[[File:modify_servers.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:modify_servers_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Save Server Configuration==&lt;br /&gt;
Save config changes made on this server&lt;br /&gt;
# Right click on server node and then choose 'Save server config'&amp;lt;br&amp;gt;[[File:save_server_link.png]]&lt;br /&gt;
# Confirm the save operation&amp;lt;br&amp;gt;[[File:save_server_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Save all servers Configuration==&lt;br /&gt;
Save config changes made on all connected servers&lt;br /&gt;
# Right click on &amp;quot;Servers&amp;quot; node and then choose 'Save all servers config'&amp;lt;br&amp;gt;[[File:save_all_servers_link.png]]&lt;br /&gt;
# Confirm the save operation&amp;lt;br&amp;gt;[[File:save_all_servers_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Get/Set Server JVM Configuration==&lt;br /&gt;
&lt;br /&gt;
==Configure Primary/Secondary Nodes==&lt;br /&gt;
&lt;br /&gt;
==Start Server==&lt;br /&gt;
&lt;br /&gt;
==Stop Server==&lt;br /&gt;
&lt;br /&gt;
==Configure logging==&lt;br /&gt;
&lt;br /&gt;
==View/Filter logs==&lt;br /&gt;
&lt;br /&gt;
==Monitor Server via Jolokia ==&lt;br /&gt;
leveraging edge monitoring Jolokia rest interface&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sensor Management=&lt;br /&gt;
&lt;br /&gt;
===Add Sensor Wizard===&lt;br /&gt;
&lt;br /&gt;
Steps user through creating sensor, session and command (where applicable).&lt;br /&gt;
&lt;br /&gt;
# Right click on 'Sensor Management' node and then choose 'Add Sensor'&amp;lt;br&amp;gt;[[File:add_sensor_link.png]]&lt;br /&gt;
# Choose the sensor type and optionally provide the reader id and click Next&amp;lt;br&amp;gt;[[File:add_sensor_readertype_selection.png]]&lt;br /&gt;
# Set the connection properties for sensor and optionally check if automatically start session, and click Next&amp;lt;br&amp;gt;[[File:add_sensor_set_sensor_properties.png]]&lt;br /&gt;
# Create the command for sensor, choose the command type and choose to create a new command instance or select an existing one, set the properties for command instance and set the scheduling options for executing command, and click Next&amp;lt;br&amp;gt;[[File:add_sensor_create_command.png]]&lt;br /&gt;
# Review steps summary and confirm&amp;lt;br&amp;gt;[[File:add_sensor_summary.png]]&lt;br /&gt;
&lt;br /&gt;
===Update Sensor Properties===&lt;br /&gt;
Option to modify sensor properties&lt;br /&gt;
# Click on sensor node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_sensor_link.png]]&lt;br /&gt;
# Provide the values for sensor attributes&amp;lt;br&amp;gt;[[File:edit_sensor.png]]&lt;br /&gt;
# Click on 'Save sensor properties' button and confirm&amp;lt;br&amp;gt;[[File:edit_sensor_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Delete Sensor===&lt;br /&gt;
Option to delete a sensor connection&lt;br /&gt;
# Right click on sensor node to delete and then choose 'Delete Sensor'&amp;lt;br&amp;gt;[[File:delete_sensor_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_sensor_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Session==&lt;br /&gt;
===Start Session===&lt;br /&gt;
To start a session on sensor&lt;br /&gt;
# Click on session node to start and then click on 'Start Session'&amp;lt;br&amp;gt;[[File:start_session_link.png]]&lt;br /&gt;
&lt;br /&gt;
===Stop Session===&lt;br /&gt;
To stop a session on sensor&lt;br /&gt;
# Click on session node to stop and then click on 'Stop Session'&amp;lt;br&amp;gt;[[File:stop_session_link.png]]&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
===Update Command properties===&lt;br /&gt;
Allows the updating of properties for a command&lt;br /&gt;
# Click on command instance node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_command_link.png]]&lt;br /&gt;
# Provide the values for command attributes&amp;lt;br&amp;gt;[[File:edit_command.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:edit_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Deleted Command===&lt;br /&gt;
Deletes a command template&lt;br /&gt;
# Right click on command node to delete and then choose 'Delete Command Template'&amp;lt;br&amp;gt;[[File:delete_command_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Create Command===&lt;br /&gt;
Creates a command template&lt;br /&gt;
# Right click on command type node, select 'Create Command Template' and then go to properties editor area&amp;lt;br&amp;gt;[[File:create_command_link.png]]&lt;br /&gt;
# Provide the values for command attributes&amp;lt;br&amp;gt;[[File:create_command.png]]&lt;br /&gt;
# Click on 'Create' button and confirm&amp;lt;br&amp;gt;[[File:create_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Execute Command===&lt;br /&gt;
Executes a command on a session&lt;br /&gt;
# Right click on session element where you want to submit the job and then choose 'Submit Job'&amp;lt;br&amp;gt;[[File:execute_command_link.png]]&lt;br /&gt;
# Choose the command type and choose to create a new command instance or select an existing one, set the properties for command instance and set the scheduling options for executing command, and click Submit&amp;lt;br&amp;gt;[[File:execute_command.png]]&lt;br /&gt;
# Confirm the operation clicking on 'Submit Job' buton &amp;lt;br&amp;gt;[[File:execute_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==LLRP==&lt;br /&gt;
===Add Reader Configuarions===&lt;br /&gt;
===Update Reader Configurations===&lt;br /&gt;
===Delete Reader Configuratins===&lt;br /&gt;
===Add RoSpec===&lt;br /&gt;
===Update RoSpec===&lt;br /&gt;
===Delete RoSpec===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Diagnostic==&lt;br /&gt;
===View Current Tags on a Sensor===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Management==&lt;br /&gt;
===Map on Floor Plan (Overlay Google Maps===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Application Management=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Rifidi Applications==&lt;br /&gt;
===Add Application===&lt;br /&gt;
===Update Application===&lt;br /&gt;
===Remove Application===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Readzones==&lt;br /&gt;
===Get Readzones===&lt;br /&gt;
Option to list the readzones associated with an application group&lt;br /&gt;
# Click on 'ReadZones' menu element and it will display the readzones belonging to parent application group&amp;lt;br&amp;gt;[[File:readzones_link.png]]&lt;br /&gt;
&lt;br /&gt;
===Add Readzone===&lt;br /&gt;
To add a readzone definition associated with an application group&lt;br /&gt;
# Right click on 'ReadZones' node and then choose 'Add Read Zone'&amp;lt;br&amp;gt;[[File:add_readzone_link.png]]&lt;br /&gt;
# Set the readzone name and readerID, and optionally provide the antennas, matchPattern and tagPattern, and click on 'Create' button&amp;lt;br&amp;gt;[[File:add_readzone.png]]&lt;br /&gt;
# Confirm the readzone creation operation&amp;lt;br&amp;gt;[[File:add_readzone_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Delete Readzone===&lt;br /&gt;
Deletes a readzone definition&lt;br /&gt;
# Right click on readzone node to delete and then choose 'Delete Command Template'&amp;lt;br&amp;gt;[[File:delete_readzone_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_readzone_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Update Readzone properties===&lt;br /&gt;
Updates the properties for a readzone&lt;br /&gt;
# Click on readzone node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:update_readzone_link.png]]&lt;br /&gt;
# Provide the values for readerID, and optionally provide the antennas, matchPattern and tagPattern attributes&amp;lt;br&amp;gt;[[File:update_readzone.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:update_readzone_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Application Properties==&lt;br /&gt;
===Get / Update Group Properties===&lt;br /&gt;
List and modify the application group properties&lt;br /&gt;
# Click on application group node to get / update and then go to properties editor area&amp;lt;br&amp;gt;[[File:update_groupproperties_link.png]]&lt;br /&gt;
# Provide the values for application group properties and click on 'Save'&amp;lt;br&amp;gt;[[File:update_groupproperties.png]]&lt;br /&gt;
# Click on 'Save app group properties' button and confirm&amp;lt;br&amp;gt;[[File:update_groupproperties_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Add Group Properties===&lt;br /&gt;
===Delete Group Properties===&lt;br /&gt;
===Update Group Properties===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Get / Update Application Properties===&lt;br /&gt;
List and modify the application properties&lt;br /&gt;
# Click on application node to get / update and then go to properties editor area&amp;lt;br&amp;gt;[[File:update_appproperties_link.png]]&lt;br /&gt;
# Provide the values for application properties and click on 'Save'&amp;lt;br&amp;gt;[[File:update_appproperties.png]]&lt;br /&gt;
# Click on 'Save app properties' button and confirm&amp;lt;br&amp;gt;[[File:update_appproperties_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Add  Application  Properties===&lt;br /&gt;
===Delete  Application  Properties===&lt;br /&gt;
===Update  Application  Properties===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Diagnostic=&lt;br /&gt;
==Current Tags View==&lt;br /&gt;
# Right click on reader/sensor name &amp;lt;br&amp;gt;[[File:Currenttagsmenu.png]]&lt;br /&gt;
# Click on Current tags to view tags on reader &amp;lt;br&amp;gt;[[File:Currenttagsview.png]]&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Web_Administration_Dashboard</id>
		<title>Web Administration Dashboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Web_Administration_Dashboard"/>
				<updated>2020-12-31T12:52:42Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* General Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Dashboard Vision/Roadmap=&lt;br /&gt;
&lt;br /&gt;
The key components of the enterprise-wide dashboard we added with this release – and how they improve ease of use – are summarized below.&lt;br /&gt;
#Edge Server Node Management – Let’s you monitor multiple Rifidi Edge server nodes across the enterprise to see connection states, properties, sensors and applications.&lt;br /&gt;
#Sensor Management – Provides an interface to monitor sensors’ state, manage sensors’ properties and dynamically update sensors’ execution.&lt;br /&gt;
#Rifidi Application Management – Allows you to monitor application states, manage sensor/reader read zones, and update both out-of-the-box business solutions and custom (via SDK) Rifidi sensor/IoT device properties, providing the foundation for a Rifidi Application marketplace.&lt;br /&gt;
=Introduction=&lt;br /&gt;
The Web Administration Dashboard enables users to manage, monitor and configure Rifidi Servers, Sensors/Readers and Applications.&lt;br /&gt;
&lt;br /&gt;
Go to http://localhost:8111/dashboard&lt;br /&gt;
&lt;br /&gt;
[[File:dashboard_sections.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dashboard_wizard_section.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Menu section==&lt;br /&gt;
The menu is a hierarchical tree component, where all the configured servers are listed, and under each server there are three fixed sections:&amp;lt;br&amp;gt;&lt;br /&gt;
#Sensor Management: Allows call operations related to sensors, such as listing sensors, create a new sensor connection, modify sensor properties, associate sessions to sensors, submit a command on a session&lt;br /&gt;
#Command Management: Allows create and delete command instances.&lt;br /&gt;
#App Management: Allows list the applications, start and stop them, modify application properties, group properties. It allows manage readzones, create, modify properties and delete.&lt;br /&gt;
&lt;br /&gt;
==Facility floor plan section==&lt;br /&gt;
It will be available in a future release&lt;br /&gt;
&lt;br /&gt;
==Wizard section==&lt;br /&gt;
When there is the need to create a component by using a wizard, it is displayed in wizard section.&lt;br /&gt;
&lt;br /&gt;
==Properties editor section==&lt;br /&gt;
When a tree element is selected then its properties are displayed in this section, offering the possibility to read or modify them&lt;br /&gt;
&lt;br /&gt;
=Server Management=&lt;br /&gt;
&lt;br /&gt;
==Prerequisites for Managing Remote Rifidi Servers==&lt;br /&gt;
Due to browser security enhancements in order to use dashboard to manage remote Rifidi servers please follow these steps&lt;br /&gt;
&lt;br /&gt;
# Update the following JVM argument in the Rifidi Sever startup script to use the external ip address in place of localhost/127.0.0.1 - &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-Djava.rmi.server.hostname=192.168.86.58&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Configure Rifidi servers to run via https/ssl with a trusted signed cert from a CA&lt;br /&gt;
&lt;br /&gt;
Steps for this can be found [[Edge_Management#Configuration_.28HTTP_over_SSL.29_-_Available_as_of_version_3.1.1|Rifidi Server Rest SSL Configuration]]&lt;br /&gt;
&lt;br /&gt;
==Add Server==&lt;br /&gt;
Add a new server connection to rest services&lt;br /&gt;
# Right click on 'Servers' node and then choose 'Add server'&amp;lt;br&amp;gt;[[File:add_server_link.png]]&lt;br /&gt;
# Provide the values for attributes: Display name, IP address, protocol and port where rest services are deployed on that server.&amp;lt;br&amp;gt;[[File:add_server.png]]&lt;br /&gt;
# Click on 'Create' button and confirm&amp;lt;br&amp;gt;[[File:add_server_confirm2.png]]&lt;br /&gt;
&lt;br /&gt;
==Delete Server==&lt;br /&gt;
Delete a server connection&lt;br /&gt;
# Right click on server node to delete and then choose 'Delete server'&amp;lt;br&amp;gt;[[File:delete_server_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_server_confirm2.png]]&lt;br /&gt;
&lt;br /&gt;
==Update Server Connection Properties==&lt;br /&gt;
Update connection properties for server&lt;br /&gt;
# Click on server node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_server_link.png]]&lt;br /&gt;
# Provide the values for attributes: Display name, IP address, protocol and port where rest services are deployed on that server.&amp;lt;br&amp;gt;[[File:modify_server.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:modify_server_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Update Server Auto Refresh settings==&lt;br /&gt;
Enables or disables the menu auto refresh feature, so web app periodically synchronizes with server to reflect actual state of elements&lt;br /&gt;
# Click on servers node and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_servers_link.png]]&lt;br /&gt;
# Provide the values for attributes: Enable auto refresh and auto refresh delay.&amp;lt;br&amp;gt;[[File:modify_servers.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:modify_servers_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Save Server Configuration==&lt;br /&gt;
Save config changes made on this server&lt;br /&gt;
# Right click on server node and then choose 'Save server config'&amp;lt;br&amp;gt;[[File:save_server_link.png]]&lt;br /&gt;
# Confirm the save operation&amp;lt;br&amp;gt;[[File:save_server_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Save all servers Configuration==&lt;br /&gt;
Save config changes made on all connected servers&lt;br /&gt;
# Right click on &amp;quot;Servers&amp;quot; node and then choose 'Save all servers config'&amp;lt;br&amp;gt;[[File:save_all_servers_link.png]]&lt;br /&gt;
# Confirm the save operation&amp;lt;br&amp;gt;[[File:save_all_servers_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Get/Set Server JVM Configuration==&lt;br /&gt;
&lt;br /&gt;
==Configure Primary/Secondary Nodes==&lt;br /&gt;
&lt;br /&gt;
==Start Server==&lt;br /&gt;
&lt;br /&gt;
==Stop Server==&lt;br /&gt;
&lt;br /&gt;
==Configure logging==&lt;br /&gt;
&lt;br /&gt;
==View/Filter logs==&lt;br /&gt;
&lt;br /&gt;
==Monitor Server via Jolokia ==&lt;br /&gt;
leveraging edge monitoring Jolokia rest interface&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sensor Management=&lt;br /&gt;
&lt;br /&gt;
===Add Sensor Wizard===&lt;br /&gt;
&lt;br /&gt;
Steps user through creating sensor, session and command (where applicable).&lt;br /&gt;
&lt;br /&gt;
# Right click on 'Sensor Management' node and then choose 'Add Sensor'&amp;lt;br&amp;gt;[[File:add_sensor_link.png]]&lt;br /&gt;
# Choose the sensor type and optionally provide the reader id and click Next&amp;lt;br&amp;gt;[[File:add_sensor_readertype_selection.png]]&lt;br /&gt;
# Set the connection properties for sensor and optionally check if automatically start session, and click Next&amp;lt;br&amp;gt;[[File:add_sensor_set_sensor_properties.png]]&lt;br /&gt;
# Create the command for sensor, choose the command type and choose to create a new command instance or select an existing one, set the properties for command instance and set the scheduling options for executing command, and click Next&amp;lt;br&amp;gt;[[File:add_sensor_create_command.png]]&lt;br /&gt;
# Review steps summary and confirm&amp;lt;br&amp;gt;[[File:add_sensor_summary.png]]&lt;br /&gt;
&lt;br /&gt;
===Update Sensor Properties===&lt;br /&gt;
Option to modify sensor properties&lt;br /&gt;
# Click on sensor node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_sensor_link.png]]&lt;br /&gt;
# Provide the values for sensor attributes&amp;lt;br&amp;gt;[[File:edit_sensor.png]]&lt;br /&gt;
# Click on 'Save sensor properties' button and confirm&amp;lt;br&amp;gt;[[File:edit_sensor_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Delete Sensor===&lt;br /&gt;
Option to delete a sensor connection&lt;br /&gt;
# Right click on sensor node to delete and then choose 'Delete Sensor'&amp;lt;br&amp;gt;[[File:delete_sensor_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_sensor_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Session==&lt;br /&gt;
===Start Session===&lt;br /&gt;
To start a session on sensor&lt;br /&gt;
# Click on session node to start and then click on 'Start Session'&amp;lt;br&amp;gt;[[File:start_session_link.png]]&lt;br /&gt;
&lt;br /&gt;
===Stop Session===&lt;br /&gt;
To stop a session on sensor&lt;br /&gt;
# Click on session node to stop and then click on 'Stop Session'&amp;lt;br&amp;gt;[[File:stop_session_link.png]]&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
===Update Command properties===&lt;br /&gt;
Allows the updating of properties for a command&lt;br /&gt;
# Click on command instance node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_command_link.png]]&lt;br /&gt;
# Provide the values for command attributes&amp;lt;br&amp;gt;[[File:edit_command.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:edit_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Deleted Command===&lt;br /&gt;
Deletes a command template&lt;br /&gt;
# Right click on command node to delete and then choose 'Delete Command Template'&amp;lt;br&amp;gt;[[File:delete_command_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Create Command===&lt;br /&gt;
Creates a command template&lt;br /&gt;
# Right click on command type node, select 'Create Command Template' and then go to properties editor area&amp;lt;br&amp;gt;[[File:create_command_link.png]]&lt;br /&gt;
# Provide the values for command attributes&amp;lt;br&amp;gt;[[File:create_command.png]]&lt;br /&gt;
# Click on 'Create' button and confirm&amp;lt;br&amp;gt;[[File:create_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Execute Command===&lt;br /&gt;
Executes a command on a session&lt;br /&gt;
# Right click on session element where you want to submit the job and then choose 'Submit Job'&amp;lt;br&amp;gt;[[File:execute_command_link.png]]&lt;br /&gt;
# Choose the command type and choose to create a new command instance or select an existing one, set the properties for command instance and set the scheduling options for executing command, and click Submit&amp;lt;br&amp;gt;[[File:execute_command.png]]&lt;br /&gt;
# Confirm the operation clicking on 'Submit Job' buton &amp;lt;br&amp;gt;[[File:execute_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==LLRP==&lt;br /&gt;
===Add Reader Configuarions===&lt;br /&gt;
===Update Reader Configurations===&lt;br /&gt;
===Delete Reader Configuratins===&lt;br /&gt;
===Add RoSpec===&lt;br /&gt;
===Update RoSpec===&lt;br /&gt;
===Delete RoSpec===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Diagnostic==&lt;br /&gt;
===View Current Tags on a Sensor===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Management==&lt;br /&gt;
===Map on Floor Plan (Overlay Google Maps===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Application Management=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Rifidi Applications==&lt;br /&gt;
===Add Application===&lt;br /&gt;
===Update Application===&lt;br /&gt;
===Remove Application===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Readzones==&lt;br /&gt;
===Get Readzones===&lt;br /&gt;
Option to list the readzones associated with an application group&lt;br /&gt;
# Click on 'ReadZones' menu element and it will display the readzones belonging to parent application group&amp;lt;br&amp;gt;[[File:readzones_link.png]]&lt;br /&gt;
&lt;br /&gt;
===Add Readzone===&lt;br /&gt;
To add a readzone definition associated with an application group&lt;br /&gt;
# Right click on 'ReadZones' node and then choose 'Add Read Zone'&amp;lt;br&amp;gt;[[File:add_readzone_link.png]]&lt;br /&gt;
# Set the readzone name and readerID, and optionally provide the antennas, matchPattern and tagPattern, and click on 'Create' button&amp;lt;br&amp;gt;[[File:add_readzone.png]]&lt;br /&gt;
# Confirm the readzone creation operation&amp;lt;br&amp;gt;[[File:add_readzone_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Delete Readzone===&lt;br /&gt;
Deletes a readzone definition&lt;br /&gt;
# Right click on readzone node to delete and then choose 'Delete Command Template'&amp;lt;br&amp;gt;[[File:delete_readzone_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_readzone_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Update Readzone properties===&lt;br /&gt;
Updates the properties for a readzone&lt;br /&gt;
# Click on readzone node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:update_readzone_link.png]]&lt;br /&gt;
# Provide the values for readerID, and optionally provide the antennas, matchPattern and tagPattern attributes&amp;lt;br&amp;gt;[[File:update_readzone.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:update_readzone_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Application Properties==&lt;br /&gt;
===Get / Update Group Properties===&lt;br /&gt;
List and modify the application group properties&lt;br /&gt;
# Click on application group node to get / update and then go to properties editor area&amp;lt;br&amp;gt;[[File:update_groupproperties_link.png]]&lt;br /&gt;
# Provide the values for application group properties and click on 'Save'&amp;lt;br&amp;gt;[[File:update_groupproperties.png]]&lt;br /&gt;
# Click on 'Save app group properties' button and confirm&amp;lt;br&amp;gt;[[File:update_groupproperties_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Add Group Properties===&lt;br /&gt;
===Delete Group Properties===&lt;br /&gt;
===Update Group Properties===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Get / Update Application Properties===&lt;br /&gt;
List and modify the application properties&lt;br /&gt;
# Click on application node to get / update and then go to properties editor area&amp;lt;br&amp;gt;[[File:update_appproperties_link.png]]&lt;br /&gt;
# Provide the values for application properties and click on 'Save'&amp;lt;br&amp;gt;[[File:update_appproperties.png]]&lt;br /&gt;
# Click on 'Save app properties' button and confirm&amp;lt;br&amp;gt;[[File:update_appproperties_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Add  Application  Properties===&lt;br /&gt;
===Delete  Application  Properties===&lt;br /&gt;
===Update  Application  Properties===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Diagnostic=&lt;br /&gt;
==Current Tags View==&lt;br /&gt;
# Right click on reader/sensor name &amp;lt;br&amp;gt;[[File:Currenttagsmenu.png]]&lt;br /&gt;
# Click on Current tags to view tags on reader &amp;lt;br&amp;gt;[[File:Currenttagsview.png]]&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Web_Administration_Dashboard</id>
		<title>Web Administration Dashboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Web_Administration_Dashboard"/>
				<updated>2020-12-31T12:50:43Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* General Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Dashboard Vision/Roadmap=&lt;br /&gt;
&lt;br /&gt;
The key components of the enterprise-wide dashboard we added with this release – and how they improve ease of use – are summarized below.&lt;br /&gt;
#Edge Server Node Management – Let’s you monitor multiple Rifidi Edge server nodes across the enterprise to see connection states, properties, sensors and applications.&lt;br /&gt;
#Sensor Management – Provides an interface to monitor sensors’ state, manage sensors’ properties and dynamically update sensors’ execution.&lt;br /&gt;
#Rifidi Application Management – Allows you to monitor application states, manage sensor/reader read zones, and update both out-of-the-box business solutions and custom (via SDK) Rifidi sensor/IoT device properties, providing the foundation for a Rifidi Application marketplace.&lt;br /&gt;
=Introduction=&lt;br /&gt;
The Web Administration Dashboard enables users to manage, monitor and configure Rifidi Servers, Sensors/Readers and Applications.&lt;br /&gt;
&lt;br /&gt;
Go to http://localhost:8111/dashboard&lt;br /&gt;
&lt;br /&gt;
[[File:dashboard_sections.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dashboard_wizard_section.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Menu section==&lt;br /&gt;
The menu is a hierarchical tree component, where all the configured servers are listed, and under each server there are three fixed sections:&amp;lt;br&amp;gt;&lt;br /&gt;
#Sensor Management: Allows call operations related to sensors, such as listing sensors, create a new sensor connection, modify sensor properties, associate sessions to sensors, submit a command on a session&lt;br /&gt;
#Command Management: Allows create and delete command instances.&lt;br /&gt;
#App Management: Allows list the applications, start and stop them, modify application properties, group properties. It allows manage readzones, create, modify properties and delete.&lt;br /&gt;
&lt;br /&gt;
==Facility floor plan section==&lt;br /&gt;
It will be available in a future release&lt;br /&gt;
&lt;br /&gt;
==Wizard section==&lt;br /&gt;
When there is the need to create a component by using a wizard, it is displayed in wizard section.&lt;br /&gt;
&lt;br /&gt;
==Properties editor section==&lt;br /&gt;
When a tree element is selected then its properties are displayed in this section, offering the possibility to read or modify them&lt;br /&gt;
&lt;br /&gt;
=Server Management=&lt;br /&gt;
&lt;br /&gt;
==General Information==&lt;br /&gt;
Due to browser security enhancements in order to use dashboard to manage remote Rifidi servers please follow these steps&lt;br /&gt;
&lt;br /&gt;
# Update the following JVM argument in the Rifidi Sever startup script to use the external ip address in place of localhost/127.0.0.1 - &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
-Djava.rmi.server.hostname=192.168.86.58&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Configure Rifidi servers to run via https/ssl with a trusted signed cert from a CA&lt;br /&gt;
&lt;br /&gt;
Steps for this can be found [[Edge_Management#Configuration_.28HTTP_over_SSL.29_-_Available_as_of_version_3.1.1|Rifidi Server Rest SSL Configuration]]&lt;br /&gt;
&lt;br /&gt;
==Add Server==&lt;br /&gt;
Add a new server connection to rest services&lt;br /&gt;
# Right click on 'Servers' node and then choose 'Add server'&amp;lt;br&amp;gt;[[File:add_server_link.png]]&lt;br /&gt;
# Provide the values for attributes: Display name, IP address, protocol and port where rest services are deployed on that server.&amp;lt;br&amp;gt;[[File:add_server.png]]&lt;br /&gt;
# Click on 'Create' button and confirm&amp;lt;br&amp;gt;[[File:add_server_confirm2.png]]&lt;br /&gt;
&lt;br /&gt;
==Delete Server==&lt;br /&gt;
Delete a server connection&lt;br /&gt;
# Right click on server node to delete and then choose 'Delete server'&amp;lt;br&amp;gt;[[File:delete_server_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_server_confirm2.png]]&lt;br /&gt;
&lt;br /&gt;
==Update Server Connection Properties==&lt;br /&gt;
Update connection properties for server&lt;br /&gt;
# Click on server node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_server_link.png]]&lt;br /&gt;
# Provide the values for attributes: Display name, IP address, protocol and port where rest services are deployed on that server.&amp;lt;br&amp;gt;[[File:modify_server.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:modify_server_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Update Server Auto Refresh settings==&lt;br /&gt;
Enables or disables the menu auto refresh feature, so web app periodically synchronizes with server to reflect actual state of elements&lt;br /&gt;
# Click on servers node and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_servers_link.png]]&lt;br /&gt;
# Provide the values for attributes: Enable auto refresh and auto refresh delay.&amp;lt;br&amp;gt;[[File:modify_servers.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:modify_servers_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Save Server Configuration==&lt;br /&gt;
Save config changes made on this server&lt;br /&gt;
# Right click on server node and then choose 'Save server config'&amp;lt;br&amp;gt;[[File:save_server_link.png]]&lt;br /&gt;
# Confirm the save operation&amp;lt;br&amp;gt;[[File:save_server_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Save all servers Configuration==&lt;br /&gt;
Save config changes made on all connected servers&lt;br /&gt;
# Right click on &amp;quot;Servers&amp;quot; node and then choose 'Save all servers config'&amp;lt;br&amp;gt;[[File:save_all_servers_link.png]]&lt;br /&gt;
# Confirm the save operation&amp;lt;br&amp;gt;[[File:save_all_servers_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Get/Set Server JVM Configuration==&lt;br /&gt;
&lt;br /&gt;
==Configure Primary/Secondary Nodes==&lt;br /&gt;
&lt;br /&gt;
==Start Server==&lt;br /&gt;
&lt;br /&gt;
==Stop Server==&lt;br /&gt;
&lt;br /&gt;
==Configure logging==&lt;br /&gt;
&lt;br /&gt;
==View/Filter logs==&lt;br /&gt;
&lt;br /&gt;
==Monitor Server via Jolokia ==&lt;br /&gt;
leveraging edge monitoring Jolokia rest interface&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sensor Management=&lt;br /&gt;
&lt;br /&gt;
===Add Sensor Wizard===&lt;br /&gt;
&lt;br /&gt;
Steps user through creating sensor, session and command (where applicable).&lt;br /&gt;
&lt;br /&gt;
# Right click on 'Sensor Management' node and then choose 'Add Sensor'&amp;lt;br&amp;gt;[[File:add_sensor_link.png]]&lt;br /&gt;
# Choose the sensor type and optionally provide the reader id and click Next&amp;lt;br&amp;gt;[[File:add_sensor_readertype_selection.png]]&lt;br /&gt;
# Set the connection properties for sensor and optionally check if automatically start session, and click Next&amp;lt;br&amp;gt;[[File:add_sensor_set_sensor_properties.png]]&lt;br /&gt;
# Create the command for sensor, choose the command type and choose to create a new command instance or select an existing one, set the properties for command instance and set the scheduling options for executing command, and click Next&amp;lt;br&amp;gt;[[File:add_sensor_create_command.png]]&lt;br /&gt;
# Review steps summary and confirm&amp;lt;br&amp;gt;[[File:add_sensor_summary.png]]&lt;br /&gt;
&lt;br /&gt;
===Update Sensor Properties===&lt;br /&gt;
Option to modify sensor properties&lt;br /&gt;
# Click on sensor node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_sensor_link.png]]&lt;br /&gt;
# Provide the values for sensor attributes&amp;lt;br&amp;gt;[[File:edit_sensor.png]]&lt;br /&gt;
# Click on 'Save sensor properties' button and confirm&amp;lt;br&amp;gt;[[File:edit_sensor_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Delete Sensor===&lt;br /&gt;
Option to delete a sensor connection&lt;br /&gt;
# Right click on sensor node to delete and then choose 'Delete Sensor'&amp;lt;br&amp;gt;[[File:delete_sensor_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_sensor_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Session==&lt;br /&gt;
===Start Session===&lt;br /&gt;
To start a session on sensor&lt;br /&gt;
# Click on session node to start and then click on 'Start Session'&amp;lt;br&amp;gt;[[File:start_session_link.png]]&lt;br /&gt;
&lt;br /&gt;
===Stop Session===&lt;br /&gt;
To stop a session on sensor&lt;br /&gt;
# Click on session node to stop and then click on 'Stop Session'&amp;lt;br&amp;gt;[[File:stop_session_link.png]]&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
===Update Command properties===&lt;br /&gt;
Allows the updating of properties for a command&lt;br /&gt;
# Click on command instance node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_command_link.png]]&lt;br /&gt;
# Provide the values for command attributes&amp;lt;br&amp;gt;[[File:edit_command.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:edit_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Deleted Command===&lt;br /&gt;
Deletes a command template&lt;br /&gt;
# Right click on command node to delete and then choose 'Delete Command Template'&amp;lt;br&amp;gt;[[File:delete_command_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Create Command===&lt;br /&gt;
Creates a command template&lt;br /&gt;
# Right click on command type node, select 'Create Command Template' and then go to properties editor area&amp;lt;br&amp;gt;[[File:create_command_link.png]]&lt;br /&gt;
# Provide the values for command attributes&amp;lt;br&amp;gt;[[File:create_command.png]]&lt;br /&gt;
# Click on 'Create' button and confirm&amp;lt;br&amp;gt;[[File:create_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Execute Command===&lt;br /&gt;
Executes a command on a session&lt;br /&gt;
# Right click on session element where you want to submit the job and then choose 'Submit Job'&amp;lt;br&amp;gt;[[File:execute_command_link.png]]&lt;br /&gt;
# Choose the command type and choose to create a new command instance or select an existing one, set the properties for command instance and set the scheduling options for executing command, and click Submit&amp;lt;br&amp;gt;[[File:execute_command.png]]&lt;br /&gt;
# Confirm the operation clicking on 'Submit Job' buton &amp;lt;br&amp;gt;[[File:execute_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==LLRP==&lt;br /&gt;
===Add Reader Configuarions===&lt;br /&gt;
===Update Reader Configurations===&lt;br /&gt;
===Delete Reader Configuratins===&lt;br /&gt;
===Add RoSpec===&lt;br /&gt;
===Update RoSpec===&lt;br /&gt;
===Delete RoSpec===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Diagnostic==&lt;br /&gt;
===View Current Tags on a Sensor===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Management==&lt;br /&gt;
===Map on Floor Plan (Overlay Google Maps===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Application Management=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Rifidi Applications==&lt;br /&gt;
===Add Application===&lt;br /&gt;
===Update Application===&lt;br /&gt;
===Remove Application===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Readzones==&lt;br /&gt;
===Get Readzones===&lt;br /&gt;
Option to list the readzones associated with an application group&lt;br /&gt;
# Click on 'ReadZones' menu element and it will display the readzones belonging to parent application group&amp;lt;br&amp;gt;[[File:readzones_link.png]]&lt;br /&gt;
&lt;br /&gt;
===Add Readzone===&lt;br /&gt;
To add a readzone definition associated with an application group&lt;br /&gt;
# Right click on 'ReadZones' node and then choose 'Add Read Zone'&amp;lt;br&amp;gt;[[File:add_readzone_link.png]]&lt;br /&gt;
# Set the readzone name and readerID, and optionally provide the antennas, matchPattern and tagPattern, and click on 'Create' button&amp;lt;br&amp;gt;[[File:add_readzone.png]]&lt;br /&gt;
# Confirm the readzone creation operation&amp;lt;br&amp;gt;[[File:add_readzone_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Delete Readzone===&lt;br /&gt;
Deletes a readzone definition&lt;br /&gt;
# Right click on readzone node to delete and then choose 'Delete Command Template'&amp;lt;br&amp;gt;[[File:delete_readzone_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_readzone_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Update Readzone properties===&lt;br /&gt;
Updates the properties for a readzone&lt;br /&gt;
# Click on readzone node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:update_readzone_link.png]]&lt;br /&gt;
# Provide the values for readerID, and optionally provide the antennas, matchPattern and tagPattern attributes&amp;lt;br&amp;gt;[[File:update_readzone.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:update_readzone_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Application Properties==&lt;br /&gt;
===Get / Update Group Properties===&lt;br /&gt;
List and modify the application group properties&lt;br /&gt;
# Click on application group node to get / update and then go to properties editor area&amp;lt;br&amp;gt;[[File:update_groupproperties_link.png]]&lt;br /&gt;
# Provide the values for application group properties and click on 'Save'&amp;lt;br&amp;gt;[[File:update_groupproperties.png]]&lt;br /&gt;
# Click on 'Save app group properties' button and confirm&amp;lt;br&amp;gt;[[File:update_groupproperties_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Add Group Properties===&lt;br /&gt;
===Delete Group Properties===&lt;br /&gt;
===Update Group Properties===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Get / Update Application Properties===&lt;br /&gt;
List and modify the application properties&lt;br /&gt;
# Click on application node to get / update and then go to properties editor area&amp;lt;br&amp;gt;[[File:update_appproperties_link.png]]&lt;br /&gt;
# Provide the values for application properties and click on 'Save'&amp;lt;br&amp;gt;[[File:update_appproperties.png]]&lt;br /&gt;
# Click on 'Save app properties' button and confirm&amp;lt;br&amp;gt;[[File:update_appproperties_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Add  Application  Properties===&lt;br /&gt;
===Delete  Application  Properties===&lt;br /&gt;
===Update  Application  Properties===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Diagnostic=&lt;br /&gt;
==Current Tags View==&lt;br /&gt;
# Right click on reader/sensor name &amp;lt;br&amp;gt;[[File:Currenttagsmenu.png]]&lt;br /&gt;
# Click on Current tags to view tags on reader &amp;lt;br&amp;gt;[[File:Currenttagsview.png]]&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Web_Administration_Dashboard</id>
		<title>Web Administration Dashboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Web_Administration_Dashboard"/>
				<updated>2020-12-31T12:49:25Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* General Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Dashboard Vision/Roadmap=&lt;br /&gt;
&lt;br /&gt;
The key components of the enterprise-wide dashboard we added with this release – and how they improve ease of use – are summarized below.&lt;br /&gt;
#Edge Server Node Management – Let’s you monitor multiple Rifidi Edge server nodes across the enterprise to see connection states, properties, sensors and applications.&lt;br /&gt;
#Sensor Management – Provides an interface to monitor sensors’ state, manage sensors’ properties and dynamically update sensors’ execution.&lt;br /&gt;
#Rifidi Application Management – Allows you to monitor application states, manage sensor/reader read zones, and update both out-of-the-box business solutions and custom (via SDK) Rifidi sensor/IoT device properties, providing the foundation for a Rifidi Application marketplace.&lt;br /&gt;
=Introduction=&lt;br /&gt;
The Web Administration Dashboard enables users to manage, monitor and configure Rifidi Servers, Sensors/Readers and Applications.&lt;br /&gt;
&lt;br /&gt;
Go to http://localhost:8111/dashboard&lt;br /&gt;
&lt;br /&gt;
[[File:dashboard_sections.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dashboard_wizard_section.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Menu section==&lt;br /&gt;
The menu is a hierarchical tree component, where all the configured servers are listed, and under each server there are three fixed sections:&amp;lt;br&amp;gt;&lt;br /&gt;
#Sensor Management: Allows call operations related to sensors, such as listing sensors, create a new sensor connection, modify sensor properties, associate sessions to sensors, submit a command on a session&lt;br /&gt;
#Command Management: Allows create and delete command instances.&lt;br /&gt;
#App Management: Allows list the applications, start and stop them, modify application properties, group properties. It allows manage readzones, create, modify properties and delete.&lt;br /&gt;
&lt;br /&gt;
==Facility floor plan section==&lt;br /&gt;
It will be available in a future release&lt;br /&gt;
&lt;br /&gt;
==Wizard section==&lt;br /&gt;
When there is the need to create a component by using a wizard, it is displayed in wizard section.&lt;br /&gt;
&lt;br /&gt;
==Properties editor section==&lt;br /&gt;
When a tree element is selected then its properties are displayed in this section, offering the possibility to read or modify them&lt;br /&gt;
&lt;br /&gt;
=Server Management=&lt;br /&gt;
&lt;br /&gt;
==General Information==&lt;br /&gt;
Due to browser security enhancements in order to use dashboard to manage remote Rifidi servers please follow these steps&lt;br /&gt;
# Update the following JVM argument in the Rifidi Sever startup script to use the external ip address in place of localhost/127.0.0.1 - &lt;br /&gt;
&lt;br /&gt;
-Djava.rmi.server.hostname=192.168.86.58&lt;br /&gt;
&lt;br /&gt;
# Configure Rifidi servers to run via https/ssl with a trusted signed cert from a CA&lt;br /&gt;
&lt;br /&gt;
Steps for this can be found [[Edge_Management#Configuration_.28HTTP_over_SSL.29_-_Available_as_of_version_3.1.1|Rifidi Server Rest SSL Configuration]]&lt;br /&gt;
&lt;br /&gt;
==Add Server==&lt;br /&gt;
Add a new server connection to rest services&lt;br /&gt;
# Right click on 'Servers' node and then choose 'Add server'&amp;lt;br&amp;gt;[[File:add_server_link.png]]&lt;br /&gt;
# Provide the values for attributes: Display name, IP address, protocol and port where rest services are deployed on that server.&amp;lt;br&amp;gt;[[File:add_server.png]]&lt;br /&gt;
# Click on 'Create' button and confirm&amp;lt;br&amp;gt;[[File:add_server_confirm2.png]]&lt;br /&gt;
&lt;br /&gt;
==Delete Server==&lt;br /&gt;
Delete a server connection&lt;br /&gt;
# Right click on server node to delete and then choose 'Delete server'&amp;lt;br&amp;gt;[[File:delete_server_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_server_confirm2.png]]&lt;br /&gt;
&lt;br /&gt;
==Update Server Connection Properties==&lt;br /&gt;
Update connection properties for server&lt;br /&gt;
# Click on server node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_server_link.png]]&lt;br /&gt;
# Provide the values for attributes: Display name, IP address, protocol and port where rest services are deployed on that server.&amp;lt;br&amp;gt;[[File:modify_server.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:modify_server_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Update Server Auto Refresh settings==&lt;br /&gt;
Enables or disables the menu auto refresh feature, so web app periodically synchronizes with server to reflect actual state of elements&lt;br /&gt;
# Click on servers node and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_servers_link.png]]&lt;br /&gt;
# Provide the values for attributes: Enable auto refresh and auto refresh delay.&amp;lt;br&amp;gt;[[File:modify_servers.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:modify_servers_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Save Server Configuration==&lt;br /&gt;
Save config changes made on this server&lt;br /&gt;
# Right click on server node and then choose 'Save server config'&amp;lt;br&amp;gt;[[File:save_server_link.png]]&lt;br /&gt;
# Confirm the save operation&amp;lt;br&amp;gt;[[File:save_server_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Save all servers Configuration==&lt;br /&gt;
Save config changes made on all connected servers&lt;br /&gt;
# Right click on &amp;quot;Servers&amp;quot; node and then choose 'Save all servers config'&amp;lt;br&amp;gt;[[File:save_all_servers_link.png]]&lt;br /&gt;
# Confirm the save operation&amp;lt;br&amp;gt;[[File:save_all_servers_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Get/Set Server JVM Configuration==&lt;br /&gt;
&lt;br /&gt;
==Configure Primary/Secondary Nodes==&lt;br /&gt;
&lt;br /&gt;
==Start Server==&lt;br /&gt;
&lt;br /&gt;
==Stop Server==&lt;br /&gt;
&lt;br /&gt;
==Configure logging==&lt;br /&gt;
&lt;br /&gt;
==View/Filter logs==&lt;br /&gt;
&lt;br /&gt;
==Monitor Server via Jolokia ==&lt;br /&gt;
leveraging edge monitoring Jolokia rest interface&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sensor Management=&lt;br /&gt;
&lt;br /&gt;
===Add Sensor Wizard===&lt;br /&gt;
&lt;br /&gt;
Steps user through creating sensor, session and command (where applicable).&lt;br /&gt;
&lt;br /&gt;
# Right click on 'Sensor Management' node and then choose 'Add Sensor'&amp;lt;br&amp;gt;[[File:add_sensor_link.png]]&lt;br /&gt;
# Choose the sensor type and optionally provide the reader id and click Next&amp;lt;br&amp;gt;[[File:add_sensor_readertype_selection.png]]&lt;br /&gt;
# Set the connection properties for sensor and optionally check if automatically start session, and click Next&amp;lt;br&amp;gt;[[File:add_sensor_set_sensor_properties.png]]&lt;br /&gt;
# Create the command for sensor, choose the command type and choose to create a new command instance or select an existing one, set the properties for command instance and set the scheduling options for executing command, and click Next&amp;lt;br&amp;gt;[[File:add_sensor_create_command.png]]&lt;br /&gt;
# Review steps summary and confirm&amp;lt;br&amp;gt;[[File:add_sensor_summary.png]]&lt;br /&gt;
&lt;br /&gt;
===Update Sensor Properties===&lt;br /&gt;
Option to modify sensor properties&lt;br /&gt;
# Click on sensor node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_sensor_link.png]]&lt;br /&gt;
# Provide the values for sensor attributes&amp;lt;br&amp;gt;[[File:edit_sensor.png]]&lt;br /&gt;
# Click on 'Save sensor properties' button and confirm&amp;lt;br&amp;gt;[[File:edit_sensor_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Delete Sensor===&lt;br /&gt;
Option to delete a sensor connection&lt;br /&gt;
# Right click on sensor node to delete and then choose 'Delete Sensor'&amp;lt;br&amp;gt;[[File:delete_sensor_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_sensor_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Session==&lt;br /&gt;
===Start Session===&lt;br /&gt;
To start a session on sensor&lt;br /&gt;
# Click on session node to start and then click on 'Start Session'&amp;lt;br&amp;gt;[[File:start_session_link.png]]&lt;br /&gt;
&lt;br /&gt;
===Stop Session===&lt;br /&gt;
To stop a session on sensor&lt;br /&gt;
# Click on session node to stop and then click on 'Stop Session'&amp;lt;br&amp;gt;[[File:stop_session_link.png]]&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
===Update Command properties===&lt;br /&gt;
Allows the updating of properties for a command&lt;br /&gt;
# Click on command instance node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_command_link.png]]&lt;br /&gt;
# Provide the values for command attributes&amp;lt;br&amp;gt;[[File:edit_command.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:edit_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Deleted Command===&lt;br /&gt;
Deletes a command template&lt;br /&gt;
# Right click on command node to delete and then choose 'Delete Command Template'&amp;lt;br&amp;gt;[[File:delete_command_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Create Command===&lt;br /&gt;
Creates a command template&lt;br /&gt;
# Right click on command type node, select 'Create Command Template' and then go to properties editor area&amp;lt;br&amp;gt;[[File:create_command_link.png]]&lt;br /&gt;
# Provide the values for command attributes&amp;lt;br&amp;gt;[[File:create_command.png]]&lt;br /&gt;
# Click on 'Create' button and confirm&amp;lt;br&amp;gt;[[File:create_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Execute Command===&lt;br /&gt;
Executes a command on a session&lt;br /&gt;
# Right click on session element where you want to submit the job and then choose 'Submit Job'&amp;lt;br&amp;gt;[[File:execute_command_link.png]]&lt;br /&gt;
# Choose the command type and choose to create a new command instance or select an existing one, set the properties for command instance and set the scheduling options for executing command, and click Submit&amp;lt;br&amp;gt;[[File:execute_command.png]]&lt;br /&gt;
# Confirm the operation clicking on 'Submit Job' buton &amp;lt;br&amp;gt;[[File:execute_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==LLRP==&lt;br /&gt;
===Add Reader Configuarions===&lt;br /&gt;
===Update Reader Configurations===&lt;br /&gt;
===Delete Reader Configuratins===&lt;br /&gt;
===Add RoSpec===&lt;br /&gt;
===Update RoSpec===&lt;br /&gt;
===Delete RoSpec===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Diagnostic==&lt;br /&gt;
===View Current Tags on a Sensor===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Management==&lt;br /&gt;
===Map on Floor Plan (Overlay Google Maps===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Application Management=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Rifidi Applications==&lt;br /&gt;
===Add Application===&lt;br /&gt;
===Update Application===&lt;br /&gt;
===Remove Application===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Readzones==&lt;br /&gt;
===Get Readzones===&lt;br /&gt;
Option to list the readzones associated with an application group&lt;br /&gt;
# Click on 'ReadZones' menu element and it will display the readzones belonging to parent application group&amp;lt;br&amp;gt;[[File:readzones_link.png]]&lt;br /&gt;
&lt;br /&gt;
===Add Readzone===&lt;br /&gt;
To add a readzone definition associated with an application group&lt;br /&gt;
# Right click on 'ReadZones' node and then choose 'Add Read Zone'&amp;lt;br&amp;gt;[[File:add_readzone_link.png]]&lt;br /&gt;
# Set the readzone name and readerID, and optionally provide the antennas, matchPattern and tagPattern, and click on 'Create' button&amp;lt;br&amp;gt;[[File:add_readzone.png]]&lt;br /&gt;
# Confirm the readzone creation operation&amp;lt;br&amp;gt;[[File:add_readzone_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Delete Readzone===&lt;br /&gt;
Deletes a readzone definition&lt;br /&gt;
# Right click on readzone node to delete and then choose 'Delete Command Template'&amp;lt;br&amp;gt;[[File:delete_readzone_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_readzone_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Update Readzone properties===&lt;br /&gt;
Updates the properties for a readzone&lt;br /&gt;
# Click on readzone node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:update_readzone_link.png]]&lt;br /&gt;
# Provide the values for readerID, and optionally provide the antennas, matchPattern and tagPattern attributes&amp;lt;br&amp;gt;[[File:update_readzone.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:update_readzone_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Application Properties==&lt;br /&gt;
===Get / Update Group Properties===&lt;br /&gt;
List and modify the application group properties&lt;br /&gt;
# Click on application group node to get / update and then go to properties editor area&amp;lt;br&amp;gt;[[File:update_groupproperties_link.png]]&lt;br /&gt;
# Provide the values for application group properties and click on 'Save'&amp;lt;br&amp;gt;[[File:update_groupproperties.png]]&lt;br /&gt;
# Click on 'Save app group properties' button and confirm&amp;lt;br&amp;gt;[[File:update_groupproperties_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Add Group Properties===&lt;br /&gt;
===Delete Group Properties===&lt;br /&gt;
===Update Group Properties===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Get / Update Application Properties===&lt;br /&gt;
List and modify the application properties&lt;br /&gt;
# Click on application node to get / update and then go to properties editor area&amp;lt;br&amp;gt;[[File:update_appproperties_link.png]]&lt;br /&gt;
# Provide the values for application properties and click on 'Save'&amp;lt;br&amp;gt;[[File:update_appproperties.png]]&lt;br /&gt;
# Click on 'Save app properties' button and confirm&amp;lt;br&amp;gt;[[File:update_appproperties_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Add  Application  Properties===&lt;br /&gt;
===Delete  Application  Properties===&lt;br /&gt;
===Update  Application  Properties===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Diagnostic=&lt;br /&gt;
==Current Tags View==&lt;br /&gt;
# Right click on reader/sensor name &amp;lt;br&amp;gt;[[File:Currenttagsmenu.png]]&lt;br /&gt;
# Click on Current tags to view tags on reader &amp;lt;br&amp;gt;[[File:Currenttagsview.png]]&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Web_Administration_Dashboard</id>
		<title>Web Administration Dashboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Web_Administration_Dashboard"/>
				<updated>2020-12-31T12:46:59Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* Server Management */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Dashboard Vision/Roadmap=&lt;br /&gt;
&lt;br /&gt;
The key components of the enterprise-wide dashboard we added with this release – and how they improve ease of use – are summarized below.&lt;br /&gt;
#Edge Server Node Management – Let’s you monitor multiple Rifidi Edge server nodes across the enterprise to see connection states, properties, sensors and applications.&lt;br /&gt;
#Sensor Management – Provides an interface to monitor sensors’ state, manage sensors’ properties and dynamically update sensors’ execution.&lt;br /&gt;
#Rifidi Application Management – Allows you to monitor application states, manage sensor/reader read zones, and update both out-of-the-box business solutions and custom (via SDK) Rifidi sensor/IoT device properties, providing the foundation for a Rifidi Application marketplace.&lt;br /&gt;
=Introduction=&lt;br /&gt;
The Web Administration Dashboard enables users to manage, monitor and configure Rifidi Servers, Sensors/Readers and Applications.&lt;br /&gt;
&lt;br /&gt;
Go to http://localhost:8111/dashboard&lt;br /&gt;
&lt;br /&gt;
[[File:dashboard_sections.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dashboard_wizard_section.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Menu section==&lt;br /&gt;
The menu is a hierarchical tree component, where all the configured servers are listed, and under each server there are three fixed sections:&amp;lt;br&amp;gt;&lt;br /&gt;
#Sensor Management: Allows call operations related to sensors, such as listing sensors, create a new sensor connection, modify sensor properties, associate sessions to sensors, submit a command on a session&lt;br /&gt;
#Command Management: Allows create and delete command instances.&lt;br /&gt;
#App Management: Allows list the applications, start and stop them, modify application properties, group properties. It allows manage readzones, create, modify properties and delete.&lt;br /&gt;
&lt;br /&gt;
==Facility floor plan section==&lt;br /&gt;
It will be available in a future release&lt;br /&gt;
&lt;br /&gt;
==Wizard section==&lt;br /&gt;
When there is the need to create a component by using a wizard, it is displayed in wizard section.&lt;br /&gt;
&lt;br /&gt;
==Properties editor section==&lt;br /&gt;
When a tree element is selected then its properties are displayed in this section, offering the possibility to read or modify them&lt;br /&gt;
&lt;br /&gt;
=Server Management=&lt;br /&gt;
&lt;br /&gt;
==General Information==&lt;br /&gt;
Due to browser security enhancements in order to use dashboard to manage remote Rifidi servers please follow these steps&lt;br /&gt;
# Update the following JVM argument in the Rifidi Sever startup script to use the external ip address in place of localhost/127.0.0.1 - &lt;br /&gt;
&lt;br /&gt;
-Djava.rmi.server.hostname=192.168.86.58&lt;br /&gt;
&lt;br /&gt;
# Configure Rifidi servers to run via https/ssl with a trusted signed cert from a CA&lt;br /&gt;
&lt;br /&gt;
Steps for this can be found here&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Add Server==&lt;br /&gt;
Add a new server connection to rest services&lt;br /&gt;
# Right click on 'Servers' node and then choose 'Add server'&amp;lt;br&amp;gt;[[File:add_server_link.png]]&lt;br /&gt;
# Provide the values for attributes: Display name, IP address, protocol and port where rest services are deployed on that server.&amp;lt;br&amp;gt;[[File:add_server.png]]&lt;br /&gt;
# Click on 'Create' button and confirm&amp;lt;br&amp;gt;[[File:add_server_confirm2.png]]&lt;br /&gt;
&lt;br /&gt;
==Delete Server==&lt;br /&gt;
Delete a server connection&lt;br /&gt;
# Right click on server node to delete and then choose 'Delete server'&amp;lt;br&amp;gt;[[File:delete_server_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_server_confirm2.png]]&lt;br /&gt;
&lt;br /&gt;
==Update Server Connection Properties==&lt;br /&gt;
Update connection properties for server&lt;br /&gt;
# Click on server node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_server_link.png]]&lt;br /&gt;
# Provide the values for attributes: Display name, IP address, protocol and port where rest services are deployed on that server.&amp;lt;br&amp;gt;[[File:modify_server.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:modify_server_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Update Server Auto Refresh settings==&lt;br /&gt;
Enables or disables the menu auto refresh feature, so web app periodically synchronizes with server to reflect actual state of elements&lt;br /&gt;
# Click on servers node and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_servers_link.png]]&lt;br /&gt;
# Provide the values for attributes: Enable auto refresh and auto refresh delay.&amp;lt;br&amp;gt;[[File:modify_servers.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:modify_servers_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Save Server Configuration==&lt;br /&gt;
Save config changes made on this server&lt;br /&gt;
# Right click on server node and then choose 'Save server config'&amp;lt;br&amp;gt;[[File:save_server_link.png]]&lt;br /&gt;
# Confirm the save operation&amp;lt;br&amp;gt;[[File:save_server_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Save all servers Configuration==&lt;br /&gt;
Save config changes made on all connected servers&lt;br /&gt;
# Right click on &amp;quot;Servers&amp;quot; node and then choose 'Save all servers config'&amp;lt;br&amp;gt;[[File:save_all_servers_link.png]]&lt;br /&gt;
# Confirm the save operation&amp;lt;br&amp;gt;[[File:save_all_servers_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Get/Set Server JVM Configuration==&lt;br /&gt;
&lt;br /&gt;
==Configure Primary/Secondary Nodes==&lt;br /&gt;
&lt;br /&gt;
==Start Server==&lt;br /&gt;
&lt;br /&gt;
==Stop Server==&lt;br /&gt;
&lt;br /&gt;
==Configure logging==&lt;br /&gt;
&lt;br /&gt;
==View/Filter logs==&lt;br /&gt;
&lt;br /&gt;
==Monitor Server via Jolokia ==&lt;br /&gt;
leveraging edge monitoring Jolokia rest interface&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sensor Management=&lt;br /&gt;
&lt;br /&gt;
===Add Sensor Wizard===&lt;br /&gt;
&lt;br /&gt;
Steps user through creating sensor, session and command (where applicable).&lt;br /&gt;
&lt;br /&gt;
# Right click on 'Sensor Management' node and then choose 'Add Sensor'&amp;lt;br&amp;gt;[[File:add_sensor_link.png]]&lt;br /&gt;
# Choose the sensor type and optionally provide the reader id and click Next&amp;lt;br&amp;gt;[[File:add_sensor_readertype_selection.png]]&lt;br /&gt;
# Set the connection properties for sensor and optionally check if automatically start session, and click Next&amp;lt;br&amp;gt;[[File:add_sensor_set_sensor_properties.png]]&lt;br /&gt;
# Create the command for sensor, choose the command type and choose to create a new command instance or select an existing one, set the properties for command instance and set the scheduling options for executing command, and click Next&amp;lt;br&amp;gt;[[File:add_sensor_create_command.png]]&lt;br /&gt;
# Review steps summary and confirm&amp;lt;br&amp;gt;[[File:add_sensor_summary.png]]&lt;br /&gt;
&lt;br /&gt;
===Update Sensor Properties===&lt;br /&gt;
Option to modify sensor properties&lt;br /&gt;
# Click on sensor node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_sensor_link.png]]&lt;br /&gt;
# Provide the values for sensor attributes&amp;lt;br&amp;gt;[[File:edit_sensor.png]]&lt;br /&gt;
# Click on 'Save sensor properties' button and confirm&amp;lt;br&amp;gt;[[File:edit_sensor_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Delete Sensor===&lt;br /&gt;
Option to delete a sensor connection&lt;br /&gt;
# Right click on sensor node to delete and then choose 'Delete Sensor'&amp;lt;br&amp;gt;[[File:delete_sensor_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_sensor_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Session==&lt;br /&gt;
===Start Session===&lt;br /&gt;
To start a session on sensor&lt;br /&gt;
# Click on session node to start and then click on 'Start Session'&amp;lt;br&amp;gt;[[File:start_session_link.png]]&lt;br /&gt;
&lt;br /&gt;
===Stop Session===&lt;br /&gt;
To stop a session on sensor&lt;br /&gt;
# Click on session node to stop and then click on 'Stop Session'&amp;lt;br&amp;gt;[[File:stop_session_link.png]]&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
===Update Command properties===&lt;br /&gt;
Allows the updating of properties for a command&lt;br /&gt;
# Click on command instance node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:edit_command_link.png]]&lt;br /&gt;
# Provide the values for command attributes&amp;lt;br&amp;gt;[[File:edit_command.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:edit_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Deleted Command===&lt;br /&gt;
Deletes a command template&lt;br /&gt;
# Right click on command node to delete and then choose 'Delete Command Template'&amp;lt;br&amp;gt;[[File:delete_command_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Create Command===&lt;br /&gt;
Creates a command template&lt;br /&gt;
# Right click on command type node, select 'Create Command Template' and then go to properties editor area&amp;lt;br&amp;gt;[[File:create_command_link.png]]&lt;br /&gt;
# Provide the values for command attributes&amp;lt;br&amp;gt;[[File:create_command.png]]&lt;br /&gt;
# Click on 'Create' button and confirm&amp;lt;br&amp;gt;[[File:create_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Execute Command===&lt;br /&gt;
Executes a command on a session&lt;br /&gt;
# Right click on session element where you want to submit the job and then choose 'Submit Job'&amp;lt;br&amp;gt;[[File:execute_command_link.png]]&lt;br /&gt;
# Choose the command type and choose to create a new command instance or select an existing one, set the properties for command instance and set the scheduling options for executing command, and click Submit&amp;lt;br&amp;gt;[[File:execute_command.png]]&lt;br /&gt;
# Confirm the operation clicking on 'Submit Job' buton &amp;lt;br&amp;gt;[[File:execute_command_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==LLRP==&lt;br /&gt;
===Add Reader Configuarions===&lt;br /&gt;
===Update Reader Configurations===&lt;br /&gt;
===Delete Reader Configuratins===&lt;br /&gt;
===Add RoSpec===&lt;br /&gt;
===Update RoSpec===&lt;br /&gt;
===Delete RoSpec===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Diagnostic==&lt;br /&gt;
===View Current Tags on a Sensor===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Management==&lt;br /&gt;
===Map on Floor Plan (Overlay Google Maps===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Application Management=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Rifidi Applications==&lt;br /&gt;
===Add Application===&lt;br /&gt;
===Update Application===&lt;br /&gt;
===Remove Application===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Readzones==&lt;br /&gt;
===Get Readzones===&lt;br /&gt;
Option to list the readzones associated with an application group&lt;br /&gt;
# Click on 'ReadZones' menu element and it will display the readzones belonging to parent application group&amp;lt;br&amp;gt;[[File:readzones_link.png]]&lt;br /&gt;
&lt;br /&gt;
===Add Readzone===&lt;br /&gt;
To add a readzone definition associated with an application group&lt;br /&gt;
# Right click on 'ReadZones' node and then choose 'Add Read Zone'&amp;lt;br&amp;gt;[[File:add_readzone_link.png]]&lt;br /&gt;
# Set the readzone name and readerID, and optionally provide the antennas, matchPattern and tagPattern, and click on 'Create' button&amp;lt;br&amp;gt;[[File:add_readzone.png]]&lt;br /&gt;
# Confirm the readzone creation operation&amp;lt;br&amp;gt;[[File:add_readzone_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Delete Readzone===&lt;br /&gt;
Deletes a readzone definition&lt;br /&gt;
# Right click on readzone node to delete and then choose 'Delete Command Template'&amp;lt;br&amp;gt;[[File:delete_readzone_link.png]]&lt;br /&gt;
# Confirm delete operation&amp;lt;br&amp;gt;[[File:delete_readzone_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
===Update Readzone properties===&lt;br /&gt;
Updates the properties for a readzone&lt;br /&gt;
# Click on readzone node to modify and then go to properties editor area&amp;lt;br&amp;gt;[[File:update_readzone_link.png]]&lt;br /&gt;
# Provide the values for readerID, and optionally provide the antennas, matchPattern and tagPattern attributes&amp;lt;br&amp;gt;[[File:update_readzone.png]]&lt;br /&gt;
# Click on 'Save' button and confirm&amp;lt;br&amp;gt;[[File:update_readzone_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
==Application Properties==&lt;br /&gt;
===Get / Update Group Properties===&lt;br /&gt;
List and modify the application group properties&lt;br /&gt;
# Click on application group node to get / update and then go to properties editor area&amp;lt;br&amp;gt;[[File:update_groupproperties_link.png]]&lt;br /&gt;
# Provide the values for application group properties and click on 'Save'&amp;lt;br&amp;gt;[[File:update_groupproperties.png]]&lt;br /&gt;
# Click on 'Save app group properties' button and confirm&amp;lt;br&amp;gt;[[File:update_groupproperties_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Add Group Properties===&lt;br /&gt;
===Delete Group Properties===&lt;br /&gt;
===Update Group Properties===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Get / Update Application Properties===&lt;br /&gt;
List and modify the application properties&lt;br /&gt;
# Click on application node to get / update and then go to properties editor area&amp;lt;br&amp;gt;[[File:update_appproperties_link.png]]&lt;br /&gt;
# Provide the values for application properties and click on 'Save'&amp;lt;br&amp;gt;[[File:update_appproperties.png]]&lt;br /&gt;
# Click on 'Save app properties' button and confirm&amp;lt;br&amp;gt;[[File:update_appproperties_confirm.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Add  Application  Properties===&lt;br /&gt;
===Delete  Application  Properties===&lt;br /&gt;
===Update  Application  Properties===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Diagnostic=&lt;br /&gt;
==Current Tags View==&lt;br /&gt;
# Right click on reader/sensor name &amp;lt;br&amp;gt;[[File:Currenttagsmenu.png]]&lt;br /&gt;
# Click on Current tags to view tags on reader &amp;lt;br&amp;gt;[[File:Currenttagsview.png]]&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Management</id>
		<title>Edge Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Management"/>
				<updated>2020-12-24T13:25:30Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* REST HTTP over SSL Example Application */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Starting in 3.1 Edge Management is now accessible though Restful Services (leveraging [http://restlet.com/ Restlet plugin]. Restlet allows all Rifidi Edge Management operations available through workbench to be accessible via Restful Services.Prior to Rifidi 3.1 Edge Management is available through RMI (currently used by Rifidi Workbench if looking for code examples). &lt;br /&gt;
&lt;br /&gt;
The types of operations available through Restful Services include:&lt;br /&gt;
*All &amp;quot;session&amp;quot; commands (for stopping and starting reader/sensor sessions)&lt;br /&gt;
*ExecuteCommand and deleteCommand  (for commands supported by a sensor such as a tag read)&lt;br /&gt;
*Readers (for getting a list of readers/sensors available on Edge Server instance)&lt;br /&gt;
*Commands (for issuing command line operations such as saving the Edge Server Configuration currently in memory)&lt;br /&gt;
*Get and Set Properties (for setting and getting sensor properties such as Setting the LLRP Reader Configuration dynamically)&lt;br /&gt;
*Create Reader (for creating a new reader connection)&lt;br /&gt;
*Managing Rifidi Applications (for stopping/starting, listing and deploying Rifidi Apps)&lt;br /&gt;
&lt;br /&gt;
Additional features can be found on [http://restlet.com/ Restlet User Guide ]&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
In rifidiserver.ini  - A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.port=8111&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.enabled=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source for Restful Rifidi Management Commands - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/&lt;br /&gt;
&lt;br /&gt;
=Configuration (HTTP over SSL) - Available as of version 3.1.1= &lt;br /&gt;
&lt;br /&gt;
A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SSL Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.port=8183&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.ssl.enabled=true&lt;br /&gt;
#Keystore Path&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepath=\config\serverX.jks&lt;br /&gt;
#Key store password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepassword=password&lt;br /&gt;
#Key Password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keypassword=password&lt;br /&gt;
#Key store Type&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystoretype=JKS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Note: Link to how to configure/setup certificates with REST - http://restlet.com/learn/guide/2.3/core/security/https&lt;br /&gt;
==REST HTTP over SSL Example Application==&lt;br /&gt;
link to https java client example - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge.rest/src/org/rifidi/edge/rest/test/HttpsTestClient.java&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user can add this jvm parameter to see detailed messages if getting any &lt;br /&gt;
trouble when running this example:&lt;br /&gt;
-Djavax.net.debug=all&lt;br /&gt;
&lt;br /&gt;
In order to successful get the https response from stand alone java &lt;br /&gt;
example, user must import the certificate into JVM:&lt;br /&gt;
&lt;br /&gt;
open command windows as administrator and execute keytool -import, like:&lt;br /&gt;
&lt;br /&gt;
keytool -import -alias localhost -keystore &amp;quot;C:\Program Files &lt;br /&gt;
(x86)\Java\jdk1.6.0_45\jre\lib\security\cacerts&amp;quot; -file &lt;br /&gt;
&amp;quot;D:\tmp\cert\localhost.cer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if requested, default password is: changeit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensure to place the generated JKS file in the Rifidi \config folder so the server can start via SSL and find the cert&lt;br /&gt;
&lt;br /&gt;
=Restlet Logging= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1. Add an entry to the rifidiserver.ini (if using windows; when using linux you add this JVM argument in the rifidi-server executable):&lt;br /&gt;
-Djava.util.logging.config.file=d:/myLogging.properties&lt;br /&gt;
&lt;br /&gt;
*2. Create logging properties file, for example like the below myLogging.properties&lt;br /&gt;
The entry in that file that determines where the log file will show up is the following: java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myLogging.properties&lt;br /&gt;
# ================================&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ==   Web Logging Properties   ==&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # ------------------&lt;br /&gt;
    # General properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # This defines a whitespace separated list of class names for handler classes to load and register as handlers on&lt;br /&gt;
    # the root Logger (the Logger named &amp;quot;&amp;quot;). Each class name must be for a Handler class which has a default constructor.&lt;br /&gt;
    # Note that these Handlers may be created lazily, when they are first used.&lt;br /&gt;
    handlers=java.util.logging.FileHandler&lt;br /&gt;
	# ------------------&lt;br /&gt;
    # Loggers properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
    .level=WARNING&lt;br /&gt;
    org.mortbay.level=WARNING&lt;br /&gt;
    org.restlet.level=INFO&lt;br /&gt;
    com.noelios.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    com.noelios.web.WebComponent.www.level=INFO&lt;br /&gt;
    com.noelios.web.WebComponent.www.handlers=com.noelios.restlet.util.AccessLogFileHandler&lt;br /&gt;
    com.noelios.web.WebComponent.www.useParentHandlers=false&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # ConsoleHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.INFO).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.formatter=&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.encoding=&lt;br /&gt;
	&lt;br /&gt;
	# ------------------------------&lt;br /&gt;
    # General FileHandler properties&lt;br /&gt;
    # ------------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # java.util.logging.FileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.FileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.FileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    java.util.logging.FileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    java.util.logging.FileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot;&lt;br /&gt;
    java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # java.util.logging.FileHandler.append=&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # LogFileHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.formatter=com.noelios.restlet.util.AccessLogFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot; .pattern=/home/prod/data/log/WebComponent-www-%u-%g.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # org.restlet.util.AccessLogFileHandler.append=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Tuning/Confguration (Jetty) as of Rifidi 3.4= &lt;br /&gt;
&lt;br /&gt;
As of Rifidi 3.4 Jetty was made the default HTTP container for Restlet to allow for extended performance and configuration of the REST interface.&lt;br /&gt;
&lt;br /&gt;
The parameters can for configured in the Rifidi Server (ini) configuration&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.minThreads=8	Thread pool minimum threads&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.maxThreads=200	Thread pool max threads&lt;br /&gt;
&lt;br /&gt;
Full list of Jetty parameters using the same naming convention can be found here  - http://restlet.com/technical-resources/restlet-framework/javadocs/snapshot/jse/ext/org/restlet/ext/jetty/JettyServerHelper.html&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
==Command Code Snippet - start session - example how to use Rifidi API in a Java App==&lt;br /&gt;
All Rifidi Management API Command Logic here - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/SensorManagerServiceRestletImpl.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
sensorManagerService.startSession((String) request&lt;br /&gt;
	.getAttributes().get(&amp;quot;readerID&amp;quot;), (String) request&lt;br /&gt;
		.getAttributes().get(&amp;quot;sessionID&amp;quot;));&lt;br /&gt;
	response.setEntity(self.generateReturnString(self&lt;br /&gt;
		.generateSuccessMessage()), MediaType.TEXT_XML);&lt;br /&gt;
} catch (Exception e) {&lt;br /&gt;
	response.setEntity(e.getMessage(), MediaType.TEXT_PLAIN);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Command Basic Flow Example==&lt;br /&gt;
#Create a Reader - http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
#Create a Session (on a reader/sensor)  - http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
#Create a Command (on a reader/sensor)) -/createcommand/{commandType}/{properties} &lt;br /&gt;
*Note: some readers do not require create/executing a command as there is only one command hence for convenience is part of the create session/start session  (Thinkify, CSL and Generic adapter (for handhelds/async push calls) are some examples of this)&lt;br /&gt;
#Set Command Properties - http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
#Execute Command (on a given reader/sensor and session) - http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1&lt;br /&gt;
#Start Session (to begin processing reads using associate command/reader/sensor configuration)  - http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
#Save Configuartion (optional -  to save/persist config in case of a server restart) - http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
=Command Example=&lt;br /&gt;
&lt;br /&gt;
Note: localhost can be substituted with IP address/Host name of Rifidi Edge Server. Port can be changed in Rifidi configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==commandtypes command example==&lt;br /&gt;
&lt;br /&gt;
*commandtypes - returns a list of available command types&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commandtypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commandtypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-ADD_ROSPEC-File&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader via an XML file. Any changes made to the reader are determined by the contents of the file. To generate xml code for the commands you want to submit, check out LLRP Commander here: http://www.fosstrak.org/llrp/index.html&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;ThingMagic-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the ThingMagic reader for its tags. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;ThingMagic&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Start&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Alien reader to send back tags using the autonomous mode. To monitor a read zone, configure an Alien autonomous reader to listen. Then submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader to collect tags. By default, this command will cause the LLRP reader to push back tag reads automatically. If you would rather use the Poll mode, you will need to use the LLRP Poll command. To use the LLRP Configure command, submit it for a one-time execution&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the LLRP reader to stop sending back tags. To use, supply the RO Spec that is currently executing on the reader, and submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Thingmagic6-Push&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Sets the Thingmagic to push tags back to the edge server&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Thingmagic6&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the Alien reader for its tag list. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the LLRP reader for its tags. For monitoring of the read zone, first use the LLRP Configure command to configure the LLRP reader for Poll Mode. Then submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Mask-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID With Mask command. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Alien reader to stop sending back tags in autonomous mode. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Read-Block-Data&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back memory bank tags using the Read Block Data commmand. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readertypes command example==&lt;br /&gt;
&lt;br /&gt;
*readertypes - returns a list of available reader/sensor types (such as LLRP, Alien, BarCode etc..)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readertypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readertypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Generic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;A generic Rifidi Adapter.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Opticon&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Adapter for the Opticon Barcode Sensor&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien-Autonomous&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien autonomous adapter is an endpoint to passively receive tag reads from an Alien reader operating in autonomous mode. You cannot send any commands on the alien autonomous session&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid2010&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thingmagic6&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thingmagic 6 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi LLRP adapter supports any reader that exposes a Low Level Reader Protocol (LLRP) interface. LLRP is a standard from EPCglobal.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid3014&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien adapter supports the Alien ALR protocol on the 9900, 9800, 8800 readers.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thinkify50&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thinkify TR50 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;ThingMagic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi ThingMagic adapater supports the ThingMagic RQL protocol on the Mercury 4 and Mercury 5 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader command example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader overriding default readerID command example==&lt;br /&gt;
&lt;br /&gt;
The reader id is important for applications' read zones to appropriate operate, and this id is used to link read zones with sensors. This command enables one to set the readerId versus the system generating one (default behavior).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: To override the default reader id, there must be included the property readerID, in order to assign a specific reader id and override the default. &lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletereader command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletereader/{readerID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid readerID: LLRP&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readers command example==&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readers&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
*readers - returns a list of readers/senors managed by the Edge Server&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readers  &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_2&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get reader properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{readerID} - returns the reader/sensor properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this, to get a reader properties:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;5084&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;192.168.1.48&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;DisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;null&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReaderConfigPath&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;config/SET_READER_CONFIG.llrp&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get command properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{commandID} - returns the command properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ROSpecID&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;AntennaIDs&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Duration&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1000&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;TriggerType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;PUSH&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set reader properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{readerID}/{properties}&amp;quot; - sets the reader/sensor properties&lt;br /&gt;
Note: if there is an existing session for updated reader properties to take effect the session will need to be deleted and recreated so the properties are moved to the session &lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/Alien_1/MaxNumConnectionAttempts=11;DisplayName=Alien_Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_1/IpAddress=127.0.0.15;Port=4567;att1=aa;att2=bbb;attt3=YY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: att1=aa|att2=bbb|attt3=YY&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set command properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{commandID}/{properties}&amp;quot; - sets the command properties&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=7500;cc=4;other=67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: cc=4|other=67&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==commands command example==&lt;br /&gt;
&lt;br /&gt;
*commands - returns a list of available commands&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commands&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commands&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commands&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;&lt;br /&gt;
         &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createcommand example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the command instance is created or the call fails therefore the rcommand instance is not created&lt;br /&gt;
&lt;br /&gt;
*createcomamnd/{commandType}/{properties} - creates a command to be executed on a reader session&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createcommand&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=5000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commandID&amp;gt;Alien_Poll_2&amp;lt;/commandID&amp;gt; Note: Added in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response error (if there is at least one non valid property, the command is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=4000;propX=123;prop2=AB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: propX=123|prop2=AB&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletecommand command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletecommand/{commandID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid commandID: LLRP_Configure&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createsession command example==&lt;br /&gt;
&lt;br /&gt;
*createsession/{readerID} - creates a session (with corresponding reader/sensor configuration) and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sessionID&amp;gt;1&amp;lt;/sessionID&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail -already a session for sensor id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
     java.lang.Exception: Reader Alien_1 already has a session.&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startsession command example==&lt;br /&gt;
&lt;br /&gt;
*startsession/{readerID}/{sessionID} - starts a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;startsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CONNECTING&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to start session, current state is CONNECTING  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readerstatus command example==&lt;br /&gt;
&lt;br /&gt;
*readerstatus/{readerID} - retuns teh status of a given reader/sensor&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readerstatus&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readerstatus/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensor&amp;gt;&lt;br /&gt;
      &amp;lt;serviceID&amp;gt;LLRP_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
      &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
   &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;sessions&amp;gt;&lt;br /&gt;
      &amp;lt;session&amp;gt;&lt;br /&gt;
         &amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;&lt;br /&gt;
         &amp;lt;status&amp;gt;PROCESSING&amp;lt;/status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;executingcommands&amp;gt;&lt;br /&gt;
            &amp;lt;executingcommand&amp;gt;&lt;br /&gt;
               &amp;lt;commandFactory&amp;gt;LLRP-Configure&amp;lt;/commandFactory&amp;gt;&lt;br /&gt;
              &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
              &amp;lt;interval&amp;gt;0&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;/executingcommand&amp;gt;&lt;br /&gt;
        &amp;lt;/executingcommands&amp;gt;&lt;br /&gt;
      &amp;lt;/session&amp;gt;&lt;br /&gt;
   &amp;lt;/sessions&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==stopsession command example==&lt;br /&gt;
&lt;br /&gt;
*stopsession/{readerID}/{sessionID} - stops a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;stopsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/stopsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CREATED&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to stop session, current state is CREATED  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==resetsession command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/resetsession/{readerID}/{sessionID}&lt;br /&gt;
&lt;br /&gt;
Used to stop and start an existing reader session&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/resetsession/LLRP_1/1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
==executecommand command example==&lt;br /&gt;
&lt;br /&gt;
*executecommand/{readerID}/{sessionID}/{commandID}/{repeatInterval} - Executes a command for a given session&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;executecommand&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/0 (for single shot - one time execution)&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletesession command example==&lt;br /&gt;
&lt;br /&gt;
*deletesession/{readerID}/{sessionID} - deletes a session and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;deletesession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletesession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==save command example==&lt;br /&gt;
&lt;br /&gt;
*save - Saves the current state of the Edge Server configuration (such as created readers/sensors, modified properties etc..&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;save&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ping - Used by failover feature==&lt;br /&gt;
*ping -  Returns a date/timestamp&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;ping&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/ping&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp&amp;gt;1414610247969&amp;lt;/timestamp&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==currenttags example (released in Rifidi 3.4)==&lt;br /&gt;
*currenttags/{readerID} -  Returns a list of tags on a given reader&lt;br /&gt;
&lt;br /&gt;
Note: timestamp, reader and RSSI added in 3.5.1&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;currenttags&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/currenttags/LLRP_1 &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;currenttags&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
   &amp;lt;/currenttags&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readermetadata - Used by Web Administration Dashboard for Dynamic Reader &amp;amp; Command Properties/Wizard (released in 3.2)==&lt;br /&gt;
*readermetadata-  Returns reader metadata&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readermetadata&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readermetadata&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;readers&amp;gt;&lt;br /&gt;
  &amp;lt;reader&amp;gt;&lt;br /&gt;
   &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;ReconnectionInterval&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Reconnection Interval&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;500&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;&lt;br /&gt;
     Upon connection failure, the time to wait between two connection attempts (ms)&lt;br /&gt;
     &amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;4.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Port&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Port&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;8090&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Port of the Reader&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;maxvalue&amp;gt;65535&amp;lt;/maxvalue&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;1.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thinkify RCS Command - Used for one time configuration of a Thinkify USB reader (Deprecated in 3.5.1)==&lt;br /&gt;
*rcs/{Thinkify Reader ID}/{sessionid}&lt;br /&gt;
&lt;br /&gt;
request (via HTTP Post/Get) &amp;quot;rcs&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/rcs/ThinkifyUSB_1/1&lt;br /&gt;
&lt;br /&gt;
==startbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/startbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==stopbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/stopbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to install a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==installbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/installbundle&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to start a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/installbundle&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==uninstallbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/uninstallbundle/{bundleID}&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to uninstall a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/uninstallbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==ss OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/ss&lt;br /&gt;
&lt;br /&gt;
Used to list the OSGI bundles&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/ss&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.osgi&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.weaving.hook&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;RESOLVED&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.simpleconfigurator&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;com.sun.mail.javax.mail&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set GPO Command Example (released in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*/setgpo/{readerID}/{sessionID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to set gpo&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/setgpo/LLRP_1/1/1,2,3&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flash GPO Command Example (released in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//flashgpo/{readerID}/{sessionID}/{ports}/{duration in seconds}&lt;br /&gt;
&lt;br /&gt;
Used to turn gpo on for a specified duration such as Flashing a light on for 4 seconds then turn it off again&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/flashgpo/LLRP_1/1/1,2,3/4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Management</id>
		<title>Edge Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Management"/>
				<updated>2020-12-24T12:31:47Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* REST HTTP over SSL Example Application */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Starting in 3.1 Edge Management is now accessible though Restful Services (leveraging [http://restlet.com/ Restlet plugin]. Restlet allows all Rifidi Edge Management operations available through workbench to be accessible via Restful Services.Prior to Rifidi 3.1 Edge Management is available through RMI (currently used by Rifidi Workbench if looking for code examples). &lt;br /&gt;
&lt;br /&gt;
The types of operations available through Restful Services include:&lt;br /&gt;
*All &amp;quot;session&amp;quot; commands (for stopping and starting reader/sensor sessions)&lt;br /&gt;
*ExecuteCommand and deleteCommand  (for commands supported by a sensor such as a tag read)&lt;br /&gt;
*Readers (for getting a list of readers/sensors available on Edge Server instance)&lt;br /&gt;
*Commands (for issuing command line operations such as saving the Edge Server Configuration currently in memory)&lt;br /&gt;
*Get and Set Properties (for setting and getting sensor properties such as Setting the LLRP Reader Configuration dynamically)&lt;br /&gt;
*Create Reader (for creating a new reader connection)&lt;br /&gt;
*Managing Rifidi Applications (for stopping/starting, listing and deploying Rifidi Apps)&lt;br /&gt;
&lt;br /&gt;
Additional features can be found on [http://restlet.com/ Restlet User Guide ]&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
In rifidiserver.ini  - A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.port=8111&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.enabled=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source for Restful Rifidi Management Commands - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/&lt;br /&gt;
&lt;br /&gt;
=Configuration (HTTP over SSL) - Available as of version 3.1.1= &lt;br /&gt;
&lt;br /&gt;
A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SSL Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.port=8183&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.ssl.enabled=true&lt;br /&gt;
#Keystore Path&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepath=\config\serverX.jks&lt;br /&gt;
#Key store password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepassword=password&lt;br /&gt;
#Key Password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keypassword=password&lt;br /&gt;
#Key store Type&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystoretype=JKS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Note: Link to how to configure/setup certificates with REST - http://restlet.com/learn/guide/2.3/core/security/https&lt;br /&gt;
==REST HTTP over SSL Example Application==&lt;br /&gt;
link to https java client example - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge.rest/src/org/rifidi/edge/rest/test/HttpsTestClient.java&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user can add this jvm parameter to see detailed messages if getting any &lt;br /&gt;
trouble when running this example:&lt;br /&gt;
-Djavax.net.debug=all&lt;br /&gt;
&lt;br /&gt;
In order to successful get the https response from stand alone java &lt;br /&gt;
example, user must import the certificate into JVM:&lt;br /&gt;
&lt;br /&gt;
open command windows as administrator and execute keytool -import, like:&lt;br /&gt;
&lt;br /&gt;
keytool -import -alias localhost -keystore &amp;quot;C:\Program Files &lt;br /&gt;
(x86)\Java\jdk1.6.0_45\jre\lib\security\cacerts&amp;quot; -file &lt;br /&gt;
&amp;quot;D:\tmp\cert\localhost.cer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if requested, default password is: changeit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Logging= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1. Add an entry to the rifidiserver.ini (if using windows; when using linux you add this JVM argument in the rifidi-server executable):&lt;br /&gt;
-Djava.util.logging.config.file=d:/myLogging.properties&lt;br /&gt;
&lt;br /&gt;
*2. Create logging properties file, for example like the below myLogging.properties&lt;br /&gt;
The entry in that file that determines where the log file will show up is the following: java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myLogging.properties&lt;br /&gt;
# ================================&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ==   Web Logging Properties   ==&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # ------------------&lt;br /&gt;
    # General properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # This defines a whitespace separated list of class names for handler classes to load and register as handlers on&lt;br /&gt;
    # the root Logger (the Logger named &amp;quot;&amp;quot;). Each class name must be for a Handler class which has a default constructor.&lt;br /&gt;
    # Note that these Handlers may be created lazily, when they are first used.&lt;br /&gt;
    handlers=java.util.logging.FileHandler&lt;br /&gt;
	# ------------------&lt;br /&gt;
    # Loggers properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
    .level=WARNING&lt;br /&gt;
    org.mortbay.level=WARNING&lt;br /&gt;
    org.restlet.level=INFO&lt;br /&gt;
    com.noelios.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    com.noelios.web.WebComponent.www.level=INFO&lt;br /&gt;
    com.noelios.web.WebComponent.www.handlers=com.noelios.restlet.util.AccessLogFileHandler&lt;br /&gt;
    com.noelios.web.WebComponent.www.useParentHandlers=false&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # ConsoleHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.INFO).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.formatter=&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.encoding=&lt;br /&gt;
	&lt;br /&gt;
	# ------------------------------&lt;br /&gt;
    # General FileHandler properties&lt;br /&gt;
    # ------------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # java.util.logging.FileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.FileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.FileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    java.util.logging.FileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    java.util.logging.FileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot;&lt;br /&gt;
    java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # java.util.logging.FileHandler.append=&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # LogFileHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.formatter=com.noelios.restlet.util.AccessLogFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot; .pattern=/home/prod/data/log/WebComponent-www-%u-%g.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # org.restlet.util.AccessLogFileHandler.append=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Tuning/Confguration (Jetty) as of Rifidi 3.4= &lt;br /&gt;
&lt;br /&gt;
As of Rifidi 3.4 Jetty was made the default HTTP container for Restlet to allow for extended performance and configuration of the REST interface.&lt;br /&gt;
&lt;br /&gt;
The parameters can for configured in the Rifidi Server (ini) configuration&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.minThreads=8	Thread pool minimum threads&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.maxThreads=200	Thread pool max threads&lt;br /&gt;
&lt;br /&gt;
Full list of Jetty parameters using the same naming convention can be found here  - http://restlet.com/technical-resources/restlet-framework/javadocs/snapshot/jse/ext/org/restlet/ext/jetty/JettyServerHelper.html&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
==Command Code Snippet - start session - example how to use Rifidi API in a Java App==&lt;br /&gt;
All Rifidi Management API Command Logic here - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/SensorManagerServiceRestletImpl.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
sensorManagerService.startSession((String) request&lt;br /&gt;
	.getAttributes().get(&amp;quot;readerID&amp;quot;), (String) request&lt;br /&gt;
		.getAttributes().get(&amp;quot;sessionID&amp;quot;));&lt;br /&gt;
	response.setEntity(self.generateReturnString(self&lt;br /&gt;
		.generateSuccessMessage()), MediaType.TEXT_XML);&lt;br /&gt;
} catch (Exception e) {&lt;br /&gt;
	response.setEntity(e.getMessage(), MediaType.TEXT_PLAIN);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Command Basic Flow Example==&lt;br /&gt;
#Create a Reader - http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
#Create a Session (on a reader/sensor)  - http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
#Create a Command (on a reader/sensor)) -/createcommand/{commandType}/{properties} &lt;br /&gt;
*Note: some readers do not require create/executing a command as there is only one command hence for convenience is part of the create session/start session  (Thinkify, CSL and Generic adapter (for handhelds/async push calls) are some examples of this)&lt;br /&gt;
#Set Command Properties - http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
#Execute Command (on a given reader/sensor and session) - http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1&lt;br /&gt;
#Start Session (to begin processing reads using associate command/reader/sensor configuration)  - http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
#Save Configuartion (optional -  to save/persist config in case of a server restart) - http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
=Command Example=&lt;br /&gt;
&lt;br /&gt;
Note: localhost can be substituted with IP address/Host name of Rifidi Edge Server. Port can be changed in Rifidi configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==commandtypes command example==&lt;br /&gt;
&lt;br /&gt;
*commandtypes - returns a list of available command types&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commandtypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commandtypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-ADD_ROSPEC-File&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader via an XML file. Any changes made to the reader are determined by the contents of the file. To generate xml code for the commands you want to submit, check out LLRP Commander here: http://www.fosstrak.org/llrp/index.html&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;ThingMagic-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the ThingMagic reader for its tags. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;ThingMagic&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Start&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Alien reader to send back tags using the autonomous mode. To monitor a read zone, configure an Alien autonomous reader to listen. Then submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader to collect tags. By default, this command will cause the LLRP reader to push back tag reads automatically. If you would rather use the Poll mode, you will need to use the LLRP Poll command. To use the LLRP Configure command, submit it for a one-time execution&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the LLRP reader to stop sending back tags. To use, supply the RO Spec that is currently executing on the reader, and submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Thingmagic6-Push&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Sets the Thingmagic to push tags back to the edge server&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Thingmagic6&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the Alien reader for its tag list. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the LLRP reader for its tags. For monitoring of the read zone, first use the LLRP Configure command to configure the LLRP reader for Poll Mode. Then submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Mask-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID With Mask command. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Alien reader to stop sending back tags in autonomous mode. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Read-Block-Data&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back memory bank tags using the Read Block Data commmand. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readertypes command example==&lt;br /&gt;
&lt;br /&gt;
*readertypes - returns a list of available reader/sensor types (such as LLRP, Alien, BarCode etc..)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readertypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readertypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Generic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;A generic Rifidi Adapter.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Opticon&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Adapter for the Opticon Barcode Sensor&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien-Autonomous&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien autonomous adapter is an endpoint to passively receive tag reads from an Alien reader operating in autonomous mode. You cannot send any commands on the alien autonomous session&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid2010&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thingmagic6&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thingmagic 6 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi LLRP adapter supports any reader that exposes a Low Level Reader Protocol (LLRP) interface. LLRP is a standard from EPCglobal.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid3014&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien adapter supports the Alien ALR protocol on the 9900, 9800, 8800 readers.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thinkify50&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thinkify TR50 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;ThingMagic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi ThingMagic adapater supports the ThingMagic RQL protocol on the Mercury 4 and Mercury 5 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader command example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader overriding default readerID command example==&lt;br /&gt;
&lt;br /&gt;
The reader id is important for applications' read zones to appropriate operate, and this id is used to link read zones with sensors. This command enables one to set the readerId versus the system generating one (default behavior).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: To override the default reader id, there must be included the property readerID, in order to assign a specific reader id and override the default. &lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletereader command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletereader/{readerID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid readerID: LLRP&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readers command example==&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readers&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
*readers - returns a list of readers/senors managed by the Edge Server&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readers  &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_2&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get reader properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{readerID} - returns the reader/sensor properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this, to get a reader properties:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;5084&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;192.168.1.48&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;DisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;null&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReaderConfigPath&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;config/SET_READER_CONFIG.llrp&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get command properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{commandID} - returns the command properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ROSpecID&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;AntennaIDs&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Duration&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1000&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;TriggerType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;PUSH&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set reader properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{readerID}/{properties}&amp;quot; - sets the reader/sensor properties&lt;br /&gt;
Note: if there is an existing session for updated reader properties to take effect the session will need to be deleted and recreated so the properties are moved to the session &lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/Alien_1/MaxNumConnectionAttempts=11;DisplayName=Alien_Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_1/IpAddress=127.0.0.15;Port=4567;att1=aa;att2=bbb;attt3=YY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: att1=aa|att2=bbb|attt3=YY&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set command properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{commandID}/{properties}&amp;quot; - sets the command properties&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=7500;cc=4;other=67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: cc=4|other=67&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==commands command example==&lt;br /&gt;
&lt;br /&gt;
*commands - returns a list of available commands&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commands&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commands&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commands&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;&lt;br /&gt;
         &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createcommand example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the command instance is created or the call fails therefore the rcommand instance is not created&lt;br /&gt;
&lt;br /&gt;
*createcomamnd/{commandType}/{properties} - creates a command to be executed on a reader session&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createcommand&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=5000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commandID&amp;gt;Alien_Poll_2&amp;lt;/commandID&amp;gt; Note: Added in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response error (if there is at least one non valid property, the command is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=4000;propX=123;prop2=AB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: propX=123|prop2=AB&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletecommand command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletecommand/{commandID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid commandID: LLRP_Configure&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createsession command example==&lt;br /&gt;
&lt;br /&gt;
*createsession/{readerID} - creates a session (with corresponding reader/sensor configuration) and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sessionID&amp;gt;1&amp;lt;/sessionID&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail -already a session for sensor id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
     java.lang.Exception: Reader Alien_1 already has a session.&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startsession command example==&lt;br /&gt;
&lt;br /&gt;
*startsession/{readerID}/{sessionID} - starts a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;startsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CONNECTING&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to start session, current state is CONNECTING  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readerstatus command example==&lt;br /&gt;
&lt;br /&gt;
*readerstatus/{readerID} - retuns teh status of a given reader/sensor&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readerstatus&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readerstatus/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensor&amp;gt;&lt;br /&gt;
      &amp;lt;serviceID&amp;gt;LLRP_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
      &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
   &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;sessions&amp;gt;&lt;br /&gt;
      &amp;lt;session&amp;gt;&lt;br /&gt;
         &amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;&lt;br /&gt;
         &amp;lt;status&amp;gt;PROCESSING&amp;lt;/status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;executingcommands&amp;gt;&lt;br /&gt;
            &amp;lt;executingcommand&amp;gt;&lt;br /&gt;
               &amp;lt;commandFactory&amp;gt;LLRP-Configure&amp;lt;/commandFactory&amp;gt;&lt;br /&gt;
              &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
              &amp;lt;interval&amp;gt;0&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;/executingcommand&amp;gt;&lt;br /&gt;
        &amp;lt;/executingcommands&amp;gt;&lt;br /&gt;
      &amp;lt;/session&amp;gt;&lt;br /&gt;
   &amp;lt;/sessions&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==stopsession command example==&lt;br /&gt;
&lt;br /&gt;
*stopsession/{readerID}/{sessionID} - stops a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;stopsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/stopsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CREATED&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to stop session, current state is CREATED  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==resetsession command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/resetsession/{readerID}/{sessionID}&lt;br /&gt;
&lt;br /&gt;
Used to stop and start an existing reader session&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/resetsession/LLRP_1/1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
==executecommand command example==&lt;br /&gt;
&lt;br /&gt;
*executecommand/{readerID}/{sessionID}/{commandID}/{repeatInterval} - Executes a command for a given session&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;executecommand&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/0 (for single shot - one time execution)&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletesession command example==&lt;br /&gt;
&lt;br /&gt;
*deletesession/{readerID}/{sessionID} - deletes a session and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;deletesession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletesession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==save command example==&lt;br /&gt;
&lt;br /&gt;
*save - Saves the current state of the Edge Server configuration (such as created readers/sensors, modified properties etc..&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;save&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ping - Used by failover feature==&lt;br /&gt;
*ping -  Returns a date/timestamp&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;ping&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/ping&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp&amp;gt;1414610247969&amp;lt;/timestamp&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==currenttags example (released in Rifidi 3.4)==&lt;br /&gt;
*currenttags/{readerID} -  Returns a list of tags on a given reader&lt;br /&gt;
&lt;br /&gt;
Note: timestamp, reader and RSSI added in 3.5.1&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;currenttags&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/currenttags/LLRP_1 &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;currenttags&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
   &amp;lt;/currenttags&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readermetadata - Used by Web Administration Dashboard for Dynamic Reader &amp;amp; Command Properties/Wizard (released in 3.2)==&lt;br /&gt;
*readermetadata-  Returns reader metadata&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readermetadata&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readermetadata&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;readers&amp;gt;&lt;br /&gt;
  &amp;lt;reader&amp;gt;&lt;br /&gt;
   &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;ReconnectionInterval&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Reconnection Interval&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;500&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;&lt;br /&gt;
     Upon connection failure, the time to wait between two connection attempts (ms)&lt;br /&gt;
     &amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;4.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Port&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Port&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;8090&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Port of the Reader&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;maxvalue&amp;gt;65535&amp;lt;/maxvalue&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;1.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thinkify RCS Command - Used for one time configuration of a Thinkify USB reader (Deprecated in 3.5.1)==&lt;br /&gt;
*rcs/{Thinkify Reader ID}/{sessionid}&lt;br /&gt;
&lt;br /&gt;
request (via HTTP Post/Get) &amp;quot;rcs&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/rcs/ThinkifyUSB_1/1&lt;br /&gt;
&lt;br /&gt;
==startbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/startbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==stopbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/stopbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to install a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==installbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/installbundle&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to start a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/installbundle&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==uninstallbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/uninstallbundle/{bundleID}&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to uninstall a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/uninstallbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==ss OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/ss&lt;br /&gt;
&lt;br /&gt;
Used to list the OSGI bundles&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/ss&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.osgi&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.weaving.hook&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;RESOLVED&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.simpleconfigurator&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;com.sun.mail.javax.mail&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set GPO Command Example (released in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*/setgpo/{readerID}/{sessionID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to set gpo&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/setgpo/LLRP_1/1/1,2,3&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flash GPO Command Example (released in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//flashgpo/{readerID}/{sessionID}/{ports}/{duration in seconds}&lt;br /&gt;
&lt;br /&gt;
Used to turn gpo on for a specified duration such as Flashing a light on for 4 seconds then turn it off again&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/flashgpo/LLRP_1/1/1,2,3/4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/How_to_Upgrade_Rifidi</id>
		<title>How to Upgrade Rifidi</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/How_to_Upgrade_Rifidi"/>
				<updated>2020-12-24T12:29:14Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* RedHat (RHEL) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These steps explain how to upgrade a Rifidi Edge server&lt;br /&gt;
&lt;br /&gt;
=Edge Server Upgrade (Windows)=&lt;br /&gt;
&lt;br /&gt;
Note: Applicable to version 1.3 or greater&lt;br /&gt;
&lt;br /&gt;
# Download and install in a new directory (windows only) - see below for Ubuntu/Linux install steps&lt;br /&gt;
# Ensure all rifidi edge servers instances are stopped (old and new versions)&lt;br /&gt;
# Copy the Rifidi.xml from the old version to the new server home directory (this contains the reader/sensor adapter configurations) &lt;br /&gt;
# Manually make any updates to the server configuration (rifidiserver.ini in windows/ rifidi-server in Ubuntu/Linux) you may have customized for your setup [[Edge_Server_Configuration]]&lt;br /&gt;
# Copy any customized Rifidi Applications from old server version  ./applications to new server version ./applications&lt;br /&gt;
# Copy any customized .llrp configuration files from old server version ./config to new server version ./config &lt;br /&gt;
# Copy default.ini files from old server ./config to new server ./config (this contains list of custom Rifidi Apps to start by default when server starts)&lt;br /&gt;
# Start the new Rifidi server&lt;br /&gt;
&lt;br /&gt;
All you applications and reader/sensor adapters should start and operate as prior version&lt;br /&gt;
&lt;br /&gt;
Note: Advised that you make a copy of your old version before deleting in case you run into any issues requiring recovery&lt;br /&gt;
&lt;br /&gt;
=Ubuntu Upgrade(Specfics) or Rifidi Box (which comes with Ubuntu OS)=&lt;br /&gt;
Steps specific to Rifidi Box or Ubuntu Deb&lt;br /&gt;
&lt;br /&gt;
# SSH into the box and copy the contents of the application directory, the rifidi.xml, and any other files (llrp files, etc) to ~  &lt;br /&gt;
# Make sure the edge server is shut down...telnet in and type &amp;quot;close&amp;quot; in the console. &lt;br /&gt;
#. &amp;quot;sudo apt-get purge rifidi&amp;quot;&lt;br /&gt;
#. Copy the new deb into ~ on the machine (Such as use dropbox and perform a &amp;quot;wget&amp;quot; on the dropbox link for this, very handy!)&lt;br /&gt;
# &amp;quot;sudo dpkg -i (deb here)&amp;quot;&lt;br /&gt;
# Copy the Rifidi.xml from the old version to the new server home directory (this contains the reader/sensor adapter configurations) &lt;br /&gt;
# Manually make any updates to the server configuration (rifidiserver.ini in windows/ rifidi-server in Ubuntu/Linux) you may have customized for your setup [[Edge_Server_Configuration]]&lt;br /&gt;
# Copy any customized Rifidi Applications from old server version  ./applications to new server version ./applications&lt;br /&gt;
# Copy any customized .llrp configuration files from old server version ./config to new server version ./config &lt;br /&gt;
# Copy default.ini files from old server ./config to new server ./config (this contains list of custom Rifidi Apps to start by default when server starts)&lt;br /&gt;
# &amp;quot;sudo /etc/init.d/rifidiserver start&amp;quot;&lt;br /&gt;
# Telnet in and verify that everything looks good.  Upgrade complete.&lt;br /&gt;
&lt;br /&gt;
=RedHat (RHEL)=&lt;br /&gt;
&lt;br /&gt;
# SSH into the box and copy the contents of the application directory, the rifidi.xml, and any other files (llrp files, etc) to ~  &lt;br /&gt;
# Make sure the edge server is shut down...telnet in and type &amp;quot;close&amp;quot; in the console&lt;br /&gt;
# Copy the new zip into ~ on the machine (Such as use dropbox and perform a &amp;quot;wget&amp;quot; on the dropbox link for this, very handy!). &lt;br /&gt;
# Manually remove and unzip the new version instead of using apt-get commands. &lt;br /&gt;
# Copy the Rifidi.xml from the old version to the new server home directory (this contains the reader/sensor adapter configurations) &lt;br /&gt;
# Manually make any updates to the server configuration (rifidiserver.ini in windows/ rifidi-server in Ubuntu/Linux) you may have customized for your setup [[Edge_Server_Configuration]]&lt;br /&gt;
# Copy any customized Rifidi Applications from old server version  ./applications to new server version ./applications&lt;br /&gt;
# Copy any customized .llrp configuration files from old server version ./config to new server version ./config &lt;br /&gt;
# Copy default.ini files from old server ./config to new server ./config (this contains list of custom Rifidi Apps to start by default when server starts)&lt;br /&gt;
# &amp;quot;sudo /etc/init.d/rifidiserver start&amp;quot;&lt;br /&gt;
# Telnet in and verify that everything looks good.  Upgrade complete.&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/How_to_Upgrade_Rifidi</id>
		<title>How to Upgrade Rifidi</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/How_to_Upgrade_Rifidi"/>
				<updated>2020-12-24T12:28:44Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These steps explain how to upgrade a Rifidi Edge server&lt;br /&gt;
&lt;br /&gt;
=Edge Server Upgrade (Windows)=&lt;br /&gt;
&lt;br /&gt;
Note: Applicable to version 1.3 or greater&lt;br /&gt;
&lt;br /&gt;
# Download and install in a new directory (windows only) - see below for Ubuntu/Linux install steps&lt;br /&gt;
# Ensure all rifidi edge servers instances are stopped (old and new versions)&lt;br /&gt;
# Copy the Rifidi.xml from the old version to the new server home directory (this contains the reader/sensor adapter configurations) &lt;br /&gt;
# Manually make any updates to the server configuration (rifidiserver.ini in windows/ rifidi-server in Ubuntu/Linux) you may have customized for your setup [[Edge_Server_Configuration]]&lt;br /&gt;
# Copy any customized Rifidi Applications from old server version  ./applications to new server version ./applications&lt;br /&gt;
# Copy any customized .llrp configuration files from old server version ./config to new server version ./config &lt;br /&gt;
# Copy default.ini files from old server ./config to new server ./config (this contains list of custom Rifidi Apps to start by default when server starts)&lt;br /&gt;
# Start the new Rifidi server&lt;br /&gt;
&lt;br /&gt;
All you applications and reader/sensor adapters should start and operate as prior version&lt;br /&gt;
&lt;br /&gt;
Note: Advised that you make a copy of your old version before deleting in case you run into any issues requiring recovery&lt;br /&gt;
&lt;br /&gt;
=Ubuntu Upgrade(Specfics) or Rifidi Box (which comes with Ubuntu OS)=&lt;br /&gt;
Steps specific to Rifidi Box or Ubuntu Deb&lt;br /&gt;
&lt;br /&gt;
# SSH into the box and copy the contents of the application directory, the rifidi.xml, and any other files (llrp files, etc) to ~  &lt;br /&gt;
# Make sure the edge server is shut down...telnet in and type &amp;quot;close&amp;quot; in the console. &lt;br /&gt;
#. &amp;quot;sudo apt-get purge rifidi&amp;quot;&lt;br /&gt;
#. Copy the new deb into ~ on the machine (Such as use dropbox and perform a &amp;quot;wget&amp;quot; on the dropbox link for this, very handy!)&lt;br /&gt;
# &amp;quot;sudo dpkg -i (deb here)&amp;quot;&lt;br /&gt;
# Copy the Rifidi.xml from the old version to the new server home directory (this contains the reader/sensor adapter configurations) &lt;br /&gt;
# Manually make any updates to the server configuration (rifidiserver.ini in windows/ rifidi-server in Ubuntu/Linux) you may have customized for your setup [[Edge_Server_Configuration]]&lt;br /&gt;
# Copy any customized Rifidi Applications from old server version  ./applications to new server version ./applications&lt;br /&gt;
# Copy any customized .llrp configuration files from old server version ./config to new server version ./config &lt;br /&gt;
# Copy default.ini files from old server ./config to new server ./config (this contains list of custom Rifidi Apps to start by default when server starts)&lt;br /&gt;
# &amp;quot;sudo /etc/init.d/rifidiserver start&amp;quot;&lt;br /&gt;
# Telnet in and verify that everything looks good.  Upgrade complete.&lt;br /&gt;
&lt;br /&gt;
=RedHat (RHEL)=&lt;br /&gt;
&lt;br /&gt;
# SSH into the box and copy the contents of the application directory, the rifidi.xml, and any other files (llrp files, etc) to ~  &lt;br /&gt;
# Make sure the edge server is shut down...telnet in and type &amp;quot;close&amp;quot; in the console&lt;br /&gt;
# Copy the new deb into ~ on the machine (Such as use dropbox and perform a &amp;quot;wget&amp;quot; on the dropbox link for this, very handy!). &lt;br /&gt;
# Manually remove and unzip the new version instead of using apt-get commands. &lt;br /&gt;
# Copy the Rifidi.xml from the old version to the new server home directory (this contains the reader/sensor adapter configurations) &lt;br /&gt;
# Manually make any updates to the server configuration (rifidiserver.ini in windows/ rifidi-server in Ubuntu/Linux) you may have customized for your setup [[Edge_Server_Configuration]]&lt;br /&gt;
# Copy any customized Rifidi Applications from old server version  ./applications to new server version ./applications&lt;br /&gt;
# Copy any customized .llrp configuration files from old server version ./config to new server version ./config &lt;br /&gt;
# Copy default.ini files from old server ./config to new server ./config (this contains list of custom Rifidi Apps to start by default when server starts)&lt;br /&gt;
# &amp;quot;sudo /etc/init.d/rifidiserver start&amp;quot;&lt;br /&gt;
# Telnet in and verify that everything looks good.  Upgrade complete.&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/How_to_Upgrade_Rifidi</id>
		<title>How to Upgrade Rifidi</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/How_to_Upgrade_Rifidi"/>
				<updated>2020-12-24T12:24:37Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These steps explain how to upgrade a Rifidi Edge server&lt;br /&gt;
&lt;br /&gt;
=Edge Server Upgrade (Windows)=&lt;br /&gt;
&lt;br /&gt;
Note: Applicable to version 1.3 or greater&lt;br /&gt;
&lt;br /&gt;
# Download and install in a new directory (windows only) - see below for Ubuntu/Linux install steps&lt;br /&gt;
# Ensure all rifidi edge servers instances are stopped (old and new versions)&lt;br /&gt;
# Copy the Rifidi.xml from the old version to the new server home directory (this contains the reader/sensor adapter configurations) &lt;br /&gt;
# Manually make any updates to the server configuarion (rifidiserver.ini in windows/ rifidi-server in Ubuntu/Linux) you may have customized for your setup [[Edge_Server_Configuration]]&lt;br /&gt;
# Copy any customized Rifidi Applications from old server version  ./applications to new server version ./applications&lt;br /&gt;
# Copy any customized .llrp configuration files from old server version ./config to new server version ./config &lt;br /&gt;
# Copy default.ini files from old server ./config to new server ./config (this contains list of custom Rifidi Apps to start by default when server starts)&lt;br /&gt;
# Start the new Rifidi server&lt;br /&gt;
&lt;br /&gt;
All you applications and reader/sensor adapters should start and operate as prior version&lt;br /&gt;
&lt;br /&gt;
Note: Advised that you make a copy of your old version before deleting in case you run into any issues requiring recovery&lt;br /&gt;
&lt;br /&gt;
=Ubuntu Upgrade(Specfics) or Rifidi Box (which comes with Ubuntu OS)=&lt;br /&gt;
Steps specific to Rifidi Box or Ubuntu Deb&lt;br /&gt;
* Note: Steps 3-7 above detail the files/config/dirs to copy/update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# SSH into the box and copy the contents of the application directory, the rifidi.xml, and any other files (llrp files, etc) to ~  &lt;br /&gt;
# Make sure the edge server is shut down...telnet in and type &amp;quot;close&amp;quot; in the console. &lt;br /&gt;
#. &amp;quot;sudo apt-get purge rifidi&amp;quot;&lt;br /&gt;
#. Copy the new deb into ~ on the machine (Such as use dropbox and perform a &amp;quot;wget&amp;quot; on the dropbox link for this, very handy!)&lt;br /&gt;
# &amp;quot;sudo dpkg -i (deb here)&amp;quot;&lt;br /&gt;
#  Copy all your files and folders back to their respective places.  &lt;br /&gt;
# &amp;quot;sudo /etc/init.d/rifidiserver start&amp;quot;&lt;br /&gt;
# Telnet in and verify that everything looks good.  Upgrade complete.&lt;br /&gt;
&lt;br /&gt;
=RedHat (RHEL)=&lt;br /&gt;
&lt;br /&gt;
* Note: Steps 3-7 above detail the files/config/dirs to copy/update&lt;br /&gt;
# manually remove and unzip the new version instead of using apt-get commands. &lt;br /&gt;
#. Copy the new deb into ~ on the machine (Such as use dropbox and perform a &amp;quot;wget&amp;quot; on the dropbox link for this, very handy!)&lt;br /&gt;
# &amp;quot;sudo dpkg -i (deb here)&amp;quot;&lt;br /&gt;
#  Copy all your files and folders back to their respective places.  &lt;br /&gt;
# &amp;quot;sudo /etc/init.d/rifidiserver start&amp;quot;&lt;br /&gt;
# Telnet in and verify that everything looks good.  Upgrade complete.&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Main_Page"/>
				<updated>2020-09-29T13:47:35Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;h1&amp;gt;Welcome&lt;br /&gt;
        to the &amp;lt;strong&amp;gt;RIFIDI Community Wiki&amp;lt;/strong&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;RIFIDI is an open source RFID/Sensor Middleware Platform sponsored by [http://www.transcends.co Transcends].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt;Connecting the Internet of Things with People.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;Please find out how to [[Documentation Guidelines|contribute to the Wiki]] before you begin&lt;br /&gt;
        editing. &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Remove this tr tag to remove the announcement --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:lightpink&amp;quot;&amp;gt;&amp;lt;h4&amp;gt;Announcing RIFIDI Edge Server 3.8.1!!&amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;p&amp;gt;Current Version 3.8.1 release notes [[Version 3.8.1]].  Prior version 3.8.0 release notes [[Version 3.8.0]]&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[http://sourceforge.net/projects/rifidi/files/| Download latest version here]] &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Edge Server&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Getting Started|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[User's Guide | User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Application Level Events (ALE) User's Guide]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Web Administration Dashboard|Enterprise Rifidi Management Dashboard (replacement for Workbench) - User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Console|Rifidi Edge Admin Console via Command-Line]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Configuration|Edge Configuration (Global Startup, Run-time and Custom Variables/Settings)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Monitoring | Edge Monitoring (via JMX, REST &amp;amp; MQTT Event Notifications)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Management | Edge Sensor Management (via REST)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge LLRP Reader Management | Edge LLRP Reader Management (via REST)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi App API | Rifidi Application Management  - Application and Readzone Properties (via REST) ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[LLRP Tag Encoding | LLRP Tag Encoding Options (via REST) ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Messaging | Edge Messaging (via MQTT) ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Performance Tuning Tips | Performance Tuning Tips]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Fail-over Configuration (Primary/Secondary)]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Sensor Plugins | Sensor Plugin User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[How to Upgrade Rifidi]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Installing an Application | Installing an Rifidi Application]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi Edge Licensing - GPL v2]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://transcends.co/#products Learn about Rifidi Edge Commercial License/Products/Support]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer&lt;br /&gt;
                Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer's Guide | Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Application Level Events (ALE) User's Guide]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer's Quick Start Reference| Rifidi App Developer's Quick Start Reference]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Development Environment|Setting up a Development Environment]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Jumpstarts | Rifidi App Development Jumpstarts]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Best Practice for Designing a Rifidi APP | Best Practice for Designing a Rifidi APP ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Performance Tuning Tips | Performance Tuning Tips]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Northwind Example Application - Advanced Development Topic]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Sensor Plugin API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Architecture|Architecture]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server HOWTOs | HOWTOs]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Web Administration Dashboard - Developer's Guide|Enterprise Rifidi Management Dashboard - Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &lt;br /&gt;
                   &amp;lt;li&amp;gt;[[How to Package Rifidi Edge| How to Package Rifidi Edge]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Enterprise Rifidi Management Dashboard - as of Rifidi Edge 3.3&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                   &amp;lt;li&amp;gt;[[Web Administration Dashboard - Developer's Guide|Enterprise Rifidi Management Dashboard - Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Web Administration Dashboard|Enterprise Rifidi Management Dashboard - User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Workbench (Note: Depreciated in Rifidi Edge 3.3 in place of Enterprise Web Rifidi Management Dashboard)&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Workbench User's Guide|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Toolkit&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Prototyper User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Tag Streamer User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Release Features]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[:Category:userDoc|browse more user documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator documentation summary | Emulator Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[tag streamer documentation summary | Tag Streamer Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi:Source_Code|How to run Emulator, Tagstream, Prototyper from Source]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Virtual [[Reader Guides]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[LLRPHelloWorld| LLRP Hello World Test Client]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Process| How to Develop Rifidi]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt; [[:Category:developerDoc|browse more developer documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Rifidi Suite&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;!--&amp;lt;li&amp;gt;[[Asset Tracking: An end-to end solution with the Rifidi Platform]]&amp;lt;/li&amp;gt;--&amp;gt;&lt;br /&gt;
                   &amp;lt;!--&amp;lt;li&amp;gt;[[Rifidi roadmap|Rifidi Roadmap]]&amp;lt;/li&amp;gt;--&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.transcends.co/ About Rifidi]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;General Information&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer FAQ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[How to Contribute to the Rifidi project]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Useful Links&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Rifidi Project&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://forums.rifidi.net Rifidi Forums]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;!--&amp;lt;li&amp;gt;[https://trac.rifidi.org/rep-edge-trac/ Rifidi Bug Tracker]--&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://sourceforge.net/projects/rifidi/ Rifidi's Sourceforge Page]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://github.com/mattrifidi/emulator Rifidi Emulator/Prototyper/Tagstreamer Source (Git Repository)]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://github.com/mattrifidi/rifidi Rifidi Edge/Workbench Source (Git Repository)]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.transcends.co Transcends' Website]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Other Projects&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springframework.net/license.html Spring -Application Framework - Apache V2 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://esper.codehaus.org/about/esper/esper.html Esper is a trademark of EsperTech Inc -Complex Event Engine Framework - GPLv2 licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://help.eclipse.org/juno/index.jsp Eclipse - SDK/IDE Framework]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://eclipse.org/equinox/ OSGI - Equinox Container - EPL V1 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springsource.com/repository/app/ Spring Enterprise Bundle Repository - Apache v2 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://restlet.com/ Restlet - Restful Services Implementation used for [[Edge_Management | Rifidi Edge Management]] - Apache 2.0 Licensing ]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.jolokia.org/ Jolokia - Restful JMX Monitoring Implementation used for [[Edge_Monitoring | Rifidi Edge Monitoring]]  -Apache v2 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://mqtt.org/wiki/doku.php/brokers#moquette Moquette - Java based MQTT Broker used for IoT Messaging - Creative Commons Attribution 4.0 International Public License]&amp;lt;/li&amp;gt;&lt;br /&gt;
                 &amp;lt;li&amp;gt;[http://www.llrp.org/ LLRP Tool Kit - Apache 2.0 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;[http://activemq.apache.org/maven/5.8.0/license.html ActiveMQ - Messaging- Apache 2.0 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
              &amp;lt;li&amp;gt;[https://github.com/rxtx/rxtx RXTX  Serial Communication - LGPL v 2.1]&amp;lt;/li&amp;gt;&lt;br /&gt;
              &amp;lt;li&amp;gt;[http://www.mysql.com/about/legal/licensing/foss-exception/  MYSql Client Libraries   - Oracle’s Free and Open Source Software (&amp;quot;FOSS&amp;quot;) License Exception]&amp;lt;/li&amp;gt;&lt;br /&gt;
              &amp;lt;li&amp;gt;[http://www.postgresql.org/about/licence/ PostgreSQL - A liberal Open Source license]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Main_Page"/>
				<updated>2020-09-29T13:47:01Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;h1&amp;gt;Welcome&lt;br /&gt;
        to the &amp;lt;strong&amp;gt;RIFIDI Community Wiki&amp;lt;/strong&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;RIFIDI is an open source RFID/Sensor Middleware Platform sponsored by [http://www.transcends.co Transcends].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt;Connecting the Internet of Things with People.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;Please find out how to [[Documentation Guidelines|contribute to the Wiki]] before you begin&lt;br /&gt;
        editing. &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Remove this tr tag to remove the announcement --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:lightpink&amp;quot;&amp;gt;&amp;lt;h4&amp;gt;Announcing RIFIDI Edge Server 3.8.1!!&amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;p&amp;gt;Current Version 3.8.1 release notes [[Version 3.8.1]].  Prior version 3.8.0 release notes [[Version 3.8.0]]&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[http://sourceforge.net/projects/rifidi/files/| Download latest version here]] &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Edge Server&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Getting Started|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[User's Guide | User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Application Level Events (ALE) User's Guide]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Web Administration Dashboard|Enterprise Rifidi Management Dashboard (replacement for Workbench) - User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Console|Rifidi Edge Admin Console via Command-Line]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Configuration|Edge Configuration (Global Startup, Run-time and Custom Variables/Settings)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Monitoring | Edge Monitoring (via JMX, REST &amp;amp; MQTT Event Notifications)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Management | Edge Sensor Management (via REST)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge LLRP Reader Management | Edge LLRP Reader Management (via REST)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi App API | Rifidi Application Management  - Application and Readzone Properties (via REST) ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[LLRP Tag Encoding | LLRP Tag Encoding Options (via REST) ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Messaging | Edge Messaging (via MQTT) ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Performance Tuning Tips | Performance Tuning Tips]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Fail-over Configuration (Primary/Secondary)]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Sensor Plugins | Sensor Plugin User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[How to Upgrade Rifidi]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Installing an Application | Installing an Rifidi Application]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi Edge Licensing - GPL v2]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://transcends.co/#products Learn about Rifidi Edge Commercial License/Products/Support]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer&lt;br /&gt;
                Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer's Guide | Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Application Level Events (ALE) User's Guide]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer's Quick Start Reference| Rifidi App Developer's Quick Start Reference]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Development Environment|Setting up a Development Environment]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Jumpstarts | Rifidi App Development Jumpstarts]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Best Practice for Designing a Rifidi APP | Best Practice for Designing a Rifidi APP ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Performance Tuning Tips | Performance Tuning Tips]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Northwind Example Application - Advanced Development Topic]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Sensor Plugin API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Architecture|Architecture]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server HOWTOs | HOWTOs]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Web Administration Dashboard - Developer's Guide|Enterprise Rifidi Management Dashboard - Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &lt;br /&gt;
                   &amp;lt;li&amp;gt;[[How to Package Rifidi Edge| How to Package Rifidi Edge]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Enterprise Rifidi Management Dashboard - as of Rifidi Edge 3.3&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                   &amp;lt;li&amp;gt;[[Web Administration Dashboard - Developer's Guide|Enterprise Rifidi Management Dashboard - Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Web Administration Dashboard|Enterprise Rifidi Management Dashboard - User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Workbench (Note: Depreciated in Rifidi Edge 3.3 in place of Enterprise Web Rifidi Management Dashboard&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Workbench User's Guide|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Toolkit&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Prototyper User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Tag Streamer User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Release Features]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[:Category:userDoc|browse more user documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator documentation summary | Emulator Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[tag streamer documentation summary | Tag Streamer Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi:Source_Code|How to run Emulator, Tagstream, Prototyper from Source]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Virtual [[Reader Guides]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[LLRPHelloWorld| LLRP Hello World Test Client]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Process| How to Develop Rifidi]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt; [[:Category:developerDoc|browse more developer documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Rifidi Suite&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;!--&amp;lt;li&amp;gt;[[Asset Tracking: An end-to end solution with the Rifidi Platform]]&amp;lt;/li&amp;gt;--&amp;gt;&lt;br /&gt;
                   &amp;lt;!--&amp;lt;li&amp;gt;[[Rifidi roadmap|Rifidi Roadmap]]&amp;lt;/li&amp;gt;--&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.transcends.co/ About Rifidi]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;General Information&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer FAQ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[How to Contribute to the Rifidi project]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Useful Links&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Rifidi Project&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://forums.rifidi.net Rifidi Forums]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;!--&amp;lt;li&amp;gt;[https://trac.rifidi.org/rep-edge-trac/ Rifidi Bug Tracker]--&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://sourceforge.net/projects/rifidi/ Rifidi's Sourceforge Page]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://github.com/mattrifidi/emulator Rifidi Emulator/Prototyper/Tagstreamer Source (Git Repository)]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://github.com/mattrifidi/rifidi Rifidi Edge/Workbench Source (Git Repository)]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.transcends.co Transcends' Website]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Other Projects&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springframework.net/license.html Spring -Application Framework - Apache V2 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://esper.codehaus.org/about/esper/esper.html Esper is a trademark of EsperTech Inc -Complex Event Engine Framework - GPLv2 licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://help.eclipse.org/juno/index.jsp Eclipse - SDK/IDE Framework]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://eclipse.org/equinox/ OSGI - Equinox Container - EPL V1 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springsource.com/repository/app/ Spring Enterprise Bundle Repository - Apache v2 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://restlet.com/ Restlet - Restful Services Implementation used for [[Edge_Management | Rifidi Edge Management]] - Apache 2.0 Licensing ]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.jolokia.org/ Jolokia - Restful JMX Monitoring Implementation used for [[Edge_Monitoring | Rifidi Edge Monitoring]]  -Apache v2 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://mqtt.org/wiki/doku.php/brokers#moquette Moquette - Java based MQTT Broker used for IoT Messaging - Creative Commons Attribution 4.0 International Public License]&amp;lt;/li&amp;gt;&lt;br /&gt;
                 &amp;lt;li&amp;gt;[http://www.llrp.org/ LLRP Tool Kit - Apache 2.0 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;[http://activemq.apache.org/maven/5.8.0/license.html ActiveMQ - Messaging- Apache 2.0 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
              &amp;lt;li&amp;gt;[https://github.com/rxtx/rxtx RXTX  Serial Communication - LGPL v 2.1]&amp;lt;/li&amp;gt;&lt;br /&gt;
              &amp;lt;li&amp;gt;[http://www.mysql.com/about/legal/licensing/foss-exception/  MYSql Client Libraries   - Oracle’s Free and Open Source Software (&amp;quot;FOSS&amp;quot;) License Exception]&amp;lt;/li&amp;gt;&lt;br /&gt;
              &amp;lt;li&amp;gt;[http://www.postgresql.org/about/licence/ PostgreSQL - A liberal Open Source license]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Main_Page"/>
				<updated>2020-09-29T13:45:16Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;h1&amp;gt;Welcome&lt;br /&gt;
        to the &amp;lt;strong&amp;gt;RIFIDI Community Wiki&amp;lt;/strong&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;RIFIDI is an open source RFID/Sensor Middleware Platform sponsored by [http://www.transcends.co Transcends].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt;Connecting the Internet of Things with People.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;Please find out how to [[Documentation Guidelines|contribute to the Wiki]] before you begin&lt;br /&gt;
        editing. &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Remove this tr tag to remove the announcement --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:lightpink&amp;quot;&amp;gt;&amp;lt;h4&amp;gt;Announcing RIFIDI Edge Server 3.8.1!!&amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;p&amp;gt;Current Version 3.8.1 release notes [[Version 3.8.1]].  Prior version 3.8.0 release notes [[Version 3.8.0]]&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[http://sourceforge.net/projects/rifidi/files/| Download latest version here]] &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Edge Server&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Getting Started|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[User's Guide | User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Application Level Events (ALE) User's Guide]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Web Administration Dashboard|Enterprise Rifidi Management Dashboard (replacement for Workbench) - User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Console|Rifidi Edge Admin Console via Command-Line]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Configuration|Edge Configuration (Global Startup, Run-time and Custom Variables/Settings)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Monitoring | Edge Monitoring (via JMX, REST &amp;amp; MQTT Event Notifications)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Management | Edge Sensor Management (via REST)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge LLRP Reader Management | Edge LLRP Reader Management (via REST)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi App API | Rifidi Application Management  - Application and Readzone Properties (via REST) ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[LLRP Tag Encoding | LLRP Tag Encoding Options (via REST) ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Messaging | Edge Messaging (via MQTT) ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Performance Tuning Tips | Performance Tuning Tips]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Fail-over Configuration (Primary/Secondary)]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Sensor Plugins | Sensor Plugin User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[How to Upgrade Rifidi]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Installing an Application | Installing an Rifidi Application]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi Edge Licensing - GPL v2]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://transcends.co/#products Learn about Rifidi Edge Commercial License/Products/Support]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer&lt;br /&gt;
                Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer's Guide | Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Application Level Events (ALE) User's Guide]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer's Quick Start Reference| Rifidi App Developer's Quick Start Reference]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Development Environment|Setting up a Development Environment]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Jumpstarts | Rifidi App Development Jumpstarts]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Best Practice for Designing a Rifidi APP | Best Practice for Designing a Rifidi APP ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Performance Tuning Tips | Performance Tuning Tips]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Northwind Example Application - Advanced Development Topic]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Sensor Plugin API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Architecture|Architecture]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server HOWTOs | HOWTOs]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Web Administration Dashboard - Developer's Guide|Enterprise Rifidi Management Dashboard - Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &lt;br /&gt;
                   &amp;lt;li&amp;gt;[[How to Package Rifidi Edge| How to Package Rifidi Edge]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Enterprise Rifidi Management Dashboard - as of Rifidi Edge 3.3&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                   &amp;lt;li&amp;gt;[[Web Administration Dashboard - Developer's Guide|Enterprise Rifidi Management Dashboard - Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Web Administration Dashboard|Enterprise Rifidi Management Dashboard - User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Workbench (Note: To be depreciated in Rifiid Edge 4.0 in place of Enterprise Web Rifidi Management Dashboard&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Workbench User's Guide|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Toolkit&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Prototyper User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Tag Streamer User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Release Features]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[:Category:userDoc|browse more user documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator documentation summary | Emulator Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[tag streamer documentation summary | Tag Streamer Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi:Source_Code|How to run Emulator, Tagstream, Prototyper from Source]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Virtual [[Reader Guides]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[LLRPHelloWorld| LLRP Hello World Test Client]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Process| How to Develop Rifidi]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt; [[:Category:developerDoc|browse more developer documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Rifidi Suite&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;!--&amp;lt;li&amp;gt;[[Asset Tracking: An end-to end solution with the Rifidi Platform]]&amp;lt;/li&amp;gt;--&amp;gt;&lt;br /&gt;
                   &amp;lt;!--&amp;lt;li&amp;gt;[[Rifidi roadmap|Rifidi Roadmap]]&amp;lt;/li&amp;gt;--&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.transcends.co/ About Rifidi]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;General Information&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer FAQ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[How to Contribute to the Rifidi project]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Useful Links&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Rifidi Project&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://forums.rifidi.net Rifidi Forums]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;!--&amp;lt;li&amp;gt;[https://trac.rifidi.org/rep-edge-trac/ Rifidi Bug Tracker]--&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://sourceforge.net/projects/rifidi/ Rifidi's Sourceforge Page]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://github.com/mattrifidi/emulator Rifidi Emulator/Prototyper/Tagstreamer Source (Git Repository)]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://github.com/mattrifidi/rifidi Rifidi Edge/Workbench Source (Git Repository)]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.transcends.co Transcends' Website]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Other Projects&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springframework.net/license.html Spring -Application Framework - Apache V2 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://esper.codehaus.org/about/esper/esper.html Esper is a trademark of EsperTech Inc -Complex Event Engine Framework - GPLv2 licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://help.eclipse.org/juno/index.jsp Eclipse - SDK/IDE Framework]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://eclipse.org/equinox/ OSGI - Equinox Container - EPL V1 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springsource.com/repository/app/ Spring Enterprise Bundle Repository - Apache v2 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://restlet.com/ Restlet - Restful Services Implementation used for [[Edge_Management | Rifidi Edge Management]] - Apache 2.0 Licensing ]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.jolokia.org/ Jolokia - Restful JMX Monitoring Implementation used for [[Edge_Monitoring | Rifidi Edge Monitoring]]  -Apache v2 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://mqtt.org/wiki/doku.php/brokers#moquette Moquette - Java based MQTT Broker used for IoT Messaging - Creative Commons Attribution 4.0 International Public License]&amp;lt;/li&amp;gt;&lt;br /&gt;
                 &amp;lt;li&amp;gt;[http://www.llrp.org/ LLRP Tool Kit - Apache 2.0 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;[http://activemq.apache.org/maven/5.8.0/license.html ActiveMQ - Messaging- Apache 2.0 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
              &amp;lt;li&amp;gt;[https://github.com/rxtx/rxtx RXTX  Serial Communication - LGPL v 2.1]&amp;lt;/li&amp;gt;&lt;br /&gt;
              &amp;lt;li&amp;gt;[http://www.mysql.com/about/legal/licensing/foss-exception/  MYSql Client Libraries   - Oracle’s Free and Open Source Software (&amp;quot;FOSS&amp;quot;) License Exception]&amp;lt;/li&amp;gt;&lt;br /&gt;
              &amp;lt;li&amp;gt;[http://www.postgresql.org/about/licence/ PostgreSQL - A liberal Open Source license]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Main_Page"/>
				<updated>2020-09-29T13:44:44Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;h1&amp;gt;Welcome&lt;br /&gt;
        to the &amp;lt;strong&amp;gt;RIFIDI Community Wiki&amp;lt;/strong&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;RIFIDI is an open source RFID/Sensor Middleware Platform sponsored by [http://www.transcends.co Transcends].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt;Connecting the Internet of Things with People.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;Please find out how to [[Documentation Guidelines|contribute to the Wiki]] before you begin&lt;br /&gt;
        editing. &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Remove this tr tag to remove the announcement --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:lightpink&amp;quot;&amp;gt;&amp;lt;h4&amp;gt;Announcing RIFIDI Edge Server 3.8.1 [[Version 3.8.1]]!!&amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;p&amp;gt;Current Version 3.8.1 release notes [[Version 3.8.1]].  Prior version 3.8.0 release notes [[Version 3.8.0]]&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[http://sourceforge.net/projects/rifidi/files/| Download latest version here]] &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Edge Server&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Getting Started|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[User's Guide | User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Application Level Events (ALE) User's Guide]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Web Administration Dashboard|Enterprise Rifidi Management Dashboard (replacement for Workbench) - User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Console|Rifidi Edge Admin Console via Command-Line]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Configuration|Edge Configuration (Global Startup, Run-time and Custom Variables/Settings)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Monitoring | Edge Monitoring (via JMX, REST &amp;amp; MQTT Event Notifications)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Management | Edge Sensor Management (via REST)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge LLRP Reader Management | Edge LLRP Reader Management (via REST)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi App API | Rifidi Application Management  - Application and Readzone Properties (via REST) ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[LLRP Tag Encoding | LLRP Tag Encoding Options (via REST) ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Messaging | Edge Messaging (via MQTT) ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Performance Tuning Tips | Performance Tuning Tips]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Fail-over Configuration (Primary/Secondary)]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Sensor Plugins | Sensor Plugin User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[How to Upgrade Rifidi]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Installing an Application | Installing an Rifidi Application]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi Edge Licensing - GPL v2]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://transcends.co/#products Learn about Rifidi Edge Commercial License/Products/Support]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer&lt;br /&gt;
                Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer's Guide | Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Application Level Events (ALE) User's Guide]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer's Quick Start Reference| Rifidi App Developer's Quick Start Reference]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Development Environment|Setting up a Development Environment]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Jumpstarts | Rifidi App Development Jumpstarts]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Best Practice for Designing a Rifidi APP | Best Practice for Designing a Rifidi APP ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Performance Tuning Tips | Performance Tuning Tips]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Northwind Example Application - Advanced Development Topic]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Sensor Plugin API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Architecture|Architecture]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server HOWTOs | HOWTOs]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Web Administration Dashboard - Developer's Guide|Enterprise Rifidi Management Dashboard - Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &lt;br /&gt;
                   &amp;lt;li&amp;gt;[[How to Package Rifidi Edge| How to Package Rifidi Edge]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Enterprise Rifidi Management Dashboard - as of Rifidi Edge 3.3&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                   &amp;lt;li&amp;gt;[[Web Administration Dashboard - Developer's Guide|Enterprise Rifidi Management Dashboard - Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Web Administration Dashboard|Enterprise Rifidi Management Dashboard - User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Workbench (Note: To be depreciated in Rifiid Edge 4.0 in place of Enterprise Web Rifidi Management Dashboard&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Workbench User's Guide|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Toolkit&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Prototyper User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Tag Streamer User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Release Features]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[:Category:userDoc|browse more user documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator documentation summary | Emulator Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[tag streamer documentation summary | Tag Streamer Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi:Source_Code|How to run Emulator, Tagstream, Prototyper from Source]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Virtual [[Reader Guides]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[LLRPHelloWorld| LLRP Hello World Test Client]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Process| How to Develop Rifidi]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt; [[:Category:developerDoc|browse more developer documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Rifidi Suite&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;!--&amp;lt;li&amp;gt;[[Asset Tracking: An end-to end solution with the Rifidi Platform]]&amp;lt;/li&amp;gt;--&amp;gt;&lt;br /&gt;
                   &amp;lt;!--&amp;lt;li&amp;gt;[[Rifidi roadmap|Rifidi Roadmap]]&amp;lt;/li&amp;gt;--&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.transcends.co/ About Rifidi]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;General Information&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer FAQ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[How to Contribute to the Rifidi project]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Useful Links&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Rifidi Project&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://forums.rifidi.net Rifidi Forums]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;!--&amp;lt;li&amp;gt;[https://trac.rifidi.org/rep-edge-trac/ Rifidi Bug Tracker]--&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://sourceforge.net/projects/rifidi/ Rifidi's Sourceforge Page]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://github.com/mattrifidi/emulator Rifidi Emulator/Prototyper/Tagstreamer Source (Git Repository)]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://github.com/mattrifidi/rifidi Rifidi Edge/Workbench Source (Git Repository)]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.transcends.co Transcends' Website]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Other Projects&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springframework.net/license.html Spring -Application Framework - Apache V2 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://esper.codehaus.org/about/esper/esper.html Esper is a trademark of EsperTech Inc -Complex Event Engine Framework - GPLv2 licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://help.eclipse.org/juno/index.jsp Eclipse - SDK/IDE Framework]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://eclipse.org/equinox/ OSGI - Equinox Container - EPL V1 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springsource.com/repository/app/ Spring Enterprise Bundle Repository - Apache v2 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://restlet.com/ Restlet - Restful Services Implementation used for [[Edge_Management | Rifidi Edge Management]] - Apache 2.0 Licensing ]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.jolokia.org/ Jolokia - Restful JMX Monitoring Implementation used for [[Edge_Monitoring | Rifidi Edge Monitoring]]  -Apache v2 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://mqtt.org/wiki/doku.php/brokers#moquette Moquette - Java based MQTT Broker used for IoT Messaging - Creative Commons Attribution 4.0 International Public License]&amp;lt;/li&amp;gt;&lt;br /&gt;
                 &amp;lt;li&amp;gt;[http://www.llrp.org/ LLRP Tool Kit - Apache 2.0 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;[http://activemq.apache.org/maven/5.8.0/license.html ActiveMQ - Messaging- Apache 2.0 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
              &amp;lt;li&amp;gt;[https://github.com/rxtx/rxtx RXTX  Serial Communication - LGPL v 2.1]&amp;lt;/li&amp;gt;&lt;br /&gt;
              &amp;lt;li&amp;gt;[http://www.mysql.com/about/legal/licensing/foss-exception/  MYSql Client Libraries   - Oracle’s Free and Open Source Software (&amp;quot;FOSS&amp;quot;) License Exception]&amp;lt;/li&amp;gt;&lt;br /&gt;
              &amp;lt;li&amp;gt;[http://www.postgresql.org/about/licence/ PostgreSQL - A liberal Open Source license]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Main_Page"/>
				<updated>2020-09-29T13:44:28Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;h1&amp;gt;Welcome&lt;br /&gt;
        to the &amp;lt;strong&amp;gt;RIFIDI Community Wiki&amp;lt;/strong&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;RIFIDI is an open source RFID/Sensor Middleware Platform sponsored by [http://www.transcends.co Transcends].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt;Connecting the Internet of Things with People.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;Please find out how to [[Documentation Guidelines|contribute to the Wiki]] before you begin&lt;br /&gt;
        editing. &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Remove this tr tag to remove the announcement --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:lightpink&amp;quot;&amp;gt;&amp;lt;h4&amp;gt;Announcing RIFIDI Edge Server 3.8.1!![[Version 3.8.1]]!!&amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;p&amp;gt;Current Version 3.8.1 release notes [[Version 3.8.1]].  Prior version 3.8.0 release notes [[Version 3.8.0]]&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[http://sourceforge.net/projects/rifidi/files/| Download latest version here]] &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Edge Server&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Getting Started|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[User's Guide | User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Application Level Events (ALE) User's Guide]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Web Administration Dashboard|Enterprise Rifidi Management Dashboard (replacement for Workbench) - User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Console|Rifidi Edge Admin Console via Command-Line]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Configuration|Edge Configuration (Global Startup, Run-time and Custom Variables/Settings)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Monitoring | Edge Monitoring (via JMX, REST &amp;amp; MQTT Event Notifications)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Management | Edge Sensor Management (via REST)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge LLRP Reader Management | Edge LLRP Reader Management (via REST)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi App API | Rifidi Application Management  - Application and Readzone Properties (via REST) ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[LLRP Tag Encoding | LLRP Tag Encoding Options (via REST) ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Messaging | Edge Messaging (via MQTT) ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Performance Tuning Tips | Performance Tuning Tips]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Fail-over Configuration (Primary/Secondary)]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Sensor Plugins | Sensor Plugin User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[How to Upgrade Rifidi]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Installing an Application | Installing an Rifidi Application]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi Edge Licensing - GPL v2]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://transcends.co/#products Learn about Rifidi Edge Commercial License/Products/Support]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer&lt;br /&gt;
                Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer's Guide | Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Application Level Events (ALE) User's Guide]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer's Quick Start Reference| Rifidi App Developer's Quick Start Reference]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Development Environment|Setting up a Development Environment]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Jumpstarts | Rifidi App Development Jumpstarts]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Best Practice for Designing a Rifidi APP | Best Practice for Designing a Rifidi APP ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Performance Tuning Tips | Performance Tuning Tips]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Northwind Example Application - Advanced Development Topic]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Sensor Plugin API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Architecture|Architecture]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server HOWTOs | HOWTOs]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Web Administration Dashboard - Developer's Guide|Enterprise Rifidi Management Dashboard - Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &lt;br /&gt;
                   &amp;lt;li&amp;gt;[[How to Package Rifidi Edge| How to Package Rifidi Edge]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Enterprise Rifidi Management Dashboard - as of Rifidi Edge 3.3&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                   &amp;lt;li&amp;gt;[[Web Administration Dashboard - Developer's Guide|Enterprise Rifidi Management Dashboard - Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Web Administration Dashboard|Enterprise Rifidi Management Dashboard - User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Workbench (Note: To be depreciated in Rifiid Edge 4.0 in place of Enterprise Web Rifidi Management Dashboard&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Workbench User's Guide|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Toolkit&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Prototyper User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Tag Streamer User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Release Features]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[:Category:userDoc|browse more user documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator documentation summary | Emulator Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[tag streamer documentation summary | Tag Streamer Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi:Source_Code|How to run Emulator, Tagstream, Prototyper from Source]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Virtual [[Reader Guides]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[LLRPHelloWorld| LLRP Hello World Test Client]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Process| How to Develop Rifidi]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt; [[:Category:developerDoc|browse more developer documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Rifidi Suite&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;!--&amp;lt;li&amp;gt;[[Asset Tracking: An end-to end solution with the Rifidi Platform]]&amp;lt;/li&amp;gt;--&amp;gt;&lt;br /&gt;
                   &amp;lt;!--&amp;lt;li&amp;gt;[[Rifidi roadmap|Rifidi Roadmap]]&amp;lt;/li&amp;gt;--&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.transcends.co/ About Rifidi]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;General Information&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer FAQ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[How to Contribute to the Rifidi project]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Useful Links&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Rifidi Project&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://forums.rifidi.net Rifidi Forums]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;!--&amp;lt;li&amp;gt;[https://trac.rifidi.org/rep-edge-trac/ Rifidi Bug Tracker]--&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://sourceforge.net/projects/rifidi/ Rifidi's Sourceforge Page]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://github.com/mattrifidi/emulator Rifidi Emulator/Prototyper/Tagstreamer Source (Git Repository)]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://github.com/mattrifidi/rifidi Rifidi Edge/Workbench Source (Git Repository)]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.transcends.co Transcends' Website]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Other Projects&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springframework.net/license.html Spring -Application Framework - Apache V2 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://esper.codehaus.org/about/esper/esper.html Esper is a trademark of EsperTech Inc -Complex Event Engine Framework - GPLv2 licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://help.eclipse.org/juno/index.jsp Eclipse - SDK/IDE Framework]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://eclipse.org/equinox/ OSGI - Equinox Container - EPL V1 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springsource.com/repository/app/ Spring Enterprise Bundle Repository - Apache v2 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://restlet.com/ Restlet - Restful Services Implementation used for [[Edge_Management | Rifidi Edge Management]] - Apache 2.0 Licensing ]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.jolokia.org/ Jolokia - Restful JMX Monitoring Implementation used for [[Edge_Monitoring | Rifidi Edge Monitoring]]  -Apache v2 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://mqtt.org/wiki/doku.php/brokers#moquette Moquette - Java based MQTT Broker used for IoT Messaging - Creative Commons Attribution 4.0 International Public License]&amp;lt;/li&amp;gt;&lt;br /&gt;
                 &amp;lt;li&amp;gt;[http://www.llrp.org/ LLRP Tool Kit - Apache 2.0 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;[http://activemq.apache.org/maven/5.8.0/license.html ActiveMQ - Messaging- Apache 2.0 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
              &amp;lt;li&amp;gt;[https://github.com/rxtx/rxtx RXTX  Serial Communication - LGPL v 2.1]&amp;lt;/li&amp;gt;&lt;br /&gt;
              &amp;lt;li&amp;gt;[http://www.mysql.com/about/legal/licensing/foss-exception/  MYSql Client Libraries   - Oracle’s Free and Open Source Software (&amp;quot;FOSS&amp;quot;) License Exception]&amp;lt;/li&amp;gt;&lt;br /&gt;
              &amp;lt;li&amp;gt;[http://www.postgresql.org/about/licence/ PostgreSQL - A liberal Open Source license]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Version_3.8.1</id>
		<title>Version 3.8.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Version_3.8.1"/>
				<updated>2020-09-17T12:59:04Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Changes in 3.8.1  =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensor Management==&lt;br /&gt;
&lt;br /&gt;
# Provided GPO integration services via REST - http://wiki.rifidi.net/index.php/Edge_Management#Set_GPO_Command_Example_.28released_in_Rifidi_3.8.1.29&lt;br /&gt;
&lt;br /&gt;
==Dashboard==&lt;br /&gt;
&lt;br /&gt;
# Fixed issue with current tags via REST not functioning with Dashboard&lt;br /&gt;
&lt;br /&gt;
==LLRP==&lt;br /&gt;
&lt;br /&gt;
# Fixed ROSpec Power setting compatibility with latest Impinj firmware&lt;br /&gt;
&lt;br /&gt;
==System==&lt;br /&gt;
&lt;br /&gt;
# Stats - added Rifidi monthly uptime collection (readers, apps, Rifidi.xml)&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
Javadocs:&lt;br /&gt;
http://www.transcends.co/www/javadoc/edge3.8.1/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Developer's_Guide]]&lt;br /&gt;
&lt;br /&gt;
[[User's_Guide]]&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Server_Development_Environment</id>
		<title>Edge Server Development Environment</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Server_Development_Environment"/>
				<updated>2020-09-17T12:09:15Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document details the steps necessary to set up a development environment in order to either develop a custom Rifidi Edge Server application, or modify an existing Edge Server bundle.&lt;br /&gt;
=Configuring eclipse environment=&lt;br /&gt;
# [http://openjdk.java.net/ Download] and install version 1.7 or greater ('''32 bit only''') of the Java SE Development Kit (JDK) for your OS.&lt;br /&gt;
# [http://sourceforge.net/projects/rifidi/files/ Download] the latest version of the Rifidi Edge Server SDK.&lt;br /&gt;
# [http://www.eclipse.org/downloads/packages/release/juno/sr1  Download] the Juno release of Eclipse for RCP and RAP developers.&lt;br /&gt;
# Run eclipse and create a new workspace.&amp;lt;br&amp;gt;[[Image:Edgeserver_dev_screenshot1.png]]&lt;br /&gt;
# Unzip the Rifidi Edge Server SDK into the newly created workspace directory on your file system.&lt;br /&gt;
# In eclipse go to File-&amp;gt;Import.  Choose &amp;quot;Existing Projects into Workspace&amp;quot;.  Now select the SDK folder (which must reside in workspace directory).&amp;lt;br&amp;gt;[[Image:Edgeserver_dev_screenshot2.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[Image:Edgeserver_dev_screenshot3.png]]&amp;lt;br&amp;gt;[[Image:Edgeserver_dev_screenshot4.png]]&lt;br /&gt;
# Open up the target platform file (the file that ends in .target).  Click the button that says &amp;quot;set as target platform&amp;quot; on the upper right-hand corner of the page.&amp;lt;br&amp;gt;[[Image:Edgeserver_dev_screenshot5.png]]&lt;br /&gt;
# Go to Run-&amp;gt;Run Configurations. Open up the Edge Server OSGi run configuration (might be an item under &amp;quot;OSGi Framework&amp;quot;).  Click Run.  Note: The necesary bundles should be already checked by default. One can run the SS command at OSGI prompt to ensure necessary reader, Rifidi, Spring etc.. bundles have started &amp;lt;br&amp;gt;Note: Please Do NOT uncheck bundles already checked by default in SDK&amp;lt;br&amp;gt;[[Image:Edgeserver_dev_screenshot6.png]]&lt;br /&gt;
Congratulations!  You have successfully set up and configured your eclipse environment and are ready to develop an edge server application!&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*Check out the  [[Development_Jumpstarts|Rifidi App Jumpstarts]] or Developer's Guide to build your first Rifidi App [[Developer%27s_Guide|Developers Guide]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note: &lt;br /&gt;
If you are having trouble running a rifidi command, most likely the &amp;quot;org.rifidi.edge&amp;quot; bundle isn't started. Do an &amp;quot;ss&amp;quot; in the OSGI prompt and see if the org.rifidi.edge bundles have started correctly. If you don't see any org.rifidi.edge bundles, check your run config and make sure nothing is disabled. If you see them there but for some reason they arn't started, you can attempt to start them. Lets say that &amp;quot;org.rifidi.edge&amp;quot; is bundle &amp;quot;47&amp;quot;. Type in &amp;quot;start 47&amp;quot; into your OSGI console to attempt to start that bundle. If it can't start, it should tell you why (most likely it requires another bundle). Keept trying to start bundles to see what is wrong, then you can probably adjust what is wrong in your run config. Also bear in mind that the &amp;quot;add required bundles&amp;quot; button (and the &amp;quot;validate bundles&amp;quot;) button in the run config are your friends. They will help you fix your problems automatically.&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Version_3.8.1</id>
		<title>Version 3.8.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Version_3.8.1"/>
				<updated>2020-09-17T12:06:57Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Changes in 3.8.1  =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensor Management==&lt;br /&gt;
&lt;br /&gt;
# Provided GPO integration services via REST - http://wiki.rifidi.net/index.php/Edge_Management#Set_GPO_Command_Example_.28released_in_Rifidi_3.8.1.29&lt;br /&gt;
&lt;br /&gt;
==Dashboard==&lt;br /&gt;
&lt;br /&gt;
# Fixed issue with current tags via REST not functioning with Dashboard&lt;br /&gt;
&lt;br /&gt;
==LLRP==&lt;br /&gt;
&lt;br /&gt;
# Fixed ROSpec Power setting compatibility with latest Impinj firmware&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
Javadocs:&lt;br /&gt;
http://www.transcends.co/www/javadoc/edge3.8.1/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Developer's_Guide]]&lt;br /&gt;
&lt;br /&gt;
[[User's_Guide]]&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Version_3.8.1</id>
		<title>Version 3.8.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Version_3.8.1"/>
				<updated>2020-09-17T12:06:37Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Changes in 3.8.1  =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensor Management==&lt;br /&gt;
&lt;br /&gt;
# Provided GPO integration services via REST - http://wiki.rifidi.net/index.php/Edge_Management#Set_GPO_Command_Example_.28released_in_Rifidi_3.8.1.29&lt;br /&gt;
&lt;br /&gt;
==Dashboard==&lt;br /&gt;
&lt;br /&gt;
# Fixed issue with current tags via REST not functioning with Dashboard&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
Javadocs:&lt;br /&gt;
http://www.transcends.co/www/javadoc/edge3.8.1/&lt;br /&gt;
&lt;br /&gt;
==LLRP==&lt;br /&gt;
&lt;br /&gt;
# Fixed ROSpec Power setting compatibility with latest Impinj firmware&lt;br /&gt;
&lt;br /&gt;
[[Developer's_Guide]]&lt;br /&gt;
&lt;br /&gt;
[[User's_Guide]]&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Version_3.8.1</id>
		<title>Version 3.8.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Version_3.8.1"/>
				<updated>2020-09-17T12:06:12Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Changes in 3.8.1  =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensor Management==&lt;br /&gt;
&lt;br /&gt;
# Provided GPO integration services via REST - http://wiki.rifidi.net/index.php/Edge_Management#Set_GPO_Command_Example_.28released_in_Rifidi_3.8.1.29&lt;br /&gt;
&lt;br /&gt;
==Dashboard==&lt;br /&gt;
&lt;br /&gt;
# Fixed issue with current tags via REST not functioning with Dashboard&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
Javadocs:&lt;br /&gt;
http://www.transcends.co/www/javadoc/edge3.8.1/&lt;br /&gt;
&lt;br /&gt;
==LLRP==&lt;br /&gt;
&lt;br /&gt;
# Fixed ROSpec Power setting compatibility with latest Impinj firmware&lt;br /&gt;
&lt;br /&gt;
[[Developer's_Guide]]&lt;br /&gt;
&lt;br /&gt;
[[User's_Guide]]&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Version_3.8.1</id>
		<title>Version 3.8.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Version_3.8.1"/>
				<updated>2020-09-17T12:05:48Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: Created page with &amp;quot;= Changes in 3.8.1  =   ==Sensor Management==  # Provided GPO integration services via REST - http://wiki.rifidi.net/index.php/Edge_Management#Set_GPO_Command_Example_.28relea...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Changes in 3.8.1  =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sensor Management==&lt;br /&gt;
&lt;br /&gt;
# Provided GPO integration services via REST - http://wiki.rifidi.net/index.php/Edge_Management#Set_GPO_Command_Example_.28released_in_Rifidi_3.8.1.29&lt;br /&gt;
&lt;br /&gt;
==Dashboard==&lt;br /&gt;
&lt;br /&gt;
# Fixed issue with current tags via REST not functioning with Dashboard'''Bold text'''&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
Javadocs:&lt;br /&gt;
http://www.transcends.co/www/javadoc/edge3.8.1/&lt;br /&gt;
&lt;br /&gt;
==LLRP==&lt;br /&gt;
&lt;br /&gt;
# Fixed ROSpec Power setting compatibility with latest Impinj firmware&lt;br /&gt;
&lt;br /&gt;
[[Developer's_Guide]]&lt;br /&gt;
&lt;br /&gt;
[[User's_Guide]]&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Management</id>
		<title>Edge Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Management"/>
				<updated>2020-09-17T12:02:19Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* Flash GPO Command Example (coming soon in Rifidi 3.8.1) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Starting in 3.1 Edge Management is now accessible though Restful Services (leveraging [http://restlet.com/ Restlet plugin]. Restlet allows all Rifidi Edge Management operations available through workbench to be accessible via Restful Services.Prior to Rifidi 3.1 Edge Management is available through RMI (currently used by Rifidi Workbench if looking for code examples). &lt;br /&gt;
&lt;br /&gt;
The types of operations available through Restful Services include:&lt;br /&gt;
*All &amp;quot;session&amp;quot; commands (for stopping and starting reader/sensor sessions)&lt;br /&gt;
*ExecuteCommand and deleteCommand  (for commands supported by a sensor such as a tag read)&lt;br /&gt;
*Readers (for getting a list of readers/sensors available on Edge Server instance)&lt;br /&gt;
*Commands (for issuing command line operations such as saving the Edge Server Configuration currently in memory)&lt;br /&gt;
*Get and Set Properties (for setting and getting sensor properties such as Setting the LLRP Reader Configuration dynamically)&lt;br /&gt;
*Create Reader (for creating a new reader connection)&lt;br /&gt;
*Managing Rifidi Applications (for stopping/starting, listing and deploying Rifidi Apps)&lt;br /&gt;
&lt;br /&gt;
Additional features can be found on [http://restlet.com/ Restlet User Guide ]&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
In rifidiserver.ini  - A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.port=8111&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.enabled=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source for Restful Rifidi Management Commands - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/&lt;br /&gt;
&lt;br /&gt;
=Configuration (HTTP over SSL) - Available as of version 3.1.1= &lt;br /&gt;
&lt;br /&gt;
A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SSL Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.port=8183&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.ssl.enabled=true&lt;br /&gt;
#Keystore Path&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepath=\config\serverX.jks&lt;br /&gt;
#Key store password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepassword=password&lt;br /&gt;
#Key Password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keypassword=password&lt;br /&gt;
#Key store Type&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystoretype=JKS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Note: Link to how to configure/setup certificates with REST - http://restlet.com/learn/guide/2.3/core/security/https&lt;br /&gt;
==REST HTTP over SSL Example Application==&lt;br /&gt;
link to https java client example - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge.rest/src/org/rifidi/edge/rest/test/HttpsTestClient.java&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user can add this jvm parameter to see detailed messages if getting any &lt;br /&gt;
trouble when running this example:&lt;br /&gt;
-Djavax.net.debug=all&lt;br /&gt;
&lt;br /&gt;
In order t0 successful get the https response from stand alone java &lt;br /&gt;
example, user must import the certificate into JVM:&lt;br /&gt;
&lt;br /&gt;
open command windows as administrator and execute keytool -import, like:&lt;br /&gt;
&lt;br /&gt;
keytool -import -alias localhost -keystore &amp;quot;C:\Program Files &lt;br /&gt;
(x86)\Java\jdk1.6.0_45\jre\lib\security\cacerts&amp;quot; -file &lt;br /&gt;
&amp;quot;D:\tmp\cert\localhost.cer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if requested, default password is: changeit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Logging= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1. Add an entry to the rifidiserver.ini (if using windows; when using linux you add this JVM argument in the rifidi-server executable):&lt;br /&gt;
-Djava.util.logging.config.file=d:/myLogging.properties&lt;br /&gt;
&lt;br /&gt;
*2. Create logging properties file, for example like the below myLogging.properties&lt;br /&gt;
The entry in that file that determines where the log file will show up is the following: java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myLogging.properties&lt;br /&gt;
# ================================&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ==   Web Logging Properties   ==&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # ------------------&lt;br /&gt;
    # General properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # This defines a whitespace separated list of class names for handler classes to load and register as handlers on&lt;br /&gt;
    # the root Logger (the Logger named &amp;quot;&amp;quot;). Each class name must be for a Handler class which has a default constructor.&lt;br /&gt;
    # Note that these Handlers may be created lazily, when they are first used.&lt;br /&gt;
    handlers=java.util.logging.FileHandler&lt;br /&gt;
	# ------------------&lt;br /&gt;
    # Loggers properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
    .level=WARNING&lt;br /&gt;
    org.mortbay.level=WARNING&lt;br /&gt;
    org.restlet.level=INFO&lt;br /&gt;
    com.noelios.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    com.noelios.web.WebComponent.www.level=INFO&lt;br /&gt;
    com.noelios.web.WebComponent.www.handlers=com.noelios.restlet.util.AccessLogFileHandler&lt;br /&gt;
    com.noelios.web.WebComponent.www.useParentHandlers=false&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # ConsoleHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.INFO).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.formatter=&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.encoding=&lt;br /&gt;
	&lt;br /&gt;
	# ------------------------------&lt;br /&gt;
    # General FileHandler properties&lt;br /&gt;
    # ------------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # java.util.logging.FileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.FileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.FileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    java.util.logging.FileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    java.util.logging.FileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot;&lt;br /&gt;
    java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # java.util.logging.FileHandler.append=&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # LogFileHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.formatter=com.noelios.restlet.util.AccessLogFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot; .pattern=/home/prod/data/log/WebComponent-www-%u-%g.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # org.restlet.util.AccessLogFileHandler.append=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Tuning/Confguration (Jetty) as of Rifidi 3.4= &lt;br /&gt;
&lt;br /&gt;
As of Rifidi 3.4 Jetty was made the default HTTP container for Restlet to allow for extended performance and configuration of the REST interface.&lt;br /&gt;
&lt;br /&gt;
The parameters can for configured in the Rifidi Server (ini) configuration&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.minThreads=8	Thread pool minimum threads&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.maxThreads=200	Thread pool max threads&lt;br /&gt;
&lt;br /&gt;
Full list of Jetty parameters using the same naming convention can be found here  - http://restlet.com/technical-resources/restlet-framework/javadocs/snapshot/jse/ext/org/restlet/ext/jetty/JettyServerHelper.html&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
==Command Code Snippet - start session - example how to use Rifidi API in a Java App==&lt;br /&gt;
All Rifidi Management API Command Logic here - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/SensorManagerServiceRestletImpl.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
sensorManagerService.startSession((String) request&lt;br /&gt;
	.getAttributes().get(&amp;quot;readerID&amp;quot;), (String) request&lt;br /&gt;
		.getAttributes().get(&amp;quot;sessionID&amp;quot;));&lt;br /&gt;
	response.setEntity(self.generateReturnString(self&lt;br /&gt;
		.generateSuccessMessage()), MediaType.TEXT_XML);&lt;br /&gt;
} catch (Exception e) {&lt;br /&gt;
	response.setEntity(e.getMessage(), MediaType.TEXT_PLAIN);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Command Basic Flow Example==&lt;br /&gt;
#Create a Reader - http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
#Create a Session (on a reader/sensor)  - http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
#Create a Command (on a reader/sensor)) -/createcommand/{commandType}/{properties} &lt;br /&gt;
*Note: some readers do not require create/executing a command as there is only one command hence for convenience is part of the create session/start session  (Thinkify, CSL and Generic adapter (for handhelds/async push calls) are some examples of this)&lt;br /&gt;
#Set Command Properties - http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
#Execute Command (on a given reader/sensor and session) - http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1&lt;br /&gt;
#Start Session (to begin processing reads using associate command/reader/sensor configuration)  - http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
#Save Configuartion (optional -  to save/persist config in case of a server restart) - http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
=Command Example=&lt;br /&gt;
&lt;br /&gt;
Note: localhost can be substituted with IP address/Host name of Rifidi Edge Server. Port can be changed in Rifidi configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==commandtypes command example==&lt;br /&gt;
&lt;br /&gt;
*commandtypes - returns a list of available command types&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commandtypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commandtypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-ADD_ROSPEC-File&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader via an XML file. Any changes made to the reader are determined by the contents of the file. To generate xml code for the commands you want to submit, check out LLRP Commander here: http://www.fosstrak.org/llrp/index.html&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;ThingMagic-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the ThingMagic reader for its tags. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;ThingMagic&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Start&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Alien reader to send back tags using the autonomous mode. To monitor a read zone, configure an Alien autonomous reader to listen. Then submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader to collect tags. By default, this command will cause the LLRP reader to push back tag reads automatically. If you would rather use the Poll mode, you will need to use the LLRP Poll command. To use the LLRP Configure command, submit it for a one-time execution&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the LLRP reader to stop sending back tags. To use, supply the RO Spec that is currently executing on the reader, and submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Thingmagic6-Push&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Sets the Thingmagic to push tags back to the edge server&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Thingmagic6&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the Alien reader for its tag list. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the LLRP reader for its tags. For monitoring of the read zone, first use the LLRP Configure command to configure the LLRP reader for Poll Mode. Then submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Mask-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID With Mask command. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Alien reader to stop sending back tags in autonomous mode. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Read-Block-Data&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back memory bank tags using the Read Block Data commmand. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readertypes command example==&lt;br /&gt;
&lt;br /&gt;
*readertypes - returns a list of available reader/sensor types (such as LLRP, Alien, BarCode etc..)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readertypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readertypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Generic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;A generic Rifidi Adapter.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Opticon&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Adapter for the Opticon Barcode Sensor&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien-Autonomous&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien autonomous adapter is an endpoint to passively receive tag reads from an Alien reader operating in autonomous mode. You cannot send any commands on the alien autonomous session&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid2010&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thingmagic6&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thingmagic 6 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi LLRP adapter supports any reader that exposes a Low Level Reader Protocol (LLRP) interface. LLRP is a standard from EPCglobal.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid3014&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien adapter supports the Alien ALR protocol on the 9900, 9800, 8800 readers.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thinkify50&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thinkify TR50 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;ThingMagic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi ThingMagic adapater supports the ThingMagic RQL protocol on the Mercury 4 and Mercury 5 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader command example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader overriding default readerID command example==&lt;br /&gt;
&lt;br /&gt;
The reader id is important for applications' read zones to appropriate operate, and this id is used to link read zones with sensors. This command enables one to set the readerId versus the system generating one (default behavior).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: To override the default reader id, there must be included the property readerID, in order to assign a specific reader id and override the default. &lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletereader command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletereader/{readerID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid readerID: LLRP&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readers command example==&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readers&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
*readers - returns a list of readers/senors managed by the Edge Server&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readers  &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_2&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get reader properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{readerID} - returns the reader/sensor properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this, to get a reader properties:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;5084&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;192.168.1.48&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;DisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;null&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReaderConfigPath&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;config/SET_READER_CONFIG.llrp&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get command properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{commandID} - returns the command properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ROSpecID&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;AntennaIDs&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Duration&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1000&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;TriggerType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;PUSH&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set reader properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{readerID}/{properties}&amp;quot; - sets the reader/sensor properties&lt;br /&gt;
Note: if there is an existing session for updated reader properties to take effect the session will need to be deleted and recreated so the properties are moved to the session &lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/Alien_1/MaxNumConnectionAttempts=11;DisplayName=Alien_Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_1/IpAddress=127.0.0.15;Port=4567;att1=aa;att2=bbb;attt3=YY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: att1=aa|att2=bbb|attt3=YY&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set command properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{commandID}/{properties}&amp;quot; - sets the command properties&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=7500;cc=4;other=67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: cc=4|other=67&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==commands command example==&lt;br /&gt;
&lt;br /&gt;
*commands - returns a list of available commands&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commands&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commands&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commands&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;&lt;br /&gt;
         &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createcommand example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the command instance is created or the call fails therefore the rcommand instance is not created&lt;br /&gt;
&lt;br /&gt;
*createcomamnd/{commandType}/{properties} - creates a command to be executed on a reader session&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createcommand&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=5000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commandID&amp;gt;Alien_Poll_2&amp;lt;/commandID&amp;gt; Note: Added in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response error (if there is at least one non valid property, the command is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=4000;propX=123;prop2=AB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: propX=123|prop2=AB&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletecommand command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletecommand/{commandID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid commandID: LLRP_Configure&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createsession command example==&lt;br /&gt;
&lt;br /&gt;
*createsession/{readerID} - creates a session (with corresponding reader/sensor configuration) and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sessionID&amp;gt;1&amp;lt;/sessionID&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail -already a session for sensor id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
     java.lang.Exception: Reader Alien_1 already has a session.&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startsession command example==&lt;br /&gt;
&lt;br /&gt;
*startsession/{readerID}/{sessionID} - starts a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;startsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CONNECTING&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to start session, current state is CONNECTING  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readerstatus command example==&lt;br /&gt;
&lt;br /&gt;
*readerstatus/{readerID} - retuns teh status of a given reader/sensor&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readerstatus&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readerstatus/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensor&amp;gt;&lt;br /&gt;
      &amp;lt;serviceID&amp;gt;LLRP_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
      &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
   &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;sessions&amp;gt;&lt;br /&gt;
      &amp;lt;session&amp;gt;&lt;br /&gt;
         &amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;&lt;br /&gt;
         &amp;lt;status&amp;gt;PROCESSING&amp;lt;/status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;executingcommands&amp;gt;&lt;br /&gt;
            &amp;lt;executingcommand&amp;gt;&lt;br /&gt;
               &amp;lt;commandFactory&amp;gt;LLRP-Configure&amp;lt;/commandFactory&amp;gt;&lt;br /&gt;
              &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
              &amp;lt;interval&amp;gt;0&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;/executingcommand&amp;gt;&lt;br /&gt;
        &amp;lt;/executingcommands&amp;gt;&lt;br /&gt;
      &amp;lt;/session&amp;gt;&lt;br /&gt;
   &amp;lt;/sessions&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==stopsession command example==&lt;br /&gt;
&lt;br /&gt;
*stopsession/{readerID}/{sessionID} - stops a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;stopsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/stopsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CREATED&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to stop session, current state is CREATED  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==resetsession command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/resetsession/{readerID}/{sessionID}&lt;br /&gt;
&lt;br /&gt;
Used to stop and start an existing reader session&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/resetsession/LLRP_1/1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
==executecommand command example==&lt;br /&gt;
&lt;br /&gt;
*executecommand/{readerID}/{sessionID}/{commandID}/{repeatInterval} - Executes a command for a given session&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;executecommand&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/0 (for single shot - one time execution)&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletesession command example==&lt;br /&gt;
&lt;br /&gt;
*deletesession/{readerID}/{sessionID} - deletes a session and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;deletesession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletesession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==save command example==&lt;br /&gt;
&lt;br /&gt;
*save - Saves the current state of the Edge Server configuration (such as created readers/sensors, modified properties etc..&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;save&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ping - Used by failover feature==&lt;br /&gt;
*ping -  Returns a date/timestamp&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;ping&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/ping&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp&amp;gt;1414610247969&amp;lt;/timestamp&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==currenttags example (released in Rifidi 3.4)==&lt;br /&gt;
*currenttags/{readerID} -  Returns a list of tags on a given reader&lt;br /&gt;
&lt;br /&gt;
Note: timestamp, reader and RSSI added in 3.5.1&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;currenttags&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/currenttags/LLRP_1 &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;currenttags&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
   &amp;lt;/currenttags&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readermetadata - Used by Web Administration Dashboard for Dynamic Reader &amp;amp; Command Properties/Wizard (released in 3.2)==&lt;br /&gt;
*readermetadata-  Returns reader metadata&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readermetadata&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readermetadata&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;readers&amp;gt;&lt;br /&gt;
  &amp;lt;reader&amp;gt;&lt;br /&gt;
   &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;ReconnectionInterval&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Reconnection Interval&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;500&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;&lt;br /&gt;
     Upon connection failure, the time to wait between two connection attempts (ms)&lt;br /&gt;
     &amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;4.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Port&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Port&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;8090&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Port of the Reader&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;maxvalue&amp;gt;65535&amp;lt;/maxvalue&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;1.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thinkify RCS Command - Used for one time configuration of a Thinkify USB reader (Deprecated in 3.5.1)==&lt;br /&gt;
*rcs/{Thinkify Reader ID}/{sessionid}&lt;br /&gt;
&lt;br /&gt;
request (via HTTP Post/Get) &amp;quot;rcs&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/rcs/ThinkifyUSB_1/1&lt;br /&gt;
&lt;br /&gt;
==startbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/startbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==stopbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/stopbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to install a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==installbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/installbundle&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to start a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/installbundle&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==uninstallbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/uninstallbundle/{bundleID}&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to uninstall a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/uninstallbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==ss OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/ss&lt;br /&gt;
&lt;br /&gt;
Used to list the OSGI bundles&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/ss&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.osgi&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.weaving.hook&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;RESOLVED&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.simpleconfigurator&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;com.sun.mail.javax.mail&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set GPO Command Example (released in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*/setgpo/{readerID}/{sessionID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to set gpo&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/setgpo/LLRP_1/1/1,2,3&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flash GPO Command Example (released in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//flashgpo/{readerID}/{sessionID}/{ports}/{duration in seconds}&lt;br /&gt;
&lt;br /&gt;
Used to turn gpo on for a specified duration such as Flashing a light on for 4 seconds then turn it off again&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/flashgpo/LLRP_1/1/1,2,3/4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Management</id>
		<title>Edge Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Management"/>
				<updated>2020-09-17T12:02:06Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* Set GPO Command Example (coming soon in Rifidi 3.8.1) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Starting in 3.1 Edge Management is now accessible though Restful Services (leveraging [http://restlet.com/ Restlet plugin]. Restlet allows all Rifidi Edge Management operations available through workbench to be accessible via Restful Services.Prior to Rifidi 3.1 Edge Management is available through RMI (currently used by Rifidi Workbench if looking for code examples). &lt;br /&gt;
&lt;br /&gt;
The types of operations available through Restful Services include:&lt;br /&gt;
*All &amp;quot;session&amp;quot; commands (for stopping and starting reader/sensor sessions)&lt;br /&gt;
*ExecuteCommand and deleteCommand  (for commands supported by a sensor such as a tag read)&lt;br /&gt;
*Readers (for getting a list of readers/sensors available on Edge Server instance)&lt;br /&gt;
*Commands (for issuing command line operations such as saving the Edge Server Configuration currently in memory)&lt;br /&gt;
*Get and Set Properties (for setting and getting sensor properties such as Setting the LLRP Reader Configuration dynamically)&lt;br /&gt;
*Create Reader (for creating a new reader connection)&lt;br /&gt;
*Managing Rifidi Applications (for stopping/starting, listing and deploying Rifidi Apps)&lt;br /&gt;
&lt;br /&gt;
Additional features can be found on [http://restlet.com/ Restlet User Guide ]&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
In rifidiserver.ini  - A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.port=8111&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.enabled=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source for Restful Rifidi Management Commands - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/&lt;br /&gt;
&lt;br /&gt;
=Configuration (HTTP over SSL) - Available as of version 3.1.1= &lt;br /&gt;
&lt;br /&gt;
A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SSL Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.port=8183&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.ssl.enabled=true&lt;br /&gt;
#Keystore Path&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepath=\config\serverX.jks&lt;br /&gt;
#Key store password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepassword=password&lt;br /&gt;
#Key Password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keypassword=password&lt;br /&gt;
#Key store Type&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystoretype=JKS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Note: Link to how to configure/setup certificates with REST - http://restlet.com/learn/guide/2.3/core/security/https&lt;br /&gt;
==REST HTTP over SSL Example Application==&lt;br /&gt;
link to https java client example - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge.rest/src/org/rifidi/edge/rest/test/HttpsTestClient.java&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user can add this jvm parameter to see detailed messages if getting any &lt;br /&gt;
trouble when running this example:&lt;br /&gt;
-Djavax.net.debug=all&lt;br /&gt;
&lt;br /&gt;
In order t0 successful get the https response from stand alone java &lt;br /&gt;
example, user must import the certificate into JVM:&lt;br /&gt;
&lt;br /&gt;
open command windows as administrator and execute keytool -import, like:&lt;br /&gt;
&lt;br /&gt;
keytool -import -alias localhost -keystore &amp;quot;C:\Program Files &lt;br /&gt;
(x86)\Java\jdk1.6.0_45\jre\lib\security\cacerts&amp;quot; -file &lt;br /&gt;
&amp;quot;D:\tmp\cert\localhost.cer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if requested, default password is: changeit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Logging= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1. Add an entry to the rifidiserver.ini (if using windows; when using linux you add this JVM argument in the rifidi-server executable):&lt;br /&gt;
-Djava.util.logging.config.file=d:/myLogging.properties&lt;br /&gt;
&lt;br /&gt;
*2. Create logging properties file, for example like the below myLogging.properties&lt;br /&gt;
The entry in that file that determines where the log file will show up is the following: java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myLogging.properties&lt;br /&gt;
# ================================&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ==   Web Logging Properties   ==&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # ------------------&lt;br /&gt;
    # General properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # This defines a whitespace separated list of class names for handler classes to load and register as handlers on&lt;br /&gt;
    # the root Logger (the Logger named &amp;quot;&amp;quot;). Each class name must be for a Handler class which has a default constructor.&lt;br /&gt;
    # Note that these Handlers may be created lazily, when they are first used.&lt;br /&gt;
    handlers=java.util.logging.FileHandler&lt;br /&gt;
	# ------------------&lt;br /&gt;
    # Loggers properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
    .level=WARNING&lt;br /&gt;
    org.mortbay.level=WARNING&lt;br /&gt;
    org.restlet.level=INFO&lt;br /&gt;
    com.noelios.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    com.noelios.web.WebComponent.www.level=INFO&lt;br /&gt;
    com.noelios.web.WebComponent.www.handlers=com.noelios.restlet.util.AccessLogFileHandler&lt;br /&gt;
    com.noelios.web.WebComponent.www.useParentHandlers=false&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # ConsoleHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.INFO).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.formatter=&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.encoding=&lt;br /&gt;
	&lt;br /&gt;
	# ------------------------------&lt;br /&gt;
    # General FileHandler properties&lt;br /&gt;
    # ------------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # java.util.logging.FileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.FileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.FileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    java.util.logging.FileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    java.util.logging.FileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot;&lt;br /&gt;
    java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # java.util.logging.FileHandler.append=&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # LogFileHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.formatter=com.noelios.restlet.util.AccessLogFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot; .pattern=/home/prod/data/log/WebComponent-www-%u-%g.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # org.restlet.util.AccessLogFileHandler.append=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Tuning/Confguration (Jetty) as of Rifidi 3.4= &lt;br /&gt;
&lt;br /&gt;
As of Rifidi 3.4 Jetty was made the default HTTP container for Restlet to allow for extended performance and configuration of the REST interface.&lt;br /&gt;
&lt;br /&gt;
The parameters can for configured in the Rifidi Server (ini) configuration&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.minThreads=8	Thread pool minimum threads&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.maxThreads=200	Thread pool max threads&lt;br /&gt;
&lt;br /&gt;
Full list of Jetty parameters using the same naming convention can be found here  - http://restlet.com/technical-resources/restlet-framework/javadocs/snapshot/jse/ext/org/restlet/ext/jetty/JettyServerHelper.html&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
==Command Code Snippet - start session - example how to use Rifidi API in a Java App==&lt;br /&gt;
All Rifidi Management API Command Logic here - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/SensorManagerServiceRestletImpl.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
sensorManagerService.startSession((String) request&lt;br /&gt;
	.getAttributes().get(&amp;quot;readerID&amp;quot;), (String) request&lt;br /&gt;
		.getAttributes().get(&amp;quot;sessionID&amp;quot;));&lt;br /&gt;
	response.setEntity(self.generateReturnString(self&lt;br /&gt;
		.generateSuccessMessage()), MediaType.TEXT_XML);&lt;br /&gt;
} catch (Exception e) {&lt;br /&gt;
	response.setEntity(e.getMessage(), MediaType.TEXT_PLAIN);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Command Basic Flow Example==&lt;br /&gt;
#Create a Reader - http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
#Create a Session (on a reader/sensor)  - http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
#Create a Command (on a reader/sensor)) -/createcommand/{commandType}/{properties} &lt;br /&gt;
*Note: some readers do not require create/executing a command as there is only one command hence for convenience is part of the create session/start session  (Thinkify, CSL and Generic adapter (for handhelds/async push calls) are some examples of this)&lt;br /&gt;
#Set Command Properties - http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
#Execute Command (on a given reader/sensor and session) - http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1&lt;br /&gt;
#Start Session (to begin processing reads using associate command/reader/sensor configuration)  - http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
#Save Configuartion (optional -  to save/persist config in case of a server restart) - http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
=Command Example=&lt;br /&gt;
&lt;br /&gt;
Note: localhost can be substituted with IP address/Host name of Rifidi Edge Server. Port can be changed in Rifidi configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==commandtypes command example==&lt;br /&gt;
&lt;br /&gt;
*commandtypes - returns a list of available command types&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commandtypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commandtypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-ADD_ROSPEC-File&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader via an XML file. Any changes made to the reader are determined by the contents of the file. To generate xml code for the commands you want to submit, check out LLRP Commander here: http://www.fosstrak.org/llrp/index.html&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;ThingMagic-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the ThingMagic reader for its tags. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;ThingMagic&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Start&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Alien reader to send back tags using the autonomous mode. To monitor a read zone, configure an Alien autonomous reader to listen. Then submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader to collect tags. By default, this command will cause the LLRP reader to push back tag reads automatically. If you would rather use the Poll mode, you will need to use the LLRP Poll command. To use the LLRP Configure command, submit it for a one-time execution&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the LLRP reader to stop sending back tags. To use, supply the RO Spec that is currently executing on the reader, and submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Thingmagic6-Push&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Sets the Thingmagic to push tags back to the edge server&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Thingmagic6&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the Alien reader for its tag list. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the LLRP reader for its tags. For monitoring of the read zone, first use the LLRP Configure command to configure the LLRP reader for Poll Mode. Then submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Mask-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID With Mask command. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Alien reader to stop sending back tags in autonomous mode. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Read-Block-Data&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back memory bank tags using the Read Block Data commmand. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readertypes command example==&lt;br /&gt;
&lt;br /&gt;
*readertypes - returns a list of available reader/sensor types (such as LLRP, Alien, BarCode etc..)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readertypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readertypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Generic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;A generic Rifidi Adapter.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Opticon&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Adapter for the Opticon Barcode Sensor&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien-Autonomous&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien autonomous adapter is an endpoint to passively receive tag reads from an Alien reader operating in autonomous mode. You cannot send any commands on the alien autonomous session&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid2010&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thingmagic6&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thingmagic 6 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi LLRP adapter supports any reader that exposes a Low Level Reader Protocol (LLRP) interface. LLRP is a standard from EPCglobal.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid3014&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien adapter supports the Alien ALR protocol on the 9900, 9800, 8800 readers.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thinkify50&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thinkify TR50 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;ThingMagic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi ThingMagic adapater supports the ThingMagic RQL protocol on the Mercury 4 and Mercury 5 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader command example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader overriding default readerID command example==&lt;br /&gt;
&lt;br /&gt;
The reader id is important for applications' read zones to appropriate operate, and this id is used to link read zones with sensors. This command enables one to set the readerId versus the system generating one (default behavior).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: To override the default reader id, there must be included the property readerID, in order to assign a specific reader id and override the default. &lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletereader command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletereader/{readerID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid readerID: LLRP&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readers command example==&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readers&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
*readers - returns a list of readers/senors managed by the Edge Server&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readers  &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_2&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get reader properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{readerID} - returns the reader/sensor properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this, to get a reader properties:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;5084&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;192.168.1.48&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;DisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;null&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReaderConfigPath&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;config/SET_READER_CONFIG.llrp&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get command properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{commandID} - returns the command properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ROSpecID&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;AntennaIDs&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Duration&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1000&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;TriggerType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;PUSH&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set reader properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{readerID}/{properties}&amp;quot; - sets the reader/sensor properties&lt;br /&gt;
Note: if there is an existing session for updated reader properties to take effect the session will need to be deleted and recreated so the properties are moved to the session &lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/Alien_1/MaxNumConnectionAttempts=11;DisplayName=Alien_Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_1/IpAddress=127.0.0.15;Port=4567;att1=aa;att2=bbb;attt3=YY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: att1=aa|att2=bbb|attt3=YY&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set command properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{commandID}/{properties}&amp;quot; - sets the command properties&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=7500;cc=4;other=67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: cc=4|other=67&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==commands command example==&lt;br /&gt;
&lt;br /&gt;
*commands - returns a list of available commands&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commands&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commands&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commands&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;&lt;br /&gt;
         &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createcommand example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the command instance is created or the call fails therefore the rcommand instance is not created&lt;br /&gt;
&lt;br /&gt;
*createcomamnd/{commandType}/{properties} - creates a command to be executed on a reader session&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createcommand&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=5000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commandID&amp;gt;Alien_Poll_2&amp;lt;/commandID&amp;gt; Note: Added in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response error (if there is at least one non valid property, the command is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=4000;propX=123;prop2=AB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: propX=123|prop2=AB&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletecommand command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletecommand/{commandID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid commandID: LLRP_Configure&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createsession command example==&lt;br /&gt;
&lt;br /&gt;
*createsession/{readerID} - creates a session (with corresponding reader/sensor configuration) and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sessionID&amp;gt;1&amp;lt;/sessionID&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail -already a session for sensor id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
     java.lang.Exception: Reader Alien_1 already has a session.&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startsession command example==&lt;br /&gt;
&lt;br /&gt;
*startsession/{readerID}/{sessionID} - starts a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;startsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CONNECTING&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to start session, current state is CONNECTING  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readerstatus command example==&lt;br /&gt;
&lt;br /&gt;
*readerstatus/{readerID} - retuns teh status of a given reader/sensor&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readerstatus&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readerstatus/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensor&amp;gt;&lt;br /&gt;
      &amp;lt;serviceID&amp;gt;LLRP_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
      &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
   &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;sessions&amp;gt;&lt;br /&gt;
      &amp;lt;session&amp;gt;&lt;br /&gt;
         &amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;&lt;br /&gt;
         &amp;lt;status&amp;gt;PROCESSING&amp;lt;/status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;executingcommands&amp;gt;&lt;br /&gt;
            &amp;lt;executingcommand&amp;gt;&lt;br /&gt;
               &amp;lt;commandFactory&amp;gt;LLRP-Configure&amp;lt;/commandFactory&amp;gt;&lt;br /&gt;
              &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
              &amp;lt;interval&amp;gt;0&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;/executingcommand&amp;gt;&lt;br /&gt;
        &amp;lt;/executingcommands&amp;gt;&lt;br /&gt;
      &amp;lt;/session&amp;gt;&lt;br /&gt;
   &amp;lt;/sessions&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==stopsession command example==&lt;br /&gt;
&lt;br /&gt;
*stopsession/{readerID}/{sessionID} - stops a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;stopsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/stopsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CREATED&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to stop session, current state is CREATED  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==resetsession command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/resetsession/{readerID}/{sessionID}&lt;br /&gt;
&lt;br /&gt;
Used to stop and start an existing reader session&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/resetsession/LLRP_1/1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
==executecommand command example==&lt;br /&gt;
&lt;br /&gt;
*executecommand/{readerID}/{sessionID}/{commandID}/{repeatInterval} - Executes a command for a given session&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;executecommand&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/0 (for single shot - one time execution)&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletesession command example==&lt;br /&gt;
&lt;br /&gt;
*deletesession/{readerID}/{sessionID} - deletes a session and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;deletesession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletesession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==save command example==&lt;br /&gt;
&lt;br /&gt;
*save - Saves the current state of the Edge Server configuration (such as created readers/sensors, modified properties etc..&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;save&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ping - Used by failover feature==&lt;br /&gt;
*ping -  Returns a date/timestamp&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;ping&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/ping&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp&amp;gt;1414610247969&amp;lt;/timestamp&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==currenttags example (released in Rifidi 3.4)==&lt;br /&gt;
*currenttags/{readerID} -  Returns a list of tags on a given reader&lt;br /&gt;
&lt;br /&gt;
Note: timestamp, reader and RSSI added in 3.5.1&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;currenttags&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/currenttags/LLRP_1 &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;currenttags&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
   &amp;lt;/currenttags&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readermetadata - Used by Web Administration Dashboard for Dynamic Reader &amp;amp; Command Properties/Wizard (released in 3.2)==&lt;br /&gt;
*readermetadata-  Returns reader metadata&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readermetadata&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readermetadata&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;readers&amp;gt;&lt;br /&gt;
  &amp;lt;reader&amp;gt;&lt;br /&gt;
   &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;ReconnectionInterval&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Reconnection Interval&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;500&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;&lt;br /&gt;
     Upon connection failure, the time to wait between two connection attempts (ms)&lt;br /&gt;
     &amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;4.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Port&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Port&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;8090&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Port of the Reader&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;maxvalue&amp;gt;65535&amp;lt;/maxvalue&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;1.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thinkify RCS Command - Used for one time configuration of a Thinkify USB reader (Deprecated in 3.5.1)==&lt;br /&gt;
*rcs/{Thinkify Reader ID}/{sessionid}&lt;br /&gt;
&lt;br /&gt;
request (via HTTP Post/Get) &amp;quot;rcs&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/rcs/ThinkifyUSB_1/1&lt;br /&gt;
&lt;br /&gt;
==startbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/startbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==stopbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/stopbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to install a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==installbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/installbundle&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to start a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/installbundle&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==uninstallbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/uninstallbundle/{bundleID}&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to uninstall a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/uninstallbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==ss OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/ss&lt;br /&gt;
&lt;br /&gt;
Used to list the OSGI bundles&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/ss&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.osgi&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.weaving.hook&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;RESOLVED&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.simpleconfigurator&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;com.sun.mail.javax.mail&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set GPO Command Example (released in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*/setgpo/{readerID}/{sessionID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to set gpo&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/setgpo/LLRP_1/1/1,2,3&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flash GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//flashgpo/{readerID}/{sessionID}/{ports}/{duration in seconds}&lt;br /&gt;
&lt;br /&gt;
Used to turn gpo on for a specified duration such as Flashing a light on for 4 seconds then turn it off again&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/flashgpo/LLRP_1/1/1,2,3/4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/User%27s_Guide</id>
		<title>User's Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/User%27s_Guide"/>
				<updated>2020-09-17T11:58:16Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_1.2.pdf User's Guide for 1.2.0] [[Version 1.2|Release Notes v1.2]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_1.3.pdf User's Guide for 1.3.0] [[Version 1.3|Release Notes v1.3]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_2.0.pdf User's Guide for 2.0.0] [[Version 2.0|Release Notes v2.0]]&lt;br /&gt;
*[http://wiki.rifidi.net/images/6/61/Rifidi_Edge_Server_User_2.1.pdf User's Guide for 2.1.0] [[Version 2.1|Release Notes v2.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_2.2.pdf User's Guide for 2.2.0] [[Version 2.2|Release Notes v2.2]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.0.pdf User's Guide for 3.0.0] [[Version 3.0|Release Notes v3.0]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.0.pdf User's Guide for 3.0.1] [[Version 3.0.1|Release Notes v3.0.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.1.pdf User's Guide for 3.1.0] [[Version 3.1|Release Notes v3.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.1.pdf User's Guide for 3.1.1] [[Version 3.1.1|Release Notes v3.1.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.2.pdf User's Guide for 3.2.0] [[Version 3.2|Release Notes v3.2]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.3.pdf User's Guide for 3.3.0] [[Version 3.3|Release Notes v3.3]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.4.pdf User's Guide for 3.4.0] [[Version 3.4|Release Notes v3.4]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.5.pdf User's Guide for 3.5.0] [[Version 3.5|Release Notes v3.5]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.5.pdf User's Guide for 3.5.1] [[Version 3.5.1|Release Notes v3.5.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.6.pdf User's Guide for 3.6.0] [[Version 3.6|Release Notes v3.6]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.6.pdf User's Guide for 3.6.1] [[Version 3.6.1|Release Notes v3.6.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.7.pdf User's Guide for 3.7.0] [[Version 3.7.0|Release Notes v3.7]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.8.pdf User's Guide for 3.8.0] [[Version 3.8.0|Release Notes v3.8]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.8.1.pdf User's Guide for 3.8.1] [[Version 3.8.1|Release Notes v3.8.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_Quick_Start_Guide_3.8.1.pdf Quick Start Guide Rifidi Edge - Easy as 1-2-3 Setup Configure Verify]&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Developer%27s_Guide</id>
		<title>Developer's Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Developer%27s_Guide"/>
				<updated>2020-09-17T11:57:36Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_Developer_1.2.pdf Developer's Guide for 1.2.0]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_Developer_1.3.pdf Developer's Guide for 1.3.0]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_Developer_2.0.pdf Developer's Guide for 2.0.0]&lt;br /&gt;
*[http://wiki.rifidi.net/images/5/51/Rifidi_Edge_Server_Developer_2.1.pdf Developer's Guide for 2.1.0]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_Developer_2.2.pdf Developer's Guide for 2.2.0]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_Developer_3.0.pdf Developer's Guide for 3.0.0]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_Developer_3.0.1.pdf Developer's Guide for 3.0.1]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_Developer_3.1.pdf Developer's Guide for 3.1.0]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_Developer_3.2.pdf Developer's Guide for 3.2.0]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_Developer_3.3.pdf Developer's Guide for 3.3.0]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_Developer_3.4.pdf Developer's Guide for 3.4.0]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_Developer_3.5.pdf Developer's Guide for 3.5.0]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_Developer_3.6.pdf Developer's Guide for 3.6.0]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_Developer_3.7.pdf Developer's Guide for 3.7.0]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_Developer_3.8.pdf Developer's Guide for 3.8.0]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_Developer_3.8.1.pdf Developer's Guide for 3.8.1]&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/User%27s_Guide</id>
		<title>User's Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/User%27s_Guide"/>
				<updated>2020-09-17T11:56:51Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_1.2.pdf User's Guide for 1.2.0] [[Version 1.2|Release Notes v1.2]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_1.3.pdf User's Guide for 1.3.0] [[Version 1.3|Release Notes v1.3]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_2.0.pdf User's Guide for 2.0.0] [[Version 2.0|Release Notes v2.0]]&lt;br /&gt;
*[http://wiki.rifidi.net/images/6/61/Rifidi_Edge_Server_User_2.1.pdf User's Guide for 2.1.0] [[Version 2.1|Release Notes v2.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_2.2.pdf User's Guide for 2.2.0] [[Version 2.2|Release Notes v2.2]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.0.pdf User's Guide for 3.0.0] [[Version 3.0|Release Notes v3.0]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.0.pdf User's Guide for 3.0.1] [[Version 3.0.1|Release Notes v3.0.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.1.pdf User's Guide for 3.1.0] [[Version 3.1|Release Notes v3.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.1.pdf User's Guide for 3.1.1] [[Version 3.1.1|Release Notes v3.1.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.2.pdf User's Guide for 3.2.0] [[Version 3.2|Release Notes v3.2]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.3.pdf User's Guide for 3.3.0] [[Version 3.3|Release Notes v3.3]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.4.pdf User's Guide for 3.4.0] [[Version 3.4|Release Notes v3.4]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.5.pdf User's Guide for 3.5.0] [[Version 3.5|Release Notes v3.5]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.5.pdf User's Guide for 3.5.1] [[Version 3.5.1|Release Notes v3.5.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.6.pdf User's Guide for 3.6.0] [[Version 3.6|Release Notes v3.6]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.6.pdf User's Guide for 3.6.1] [[Version 3.6.1|Release Notes v3.6.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.7.pdf User's Guide for 3.7.0] [[Version 3.7.0|Release Notes v3.7]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.8.pdf User's Guide for 3.8.0] [[Version 3.8.0|Release Notes v3.8]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.8.1.pdf User's Guide for 3.8.1] [[Version 3.8.1|Release Notes v3.8.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_Quick_Start_Guide.pdf Quick Start Guide Rifidi Edge - Easy as 1-2-3 Setup Configure Verify]&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/User%27s_Guide</id>
		<title>User's Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/User%27s_Guide"/>
				<updated>2020-09-17T11:56:34Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_1.2.pdf User's Guide for 1.2.0] [[Version 1.2|Release Notes v1.2]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_1.3.pdf User's Guide for 1.3.0] [[Version 1.3|Release Notes v1.3]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_2.0.pdf User's Guide for 2.0.0] [[Version 2.0|Release Notes v2.0]]&lt;br /&gt;
*[http://wiki.rifidi.net/images/6/61/Rifidi_Edge_Server_User_2.1.pdf User's Guide for 2.1.0] [[Version 2.1|Release Notes v2.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_2.2.pdf User's Guide for 2.2.0] [[Version 2.2|Release Notes v2.2]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.0.pdf User's Guide for 3.0.0] [[Version 3.0|Release Notes v3.0]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.0.pdf User's Guide for 3.0.1] [[Version 3.0.1|Release Notes v3.0.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.1.pdf User's Guide for 3.1.0] [[Version 3.1|Release Notes v3.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.1.pdf User's Guide for 3.1.1] [[Version 3.1.1|Release Notes v3.1.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.2.pdf User's Guide for 3.2.0] [[Version 3.2|Release Notes v3.2]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.3.pdf User's Guide for 3.3.0] [[Version 3.3|Release Notes v3.3]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.4.pdf User's Guide for 3.4.0] [[Version 3.4|Release Notes v3.4]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.5.pdf User's Guide for 3.5.0] [[Version 3.5|Release Notes v3.5]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.5.pdf User's Guide for 3.5.1] [[Version 3.5.1|Release Notes v3.5.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.6.pdf User's Guide for 3.6.0] [[Version 3.6|Release Notes v3.6]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.6.pdf User's Guide for 3.6.1] [[Version 3.6.1|Release Notes v3.6.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.7.pdf User's Guide for 3.7.0] [[Version 3.7.0|Release Notes v3.7]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.8.pdf User's Guide for 3.8.0] [[Version 3.8.0|Release Notes v3.8]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.8.1.pdf User's Guide for 3.8.0] [[Version 3.8.1|Release Notes v3.8.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_Quick_Start_Guide.pdf Quick Start Guide Rifidi Edge - Easy as 1-2-3 Setup Configure Verify]&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/User%27s_Guide</id>
		<title>User's Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/User%27s_Guide"/>
				<updated>2020-09-17T11:56:20Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_1.2.pdf User's Guide for 1.2.0] [[Version 1.2|Release Notes v1.2]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_1.3.pdf User's Guide for 1.3.0] [[Version 1.3|Release Notes v1.3]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_2.0.pdf User's Guide for 2.0.0] [[Version 2.0|Release Notes v2.0]]&lt;br /&gt;
*[http://wiki.rifidi.net/images/6/61/Rifidi_Edge_Server_User_2.1.pdf User's Guide for 2.1.0] [[Version 2.1|Release Notes v2.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_2.2.pdf User's Guide for 2.2.0] [[Version 2.2|Release Notes v2.2]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.0.pdf User's Guide for 3.0.0] [[Version 3.0|Release Notes v3.0]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.0.pdf User's Guide for 3.0.1] [[Version 3.0.1|Release Notes v3.0.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.1.pdf User's Guide for 3.1.0] [[Version 3.1|Release Notes v3.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.1.pdf User's Guide for 3.1.1] [[Version 3.1.1|Release Notes v3.1.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.2.pdf User's Guide for 3.2.0] [[Version 3.2|Release Notes v3.2]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.3.pdf User's Guide for 3.3.0] [[Version 3.3|Release Notes v3.3]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.4.pdf User's Guide for 3.4.0] [[Version 3.4|Release Notes v3.4]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.5.pdf User's Guide for 3.5.0] [[Version 3.5|Release Notes v3.5]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.5.pdf User's Guide for 3.5.1] [[Version 3.5.1|Release Notes v3.5.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.6.pdf User's Guide for 3.6.0] [[Version 3.6|Release Notes v3.6]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.6.pdf User's Guide for 3.6.1] [[Version 3.6.1|Release Notes v3.6.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.7.pdf User's Guide for 3.7.0] [[Version 3.7.0|Release Notes v3.7]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.8.pdf User's Guide for 3.8.0] [[Version 3.8.0|Release Notes v3.8]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_User_3.8.1.pdf User's Guide for 3.8.0] [[Version 3.8.0|Release Notes v3.8.1]]&lt;br /&gt;
*[http://www.transcends.co/www/docs/Rifidi_Edge_Server_Quick_Start_Guide.pdf Quick Start Guide Rifidi Edge - Easy as 1-2-3 Setup Configure Verify]&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Main_Page"/>
				<updated>2020-09-17T11:55:50Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;h1&amp;gt;Welcome&lt;br /&gt;
        to the &amp;lt;strong&amp;gt;RIFIDI Community Wiki&amp;lt;/strong&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;RIFIDI is an open source RFID/Sensor Middleware Platform sponsored by [http://www.transcends.co Transcends].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;p&amp;gt;Connecting the Internet of Things with People.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;p&amp;gt;Please find out how to [[Documentation Guidelines|contribute to the Wiki]] before you begin&lt;br /&gt;
        editing. &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Remove this tr tag to remove the announcement --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;tr&lt;br /&gt;
    style=&amp;quot;text-align:center;margin-left:auto;margin-right:auto&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td colspan=&amp;quot;2&amp;quot; style=&amp;quot;background-color:lightpink&amp;quot;&amp;gt;&amp;lt;h4&amp;gt;Announcing RIFIDI Edge Server 3.8.1 Coming Soon - September 2020 [[Version 3.8.1]]!!&amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;p&amp;gt;Current Version 3.8.1 release notes [[Version 3.8.1]].  Prior version 3.8.0 release notes [[Version 3.8.0]]&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[http://sourceforge.net/projects/rifidi/files/| Download latest version here]] &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Edge Server&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Getting Started|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[User's Guide | User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Application Level Events (ALE) User's Guide]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Web Administration Dashboard|Enterprise Rifidi Management Dashboard (replacement for Workbench) - User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Console|Rifidi Edge Admin Console via Command-Line]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Configuration|Edge Configuration (Global Startup, Run-time and Custom Variables/Settings)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Monitoring | Edge Monitoring (via JMX, REST &amp;amp; MQTT Event Notifications)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Management | Edge Sensor Management (via REST)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge LLRP Reader Management | Edge LLRP Reader Management (via REST)]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi App API | Rifidi Application Management  - Application and Readzone Properties (via REST) ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[LLRP Tag Encoding | LLRP Tag Encoding Options (via REST) ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Messaging | Edge Messaging (via MQTT) ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Performance Tuning Tips | Performance Tuning Tips]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Fail-over Configuration (Primary/Secondary)]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Sensor Plugins | Sensor Plugin User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[How to Upgrade Rifidi]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Installing an Application | Installing an Rifidi Application]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi Edge Licensing - GPL v2]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://transcends.co/#products Learn about Rifidi Edge Commercial License/Products/Support]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer&lt;br /&gt;
                Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer's Guide | Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Application Level Events (ALE) User's Guide]] &amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer's Quick Start Reference| Rifidi App Developer's Quick Start Reference]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Development Environment|Setting up a Development Environment]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Jumpstarts | Rifidi App Development Jumpstarts]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Best Practice for Designing a Rifidi APP | Best Practice for Designing a Rifidi APP ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Performance Tuning Tips | Performance Tuning Tips]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Northwind Example Application - Advanced Development Topic]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Sensor Plugin API]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server Architecture|Architecture]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Edge Server HOWTOs | HOWTOs]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Web Administration Dashboard - Developer's Guide|Enterprise Rifidi Management Dashboard - Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &lt;br /&gt;
                   &amp;lt;li&amp;gt;[[How to Package Rifidi Edge| How to Package Rifidi Edge]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Enterprise Rifidi Management Dashboard - as of Rifidi Edge 3.3&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                   &amp;lt;li&amp;gt;[[Web Administration Dashboard - Developer's Guide|Enterprise Rifidi Management Dashboard - Developer's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Web Administration Dashboard|Enterprise Rifidi Management Dashboard - User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Workbench (Note: To be depreciated in Rifiid Edge 4.0 in place of Enterprise Web Rifidi Management Dashboard&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Workbench User's Guide|Getting Started]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Toolkit&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;User Documentation&amp;lt;/strong&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Prototyper User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Tag Streamer User's Guide]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Release Features]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[:Category:userDoc|browse more user documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Developer Documentation &amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Emulator documentation summary | Emulator Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[tag streamer documentation summary | Tag Streamer Documentation]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Rifidi:Source_Code|How to run Emulator, Tagstream, Prototyper from Source]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;Virtual [[Reader Guides]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[LLRPHelloWorld| LLRP Hello World Test Client]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Development Process| How to Develop Rifidi]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt; [[:Category:developerDoc|browse more developer documents...]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;table border=&amp;quot;0&amp;quot; style=&amp;quot;width:80%&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Rifidi Suite&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;!--&amp;lt;li&amp;gt;[[Asset Tracking: An end-to end solution with the Rifidi Platform]]&amp;lt;/li&amp;gt;--&amp;gt;&lt;br /&gt;
                   &amp;lt;!--&amp;lt;li&amp;gt;[[Rifidi roadmap|Rifidi Roadmap]]&amp;lt;/li&amp;gt;--&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.transcends.co/ About Rifidi]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;General Information&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[Developer FAQ]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[[How to Contribute to the Rifidi project]]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;tr&amp;gt;&lt;br /&gt;
              &amp;lt;td style=&amp;quot;background-color:rgb(240, 247, 255)&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot; &amp;gt;&amp;lt;strong&amp;gt;Useful Links&amp;lt;/strong&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;hr&amp;gt;&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Rifidi Project&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://forums.rifidi.net Rifidi Forums]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;!--&amp;lt;li&amp;gt;[https://trac.rifidi.org/rep-edge-trac/ Rifidi Bug Tracker]--&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://sourceforge.net/projects/rifidi/ Rifidi's Sourceforge Page]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://github.com/mattrifidi/emulator Rifidi Emulator/Prototyper/Tagstreamer Source (Git Repository)]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[https://github.com/mattrifidi/rifidi Rifidi Edge/Workbench Source (Git Repository)]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.transcends.co Transcends' Website]&amp;lt;/li&amp;gt;&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Other Projects&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
                &amp;lt;ul&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springframework.net/license.html Spring -Application Framework - Apache V2 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://esper.codehaus.org/about/esper/esper.html Esper is a trademark of EsperTech Inc -Complex Event Engine Framework - GPLv2 licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://help.eclipse.org/juno/index.jsp Eclipse - SDK/IDE Framework]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://eclipse.org/equinox/ OSGI - Equinox Container - EPL V1 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://springsource.com/repository/app/ Spring Enterprise Bundle Repository - Apache v2 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://restlet.com/ Restlet - Restful Services Implementation used for [[Edge_Management | Rifidi Edge Management]] - Apache 2.0 Licensing ]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://www.jolokia.org/ Jolokia - Restful JMX Monitoring Implementation used for [[Edge_Monitoring | Rifidi Edge Monitoring]]  -Apache v2 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
                  &amp;lt;li&amp;gt;[http://mqtt.org/wiki/doku.php/brokers#moquette Moquette - Java based MQTT Broker used for IoT Messaging - Creative Commons Attribution 4.0 International Public License]&amp;lt;/li&amp;gt;&lt;br /&gt;
                 &amp;lt;li&amp;gt;[http://www.llrp.org/ LLRP Tool Kit - Apache 2.0 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;[http://activemq.apache.org/maven/5.8.0/license.html ActiveMQ - Messaging- Apache 2.0 Licensing]&amp;lt;/li&amp;gt;&lt;br /&gt;
              &amp;lt;li&amp;gt;[https://github.com/rxtx/rxtx RXTX  Serial Communication - LGPL v 2.1]&amp;lt;/li&amp;gt;&lt;br /&gt;
              &amp;lt;li&amp;gt;[http://www.mysql.com/about/legal/licensing/foss-exception/  MYSql Client Libraries   - Oracle’s Free and Open Source Software (&amp;quot;FOSS&amp;quot;) License Exception]&amp;lt;/li&amp;gt;&lt;br /&gt;
              &amp;lt;li&amp;gt;[http://www.postgresql.org/about/licence/ PostgreSQL - A liberal Open Source license]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;/ul&amp;gt;&lt;br /&gt;
              &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Management</id>
		<title>Edge Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Management"/>
				<updated>2020-03-06T14:26:05Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* Set GPO Command Example (coming soon in Rifidi 3.8.1) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Starting in 3.1 Edge Management is now accessible though Restful Services (leveraging [http://restlet.com/ Restlet plugin]. Restlet allows all Rifidi Edge Management operations available through workbench to be accessible via Restful Services.Prior to Rifidi 3.1 Edge Management is available through RMI (currently used by Rifidi Workbench if looking for code examples). &lt;br /&gt;
&lt;br /&gt;
The types of operations available through Restful Services include:&lt;br /&gt;
*All &amp;quot;session&amp;quot; commands (for stopping and starting reader/sensor sessions)&lt;br /&gt;
*ExecuteCommand and deleteCommand  (for commands supported by a sensor such as a tag read)&lt;br /&gt;
*Readers (for getting a list of readers/sensors available on Edge Server instance)&lt;br /&gt;
*Commands (for issuing command line operations such as saving the Edge Server Configuration currently in memory)&lt;br /&gt;
*Get and Set Properties (for setting and getting sensor properties such as Setting the LLRP Reader Configuration dynamically)&lt;br /&gt;
*Create Reader (for creating a new reader connection)&lt;br /&gt;
*Managing Rifidi Applications (for stopping/starting, listing and deploying Rifidi Apps)&lt;br /&gt;
&lt;br /&gt;
Additional features can be found on [http://restlet.com/ Restlet User Guide ]&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
In rifidiserver.ini  - A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.port=8111&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.enabled=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source for Restful Rifidi Management Commands - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/&lt;br /&gt;
&lt;br /&gt;
=Configuration (HTTP over SSL) - Available as of version 3.1.1= &lt;br /&gt;
&lt;br /&gt;
A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SSL Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.port=8183&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.ssl.enabled=true&lt;br /&gt;
#Keystore Path&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepath=\config\serverX.jks&lt;br /&gt;
#Key store password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepassword=password&lt;br /&gt;
#Key Password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keypassword=password&lt;br /&gt;
#Key store Type&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystoretype=JKS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Note: Link to how to configure/setup certificates with REST - http://restlet.com/learn/guide/2.3/core/security/https&lt;br /&gt;
==REST HTTP over SSL Example Application==&lt;br /&gt;
link to https java client example - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge.rest/src/org/rifidi/edge/rest/test/HttpsTestClient.java&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user can add this jvm parameter to see detailed messages if getting any &lt;br /&gt;
trouble when running this example:&lt;br /&gt;
-Djavax.net.debug=all&lt;br /&gt;
&lt;br /&gt;
In order t0 successful get the https response from stand alone java &lt;br /&gt;
example, user must import the certificate into JVM:&lt;br /&gt;
&lt;br /&gt;
open command windows as administrator and execute keytool -import, like:&lt;br /&gt;
&lt;br /&gt;
keytool -import -alias localhost -keystore &amp;quot;C:\Program Files &lt;br /&gt;
(x86)\Java\jdk1.6.0_45\jre\lib\security\cacerts&amp;quot; -file &lt;br /&gt;
&amp;quot;D:\tmp\cert\localhost.cer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if requested, default password is: changeit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Logging= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1. Add an entry to the rifidiserver.ini (if using windows; when using linux you add this JVM argument in the rifidi-server executable):&lt;br /&gt;
-Djava.util.logging.config.file=d:/myLogging.properties&lt;br /&gt;
&lt;br /&gt;
*2. Create logging properties file, for example like the below myLogging.properties&lt;br /&gt;
The entry in that file that determines where the log file will show up is the following: java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myLogging.properties&lt;br /&gt;
# ================================&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ==   Web Logging Properties   ==&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # ------------------&lt;br /&gt;
    # General properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # This defines a whitespace separated list of class names for handler classes to load and register as handlers on&lt;br /&gt;
    # the root Logger (the Logger named &amp;quot;&amp;quot;). Each class name must be for a Handler class which has a default constructor.&lt;br /&gt;
    # Note that these Handlers may be created lazily, when they are first used.&lt;br /&gt;
    handlers=java.util.logging.FileHandler&lt;br /&gt;
	# ------------------&lt;br /&gt;
    # Loggers properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
    .level=WARNING&lt;br /&gt;
    org.mortbay.level=WARNING&lt;br /&gt;
    org.restlet.level=INFO&lt;br /&gt;
    com.noelios.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    com.noelios.web.WebComponent.www.level=INFO&lt;br /&gt;
    com.noelios.web.WebComponent.www.handlers=com.noelios.restlet.util.AccessLogFileHandler&lt;br /&gt;
    com.noelios.web.WebComponent.www.useParentHandlers=false&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # ConsoleHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.INFO).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.formatter=&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.encoding=&lt;br /&gt;
	&lt;br /&gt;
	# ------------------------------&lt;br /&gt;
    # General FileHandler properties&lt;br /&gt;
    # ------------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # java.util.logging.FileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.FileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.FileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    java.util.logging.FileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    java.util.logging.FileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot;&lt;br /&gt;
    java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # java.util.logging.FileHandler.append=&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # LogFileHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.formatter=com.noelios.restlet.util.AccessLogFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot; .pattern=/home/prod/data/log/WebComponent-www-%u-%g.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # org.restlet.util.AccessLogFileHandler.append=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Tuning/Confguration (Jetty) as of Rifidi 3.4= &lt;br /&gt;
&lt;br /&gt;
As of Rifidi 3.4 Jetty was made the default HTTP container for Restlet to allow for extended performance and configuration of the REST interface.&lt;br /&gt;
&lt;br /&gt;
The parameters can for configured in the Rifidi Server (ini) configuration&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.minThreads=8	Thread pool minimum threads&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.maxThreads=200	Thread pool max threads&lt;br /&gt;
&lt;br /&gt;
Full list of Jetty parameters using the same naming convention can be found here  - http://restlet.com/technical-resources/restlet-framework/javadocs/snapshot/jse/ext/org/restlet/ext/jetty/JettyServerHelper.html&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
==Command Code Snippet - start session - example how to use Rifidi API in a Java App==&lt;br /&gt;
All Rifidi Management API Command Logic here - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/SensorManagerServiceRestletImpl.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
sensorManagerService.startSession((String) request&lt;br /&gt;
	.getAttributes().get(&amp;quot;readerID&amp;quot;), (String) request&lt;br /&gt;
		.getAttributes().get(&amp;quot;sessionID&amp;quot;));&lt;br /&gt;
	response.setEntity(self.generateReturnString(self&lt;br /&gt;
		.generateSuccessMessage()), MediaType.TEXT_XML);&lt;br /&gt;
} catch (Exception e) {&lt;br /&gt;
	response.setEntity(e.getMessage(), MediaType.TEXT_PLAIN);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Command Basic Flow Example==&lt;br /&gt;
#Create a Reader - http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
#Create a Session (on a reader/sensor)  - http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
#Create a Command (on a reader/sensor)) -/createcommand/{commandType}/{properties} &lt;br /&gt;
*Note: some readers do not require create/executing a command as there is only one command hence for convenience is part of the create session/start session  (Thinkify, CSL and Generic adapter (for handhelds/async push calls) are some examples of this)&lt;br /&gt;
#Set Command Properties - http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
#Execute Command (on a given reader/sensor and session) - http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1&lt;br /&gt;
#Start Session (to begin processing reads using associate command/reader/sensor configuration)  - http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
#Save Configuartion (optional -  to save/persist config in case of a server restart) - http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
=Command Example=&lt;br /&gt;
&lt;br /&gt;
Note: localhost can be substituted with IP address/Host name of Rifidi Edge Server. Port can be changed in Rifidi configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==commandtypes command example==&lt;br /&gt;
&lt;br /&gt;
*commandtypes - returns a list of available command types&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commandtypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commandtypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-ADD_ROSPEC-File&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader via an XML file. Any changes made to the reader are determined by the contents of the file. To generate xml code for the commands you want to submit, check out LLRP Commander here: http://www.fosstrak.org/llrp/index.html&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;ThingMagic-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the ThingMagic reader for its tags. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;ThingMagic&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Start&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Alien reader to send back tags using the autonomous mode. To monitor a read zone, configure an Alien autonomous reader to listen. Then submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader to collect tags. By default, this command will cause the LLRP reader to push back tag reads automatically. If you would rather use the Poll mode, you will need to use the LLRP Poll command. To use the LLRP Configure command, submit it for a one-time execution&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the LLRP reader to stop sending back tags. To use, supply the RO Spec that is currently executing on the reader, and submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Thingmagic6-Push&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Sets the Thingmagic to push tags back to the edge server&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Thingmagic6&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the Alien reader for its tag list. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the LLRP reader for its tags. For monitoring of the read zone, first use the LLRP Configure command to configure the LLRP reader for Poll Mode. Then submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Mask-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID With Mask command. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Alien reader to stop sending back tags in autonomous mode. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Read-Block-Data&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back memory bank tags using the Read Block Data commmand. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readertypes command example==&lt;br /&gt;
&lt;br /&gt;
*readertypes - returns a list of available reader/sensor types (such as LLRP, Alien, BarCode etc..)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readertypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readertypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Generic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;A generic Rifidi Adapter.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Opticon&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Adapter for the Opticon Barcode Sensor&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien-Autonomous&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien autonomous adapter is an endpoint to passively receive tag reads from an Alien reader operating in autonomous mode. You cannot send any commands on the alien autonomous session&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid2010&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thingmagic6&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thingmagic 6 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi LLRP adapter supports any reader that exposes a Low Level Reader Protocol (LLRP) interface. LLRP is a standard from EPCglobal.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid3014&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien adapter supports the Alien ALR protocol on the 9900, 9800, 8800 readers.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thinkify50&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thinkify TR50 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;ThingMagic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi ThingMagic adapater supports the ThingMagic RQL protocol on the Mercury 4 and Mercury 5 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader command example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader overriding default readerID command example==&lt;br /&gt;
&lt;br /&gt;
The reader id is important for applications' read zones to appropriate operate, and this id is used to link read zones with sensors. This command enables one to set the readerId versus the system generating one (default behavior).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: To override the default reader id, there must be included the property readerID, in order to assign a specific reader id and override the default. &lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletereader command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletereader/{readerID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid readerID: LLRP&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readers command example==&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readers&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
*readers - returns a list of readers/senors managed by the Edge Server&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readers  &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_2&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get reader properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{readerID} - returns the reader/sensor properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this, to get a reader properties:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;5084&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;192.168.1.48&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;DisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;null&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReaderConfigPath&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;config/SET_READER_CONFIG.llrp&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get command properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{commandID} - returns the command properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ROSpecID&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;AntennaIDs&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Duration&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1000&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;TriggerType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;PUSH&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set reader properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{readerID}/{properties}&amp;quot; - sets the reader/sensor properties&lt;br /&gt;
Note: if there is an existing session for updated reader properties to take effect the session will need to be deleted and recreated so the properties are moved to the session &lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/Alien_1/MaxNumConnectionAttempts=11;DisplayName=Alien_Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_1/IpAddress=127.0.0.15;Port=4567;att1=aa;att2=bbb;attt3=YY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: att1=aa|att2=bbb|attt3=YY&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set command properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{commandID}/{properties}&amp;quot; - sets the command properties&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=7500;cc=4;other=67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: cc=4|other=67&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==commands command example==&lt;br /&gt;
&lt;br /&gt;
*commands - returns a list of available commands&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commands&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commands&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commands&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;&lt;br /&gt;
         &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createcommand example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the command instance is created or the call fails therefore the rcommand instance is not created&lt;br /&gt;
&lt;br /&gt;
*createcomamnd/{commandType}/{properties} - creates a command to be executed on a reader session&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createcommand&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=5000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commandID&amp;gt;Alien_Poll_2&amp;lt;/commandID&amp;gt; Note: Added in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response error (if there is at least one non valid property, the command is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=4000;propX=123;prop2=AB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: propX=123|prop2=AB&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletecommand command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletecommand/{commandID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid commandID: LLRP_Configure&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createsession command example==&lt;br /&gt;
&lt;br /&gt;
*createsession/{readerID} - creates a session (with corresponding reader/sensor configuration) and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sessionID&amp;gt;1&amp;lt;/sessionID&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail -already a session for sensor id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
     java.lang.Exception: Reader Alien_1 already has a session.&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startsession command example==&lt;br /&gt;
&lt;br /&gt;
*startsession/{readerID}/{sessionID} - starts a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;startsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CONNECTING&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to start session, current state is CONNECTING  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readerstatus command example==&lt;br /&gt;
&lt;br /&gt;
*readerstatus/{readerID} - retuns teh status of a given reader/sensor&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readerstatus&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readerstatus/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensor&amp;gt;&lt;br /&gt;
      &amp;lt;serviceID&amp;gt;LLRP_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
      &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
   &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;sessions&amp;gt;&lt;br /&gt;
      &amp;lt;session&amp;gt;&lt;br /&gt;
         &amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;&lt;br /&gt;
         &amp;lt;status&amp;gt;PROCESSING&amp;lt;/status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;executingcommands&amp;gt;&lt;br /&gt;
            &amp;lt;executingcommand&amp;gt;&lt;br /&gt;
               &amp;lt;commandFactory&amp;gt;LLRP-Configure&amp;lt;/commandFactory&amp;gt;&lt;br /&gt;
              &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
              &amp;lt;interval&amp;gt;0&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;/executingcommand&amp;gt;&lt;br /&gt;
        &amp;lt;/executingcommands&amp;gt;&lt;br /&gt;
      &amp;lt;/session&amp;gt;&lt;br /&gt;
   &amp;lt;/sessions&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==stopsession command example==&lt;br /&gt;
&lt;br /&gt;
*stopsession/{readerID}/{sessionID} - stops a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;stopsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/stopsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CREATED&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to stop session, current state is CREATED  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==resetsession command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/resetsession/{readerID}/{sessionID}&lt;br /&gt;
&lt;br /&gt;
Used to stop and start an existing reader session&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/resetsession/LLRP_1/1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
==executecommand command example==&lt;br /&gt;
&lt;br /&gt;
*executecommand/{readerID}/{sessionID}/{commandID}/{repeatInterval} - Executes a command for a given session&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;executecommand&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/0 (for single shot - one time execution)&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletesession command example==&lt;br /&gt;
&lt;br /&gt;
*deletesession/{readerID}/{sessionID} - deletes a session and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;deletesession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletesession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==save command example==&lt;br /&gt;
&lt;br /&gt;
*save - Saves the current state of the Edge Server configuration (such as created readers/sensors, modified properties etc..&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;save&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ping - Used by failover feature==&lt;br /&gt;
*ping -  Returns a date/timestamp&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;ping&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/ping&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp&amp;gt;1414610247969&amp;lt;/timestamp&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==currenttags example (released in Rifidi 3.4)==&lt;br /&gt;
*currenttags/{readerID} -  Returns a list of tags on a given reader&lt;br /&gt;
&lt;br /&gt;
Note: timestamp, reader and RSSI added in 3.5.1&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;currenttags&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/currenttags/LLRP_1 &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;currenttags&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
   &amp;lt;/currenttags&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readermetadata - Used by Web Administration Dashboard for Dynamic Reader &amp;amp; Command Properties/Wizard (released in 3.2)==&lt;br /&gt;
*readermetadata-  Returns reader metadata&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readermetadata&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readermetadata&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;readers&amp;gt;&lt;br /&gt;
  &amp;lt;reader&amp;gt;&lt;br /&gt;
   &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;ReconnectionInterval&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Reconnection Interval&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;500&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;&lt;br /&gt;
     Upon connection failure, the time to wait between two connection attempts (ms)&lt;br /&gt;
     &amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;4.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Port&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Port&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;8090&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Port of the Reader&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;maxvalue&amp;gt;65535&amp;lt;/maxvalue&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;1.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thinkify RCS Command - Used for one time configuration of a Thinkify USB reader (Deprecated in 3.5.1)==&lt;br /&gt;
*rcs/{Thinkify Reader ID}/{sessionid}&lt;br /&gt;
&lt;br /&gt;
request (via HTTP Post/Get) &amp;quot;rcs&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/rcs/ThinkifyUSB_1/1&lt;br /&gt;
&lt;br /&gt;
==startbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/startbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==stopbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/stopbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to install a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==installbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/installbundle&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to start a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/installbundle&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==uninstallbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/uninstallbundle/{bundleID}&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to uninstall a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/uninstallbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==ss OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/ss&lt;br /&gt;
&lt;br /&gt;
Used to list the OSGI bundles&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/ss&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.osgi&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.weaving.hook&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;RESOLVED&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.simpleconfigurator&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;com.sun.mail.javax.mail&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*/setgpo/{readerID}/{sessionID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to set gpo&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/setgpo/LLRP_1/1/1,2,3&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flash GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//flashgpo/{readerID}/{sessionID}/{ports}/{duration in seconds}&lt;br /&gt;
&lt;br /&gt;
Used to turn gpo on for a specified duration such as Flashing a light on for 4 seconds then turn it off again&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/flashgpo/LLRP_1/1/1,2,3/4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Management</id>
		<title>Edge Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Management"/>
				<updated>2020-03-06T14:25:42Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* Flash GPO Command Example (coming soon in Rifidi 3.8.1) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Starting in 3.1 Edge Management is now accessible though Restful Services (leveraging [http://restlet.com/ Restlet plugin]. Restlet allows all Rifidi Edge Management operations available through workbench to be accessible via Restful Services.Prior to Rifidi 3.1 Edge Management is available through RMI (currently used by Rifidi Workbench if looking for code examples). &lt;br /&gt;
&lt;br /&gt;
The types of operations available through Restful Services include:&lt;br /&gt;
*All &amp;quot;session&amp;quot; commands (for stopping and starting reader/sensor sessions)&lt;br /&gt;
*ExecuteCommand and deleteCommand  (for commands supported by a sensor such as a tag read)&lt;br /&gt;
*Readers (for getting a list of readers/sensors available on Edge Server instance)&lt;br /&gt;
*Commands (for issuing command line operations such as saving the Edge Server Configuration currently in memory)&lt;br /&gt;
*Get and Set Properties (for setting and getting sensor properties such as Setting the LLRP Reader Configuration dynamically)&lt;br /&gt;
*Create Reader (for creating a new reader connection)&lt;br /&gt;
*Managing Rifidi Applications (for stopping/starting, listing and deploying Rifidi Apps)&lt;br /&gt;
&lt;br /&gt;
Additional features can be found on [http://restlet.com/ Restlet User Guide ]&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
In rifidiserver.ini  - A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.port=8111&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.enabled=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source for Restful Rifidi Management Commands - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/&lt;br /&gt;
&lt;br /&gt;
=Configuration (HTTP over SSL) - Available as of version 3.1.1= &lt;br /&gt;
&lt;br /&gt;
A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SSL Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.port=8183&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.ssl.enabled=true&lt;br /&gt;
#Keystore Path&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepath=\config\serverX.jks&lt;br /&gt;
#Key store password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepassword=password&lt;br /&gt;
#Key Password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keypassword=password&lt;br /&gt;
#Key store Type&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystoretype=JKS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Note: Link to how to configure/setup certificates with REST - http://restlet.com/learn/guide/2.3/core/security/https&lt;br /&gt;
==REST HTTP over SSL Example Application==&lt;br /&gt;
link to https java client example - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge.rest/src/org/rifidi/edge/rest/test/HttpsTestClient.java&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user can add this jvm parameter to see detailed messages if getting any &lt;br /&gt;
trouble when running this example:&lt;br /&gt;
-Djavax.net.debug=all&lt;br /&gt;
&lt;br /&gt;
In order t0 successful get the https response from stand alone java &lt;br /&gt;
example, user must import the certificate into JVM:&lt;br /&gt;
&lt;br /&gt;
open command windows as administrator and execute keytool -import, like:&lt;br /&gt;
&lt;br /&gt;
keytool -import -alias localhost -keystore &amp;quot;C:\Program Files &lt;br /&gt;
(x86)\Java\jdk1.6.0_45\jre\lib\security\cacerts&amp;quot; -file &lt;br /&gt;
&amp;quot;D:\tmp\cert\localhost.cer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if requested, default password is: changeit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Logging= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1. Add an entry to the rifidiserver.ini (if using windows; when using linux you add this JVM argument in the rifidi-server executable):&lt;br /&gt;
-Djava.util.logging.config.file=d:/myLogging.properties&lt;br /&gt;
&lt;br /&gt;
*2. Create logging properties file, for example like the below myLogging.properties&lt;br /&gt;
The entry in that file that determines where the log file will show up is the following: java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myLogging.properties&lt;br /&gt;
# ================================&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ==   Web Logging Properties   ==&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # ------------------&lt;br /&gt;
    # General properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # This defines a whitespace separated list of class names for handler classes to load and register as handlers on&lt;br /&gt;
    # the root Logger (the Logger named &amp;quot;&amp;quot;). Each class name must be for a Handler class which has a default constructor.&lt;br /&gt;
    # Note that these Handlers may be created lazily, when they are first used.&lt;br /&gt;
    handlers=java.util.logging.FileHandler&lt;br /&gt;
	# ------------------&lt;br /&gt;
    # Loggers properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
    .level=WARNING&lt;br /&gt;
    org.mortbay.level=WARNING&lt;br /&gt;
    org.restlet.level=INFO&lt;br /&gt;
    com.noelios.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    com.noelios.web.WebComponent.www.level=INFO&lt;br /&gt;
    com.noelios.web.WebComponent.www.handlers=com.noelios.restlet.util.AccessLogFileHandler&lt;br /&gt;
    com.noelios.web.WebComponent.www.useParentHandlers=false&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # ConsoleHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.INFO).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.formatter=&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.encoding=&lt;br /&gt;
	&lt;br /&gt;
	# ------------------------------&lt;br /&gt;
    # General FileHandler properties&lt;br /&gt;
    # ------------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # java.util.logging.FileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.FileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.FileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    java.util.logging.FileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    java.util.logging.FileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot;&lt;br /&gt;
    java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # java.util.logging.FileHandler.append=&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # LogFileHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.formatter=com.noelios.restlet.util.AccessLogFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot; .pattern=/home/prod/data/log/WebComponent-www-%u-%g.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # org.restlet.util.AccessLogFileHandler.append=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Tuning/Confguration (Jetty) as of Rifidi 3.4= &lt;br /&gt;
&lt;br /&gt;
As of Rifidi 3.4 Jetty was made the default HTTP container for Restlet to allow for extended performance and configuration of the REST interface.&lt;br /&gt;
&lt;br /&gt;
The parameters can for configured in the Rifidi Server (ini) configuration&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.minThreads=8	Thread pool minimum threads&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.maxThreads=200	Thread pool max threads&lt;br /&gt;
&lt;br /&gt;
Full list of Jetty parameters using the same naming convention can be found here  - http://restlet.com/technical-resources/restlet-framework/javadocs/snapshot/jse/ext/org/restlet/ext/jetty/JettyServerHelper.html&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
==Command Code Snippet - start session - example how to use Rifidi API in a Java App==&lt;br /&gt;
All Rifidi Management API Command Logic here - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/SensorManagerServiceRestletImpl.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
sensorManagerService.startSession((String) request&lt;br /&gt;
	.getAttributes().get(&amp;quot;readerID&amp;quot;), (String) request&lt;br /&gt;
		.getAttributes().get(&amp;quot;sessionID&amp;quot;));&lt;br /&gt;
	response.setEntity(self.generateReturnString(self&lt;br /&gt;
		.generateSuccessMessage()), MediaType.TEXT_XML);&lt;br /&gt;
} catch (Exception e) {&lt;br /&gt;
	response.setEntity(e.getMessage(), MediaType.TEXT_PLAIN);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Command Basic Flow Example==&lt;br /&gt;
#Create a Reader - http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
#Create a Session (on a reader/sensor)  - http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
#Create a Command (on a reader/sensor)) -/createcommand/{commandType}/{properties} &lt;br /&gt;
*Note: some readers do not require create/executing a command as there is only one command hence for convenience is part of the create session/start session  (Thinkify, CSL and Generic adapter (for handhelds/async push calls) are some examples of this)&lt;br /&gt;
#Set Command Properties - http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
#Execute Command (on a given reader/sensor and session) - http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1&lt;br /&gt;
#Start Session (to begin processing reads using associate command/reader/sensor configuration)  - http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
#Save Configuartion (optional -  to save/persist config in case of a server restart) - http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
=Command Example=&lt;br /&gt;
&lt;br /&gt;
Note: localhost can be substituted with IP address/Host name of Rifidi Edge Server. Port can be changed in Rifidi configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==commandtypes command example==&lt;br /&gt;
&lt;br /&gt;
*commandtypes - returns a list of available command types&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commandtypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commandtypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-ADD_ROSPEC-File&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader via an XML file. Any changes made to the reader are determined by the contents of the file. To generate xml code for the commands you want to submit, check out LLRP Commander here: http://www.fosstrak.org/llrp/index.html&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;ThingMagic-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the ThingMagic reader for its tags. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;ThingMagic&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Start&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Alien reader to send back tags using the autonomous mode. To monitor a read zone, configure an Alien autonomous reader to listen. Then submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader to collect tags. By default, this command will cause the LLRP reader to push back tag reads automatically. If you would rather use the Poll mode, you will need to use the LLRP Poll command. To use the LLRP Configure command, submit it for a one-time execution&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the LLRP reader to stop sending back tags. To use, supply the RO Spec that is currently executing on the reader, and submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Thingmagic6-Push&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Sets the Thingmagic to push tags back to the edge server&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Thingmagic6&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the Alien reader for its tag list. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the LLRP reader for its tags. For monitoring of the read zone, first use the LLRP Configure command to configure the LLRP reader for Poll Mode. Then submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Mask-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID With Mask command. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Alien reader to stop sending back tags in autonomous mode. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Read-Block-Data&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back memory bank tags using the Read Block Data commmand. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readertypes command example==&lt;br /&gt;
&lt;br /&gt;
*readertypes - returns a list of available reader/sensor types (such as LLRP, Alien, BarCode etc..)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readertypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readertypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Generic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;A generic Rifidi Adapter.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Opticon&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Adapter for the Opticon Barcode Sensor&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien-Autonomous&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien autonomous adapter is an endpoint to passively receive tag reads from an Alien reader operating in autonomous mode. You cannot send any commands on the alien autonomous session&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid2010&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thingmagic6&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thingmagic 6 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi LLRP adapter supports any reader that exposes a Low Level Reader Protocol (LLRP) interface. LLRP is a standard from EPCglobal.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid3014&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien adapter supports the Alien ALR protocol on the 9900, 9800, 8800 readers.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thinkify50&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thinkify TR50 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;ThingMagic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi ThingMagic adapater supports the ThingMagic RQL protocol on the Mercury 4 and Mercury 5 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader command example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader overriding default readerID command example==&lt;br /&gt;
&lt;br /&gt;
The reader id is important for applications' read zones to appropriate operate, and this id is used to link read zones with sensors. This command enables one to set the readerId versus the system generating one (default behavior).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: To override the default reader id, there must be included the property readerID, in order to assign a specific reader id and override the default. &lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletereader command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletereader/{readerID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid readerID: LLRP&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readers command example==&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readers&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
*readers - returns a list of readers/senors managed by the Edge Server&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readers  &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_2&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get reader properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{readerID} - returns the reader/sensor properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this, to get a reader properties:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;5084&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;192.168.1.48&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;DisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;null&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReaderConfigPath&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;config/SET_READER_CONFIG.llrp&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get command properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{commandID} - returns the command properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ROSpecID&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;AntennaIDs&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Duration&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1000&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;TriggerType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;PUSH&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set reader properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{readerID}/{properties}&amp;quot; - sets the reader/sensor properties&lt;br /&gt;
Note: if there is an existing session for updated reader properties to take effect the session will need to be deleted and recreated so the properties are moved to the session &lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/Alien_1/MaxNumConnectionAttempts=11;DisplayName=Alien_Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_1/IpAddress=127.0.0.15;Port=4567;att1=aa;att2=bbb;attt3=YY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: att1=aa|att2=bbb|attt3=YY&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set command properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{commandID}/{properties}&amp;quot; - sets the command properties&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=7500;cc=4;other=67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: cc=4|other=67&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==commands command example==&lt;br /&gt;
&lt;br /&gt;
*commands - returns a list of available commands&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commands&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commands&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commands&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;&lt;br /&gt;
         &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createcommand example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the command instance is created or the call fails therefore the rcommand instance is not created&lt;br /&gt;
&lt;br /&gt;
*createcomamnd/{commandType}/{properties} - creates a command to be executed on a reader session&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createcommand&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=5000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commandID&amp;gt;Alien_Poll_2&amp;lt;/commandID&amp;gt; Note: Added in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response error (if there is at least one non valid property, the command is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=4000;propX=123;prop2=AB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: propX=123|prop2=AB&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletecommand command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletecommand/{commandID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid commandID: LLRP_Configure&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createsession command example==&lt;br /&gt;
&lt;br /&gt;
*createsession/{readerID} - creates a session (with corresponding reader/sensor configuration) and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sessionID&amp;gt;1&amp;lt;/sessionID&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail -already a session for sensor id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
     java.lang.Exception: Reader Alien_1 already has a session.&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startsession command example==&lt;br /&gt;
&lt;br /&gt;
*startsession/{readerID}/{sessionID} - starts a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;startsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CONNECTING&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to start session, current state is CONNECTING  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readerstatus command example==&lt;br /&gt;
&lt;br /&gt;
*readerstatus/{readerID} - retuns teh status of a given reader/sensor&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readerstatus&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readerstatus/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensor&amp;gt;&lt;br /&gt;
      &amp;lt;serviceID&amp;gt;LLRP_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
      &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
   &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;sessions&amp;gt;&lt;br /&gt;
      &amp;lt;session&amp;gt;&lt;br /&gt;
         &amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;&lt;br /&gt;
         &amp;lt;status&amp;gt;PROCESSING&amp;lt;/status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;executingcommands&amp;gt;&lt;br /&gt;
            &amp;lt;executingcommand&amp;gt;&lt;br /&gt;
               &amp;lt;commandFactory&amp;gt;LLRP-Configure&amp;lt;/commandFactory&amp;gt;&lt;br /&gt;
              &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
              &amp;lt;interval&amp;gt;0&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;/executingcommand&amp;gt;&lt;br /&gt;
        &amp;lt;/executingcommands&amp;gt;&lt;br /&gt;
      &amp;lt;/session&amp;gt;&lt;br /&gt;
   &amp;lt;/sessions&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==stopsession command example==&lt;br /&gt;
&lt;br /&gt;
*stopsession/{readerID}/{sessionID} - stops a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;stopsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/stopsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CREATED&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to stop session, current state is CREATED  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==resetsession command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/resetsession/{readerID}/{sessionID}&lt;br /&gt;
&lt;br /&gt;
Used to stop and start an existing reader session&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/resetsession/LLRP_1/1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
==executecommand command example==&lt;br /&gt;
&lt;br /&gt;
*executecommand/{readerID}/{sessionID}/{commandID}/{repeatInterval} - Executes a command for a given session&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;executecommand&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/0 (for single shot - one time execution)&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletesession command example==&lt;br /&gt;
&lt;br /&gt;
*deletesession/{readerID}/{sessionID} - deletes a session and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;deletesession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletesession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==save command example==&lt;br /&gt;
&lt;br /&gt;
*save - Saves the current state of the Edge Server configuration (such as created readers/sensors, modified properties etc..&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;save&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ping - Used by failover feature==&lt;br /&gt;
*ping -  Returns a date/timestamp&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;ping&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/ping&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp&amp;gt;1414610247969&amp;lt;/timestamp&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==currenttags example (released in Rifidi 3.4)==&lt;br /&gt;
*currenttags/{readerID} -  Returns a list of tags on a given reader&lt;br /&gt;
&lt;br /&gt;
Note: timestamp, reader and RSSI added in 3.5.1&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;currenttags&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/currenttags/LLRP_1 &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;currenttags&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
   &amp;lt;/currenttags&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readermetadata - Used by Web Administration Dashboard for Dynamic Reader &amp;amp; Command Properties/Wizard (released in 3.2)==&lt;br /&gt;
*readermetadata-  Returns reader metadata&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readermetadata&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readermetadata&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;readers&amp;gt;&lt;br /&gt;
  &amp;lt;reader&amp;gt;&lt;br /&gt;
   &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;ReconnectionInterval&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Reconnection Interval&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;500&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;&lt;br /&gt;
     Upon connection failure, the time to wait between two connection attempts (ms)&lt;br /&gt;
     &amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;4.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Port&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Port&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;8090&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Port of the Reader&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;maxvalue&amp;gt;65535&amp;lt;/maxvalue&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;1.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thinkify RCS Command - Used for one time configuration of a Thinkify USB reader (Deprecated in 3.5.1)==&lt;br /&gt;
*rcs/{Thinkify Reader ID}/{sessionid}&lt;br /&gt;
&lt;br /&gt;
request (via HTTP Post/Get) &amp;quot;rcs&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/rcs/ThinkifyUSB_1/1&lt;br /&gt;
&lt;br /&gt;
==startbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/startbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==stopbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/stopbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to install a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==installbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/installbundle&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to start a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/installbundle&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==uninstallbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/uninstallbundle/{bundleID}&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to uninstall a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/uninstallbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==ss OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/ss&lt;br /&gt;
&lt;br /&gt;
Used to list the OSGI bundles&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/ss&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.osgi&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.weaving.hook&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;RESOLVED&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.simpleconfigurator&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;com.sun.mail.javax.mail&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*/setgpo/{readerID}/{sessionID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to set gpo&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/setgpo/LLRP_1/1/1,2,3,4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flash GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//flashgpo/{readerID}/{sessionID}/{ports}/{duration in seconds}&lt;br /&gt;
&lt;br /&gt;
Used to turn gpo on for a specified duration such as Flashing a light on for 4 seconds then turn it off again&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/flashgpo/LLRP_1/1/1,2,3/4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Management</id>
		<title>Edge Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Management"/>
				<updated>2020-03-06T13:11:58Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* Flash GPO Command Example (coming soon in Rifidi 3.8.1) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Starting in 3.1 Edge Management is now accessible though Restful Services (leveraging [http://restlet.com/ Restlet plugin]. Restlet allows all Rifidi Edge Management operations available through workbench to be accessible via Restful Services.Prior to Rifidi 3.1 Edge Management is available through RMI (currently used by Rifidi Workbench if looking for code examples). &lt;br /&gt;
&lt;br /&gt;
The types of operations available through Restful Services include:&lt;br /&gt;
*All &amp;quot;session&amp;quot; commands (for stopping and starting reader/sensor sessions)&lt;br /&gt;
*ExecuteCommand and deleteCommand  (for commands supported by a sensor such as a tag read)&lt;br /&gt;
*Readers (for getting a list of readers/sensors available on Edge Server instance)&lt;br /&gt;
*Commands (for issuing command line operations such as saving the Edge Server Configuration currently in memory)&lt;br /&gt;
*Get and Set Properties (for setting and getting sensor properties such as Setting the LLRP Reader Configuration dynamically)&lt;br /&gt;
*Create Reader (for creating a new reader connection)&lt;br /&gt;
*Managing Rifidi Applications (for stopping/starting, listing and deploying Rifidi Apps)&lt;br /&gt;
&lt;br /&gt;
Additional features can be found on [http://restlet.com/ Restlet User Guide ]&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
In rifidiserver.ini  - A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.port=8111&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.enabled=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source for Restful Rifidi Management Commands - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/&lt;br /&gt;
&lt;br /&gt;
=Configuration (HTTP over SSL) - Available as of version 3.1.1= &lt;br /&gt;
&lt;br /&gt;
A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SSL Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.port=8183&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.ssl.enabled=true&lt;br /&gt;
#Keystore Path&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepath=\config\serverX.jks&lt;br /&gt;
#Key store password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepassword=password&lt;br /&gt;
#Key Password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keypassword=password&lt;br /&gt;
#Key store Type&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystoretype=JKS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Note: Link to how to configure/setup certificates with REST - http://restlet.com/learn/guide/2.3/core/security/https&lt;br /&gt;
==REST HTTP over SSL Example Application==&lt;br /&gt;
link to https java client example - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge.rest/src/org/rifidi/edge/rest/test/HttpsTestClient.java&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user can add this jvm parameter to see detailed messages if getting any &lt;br /&gt;
trouble when running this example:&lt;br /&gt;
-Djavax.net.debug=all&lt;br /&gt;
&lt;br /&gt;
In order t0 successful get the https response from stand alone java &lt;br /&gt;
example, user must import the certificate into JVM:&lt;br /&gt;
&lt;br /&gt;
open command windows as administrator and execute keytool -import, like:&lt;br /&gt;
&lt;br /&gt;
keytool -import -alias localhost -keystore &amp;quot;C:\Program Files &lt;br /&gt;
(x86)\Java\jdk1.6.0_45\jre\lib\security\cacerts&amp;quot; -file &lt;br /&gt;
&amp;quot;D:\tmp\cert\localhost.cer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if requested, default password is: changeit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Logging= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1. Add an entry to the rifidiserver.ini (if using windows; when using linux you add this JVM argument in the rifidi-server executable):&lt;br /&gt;
-Djava.util.logging.config.file=d:/myLogging.properties&lt;br /&gt;
&lt;br /&gt;
*2. Create logging properties file, for example like the below myLogging.properties&lt;br /&gt;
The entry in that file that determines where the log file will show up is the following: java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myLogging.properties&lt;br /&gt;
# ================================&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ==   Web Logging Properties   ==&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # ------------------&lt;br /&gt;
    # General properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # This defines a whitespace separated list of class names for handler classes to load and register as handlers on&lt;br /&gt;
    # the root Logger (the Logger named &amp;quot;&amp;quot;). Each class name must be for a Handler class which has a default constructor.&lt;br /&gt;
    # Note that these Handlers may be created lazily, when they are first used.&lt;br /&gt;
    handlers=java.util.logging.FileHandler&lt;br /&gt;
	# ------------------&lt;br /&gt;
    # Loggers properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
    .level=WARNING&lt;br /&gt;
    org.mortbay.level=WARNING&lt;br /&gt;
    org.restlet.level=INFO&lt;br /&gt;
    com.noelios.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    com.noelios.web.WebComponent.www.level=INFO&lt;br /&gt;
    com.noelios.web.WebComponent.www.handlers=com.noelios.restlet.util.AccessLogFileHandler&lt;br /&gt;
    com.noelios.web.WebComponent.www.useParentHandlers=false&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # ConsoleHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.INFO).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.formatter=&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.encoding=&lt;br /&gt;
	&lt;br /&gt;
	# ------------------------------&lt;br /&gt;
    # General FileHandler properties&lt;br /&gt;
    # ------------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # java.util.logging.FileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.FileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.FileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    java.util.logging.FileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    java.util.logging.FileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot;&lt;br /&gt;
    java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # java.util.logging.FileHandler.append=&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # LogFileHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.formatter=com.noelios.restlet.util.AccessLogFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot; .pattern=/home/prod/data/log/WebComponent-www-%u-%g.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # org.restlet.util.AccessLogFileHandler.append=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Tuning/Confguration (Jetty) as of Rifidi 3.4= &lt;br /&gt;
&lt;br /&gt;
As of Rifidi 3.4 Jetty was made the default HTTP container for Restlet to allow for extended performance and configuration of the REST interface.&lt;br /&gt;
&lt;br /&gt;
The parameters can for configured in the Rifidi Server (ini) configuration&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.minThreads=8	Thread pool minimum threads&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.maxThreads=200	Thread pool max threads&lt;br /&gt;
&lt;br /&gt;
Full list of Jetty parameters using the same naming convention can be found here  - http://restlet.com/technical-resources/restlet-framework/javadocs/snapshot/jse/ext/org/restlet/ext/jetty/JettyServerHelper.html&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
==Command Code Snippet - start session - example how to use Rifidi API in a Java App==&lt;br /&gt;
All Rifidi Management API Command Logic here - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/SensorManagerServiceRestletImpl.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
sensorManagerService.startSession((String) request&lt;br /&gt;
	.getAttributes().get(&amp;quot;readerID&amp;quot;), (String) request&lt;br /&gt;
		.getAttributes().get(&amp;quot;sessionID&amp;quot;));&lt;br /&gt;
	response.setEntity(self.generateReturnString(self&lt;br /&gt;
		.generateSuccessMessage()), MediaType.TEXT_XML);&lt;br /&gt;
} catch (Exception e) {&lt;br /&gt;
	response.setEntity(e.getMessage(), MediaType.TEXT_PLAIN);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Command Basic Flow Example==&lt;br /&gt;
#Create a Reader - http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
#Create a Session (on a reader/sensor)  - http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
#Create a Command (on a reader/sensor)) -/createcommand/{commandType}/{properties} &lt;br /&gt;
*Note: some readers do not require create/executing a command as there is only one command hence for convenience is part of the create session/start session  (Thinkify, CSL and Generic adapter (for handhelds/async push calls) are some examples of this)&lt;br /&gt;
#Set Command Properties - http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
#Execute Command (on a given reader/sensor and session) - http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1&lt;br /&gt;
#Start Session (to begin processing reads using associate command/reader/sensor configuration)  - http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
#Save Configuartion (optional -  to save/persist config in case of a server restart) - http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
=Command Example=&lt;br /&gt;
&lt;br /&gt;
Note: localhost can be substituted with IP address/Host name of Rifidi Edge Server. Port can be changed in Rifidi configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==commandtypes command example==&lt;br /&gt;
&lt;br /&gt;
*commandtypes - returns a list of available command types&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commandtypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commandtypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-ADD_ROSPEC-File&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader via an XML file. Any changes made to the reader are determined by the contents of the file. To generate xml code for the commands you want to submit, check out LLRP Commander here: http://www.fosstrak.org/llrp/index.html&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;ThingMagic-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the ThingMagic reader for its tags. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;ThingMagic&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Start&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Alien reader to send back tags using the autonomous mode. To monitor a read zone, configure an Alien autonomous reader to listen. Then submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader to collect tags. By default, this command will cause the LLRP reader to push back tag reads automatically. If you would rather use the Poll mode, you will need to use the LLRP Poll command. To use the LLRP Configure command, submit it for a one-time execution&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the LLRP reader to stop sending back tags. To use, supply the RO Spec that is currently executing on the reader, and submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Thingmagic6-Push&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Sets the Thingmagic to push tags back to the edge server&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Thingmagic6&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the Alien reader for its tag list. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the LLRP reader for its tags. For monitoring of the read zone, first use the LLRP Configure command to configure the LLRP reader for Poll Mode. Then submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Mask-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID With Mask command. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Alien reader to stop sending back tags in autonomous mode. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Read-Block-Data&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back memory bank tags using the Read Block Data commmand. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readertypes command example==&lt;br /&gt;
&lt;br /&gt;
*readertypes - returns a list of available reader/sensor types (such as LLRP, Alien, BarCode etc..)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readertypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readertypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Generic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;A generic Rifidi Adapter.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Opticon&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Adapter for the Opticon Barcode Sensor&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien-Autonomous&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien autonomous adapter is an endpoint to passively receive tag reads from an Alien reader operating in autonomous mode. You cannot send any commands on the alien autonomous session&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid2010&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thingmagic6&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thingmagic 6 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi LLRP adapter supports any reader that exposes a Low Level Reader Protocol (LLRP) interface. LLRP is a standard from EPCglobal.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid3014&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien adapter supports the Alien ALR protocol on the 9900, 9800, 8800 readers.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thinkify50&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thinkify TR50 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;ThingMagic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi ThingMagic adapater supports the ThingMagic RQL protocol on the Mercury 4 and Mercury 5 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader command example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader overriding default readerID command example==&lt;br /&gt;
&lt;br /&gt;
The reader id is important for applications' read zones to appropriate operate, and this id is used to link read zones with sensors. This command enables one to set the readerId versus the system generating one (default behavior).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: To override the default reader id, there must be included the property readerID, in order to assign a specific reader id and override the default. &lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletereader command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletereader/{readerID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid readerID: LLRP&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readers command example==&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readers&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
*readers - returns a list of readers/senors managed by the Edge Server&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readers  &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_2&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get reader properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{readerID} - returns the reader/sensor properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this, to get a reader properties:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;5084&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;192.168.1.48&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;DisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;null&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReaderConfigPath&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;config/SET_READER_CONFIG.llrp&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get command properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{commandID} - returns the command properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ROSpecID&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;AntennaIDs&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Duration&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1000&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;TriggerType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;PUSH&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set reader properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{readerID}/{properties}&amp;quot; - sets the reader/sensor properties&lt;br /&gt;
Note: if there is an existing session for updated reader properties to take effect the session will need to be deleted and recreated so the properties are moved to the session &lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/Alien_1/MaxNumConnectionAttempts=11;DisplayName=Alien_Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_1/IpAddress=127.0.0.15;Port=4567;att1=aa;att2=bbb;attt3=YY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: att1=aa|att2=bbb|attt3=YY&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set command properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{commandID}/{properties}&amp;quot; - sets the command properties&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=7500;cc=4;other=67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: cc=4|other=67&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==commands command example==&lt;br /&gt;
&lt;br /&gt;
*commands - returns a list of available commands&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commands&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commands&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commands&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;&lt;br /&gt;
         &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createcommand example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the command instance is created or the call fails therefore the rcommand instance is not created&lt;br /&gt;
&lt;br /&gt;
*createcomamnd/{commandType}/{properties} - creates a command to be executed on a reader session&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createcommand&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=5000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commandID&amp;gt;Alien_Poll_2&amp;lt;/commandID&amp;gt; Note: Added in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response error (if there is at least one non valid property, the command is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=4000;propX=123;prop2=AB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: propX=123|prop2=AB&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletecommand command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletecommand/{commandID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid commandID: LLRP_Configure&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createsession command example==&lt;br /&gt;
&lt;br /&gt;
*createsession/{readerID} - creates a session (with corresponding reader/sensor configuration) and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sessionID&amp;gt;1&amp;lt;/sessionID&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail -already a session for sensor id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
     java.lang.Exception: Reader Alien_1 already has a session.&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startsession command example==&lt;br /&gt;
&lt;br /&gt;
*startsession/{readerID}/{sessionID} - starts a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;startsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CONNECTING&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to start session, current state is CONNECTING  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readerstatus command example==&lt;br /&gt;
&lt;br /&gt;
*readerstatus/{readerID} - retuns teh status of a given reader/sensor&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readerstatus&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readerstatus/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensor&amp;gt;&lt;br /&gt;
      &amp;lt;serviceID&amp;gt;LLRP_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
      &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
   &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;sessions&amp;gt;&lt;br /&gt;
      &amp;lt;session&amp;gt;&lt;br /&gt;
         &amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;&lt;br /&gt;
         &amp;lt;status&amp;gt;PROCESSING&amp;lt;/status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;executingcommands&amp;gt;&lt;br /&gt;
            &amp;lt;executingcommand&amp;gt;&lt;br /&gt;
               &amp;lt;commandFactory&amp;gt;LLRP-Configure&amp;lt;/commandFactory&amp;gt;&lt;br /&gt;
              &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
              &amp;lt;interval&amp;gt;0&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;/executingcommand&amp;gt;&lt;br /&gt;
        &amp;lt;/executingcommands&amp;gt;&lt;br /&gt;
      &amp;lt;/session&amp;gt;&lt;br /&gt;
   &amp;lt;/sessions&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==stopsession command example==&lt;br /&gt;
&lt;br /&gt;
*stopsession/{readerID}/{sessionID} - stops a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;stopsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/stopsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CREATED&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to stop session, current state is CREATED  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==resetsession command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/resetsession/{readerID}/{sessionID}&lt;br /&gt;
&lt;br /&gt;
Used to stop and start an existing reader session&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/resetsession/LLRP_1/1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
==executecommand command example==&lt;br /&gt;
&lt;br /&gt;
*executecommand/{readerID}/{sessionID}/{commandID}/{repeatInterval} - Executes a command for a given session&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;executecommand&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/0 (for single shot - one time execution)&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletesession command example==&lt;br /&gt;
&lt;br /&gt;
*deletesession/{readerID}/{sessionID} - deletes a session and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;deletesession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletesession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==save command example==&lt;br /&gt;
&lt;br /&gt;
*save - Saves the current state of the Edge Server configuration (such as created readers/sensors, modified properties etc..&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;save&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ping - Used by failover feature==&lt;br /&gt;
*ping -  Returns a date/timestamp&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;ping&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/ping&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp&amp;gt;1414610247969&amp;lt;/timestamp&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==currenttags example (released in Rifidi 3.4)==&lt;br /&gt;
*currenttags/{readerID} -  Returns a list of tags on a given reader&lt;br /&gt;
&lt;br /&gt;
Note: timestamp, reader and RSSI added in 3.5.1&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;currenttags&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/currenttags/LLRP_1 &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;currenttags&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
   &amp;lt;/currenttags&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readermetadata - Used by Web Administration Dashboard for Dynamic Reader &amp;amp; Command Properties/Wizard (released in 3.2)==&lt;br /&gt;
*readermetadata-  Returns reader metadata&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readermetadata&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readermetadata&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;readers&amp;gt;&lt;br /&gt;
  &amp;lt;reader&amp;gt;&lt;br /&gt;
   &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;ReconnectionInterval&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Reconnection Interval&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;500&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;&lt;br /&gt;
     Upon connection failure, the time to wait between two connection attempts (ms)&lt;br /&gt;
     &amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;4.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Port&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Port&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;8090&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Port of the Reader&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;maxvalue&amp;gt;65535&amp;lt;/maxvalue&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;1.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thinkify RCS Command - Used for one time configuration of a Thinkify USB reader (Deprecated in 3.5.1)==&lt;br /&gt;
*rcs/{Thinkify Reader ID}/{sessionid}&lt;br /&gt;
&lt;br /&gt;
request (via HTTP Post/Get) &amp;quot;rcs&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/rcs/ThinkifyUSB_1/1&lt;br /&gt;
&lt;br /&gt;
==startbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/startbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==stopbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/stopbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to install a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==installbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/installbundle&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to start a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/installbundle&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==uninstallbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/uninstallbundle/{bundleID}&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to uninstall a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/uninstallbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==ss OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/ss&lt;br /&gt;
&lt;br /&gt;
Used to list the OSGI bundles&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/ss&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.osgi&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.weaving.hook&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;RESOLVED&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.simpleconfigurator&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;com.sun.mail.javax.mail&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*/setgpo/{readerID}/{sessionID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to set gpo&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/setgpo/LLRP_1/1/1,2,3,4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flash GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//flashgpo/{readerID}/{sessionID}/{ports}/{duration in seconds}&lt;br /&gt;
&lt;br /&gt;
Used to turn gpo on for a specified duration such as Flashing a light on for 4 seconds then turn it off again&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/flashgpo/LLRP_1/1/1,2,3/10&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Management</id>
		<title>Edge Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Management"/>
				<updated>2020-03-06T13:11:48Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* Set GPO Command Example (coming soon in Rifidi 3.8.1) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Starting in 3.1 Edge Management is now accessible though Restful Services (leveraging [http://restlet.com/ Restlet plugin]. Restlet allows all Rifidi Edge Management operations available through workbench to be accessible via Restful Services.Prior to Rifidi 3.1 Edge Management is available through RMI (currently used by Rifidi Workbench if looking for code examples). &lt;br /&gt;
&lt;br /&gt;
The types of operations available through Restful Services include:&lt;br /&gt;
*All &amp;quot;session&amp;quot; commands (for stopping and starting reader/sensor sessions)&lt;br /&gt;
*ExecuteCommand and deleteCommand  (for commands supported by a sensor such as a tag read)&lt;br /&gt;
*Readers (for getting a list of readers/sensors available on Edge Server instance)&lt;br /&gt;
*Commands (for issuing command line operations such as saving the Edge Server Configuration currently in memory)&lt;br /&gt;
*Get and Set Properties (for setting and getting sensor properties such as Setting the LLRP Reader Configuration dynamically)&lt;br /&gt;
*Create Reader (for creating a new reader connection)&lt;br /&gt;
*Managing Rifidi Applications (for stopping/starting, listing and deploying Rifidi Apps)&lt;br /&gt;
&lt;br /&gt;
Additional features can be found on [http://restlet.com/ Restlet User Guide ]&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
In rifidiserver.ini  - A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.port=8111&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.enabled=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source for Restful Rifidi Management Commands - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/&lt;br /&gt;
&lt;br /&gt;
=Configuration (HTTP over SSL) - Available as of version 3.1.1= &lt;br /&gt;
&lt;br /&gt;
A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SSL Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.port=8183&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.ssl.enabled=true&lt;br /&gt;
#Keystore Path&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepath=\config\serverX.jks&lt;br /&gt;
#Key store password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepassword=password&lt;br /&gt;
#Key Password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keypassword=password&lt;br /&gt;
#Key store Type&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystoretype=JKS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Note: Link to how to configure/setup certificates with REST - http://restlet.com/learn/guide/2.3/core/security/https&lt;br /&gt;
==REST HTTP over SSL Example Application==&lt;br /&gt;
link to https java client example - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge.rest/src/org/rifidi/edge/rest/test/HttpsTestClient.java&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user can add this jvm parameter to see detailed messages if getting any &lt;br /&gt;
trouble when running this example:&lt;br /&gt;
-Djavax.net.debug=all&lt;br /&gt;
&lt;br /&gt;
In order t0 successful get the https response from stand alone java &lt;br /&gt;
example, user must import the certificate into JVM:&lt;br /&gt;
&lt;br /&gt;
open command windows as administrator and execute keytool -import, like:&lt;br /&gt;
&lt;br /&gt;
keytool -import -alias localhost -keystore &amp;quot;C:\Program Files &lt;br /&gt;
(x86)\Java\jdk1.6.0_45\jre\lib\security\cacerts&amp;quot; -file &lt;br /&gt;
&amp;quot;D:\tmp\cert\localhost.cer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if requested, default password is: changeit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Logging= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1. Add an entry to the rifidiserver.ini (if using windows; when using linux you add this JVM argument in the rifidi-server executable):&lt;br /&gt;
-Djava.util.logging.config.file=d:/myLogging.properties&lt;br /&gt;
&lt;br /&gt;
*2. Create logging properties file, for example like the below myLogging.properties&lt;br /&gt;
The entry in that file that determines where the log file will show up is the following: java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myLogging.properties&lt;br /&gt;
# ================================&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ==   Web Logging Properties   ==&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # ------------------&lt;br /&gt;
    # General properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # This defines a whitespace separated list of class names for handler classes to load and register as handlers on&lt;br /&gt;
    # the root Logger (the Logger named &amp;quot;&amp;quot;). Each class name must be for a Handler class which has a default constructor.&lt;br /&gt;
    # Note that these Handlers may be created lazily, when they are first used.&lt;br /&gt;
    handlers=java.util.logging.FileHandler&lt;br /&gt;
	# ------------------&lt;br /&gt;
    # Loggers properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
    .level=WARNING&lt;br /&gt;
    org.mortbay.level=WARNING&lt;br /&gt;
    org.restlet.level=INFO&lt;br /&gt;
    com.noelios.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    com.noelios.web.WebComponent.www.level=INFO&lt;br /&gt;
    com.noelios.web.WebComponent.www.handlers=com.noelios.restlet.util.AccessLogFileHandler&lt;br /&gt;
    com.noelios.web.WebComponent.www.useParentHandlers=false&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # ConsoleHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.INFO).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.formatter=&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.encoding=&lt;br /&gt;
	&lt;br /&gt;
	# ------------------------------&lt;br /&gt;
    # General FileHandler properties&lt;br /&gt;
    # ------------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # java.util.logging.FileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.FileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.FileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    java.util.logging.FileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    java.util.logging.FileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot;&lt;br /&gt;
    java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # java.util.logging.FileHandler.append=&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # LogFileHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.formatter=com.noelios.restlet.util.AccessLogFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot; .pattern=/home/prod/data/log/WebComponent-www-%u-%g.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # org.restlet.util.AccessLogFileHandler.append=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Tuning/Confguration (Jetty) as of Rifidi 3.4= &lt;br /&gt;
&lt;br /&gt;
As of Rifidi 3.4 Jetty was made the default HTTP container for Restlet to allow for extended performance and configuration of the REST interface.&lt;br /&gt;
&lt;br /&gt;
The parameters can for configured in the Rifidi Server (ini) configuration&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.minThreads=8	Thread pool minimum threads&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.maxThreads=200	Thread pool max threads&lt;br /&gt;
&lt;br /&gt;
Full list of Jetty parameters using the same naming convention can be found here  - http://restlet.com/technical-resources/restlet-framework/javadocs/snapshot/jse/ext/org/restlet/ext/jetty/JettyServerHelper.html&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
==Command Code Snippet - start session - example how to use Rifidi API in a Java App==&lt;br /&gt;
All Rifidi Management API Command Logic here - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/SensorManagerServiceRestletImpl.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
sensorManagerService.startSession((String) request&lt;br /&gt;
	.getAttributes().get(&amp;quot;readerID&amp;quot;), (String) request&lt;br /&gt;
		.getAttributes().get(&amp;quot;sessionID&amp;quot;));&lt;br /&gt;
	response.setEntity(self.generateReturnString(self&lt;br /&gt;
		.generateSuccessMessage()), MediaType.TEXT_XML);&lt;br /&gt;
} catch (Exception e) {&lt;br /&gt;
	response.setEntity(e.getMessage(), MediaType.TEXT_PLAIN);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Command Basic Flow Example==&lt;br /&gt;
#Create a Reader - http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
#Create a Session (on a reader/sensor)  - http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
#Create a Command (on a reader/sensor)) -/createcommand/{commandType}/{properties} &lt;br /&gt;
*Note: some readers do not require create/executing a command as there is only one command hence for convenience is part of the create session/start session  (Thinkify, CSL and Generic adapter (for handhelds/async push calls) are some examples of this)&lt;br /&gt;
#Set Command Properties - http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
#Execute Command (on a given reader/sensor and session) - http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1&lt;br /&gt;
#Start Session (to begin processing reads using associate command/reader/sensor configuration)  - http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
#Save Configuartion (optional -  to save/persist config in case of a server restart) - http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
=Command Example=&lt;br /&gt;
&lt;br /&gt;
Note: localhost can be substituted with IP address/Host name of Rifidi Edge Server. Port can be changed in Rifidi configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==commandtypes command example==&lt;br /&gt;
&lt;br /&gt;
*commandtypes - returns a list of available command types&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commandtypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commandtypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-ADD_ROSPEC-File&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader via an XML file. Any changes made to the reader are determined by the contents of the file. To generate xml code for the commands you want to submit, check out LLRP Commander here: http://www.fosstrak.org/llrp/index.html&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;ThingMagic-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the ThingMagic reader for its tags. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;ThingMagic&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Start&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Alien reader to send back tags using the autonomous mode. To monitor a read zone, configure an Alien autonomous reader to listen. Then submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader to collect tags. By default, this command will cause the LLRP reader to push back tag reads automatically. If you would rather use the Poll mode, you will need to use the LLRP Poll command. To use the LLRP Configure command, submit it for a one-time execution&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the LLRP reader to stop sending back tags. To use, supply the RO Spec that is currently executing on the reader, and submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Thingmagic6-Push&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Sets the Thingmagic to push tags back to the edge server&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Thingmagic6&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the Alien reader for its tag list. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the LLRP reader for its tags. For monitoring of the read zone, first use the LLRP Configure command to configure the LLRP reader for Poll Mode. Then submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Mask-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID With Mask command. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Alien reader to stop sending back tags in autonomous mode. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Read-Block-Data&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back memory bank tags using the Read Block Data commmand. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readertypes command example==&lt;br /&gt;
&lt;br /&gt;
*readertypes - returns a list of available reader/sensor types (such as LLRP, Alien, BarCode etc..)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readertypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readertypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Generic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;A generic Rifidi Adapter.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Opticon&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Adapter for the Opticon Barcode Sensor&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien-Autonomous&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien autonomous adapter is an endpoint to passively receive tag reads from an Alien reader operating in autonomous mode. You cannot send any commands on the alien autonomous session&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid2010&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thingmagic6&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thingmagic 6 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi LLRP adapter supports any reader that exposes a Low Level Reader Protocol (LLRP) interface. LLRP is a standard from EPCglobal.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid3014&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien adapter supports the Alien ALR protocol on the 9900, 9800, 8800 readers.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thinkify50&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thinkify TR50 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;ThingMagic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi ThingMagic adapater supports the ThingMagic RQL protocol on the Mercury 4 and Mercury 5 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader command example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader overriding default readerID command example==&lt;br /&gt;
&lt;br /&gt;
The reader id is important for applications' read zones to appropriate operate, and this id is used to link read zones with sensors. This command enables one to set the readerId versus the system generating one (default behavior).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: To override the default reader id, there must be included the property readerID, in order to assign a specific reader id and override the default. &lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletereader command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletereader/{readerID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid readerID: LLRP&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readers command example==&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readers&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
*readers - returns a list of readers/senors managed by the Edge Server&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readers  &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_2&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get reader properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{readerID} - returns the reader/sensor properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this, to get a reader properties:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;5084&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;192.168.1.48&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;DisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;null&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReaderConfigPath&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;config/SET_READER_CONFIG.llrp&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get command properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{commandID} - returns the command properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ROSpecID&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;AntennaIDs&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Duration&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1000&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;TriggerType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;PUSH&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set reader properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{readerID}/{properties}&amp;quot; - sets the reader/sensor properties&lt;br /&gt;
Note: if there is an existing session for updated reader properties to take effect the session will need to be deleted and recreated so the properties are moved to the session &lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/Alien_1/MaxNumConnectionAttempts=11;DisplayName=Alien_Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_1/IpAddress=127.0.0.15;Port=4567;att1=aa;att2=bbb;attt3=YY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: att1=aa|att2=bbb|attt3=YY&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set command properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{commandID}/{properties}&amp;quot; - sets the command properties&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=7500;cc=4;other=67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: cc=4|other=67&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==commands command example==&lt;br /&gt;
&lt;br /&gt;
*commands - returns a list of available commands&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commands&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commands&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commands&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;&lt;br /&gt;
         &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createcommand example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the command instance is created or the call fails therefore the rcommand instance is not created&lt;br /&gt;
&lt;br /&gt;
*createcomamnd/{commandType}/{properties} - creates a command to be executed on a reader session&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createcommand&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=5000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commandID&amp;gt;Alien_Poll_2&amp;lt;/commandID&amp;gt; Note: Added in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response error (if there is at least one non valid property, the command is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=4000;propX=123;prop2=AB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: propX=123|prop2=AB&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletecommand command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletecommand/{commandID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid commandID: LLRP_Configure&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createsession command example==&lt;br /&gt;
&lt;br /&gt;
*createsession/{readerID} - creates a session (with corresponding reader/sensor configuration) and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sessionID&amp;gt;1&amp;lt;/sessionID&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail -already a session for sensor id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
     java.lang.Exception: Reader Alien_1 already has a session.&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startsession command example==&lt;br /&gt;
&lt;br /&gt;
*startsession/{readerID}/{sessionID} - starts a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;startsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CONNECTING&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to start session, current state is CONNECTING  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readerstatus command example==&lt;br /&gt;
&lt;br /&gt;
*readerstatus/{readerID} - retuns teh status of a given reader/sensor&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readerstatus&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readerstatus/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensor&amp;gt;&lt;br /&gt;
      &amp;lt;serviceID&amp;gt;LLRP_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
      &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
   &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;sessions&amp;gt;&lt;br /&gt;
      &amp;lt;session&amp;gt;&lt;br /&gt;
         &amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;&lt;br /&gt;
         &amp;lt;status&amp;gt;PROCESSING&amp;lt;/status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;executingcommands&amp;gt;&lt;br /&gt;
            &amp;lt;executingcommand&amp;gt;&lt;br /&gt;
               &amp;lt;commandFactory&amp;gt;LLRP-Configure&amp;lt;/commandFactory&amp;gt;&lt;br /&gt;
              &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
              &amp;lt;interval&amp;gt;0&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;/executingcommand&amp;gt;&lt;br /&gt;
        &amp;lt;/executingcommands&amp;gt;&lt;br /&gt;
      &amp;lt;/session&amp;gt;&lt;br /&gt;
   &amp;lt;/sessions&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==stopsession command example==&lt;br /&gt;
&lt;br /&gt;
*stopsession/{readerID}/{sessionID} - stops a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;stopsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/stopsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CREATED&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to stop session, current state is CREATED  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==resetsession command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/resetsession/{readerID}/{sessionID}&lt;br /&gt;
&lt;br /&gt;
Used to stop and start an existing reader session&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/resetsession/LLRP_1/1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
==executecommand command example==&lt;br /&gt;
&lt;br /&gt;
*executecommand/{readerID}/{sessionID}/{commandID}/{repeatInterval} - Executes a command for a given session&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;executecommand&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/0 (for single shot - one time execution)&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletesession command example==&lt;br /&gt;
&lt;br /&gt;
*deletesession/{readerID}/{sessionID} - deletes a session and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;deletesession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletesession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==save command example==&lt;br /&gt;
&lt;br /&gt;
*save - Saves the current state of the Edge Server configuration (such as created readers/sensors, modified properties etc..&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;save&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ping - Used by failover feature==&lt;br /&gt;
*ping -  Returns a date/timestamp&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;ping&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/ping&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp&amp;gt;1414610247969&amp;lt;/timestamp&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==currenttags example (released in Rifidi 3.4)==&lt;br /&gt;
*currenttags/{readerID} -  Returns a list of tags on a given reader&lt;br /&gt;
&lt;br /&gt;
Note: timestamp, reader and RSSI added in 3.5.1&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;currenttags&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/currenttags/LLRP_1 &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;currenttags&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
   &amp;lt;/currenttags&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readermetadata - Used by Web Administration Dashboard for Dynamic Reader &amp;amp; Command Properties/Wizard (released in 3.2)==&lt;br /&gt;
*readermetadata-  Returns reader metadata&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readermetadata&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readermetadata&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;readers&amp;gt;&lt;br /&gt;
  &amp;lt;reader&amp;gt;&lt;br /&gt;
   &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;ReconnectionInterval&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Reconnection Interval&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;500&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;&lt;br /&gt;
     Upon connection failure, the time to wait between two connection attempts (ms)&lt;br /&gt;
     &amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;4.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Port&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Port&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;8090&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Port of the Reader&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;maxvalue&amp;gt;65535&amp;lt;/maxvalue&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;1.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thinkify RCS Command - Used for one time configuration of a Thinkify USB reader (Deprecated in 3.5.1)==&lt;br /&gt;
*rcs/{Thinkify Reader ID}/{sessionid}&lt;br /&gt;
&lt;br /&gt;
request (via HTTP Post/Get) &amp;quot;rcs&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/rcs/ThinkifyUSB_1/1&lt;br /&gt;
&lt;br /&gt;
==startbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/startbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==stopbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/stopbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to install a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==installbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/installbundle&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to start a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/installbundle&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==uninstallbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/uninstallbundle/{bundleID}&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to uninstall a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/uninstallbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==ss OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/ss&lt;br /&gt;
&lt;br /&gt;
Used to list the OSGI bundles&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/ss&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.osgi&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.weaving.hook&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;RESOLVED&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.simpleconfigurator&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;com.sun.mail.javax.mail&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*/setgpo/{readerID}/{sessionID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to set gpo&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/setgpo/LLRP_1/1/1,2,3,4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flash GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//flashgpo/{readerID}/{sessionID}/{ports}/{duration in seconds}&lt;br /&gt;
&lt;br /&gt;
Used to turn gpo on for a specified duration such as Flashing a light on for 4 seconds then turn it off again&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/flashgpo/LLRP/1/1,2,3/10&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Management</id>
		<title>Edge Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Management"/>
				<updated>2020-03-05T11:28:47Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* Flash GPO Command Example (coming soon in Rifidi 3.8.1) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Starting in 3.1 Edge Management is now accessible though Restful Services (leveraging [http://restlet.com/ Restlet plugin]. Restlet allows all Rifidi Edge Management operations available through workbench to be accessible via Restful Services.Prior to Rifidi 3.1 Edge Management is available through RMI (currently used by Rifidi Workbench if looking for code examples). &lt;br /&gt;
&lt;br /&gt;
The types of operations available through Restful Services include:&lt;br /&gt;
*All &amp;quot;session&amp;quot; commands (for stopping and starting reader/sensor sessions)&lt;br /&gt;
*ExecuteCommand and deleteCommand  (for commands supported by a sensor such as a tag read)&lt;br /&gt;
*Readers (for getting a list of readers/sensors available on Edge Server instance)&lt;br /&gt;
*Commands (for issuing command line operations such as saving the Edge Server Configuration currently in memory)&lt;br /&gt;
*Get and Set Properties (for setting and getting sensor properties such as Setting the LLRP Reader Configuration dynamically)&lt;br /&gt;
*Create Reader (for creating a new reader connection)&lt;br /&gt;
*Managing Rifidi Applications (for stopping/starting, listing and deploying Rifidi Apps)&lt;br /&gt;
&lt;br /&gt;
Additional features can be found on [http://restlet.com/ Restlet User Guide ]&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
In rifidiserver.ini  - A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.port=8111&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.enabled=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source for Restful Rifidi Management Commands - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/&lt;br /&gt;
&lt;br /&gt;
=Configuration (HTTP over SSL) - Available as of version 3.1.1= &lt;br /&gt;
&lt;br /&gt;
A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SSL Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.port=8183&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.ssl.enabled=true&lt;br /&gt;
#Keystore Path&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepath=\config\serverX.jks&lt;br /&gt;
#Key store password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepassword=password&lt;br /&gt;
#Key Password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keypassword=password&lt;br /&gt;
#Key store Type&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystoretype=JKS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Note: Link to how to configure/setup certificates with REST - http://restlet.com/learn/guide/2.3/core/security/https&lt;br /&gt;
==REST HTTP over SSL Example Application==&lt;br /&gt;
link to https java client example - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge.rest/src/org/rifidi/edge/rest/test/HttpsTestClient.java&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user can add this jvm parameter to see detailed messages if getting any &lt;br /&gt;
trouble when running this example:&lt;br /&gt;
-Djavax.net.debug=all&lt;br /&gt;
&lt;br /&gt;
In order t0 successful get the https response from stand alone java &lt;br /&gt;
example, user must import the certificate into JVM:&lt;br /&gt;
&lt;br /&gt;
open command windows as administrator and execute keytool -import, like:&lt;br /&gt;
&lt;br /&gt;
keytool -import -alias localhost -keystore &amp;quot;C:\Program Files &lt;br /&gt;
(x86)\Java\jdk1.6.0_45\jre\lib\security\cacerts&amp;quot; -file &lt;br /&gt;
&amp;quot;D:\tmp\cert\localhost.cer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if requested, default password is: changeit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Logging= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1. Add an entry to the rifidiserver.ini (if using windows; when using linux you add this JVM argument in the rifidi-server executable):&lt;br /&gt;
-Djava.util.logging.config.file=d:/myLogging.properties&lt;br /&gt;
&lt;br /&gt;
*2. Create logging properties file, for example like the below myLogging.properties&lt;br /&gt;
The entry in that file that determines where the log file will show up is the following: java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myLogging.properties&lt;br /&gt;
# ================================&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ==   Web Logging Properties   ==&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # ------------------&lt;br /&gt;
    # General properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # This defines a whitespace separated list of class names for handler classes to load and register as handlers on&lt;br /&gt;
    # the root Logger (the Logger named &amp;quot;&amp;quot;). Each class name must be for a Handler class which has a default constructor.&lt;br /&gt;
    # Note that these Handlers may be created lazily, when they are first used.&lt;br /&gt;
    handlers=java.util.logging.FileHandler&lt;br /&gt;
	# ------------------&lt;br /&gt;
    # Loggers properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
    .level=WARNING&lt;br /&gt;
    org.mortbay.level=WARNING&lt;br /&gt;
    org.restlet.level=INFO&lt;br /&gt;
    com.noelios.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    com.noelios.web.WebComponent.www.level=INFO&lt;br /&gt;
    com.noelios.web.WebComponent.www.handlers=com.noelios.restlet.util.AccessLogFileHandler&lt;br /&gt;
    com.noelios.web.WebComponent.www.useParentHandlers=false&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # ConsoleHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.INFO).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.formatter=&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.encoding=&lt;br /&gt;
	&lt;br /&gt;
	# ------------------------------&lt;br /&gt;
    # General FileHandler properties&lt;br /&gt;
    # ------------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # java.util.logging.FileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.FileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.FileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    java.util.logging.FileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    java.util.logging.FileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot;&lt;br /&gt;
    java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # java.util.logging.FileHandler.append=&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # LogFileHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.formatter=com.noelios.restlet.util.AccessLogFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot; .pattern=/home/prod/data/log/WebComponent-www-%u-%g.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # org.restlet.util.AccessLogFileHandler.append=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Tuning/Confguration (Jetty) as of Rifidi 3.4= &lt;br /&gt;
&lt;br /&gt;
As of Rifidi 3.4 Jetty was made the default HTTP container for Restlet to allow for extended performance and configuration of the REST interface.&lt;br /&gt;
&lt;br /&gt;
The parameters can for configured in the Rifidi Server (ini) configuration&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.minThreads=8	Thread pool minimum threads&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.maxThreads=200	Thread pool max threads&lt;br /&gt;
&lt;br /&gt;
Full list of Jetty parameters using the same naming convention can be found here  - http://restlet.com/technical-resources/restlet-framework/javadocs/snapshot/jse/ext/org/restlet/ext/jetty/JettyServerHelper.html&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
==Command Code Snippet - start session - example how to use Rifidi API in a Java App==&lt;br /&gt;
All Rifidi Management API Command Logic here - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/SensorManagerServiceRestletImpl.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
sensorManagerService.startSession((String) request&lt;br /&gt;
	.getAttributes().get(&amp;quot;readerID&amp;quot;), (String) request&lt;br /&gt;
		.getAttributes().get(&amp;quot;sessionID&amp;quot;));&lt;br /&gt;
	response.setEntity(self.generateReturnString(self&lt;br /&gt;
		.generateSuccessMessage()), MediaType.TEXT_XML);&lt;br /&gt;
} catch (Exception e) {&lt;br /&gt;
	response.setEntity(e.getMessage(), MediaType.TEXT_PLAIN);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Command Basic Flow Example==&lt;br /&gt;
#Create a Reader - http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
#Create a Session (on a reader/sensor)  - http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
#Create a Command (on a reader/sensor)) -/createcommand/{commandType}/{properties} &lt;br /&gt;
*Note: some readers do not require create/executing a command as there is only one command hence for convenience is part of the create session/start session  (Thinkify, CSL and Generic adapter (for handhelds/async push calls) are some examples of this)&lt;br /&gt;
#Set Command Properties - http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
#Execute Command (on a given reader/sensor and session) - http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1&lt;br /&gt;
#Start Session (to begin processing reads using associate command/reader/sensor configuration)  - http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
#Save Configuartion (optional -  to save/persist config in case of a server restart) - http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
=Command Example=&lt;br /&gt;
&lt;br /&gt;
Note: localhost can be substituted with IP address/Host name of Rifidi Edge Server. Port can be changed in Rifidi configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==commandtypes command example==&lt;br /&gt;
&lt;br /&gt;
*commandtypes - returns a list of available command types&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commandtypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commandtypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-ADD_ROSPEC-File&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader via an XML file. Any changes made to the reader are determined by the contents of the file. To generate xml code for the commands you want to submit, check out LLRP Commander here: http://www.fosstrak.org/llrp/index.html&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;ThingMagic-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the ThingMagic reader for its tags. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;ThingMagic&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Start&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Alien reader to send back tags using the autonomous mode. To monitor a read zone, configure an Alien autonomous reader to listen. Then submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader to collect tags. By default, this command will cause the LLRP reader to push back tag reads automatically. If you would rather use the Poll mode, you will need to use the LLRP Poll command. To use the LLRP Configure command, submit it for a one-time execution&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the LLRP reader to stop sending back tags. To use, supply the RO Spec that is currently executing on the reader, and submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Thingmagic6-Push&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Sets the Thingmagic to push tags back to the edge server&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Thingmagic6&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the Alien reader for its tag list. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the LLRP reader for its tags. For monitoring of the read zone, first use the LLRP Configure command to configure the LLRP reader for Poll Mode. Then submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Mask-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID With Mask command. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Alien reader to stop sending back tags in autonomous mode. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Read-Block-Data&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back memory bank tags using the Read Block Data commmand. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readertypes command example==&lt;br /&gt;
&lt;br /&gt;
*readertypes - returns a list of available reader/sensor types (such as LLRP, Alien, BarCode etc..)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readertypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readertypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Generic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;A generic Rifidi Adapter.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Opticon&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Adapter for the Opticon Barcode Sensor&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien-Autonomous&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien autonomous adapter is an endpoint to passively receive tag reads from an Alien reader operating in autonomous mode. You cannot send any commands on the alien autonomous session&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid2010&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thingmagic6&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thingmagic 6 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi LLRP adapter supports any reader that exposes a Low Level Reader Protocol (LLRP) interface. LLRP is a standard from EPCglobal.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid3014&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien adapter supports the Alien ALR protocol on the 9900, 9800, 8800 readers.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thinkify50&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thinkify TR50 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;ThingMagic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi ThingMagic adapater supports the ThingMagic RQL protocol on the Mercury 4 and Mercury 5 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader command example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader overriding default readerID command example==&lt;br /&gt;
&lt;br /&gt;
The reader id is important for applications' read zones to appropriate operate, and this id is used to link read zones with sensors. This command enables one to set the readerId versus the system generating one (default behavior).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: To override the default reader id, there must be included the property readerID, in order to assign a specific reader id and override the default. &lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletereader command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletereader/{readerID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid readerID: LLRP&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readers command example==&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readers&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
*readers - returns a list of readers/senors managed by the Edge Server&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readers  &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_2&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get reader properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{readerID} - returns the reader/sensor properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this, to get a reader properties:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;5084&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;192.168.1.48&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;DisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;null&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReaderConfigPath&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;config/SET_READER_CONFIG.llrp&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get command properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{commandID} - returns the command properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ROSpecID&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;AntennaIDs&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Duration&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1000&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;TriggerType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;PUSH&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set reader properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{readerID}/{properties}&amp;quot; - sets the reader/sensor properties&lt;br /&gt;
Note: if there is an existing session for updated reader properties to take effect the session will need to be deleted and recreated so the properties are moved to the session &lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/Alien_1/MaxNumConnectionAttempts=11;DisplayName=Alien_Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_1/IpAddress=127.0.0.15;Port=4567;att1=aa;att2=bbb;attt3=YY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: att1=aa|att2=bbb|attt3=YY&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set command properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{commandID}/{properties}&amp;quot; - sets the command properties&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=7500;cc=4;other=67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: cc=4|other=67&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==commands command example==&lt;br /&gt;
&lt;br /&gt;
*commands - returns a list of available commands&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commands&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commands&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commands&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;&lt;br /&gt;
         &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createcommand example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the command instance is created or the call fails therefore the rcommand instance is not created&lt;br /&gt;
&lt;br /&gt;
*createcomamnd/{commandType}/{properties} - creates a command to be executed on a reader session&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createcommand&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=5000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commandID&amp;gt;Alien_Poll_2&amp;lt;/commandID&amp;gt; Note: Added in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response error (if there is at least one non valid property, the command is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=4000;propX=123;prop2=AB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: propX=123|prop2=AB&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletecommand command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletecommand/{commandID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid commandID: LLRP_Configure&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createsession command example==&lt;br /&gt;
&lt;br /&gt;
*createsession/{readerID} - creates a session (with corresponding reader/sensor configuration) and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sessionID&amp;gt;1&amp;lt;/sessionID&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail -already a session for sensor id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
     java.lang.Exception: Reader Alien_1 already has a session.&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startsession command example==&lt;br /&gt;
&lt;br /&gt;
*startsession/{readerID}/{sessionID} - starts a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;startsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CONNECTING&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to start session, current state is CONNECTING  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readerstatus command example==&lt;br /&gt;
&lt;br /&gt;
*readerstatus/{readerID} - retuns teh status of a given reader/sensor&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readerstatus&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readerstatus/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensor&amp;gt;&lt;br /&gt;
      &amp;lt;serviceID&amp;gt;LLRP_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
      &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
   &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;sessions&amp;gt;&lt;br /&gt;
      &amp;lt;session&amp;gt;&lt;br /&gt;
         &amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;&lt;br /&gt;
         &amp;lt;status&amp;gt;PROCESSING&amp;lt;/status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;executingcommands&amp;gt;&lt;br /&gt;
            &amp;lt;executingcommand&amp;gt;&lt;br /&gt;
               &amp;lt;commandFactory&amp;gt;LLRP-Configure&amp;lt;/commandFactory&amp;gt;&lt;br /&gt;
              &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
              &amp;lt;interval&amp;gt;0&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;/executingcommand&amp;gt;&lt;br /&gt;
        &amp;lt;/executingcommands&amp;gt;&lt;br /&gt;
      &amp;lt;/session&amp;gt;&lt;br /&gt;
   &amp;lt;/sessions&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==stopsession command example==&lt;br /&gt;
&lt;br /&gt;
*stopsession/{readerID}/{sessionID} - stops a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;stopsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/stopsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CREATED&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to stop session, current state is CREATED  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==resetsession command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/resetsession/{readerID}/{sessionID}&lt;br /&gt;
&lt;br /&gt;
Used to stop and start an existing reader session&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/resetsession/LLRP_1/1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
==executecommand command example==&lt;br /&gt;
&lt;br /&gt;
*executecommand/{readerID}/{sessionID}/{commandID}/{repeatInterval} - Executes a command for a given session&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;executecommand&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/0 (for single shot - one time execution)&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletesession command example==&lt;br /&gt;
&lt;br /&gt;
*deletesession/{readerID}/{sessionID} - deletes a session and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;deletesession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletesession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==save command example==&lt;br /&gt;
&lt;br /&gt;
*save - Saves the current state of the Edge Server configuration (such as created readers/sensors, modified properties etc..&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;save&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ping - Used by failover feature==&lt;br /&gt;
*ping -  Returns a date/timestamp&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;ping&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/ping&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp&amp;gt;1414610247969&amp;lt;/timestamp&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==currenttags example (released in Rifidi 3.4)==&lt;br /&gt;
*currenttags/{readerID} -  Returns a list of tags on a given reader&lt;br /&gt;
&lt;br /&gt;
Note: timestamp, reader and RSSI added in 3.5.1&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;currenttags&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/currenttags/LLRP_1 &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;currenttags&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
   &amp;lt;/currenttags&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readermetadata - Used by Web Administration Dashboard for Dynamic Reader &amp;amp; Command Properties/Wizard (released in 3.2)==&lt;br /&gt;
*readermetadata-  Returns reader metadata&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readermetadata&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readermetadata&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;readers&amp;gt;&lt;br /&gt;
  &amp;lt;reader&amp;gt;&lt;br /&gt;
   &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;ReconnectionInterval&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Reconnection Interval&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;500&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;&lt;br /&gt;
     Upon connection failure, the time to wait between two connection attempts (ms)&lt;br /&gt;
     &amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;4.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Port&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Port&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;8090&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Port of the Reader&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;maxvalue&amp;gt;65535&amp;lt;/maxvalue&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;1.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thinkify RCS Command - Used for one time configuration of a Thinkify USB reader (Deprecated in 3.5.1)==&lt;br /&gt;
*rcs/{Thinkify Reader ID}/{sessionid}&lt;br /&gt;
&lt;br /&gt;
request (via HTTP Post/Get) &amp;quot;rcs&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/rcs/ThinkifyUSB_1/1&lt;br /&gt;
&lt;br /&gt;
==startbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/startbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==stopbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/stopbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to install a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==installbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/installbundle&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to start a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/installbundle&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==uninstallbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/uninstallbundle/{bundleID}&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to uninstall a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/uninstallbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==ss OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/ss&lt;br /&gt;
&lt;br /&gt;
Used to list the OSGI bundles&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/ss&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.osgi&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.weaving.hook&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;RESOLVED&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.simpleconfigurator&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;com.sun.mail.javax.mail&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*/setgpo/{readerID}/{sessionID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to set gpo&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/setgpo/LLRP/1/1,2,3,4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flash GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//flashgpo/{readerID}/{sessionID}/{ports}/{duration in seconds}&lt;br /&gt;
&lt;br /&gt;
Used to turn gpo on for a specified duration such as Flashing a light on for 4 seconds then turn it off again&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/flashgpo/LLRP/1/1,2,3/10&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Management</id>
		<title>Edge Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Management"/>
				<updated>2020-03-05T11:27:53Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* Set GPO Command Example (coming soon in Rifidi 3.8.1) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Starting in 3.1 Edge Management is now accessible though Restful Services (leveraging [http://restlet.com/ Restlet plugin]. Restlet allows all Rifidi Edge Management operations available through workbench to be accessible via Restful Services.Prior to Rifidi 3.1 Edge Management is available through RMI (currently used by Rifidi Workbench if looking for code examples). &lt;br /&gt;
&lt;br /&gt;
The types of operations available through Restful Services include:&lt;br /&gt;
*All &amp;quot;session&amp;quot; commands (for stopping and starting reader/sensor sessions)&lt;br /&gt;
*ExecuteCommand and deleteCommand  (for commands supported by a sensor such as a tag read)&lt;br /&gt;
*Readers (for getting a list of readers/sensors available on Edge Server instance)&lt;br /&gt;
*Commands (for issuing command line operations such as saving the Edge Server Configuration currently in memory)&lt;br /&gt;
*Get and Set Properties (for setting and getting sensor properties such as Setting the LLRP Reader Configuration dynamically)&lt;br /&gt;
*Create Reader (for creating a new reader connection)&lt;br /&gt;
*Managing Rifidi Applications (for stopping/starting, listing and deploying Rifidi Apps)&lt;br /&gt;
&lt;br /&gt;
Additional features can be found on [http://restlet.com/ Restlet User Guide ]&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
In rifidiserver.ini  - A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.port=8111&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.enabled=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source for Restful Rifidi Management Commands - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/&lt;br /&gt;
&lt;br /&gt;
=Configuration (HTTP over SSL) - Available as of version 3.1.1= &lt;br /&gt;
&lt;br /&gt;
A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SSL Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.port=8183&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.ssl.enabled=true&lt;br /&gt;
#Keystore Path&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepath=\config\serverX.jks&lt;br /&gt;
#Key store password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepassword=password&lt;br /&gt;
#Key Password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keypassword=password&lt;br /&gt;
#Key store Type&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystoretype=JKS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Note: Link to how to configure/setup certificates with REST - http://restlet.com/learn/guide/2.3/core/security/https&lt;br /&gt;
==REST HTTP over SSL Example Application==&lt;br /&gt;
link to https java client example - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge.rest/src/org/rifidi/edge/rest/test/HttpsTestClient.java&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user can add this jvm parameter to see detailed messages if getting any &lt;br /&gt;
trouble when running this example:&lt;br /&gt;
-Djavax.net.debug=all&lt;br /&gt;
&lt;br /&gt;
In order t0 successful get the https response from stand alone java &lt;br /&gt;
example, user must import the certificate into JVM:&lt;br /&gt;
&lt;br /&gt;
open command windows as administrator and execute keytool -import, like:&lt;br /&gt;
&lt;br /&gt;
keytool -import -alias localhost -keystore &amp;quot;C:\Program Files &lt;br /&gt;
(x86)\Java\jdk1.6.0_45\jre\lib\security\cacerts&amp;quot; -file &lt;br /&gt;
&amp;quot;D:\tmp\cert\localhost.cer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if requested, default password is: changeit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Logging= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1. Add an entry to the rifidiserver.ini (if using windows; when using linux you add this JVM argument in the rifidi-server executable):&lt;br /&gt;
-Djava.util.logging.config.file=d:/myLogging.properties&lt;br /&gt;
&lt;br /&gt;
*2. Create logging properties file, for example like the below myLogging.properties&lt;br /&gt;
The entry in that file that determines where the log file will show up is the following: java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myLogging.properties&lt;br /&gt;
# ================================&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ==   Web Logging Properties   ==&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # ------------------&lt;br /&gt;
    # General properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # This defines a whitespace separated list of class names for handler classes to load and register as handlers on&lt;br /&gt;
    # the root Logger (the Logger named &amp;quot;&amp;quot;). Each class name must be for a Handler class which has a default constructor.&lt;br /&gt;
    # Note that these Handlers may be created lazily, when they are first used.&lt;br /&gt;
    handlers=java.util.logging.FileHandler&lt;br /&gt;
	# ------------------&lt;br /&gt;
    # Loggers properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
    .level=WARNING&lt;br /&gt;
    org.mortbay.level=WARNING&lt;br /&gt;
    org.restlet.level=INFO&lt;br /&gt;
    com.noelios.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    com.noelios.web.WebComponent.www.level=INFO&lt;br /&gt;
    com.noelios.web.WebComponent.www.handlers=com.noelios.restlet.util.AccessLogFileHandler&lt;br /&gt;
    com.noelios.web.WebComponent.www.useParentHandlers=false&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # ConsoleHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.INFO).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.formatter=&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.encoding=&lt;br /&gt;
	&lt;br /&gt;
	# ------------------------------&lt;br /&gt;
    # General FileHandler properties&lt;br /&gt;
    # ------------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # java.util.logging.FileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.FileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.FileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    java.util.logging.FileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    java.util.logging.FileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot;&lt;br /&gt;
    java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # java.util.logging.FileHandler.append=&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # LogFileHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.formatter=com.noelios.restlet.util.AccessLogFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot; .pattern=/home/prod/data/log/WebComponent-www-%u-%g.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # org.restlet.util.AccessLogFileHandler.append=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Tuning/Confguration (Jetty) as of Rifidi 3.4= &lt;br /&gt;
&lt;br /&gt;
As of Rifidi 3.4 Jetty was made the default HTTP container for Restlet to allow for extended performance and configuration of the REST interface.&lt;br /&gt;
&lt;br /&gt;
The parameters can for configured in the Rifidi Server (ini) configuration&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.minThreads=8	Thread pool minimum threads&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.maxThreads=200	Thread pool max threads&lt;br /&gt;
&lt;br /&gt;
Full list of Jetty parameters using the same naming convention can be found here  - http://restlet.com/technical-resources/restlet-framework/javadocs/snapshot/jse/ext/org/restlet/ext/jetty/JettyServerHelper.html&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
==Command Code Snippet - start session - example how to use Rifidi API in a Java App==&lt;br /&gt;
All Rifidi Management API Command Logic here - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/SensorManagerServiceRestletImpl.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
sensorManagerService.startSession((String) request&lt;br /&gt;
	.getAttributes().get(&amp;quot;readerID&amp;quot;), (String) request&lt;br /&gt;
		.getAttributes().get(&amp;quot;sessionID&amp;quot;));&lt;br /&gt;
	response.setEntity(self.generateReturnString(self&lt;br /&gt;
		.generateSuccessMessage()), MediaType.TEXT_XML);&lt;br /&gt;
} catch (Exception e) {&lt;br /&gt;
	response.setEntity(e.getMessage(), MediaType.TEXT_PLAIN);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Command Basic Flow Example==&lt;br /&gt;
#Create a Reader - http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
#Create a Session (on a reader/sensor)  - http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
#Create a Command (on a reader/sensor)) -/createcommand/{commandType}/{properties} &lt;br /&gt;
*Note: some readers do not require create/executing a command as there is only one command hence for convenience is part of the create session/start session  (Thinkify, CSL and Generic adapter (for handhelds/async push calls) are some examples of this)&lt;br /&gt;
#Set Command Properties - http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
#Execute Command (on a given reader/sensor and session) - http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1&lt;br /&gt;
#Start Session (to begin processing reads using associate command/reader/sensor configuration)  - http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
#Save Configuartion (optional -  to save/persist config in case of a server restart) - http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
=Command Example=&lt;br /&gt;
&lt;br /&gt;
Note: localhost can be substituted with IP address/Host name of Rifidi Edge Server. Port can be changed in Rifidi configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==commandtypes command example==&lt;br /&gt;
&lt;br /&gt;
*commandtypes - returns a list of available command types&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commandtypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commandtypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-ADD_ROSPEC-File&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader via an XML file. Any changes made to the reader are determined by the contents of the file. To generate xml code for the commands you want to submit, check out LLRP Commander here: http://www.fosstrak.org/llrp/index.html&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;ThingMagic-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the ThingMagic reader for its tags. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;ThingMagic&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Start&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Alien reader to send back tags using the autonomous mode. To monitor a read zone, configure an Alien autonomous reader to listen. Then submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader to collect tags. By default, this command will cause the LLRP reader to push back tag reads automatically. If you would rather use the Poll mode, you will need to use the LLRP Poll command. To use the LLRP Configure command, submit it for a one-time execution&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the LLRP reader to stop sending back tags. To use, supply the RO Spec that is currently executing on the reader, and submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Thingmagic6-Push&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Sets the Thingmagic to push tags back to the edge server&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Thingmagic6&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the Alien reader for its tag list. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the LLRP reader for its tags. For monitoring of the read zone, first use the LLRP Configure command to configure the LLRP reader for Poll Mode. Then submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Mask-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID With Mask command. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Alien reader to stop sending back tags in autonomous mode. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Read-Block-Data&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back memory bank tags using the Read Block Data commmand. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readertypes command example==&lt;br /&gt;
&lt;br /&gt;
*readertypes - returns a list of available reader/sensor types (such as LLRP, Alien, BarCode etc..)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readertypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readertypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Generic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;A generic Rifidi Adapter.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Opticon&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Adapter for the Opticon Barcode Sensor&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien-Autonomous&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien autonomous adapter is an endpoint to passively receive tag reads from an Alien reader operating in autonomous mode. You cannot send any commands on the alien autonomous session&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid2010&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thingmagic6&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thingmagic 6 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi LLRP adapter supports any reader that exposes a Low Level Reader Protocol (LLRP) interface. LLRP is a standard from EPCglobal.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid3014&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien adapter supports the Alien ALR protocol on the 9900, 9800, 8800 readers.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thinkify50&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thinkify TR50 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;ThingMagic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi ThingMagic adapater supports the ThingMagic RQL protocol on the Mercury 4 and Mercury 5 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader command example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader overriding default readerID command example==&lt;br /&gt;
&lt;br /&gt;
The reader id is important for applications' read zones to appropriate operate, and this id is used to link read zones with sensors. This command enables one to set the readerId versus the system generating one (default behavior).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: To override the default reader id, there must be included the property readerID, in order to assign a specific reader id and override the default. &lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletereader command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletereader/{readerID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid readerID: LLRP&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readers command example==&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readers&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
*readers - returns a list of readers/senors managed by the Edge Server&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readers  &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_2&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get reader properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{readerID} - returns the reader/sensor properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this, to get a reader properties:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;5084&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;192.168.1.48&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;DisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;null&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReaderConfigPath&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;config/SET_READER_CONFIG.llrp&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get command properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{commandID} - returns the command properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ROSpecID&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;AntennaIDs&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Duration&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1000&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;TriggerType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;PUSH&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set reader properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{readerID}/{properties}&amp;quot; - sets the reader/sensor properties&lt;br /&gt;
Note: if there is an existing session for updated reader properties to take effect the session will need to be deleted and recreated so the properties are moved to the session &lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/Alien_1/MaxNumConnectionAttempts=11;DisplayName=Alien_Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_1/IpAddress=127.0.0.15;Port=4567;att1=aa;att2=bbb;attt3=YY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: att1=aa|att2=bbb|attt3=YY&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set command properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{commandID}/{properties}&amp;quot; - sets the command properties&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=7500;cc=4;other=67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: cc=4|other=67&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==commands command example==&lt;br /&gt;
&lt;br /&gt;
*commands - returns a list of available commands&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commands&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commands&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commands&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;&lt;br /&gt;
         &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createcommand example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the command instance is created or the call fails therefore the rcommand instance is not created&lt;br /&gt;
&lt;br /&gt;
*createcomamnd/{commandType}/{properties} - creates a command to be executed on a reader session&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createcommand&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=5000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commandID&amp;gt;Alien_Poll_2&amp;lt;/commandID&amp;gt; Note: Added in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response error (if there is at least one non valid property, the command is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=4000;propX=123;prop2=AB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: propX=123|prop2=AB&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletecommand command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletecommand/{commandID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid commandID: LLRP_Configure&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createsession command example==&lt;br /&gt;
&lt;br /&gt;
*createsession/{readerID} - creates a session (with corresponding reader/sensor configuration) and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sessionID&amp;gt;1&amp;lt;/sessionID&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail -already a session for sensor id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
     java.lang.Exception: Reader Alien_1 already has a session.&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startsession command example==&lt;br /&gt;
&lt;br /&gt;
*startsession/{readerID}/{sessionID} - starts a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;startsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CONNECTING&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to start session, current state is CONNECTING  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readerstatus command example==&lt;br /&gt;
&lt;br /&gt;
*readerstatus/{readerID} - retuns teh status of a given reader/sensor&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readerstatus&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readerstatus/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensor&amp;gt;&lt;br /&gt;
      &amp;lt;serviceID&amp;gt;LLRP_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
      &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
   &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;sessions&amp;gt;&lt;br /&gt;
      &amp;lt;session&amp;gt;&lt;br /&gt;
         &amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;&lt;br /&gt;
         &amp;lt;status&amp;gt;PROCESSING&amp;lt;/status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;executingcommands&amp;gt;&lt;br /&gt;
            &amp;lt;executingcommand&amp;gt;&lt;br /&gt;
               &amp;lt;commandFactory&amp;gt;LLRP-Configure&amp;lt;/commandFactory&amp;gt;&lt;br /&gt;
              &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
              &amp;lt;interval&amp;gt;0&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;/executingcommand&amp;gt;&lt;br /&gt;
        &amp;lt;/executingcommands&amp;gt;&lt;br /&gt;
      &amp;lt;/session&amp;gt;&lt;br /&gt;
   &amp;lt;/sessions&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==stopsession command example==&lt;br /&gt;
&lt;br /&gt;
*stopsession/{readerID}/{sessionID} - stops a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;stopsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/stopsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CREATED&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to stop session, current state is CREATED  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==resetsession command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/resetsession/{readerID}/{sessionID}&lt;br /&gt;
&lt;br /&gt;
Used to stop and start an existing reader session&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/resetsession/LLRP_1/1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
==executecommand command example==&lt;br /&gt;
&lt;br /&gt;
*executecommand/{readerID}/{sessionID}/{commandID}/{repeatInterval} - Executes a command for a given session&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;executecommand&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/0 (for single shot - one time execution)&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletesession command example==&lt;br /&gt;
&lt;br /&gt;
*deletesession/{readerID}/{sessionID} - deletes a session and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;deletesession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletesession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==save command example==&lt;br /&gt;
&lt;br /&gt;
*save - Saves the current state of the Edge Server configuration (such as created readers/sensors, modified properties etc..&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;save&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ping - Used by failover feature==&lt;br /&gt;
*ping -  Returns a date/timestamp&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;ping&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/ping&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp&amp;gt;1414610247969&amp;lt;/timestamp&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==currenttags example (released in Rifidi 3.4)==&lt;br /&gt;
*currenttags/{readerID} -  Returns a list of tags on a given reader&lt;br /&gt;
&lt;br /&gt;
Note: timestamp, reader and RSSI added in 3.5.1&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;currenttags&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/currenttags/LLRP_1 &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;currenttags&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
   &amp;lt;/currenttags&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readermetadata - Used by Web Administration Dashboard for Dynamic Reader &amp;amp; Command Properties/Wizard (released in 3.2)==&lt;br /&gt;
*readermetadata-  Returns reader metadata&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readermetadata&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readermetadata&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;readers&amp;gt;&lt;br /&gt;
  &amp;lt;reader&amp;gt;&lt;br /&gt;
   &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;ReconnectionInterval&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Reconnection Interval&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;500&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;&lt;br /&gt;
     Upon connection failure, the time to wait between two connection attempts (ms)&lt;br /&gt;
     &amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;4.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Port&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Port&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;8090&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Port of the Reader&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;maxvalue&amp;gt;65535&amp;lt;/maxvalue&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;1.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thinkify RCS Command - Used for one time configuration of a Thinkify USB reader (Deprecated in 3.5.1)==&lt;br /&gt;
*rcs/{Thinkify Reader ID}/{sessionid}&lt;br /&gt;
&lt;br /&gt;
request (via HTTP Post/Get) &amp;quot;rcs&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/rcs/ThinkifyUSB_1/1&lt;br /&gt;
&lt;br /&gt;
==startbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/startbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==stopbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/stopbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to install a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==installbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/installbundle&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to start a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/installbundle&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==uninstallbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/uninstallbundle/{bundleID}&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to uninstall a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/uninstallbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==ss OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/ss&lt;br /&gt;
&lt;br /&gt;
Used to list the OSGI bundles&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/ss&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.osgi&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.weaving.hook&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;RESOLVED&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.simpleconfigurator&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;com.sun.mail.javax.mail&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*/setgpo/{readerID}/{sessionID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to set gpo&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/setgpo/LLRP/1/1,2,3,4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flash GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//flashgpo/{readerID}/{sessionID}/{ports}/{duration in seconds}&lt;br /&gt;
&lt;br /&gt;
Used to turn gpo on for a specified duration such as Flashing a light on for 4 seconds then turn it off again&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/flashgpo/LLRP/1/1,2,3&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Management</id>
		<title>Edge Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Management"/>
				<updated>2020-03-05T11:27:39Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* Flash GPO Command Example (coming soon in Rifidi 3.8.1) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Starting in 3.1 Edge Management is now accessible though Restful Services (leveraging [http://restlet.com/ Restlet plugin]. Restlet allows all Rifidi Edge Management operations available through workbench to be accessible via Restful Services.Prior to Rifidi 3.1 Edge Management is available through RMI (currently used by Rifidi Workbench if looking for code examples). &lt;br /&gt;
&lt;br /&gt;
The types of operations available through Restful Services include:&lt;br /&gt;
*All &amp;quot;session&amp;quot; commands (for stopping and starting reader/sensor sessions)&lt;br /&gt;
*ExecuteCommand and deleteCommand  (for commands supported by a sensor such as a tag read)&lt;br /&gt;
*Readers (for getting a list of readers/sensors available on Edge Server instance)&lt;br /&gt;
*Commands (for issuing command line operations such as saving the Edge Server Configuration currently in memory)&lt;br /&gt;
*Get and Set Properties (for setting and getting sensor properties such as Setting the LLRP Reader Configuration dynamically)&lt;br /&gt;
*Create Reader (for creating a new reader connection)&lt;br /&gt;
*Managing Rifidi Applications (for stopping/starting, listing and deploying Rifidi Apps)&lt;br /&gt;
&lt;br /&gt;
Additional features can be found on [http://restlet.com/ Restlet User Guide ]&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
In rifidiserver.ini  - A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.port=8111&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.enabled=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source for Restful Rifidi Management Commands - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/&lt;br /&gt;
&lt;br /&gt;
=Configuration (HTTP over SSL) - Available as of version 3.1.1= &lt;br /&gt;
&lt;br /&gt;
A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SSL Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.port=8183&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.ssl.enabled=true&lt;br /&gt;
#Keystore Path&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepath=\config\serverX.jks&lt;br /&gt;
#Key store password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepassword=password&lt;br /&gt;
#Key Password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keypassword=password&lt;br /&gt;
#Key store Type&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystoretype=JKS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Note: Link to how to configure/setup certificates with REST - http://restlet.com/learn/guide/2.3/core/security/https&lt;br /&gt;
==REST HTTP over SSL Example Application==&lt;br /&gt;
link to https java client example - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge.rest/src/org/rifidi/edge/rest/test/HttpsTestClient.java&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user can add this jvm parameter to see detailed messages if getting any &lt;br /&gt;
trouble when running this example:&lt;br /&gt;
-Djavax.net.debug=all&lt;br /&gt;
&lt;br /&gt;
In order t0 successful get the https response from stand alone java &lt;br /&gt;
example, user must import the certificate into JVM:&lt;br /&gt;
&lt;br /&gt;
open command windows as administrator and execute keytool -import, like:&lt;br /&gt;
&lt;br /&gt;
keytool -import -alias localhost -keystore &amp;quot;C:\Program Files &lt;br /&gt;
(x86)\Java\jdk1.6.0_45\jre\lib\security\cacerts&amp;quot; -file &lt;br /&gt;
&amp;quot;D:\tmp\cert\localhost.cer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if requested, default password is: changeit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Logging= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1. Add an entry to the rifidiserver.ini (if using windows; when using linux you add this JVM argument in the rifidi-server executable):&lt;br /&gt;
-Djava.util.logging.config.file=d:/myLogging.properties&lt;br /&gt;
&lt;br /&gt;
*2. Create logging properties file, for example like the below myLogging.properties&lt;br /&gt;
The entry in that file that determines where the log file will show up is the following: java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myLogging.properties&lt;br /&gt;
# ================================&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ==   Web Logging Properties   ==&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # ------------------&lt;br /&gt;
    # General properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # This defines a whitespace separated list of class names for handler classes to load and register as handlers on&lt;br /&gt;
    # the root Logger (the Logger named &amp;quot;&amp;quot;). Each class name must be for a Handler class which has a default constructor.&lt;br /&gt;
    # Note that these Handlers may be created lazily, when they are first used.&lt;br /&gt;
    handlers=java.util.logging.FileHandler&lt;br /&gt;
	# ------------------&lt;br /&gt;
    # Loggers properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
    .level=WARNING&lt;br /&gt;
    org.mortbay.level=WARNING&lt;br /&gt;
    org.restlet.level=INFO&lt;br /&gt;
    com.noelios.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    com.noelios.web.WebComponent.www.level=INFO&lt;br /&gt;
    com.noelios.web.WebComponent.www.handlers=com.noelios.restlet.util.AccessLogFileHandler&lt;br /&gt;
    com.noelios.web.WebComponent.www.useParentHandlers=false&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # ConsoleHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.INFO).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.formatter=&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.encoding=&lt;br /&gt;
	&lt;br /&gt;
	# ------------------------------&lt;br /&gt;
    # General FileHandler properties&lt;br /&gt;
    # ------------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # java.util.logging.FileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.FileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.FileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    java.util.logging.FileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    java.util.logging.FileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot;&lt;br /&gt;
    java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # java.util.logging.FileHandler.append=&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # LogFileHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.formatter=com.noelios.restlet.util.AccessLogFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot; .pattern=/home/prod/data/log/WebComponent-www-%u-%g.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # org.restlet.util.AccessLogFileHandler.append=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Tuning/Confguration (Jetty) as of Rifidi 3.4= &lt;br /&gt;
&lt;br /&gt;
As of Rifidi 3.4 Jetty was made the default HTTP container for Restlet to allow for extended performance and configuration of the REST interface.&lt;br /&gt;
&lt;br /&gt;
The parameters can for configured in the Rifidi Server (ini) configuration&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.minThreads=8	Thread pool minimum threads&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.maxThreads=200	Thread pool max threads&lt;br /&gt;
&lt;br /&gt;
Full list of Jetty parameters using the same naming convention can be found here  - http://restlet.com/technical-resources/restlet-framework/javadocs/snapshot/jse/ext/org/restlet/ext/jetty/JettyServerHelper.html&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
==Command Code Snippet - start session - example how to use Rifidi API in a Java App==&lt;br /&gt;
All Rifidi Management API Command Logic here - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/SensorManagerServiceRestletImpl.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
sensorManagerService.startSession((String) request&lt;br /&gt;
	.getAttributes().get(&amp;quot;readerID&amp;quot;), (String) request&lt;br /&gt;
		.getAttributes().get(&amp;quot;sessionID&amp;quot;));&lt;br /&gt;
	response.setEntity(self.generateReturnString(self&lt;br /&gt;
		.generateSuccessMessage()), MediaType.TEXT_XML);&lt;br /&gt;
} catch (Exception e) {&lt;br /&gt;
	response.setEntity(e.getMessage(), MediaType.TEXT_PLAIN);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Command Basic Flow Example==&lt;br /&gt;
#Create a Reader - http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
#Create a Session (on a reader/sensor)  - http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
#Create a Command (on a reader/sensor)) -/createcommand/{commandType}/{properties} &lt;br /&gt;
*Note: some readers do not require create/executing a command as there is only one command hence for convenience is part of the create session/start session  (Thinkify, CSL and Generic adapter (for handhelds/async push calls) are some examples of this)&lt;br /&gt;
#Set Command Properties - http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
#Execute Command (on a given reader/sensor and session) - http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1&lt;br /&gt;
#Start Session (to begin processing reads using associate command/reader/sensor configuration)  - http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
#Save Configuartion (optional -  to save/persist config in case of a server restart) - http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
=Command Example=&lt;br /&gt;
&lt;br /&gt;
Note: localhost can be substituted with IP address/Host name of Rifidi Edge Server. Port can be changed in Rifidi configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==commandtypes command example==&lt;br /&gt;
&lt;br /&gt;
*commandtypes - returns a list of available command types&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commandtypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commandtypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-ADD_ROSPEC-File&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader via an XML file. Any changes made to the reader are determined by the contents of the file. To generate xml code for the commands you want to submit, check out LLRP Commander here: http://www.fosstrak.org/llrp/index.html&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;ThingMagic-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the ThingMagic reader for its tags. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;ThingMagic&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Start&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Alien reader to send back tags using the autonomous mode. To monitor a read zone, configure an Alien autonomous reader to listen. Then submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader to collect tags. By default, this command will cause the LLRP reader to push back tag reads automatically. If you would rather use the Poll mode, you will need to use the LLRP Poll command. To use the LLRP Configure command, submit it for a one-time execution&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the LLRP reader to stop sending back tags. To use, supply the RO Spec that is currently executing on the reader, and submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Thingmagic6-Push&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Sets the Thingmagic to push tags back to the edge server&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Thingmagic6&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the Alien reader for its tag list. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the LLRP reader for its tags. For monitoring of the read zone, first use the LLRP Configure command to configure the LLRP reader for Poll Mode. Then submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Mask-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID With Mask command. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Alien reader to stop sending back tags in autonomous mode. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Read-Block-Data&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back memory bank tags using the Read Block Data commmand. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readertypes command example==&lt;br /&gt;
&lt;br /&gt;
*readertypes - returns a list of available reader/sensor types (such as LLRP, Alien, BarCode etc..)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readertypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readertypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Generic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;A generic Rifidi Adapter.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Opticon&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Adapter for the Opticon Barcode Sensor&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien-Autonomous&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien autonomous adapter is an endpoint to passively receive tag reads from an Alien reader operating in autonomous mode. You cannot send any commands on the alien autonomous session&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid2010&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thingmagic6&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thingmagic 6 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi LLRP adapter supports any reader that exposes a Low Level Reader Protocol (LLRP) interface. LLRP is a standard from EPCglobal.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid3014&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien adapter supports the Alien ALR protocol on the 9900, 9800, 8800 readers.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thinkify50&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thinkify TR50 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;ThingMagic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi ThingMagic adapater supports the ThingMagic RQL protocol on the Mercury 4 and Mercury 5 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader command example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader overriding default readerID command example==&lt;br /&gt;
&lt;br /&gt;
The reader id is important for applications' read zones to appropriate operate, and this id is used to link read zones with sensors. This command enables one to set the readerId versus the system generating one (default behavior).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: To override the default reader id, there must be included the property readerID, in order to assign a specific reader id and override the default. &lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletereader command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletereader/{readerID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid readerID: LLRP&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readers command example==&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readers&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
*readers - returns a list of readers/senors managed by the Edge Server&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readers  &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_2&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get reader properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{readerID} - returns the reader/sensor properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this, to get a reader properties:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;5084&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;192.168.1.48&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;DisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;null&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReaderConfigPath&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;config/SET_READER_CONFIG.llrp&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get command properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{commandID} - returns the command properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ROSpecID&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;AntennaIDs&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Duration&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1000&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;TriggerType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;PUSH&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set reader properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{readerID}/{properties}&amp;quot; - sets the reader/sensor properties&lt;br /&gt;
Note: if there is an existing session for updated reader properties to take effect the session will need to be deleted and recreated so the properties are moved to the session &lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/Alien_1/MaxNumConnectionAttempts=11;DisplayName=Alien_Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_1/IpAddress=127.0.0.15;Port=4567;att1=aa;att2=bbb;attt3=YY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: att1=aa|att2=bbb|attt3=YY&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set command properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{commandID}/{properties}&amp;quot; - sets the command properties&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=7500;cc=4;other=67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: cc=4|other=67&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==commands command example==&lt;br /&gt;
&lt;br /&gt;
*commands - returns a list of available commands&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commands&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commands&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commands&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;&lt;br /&gt;
         &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createcommand example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the command instance is created or the call fails therefore the rcommand instance is not created&lt;br /&gt;
&lt;br /&gt;
*createcomamnd/{commandType}/{properties} - creates a command to be executed on a reader session&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createcommand&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=5000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commandID&amp;gt;Alien_Poll_2&amp;lt;/commandID&amp;gt; Note: Added in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response error (if there is at least one non valid property, the command is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=4000;propX=123;prop2=AB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: propX=123|prop2=AB&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletecommand command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletecommand/{commandID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid commandID: LLRP_Configure&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createsession command example==&lt;br /&gt;
&lt;br /&gt;
*createsession/{readerID} - creates a session (with corresponding reader/sensor configuration) and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sessionID&amp;gt;1&amp;lt;/sessionID&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail -already a session for sensor id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
     java.lang.Exception: Reader Alien_1 already has a session.&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startsession command example==&lt;br /&gt;
&lt;br /&gt;
*startsession/{readerID}/{sessionID} - starts a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;startsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CONNECTING&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to start session, current state is CONNECTING  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readerstatus command example==&lt;br /&gt;
&lt;br /&gt;
*readerstatus/{readerID} - retuns teh status of a given reader/sensor&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readerstatus&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readerstatus/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensor&amp;gt;&lt;br /&gt;
      &amp;lt;serviceID&amp;gt;LLRP_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
      &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
   &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;sessions&amp;gt;&lt;br /&gt;
      &amp;lt;session&amp;gt;&lt;br /&gt;
         &amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;&lt;br /&gt;
         &amp;lt;status&amp;gt;PROCESSING&amp;lt;/status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;executingcommands&amp;gt;&lt;br /&gt;
            &amp;lt;executingcommand&amp;gt;&lt;br /&gt;
               &amp;lt;commandFactory&amp;gt;LLRP-Configure&amp;lt;/commandFactory&amp;gt;&lt;br /&gt;
              &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
              &amp;lt;interval&amp;gt;0&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;/executingcommand&amp;gt;&lt;br /&gt;
        &amp;lt;/executingcommands&amp;gt;&lt;br /&gt;
      &amp;lt;/session&amp;gt;&lt;br /&gt;
   &amp;lt;/sessions&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==stopsession command example==&lt;br /&gt;
&lt;br /&gt;
*stopsession/{readerID}/{sessionID} - stops a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;stopsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/stopsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CREATED&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to stop session, current state is CREATED  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==resetsession command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/resetsession/{readerID}/{sessionID}&lt;br /&gt;
&lt;br /&gt;
Used to stop and start an existing reader session&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/resetsession/LLRP_1/1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
==executecommand command example==&lt;br /&gt;
&lt;br /&gt;
*executecommand/{readerID}/{sessionID}/{commandID}/{repeatInterval} - Executes a command for a given session&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;executecommand&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/0 (for single shot - one time execution)&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletesession command example==&lt;br /&gt;
&lt;br /&gt;
*deletesession/{readerID}/{sessionID} - deletes a session and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;deletesession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletesession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==save command example==&lt;br /&gt;
&lt;br /&gt;
*save - Saves the current state of the Edge Server configuration (such as created readers/sensors, modified properties etc..&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;save&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ping - Used by failover feature==&lt;br /&gt;
*ping -  Returns a date/timestamp&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;ping&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/ping&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp&amp;gt;1414610247969&amp;lt;/timestamp&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==currenttags example (released in Rifidi 3.4)==&lt;br /&gt;
*currenttags/{readerID} -  Returns a list of tags on a given reader&lt;br /&gt;
&lt;br /&gt;
Note: timestamp, reader and RSSI added in 3.5.1&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;currenttags&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/currenttags/LLRP_1 &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;currenttags&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
   &amp;lt;/currenttags&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readermetadata - Used by Web Administration Dashboard for Dynamic Reader &amp;amp; Command Properties/Wizard (released in 3.2)==&lt;br /&gt;
*readermetadata-  Returns reader metadata&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readermetadata&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readermetadata&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;readers&amp;gt;&lt;br /&gt;
  &amp;lt;reader&amp;gt;&lt;br /&gt;
   &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;ReconnectionInterval&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Reconnection Interval&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;500&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;&lt;br /&gt;
     Upon connection failure, the time to wait between two connection attempts (ms)&lt;br /&gt;
     &amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;4.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Port&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Port&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;8090&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Port of the Reader&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;maxvalue&amp;gt;65535&amp;lt;/maxvalue&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;1.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thinkify RCS Command - Used for one time configuration of a Thinkify USB reader (Deprecated in 3.5.1)==&lt;br /&gt;
*rcs/{Thinkify Reader ID}/{sessionid}&lt;br /&gt;
&lt;br /&gt;
request (via HTTP Post/Get) &amp;quot;rcs&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/rcs/ThinkifyUSB_1/1&lt;br /&gt;
&lt;br /&gt;
==startbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/startbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==stopbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/stopbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to install a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==installbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/installbundle&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to start a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/installbundle&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==uninstallbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/uninstallbundle/{bundleID}&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to uninstall a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/uninstallbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==ss OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/ss&lt;br /&gt;
&lt;br /&gt;
Used to list the OSGI bundles&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/ss&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.osgi&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.weaving.hook&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;RESOLVED&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.simpleconfigurator&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;com.sun.mail.javax.mail&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*/setgpo/{readerID}/{sessionID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to set gpo&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/setgpo/LLRP/1,2,3,4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flash GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//flashgpo/{readerID}/{sessionID}/{ports}/{duration in seconds}&lt;br /&gt;
&lt;br /&gt;
Used to turn gpo on for a specified duration such as Flashing a light on for 4 seconds then turn it off again&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/flashgpo/LLRP/1/1,2,3&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Management</id>
		<title>Edge Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Management"/>
				<updated>2020-03-05T11:27:02Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* Set GPO Command Example (coming soon in Rifidi 3.8.1) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Starting in 3.1 Edge Management is now accessible though Restful Services (leveraging [http://restlet.com/ Restlet plugin]. Restlet allows all Rifidi Edge Management operations available through workbench to be accessible via Restful Services.Prior to Rifidi 3.1 Edge Management is available through RMI (currently used by Rifidi Workbench if looking for code examples). &lt;br /&gt;
&lt;br /&gt;
The types of operations available through Restful Services include:&lt;br /&gt;
*All &amp;quot;session&amp;quot; commands (for stopping and starting reader/sensor sessions)&lt;br /&gt;
*ExecuteCommand and deleteCommand  (for commands supported by a sensor such as a tag read)&lt;br /&gt;
*Readers (for getting a list of readers/sensors available on Edge Server instance)&lt;br /&gt;
*Commands (for issuing command line operations such as saving the Edge Server Configuration currently in memory)&lt;br /&gt;
*Get and Set Properties (for setting and getting sensor properties such as Setting the LLRP Reader Configuration dynamically)&lt;br /&gt;
*Create Reader (for creating a new reader connection)&lt;br /&gt;
*Managing Rifidi Applications (for stopping/starting, listing and deploying Rifidi Apps)&lt;br /&gt;
&lt;br /&gt;
Additional features can be found on [http://restlet.com/ Restlet User Guide ]&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
In rifidiserver.ini  - A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.port=8111&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.enabled=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source for Restful Rifidi Management Commands - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/&lt;br /&gt;
&lt;br /&gt;
=Configuration (HTTP over SSL) - Available as of version 3.1.1= &lt;br /&gt;
&lt;br /&gt;
A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SSL Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.port=8183&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.ssl.enabled=true&lt;br /&gt;
#Keystore Path&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepath=\config\serverX.jks&lt;br /&gt;
#Key store password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepassword=password&lt;br /&gt;
#Key Password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keypassword=password&lt;br /&gt;
#Key store Type&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystoretype=JKS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Note: Link to how to configure/setup certificates with REST - http://restlet.com/learn/guide/2.3/core/security/https&lt;br /&gt;
==REST HTTP over SSL Example Application==&lt;br /&gt;
link to https java client example - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge.rest/src/org/rifidi/edge/rest/test/HttpsTestClient.java&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user can add this jvm parameter to see detailed messages if getting any &lt;br /&gt;
trouble when running this example:&lt;br /&gt;
-Djavax.net.debug=all&lt;br /&gt;
&lt;br /&gt;
In order t0 successful get the https response from stand alone java &lt;br /&gt;
example, user must import the certificate into JVM:&lt;br /&gt;
&lt;br /&gt;
open command windows as administrator and execute keytool -import, like:&lt;br /&gt;
&lt;br /&gt;
keytool -import -alias localhost -keystore &amp;quot;C:\Program Files &lt;br /&gt;
(x86)\Java\jdk1.6.0_45\jre\lib\security\cacerts&amp;quot; -file &lt;br /&gt;
&amp;quot;D:\tmp\cert\localhost.cer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if requested, default password is: changeit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Logging= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1. Add an entry to the rifidiserver.ini (if using windows; when using linux you add this JVM argument in the rifidi-server executable):&lt;br /&gt;
-Djava.util.logging.config.file=d:/myLogging.properties&lt;br /&gt;
&lt;br /&gt;
*2. Create logging properties file, for example like the below myLogging.properties&lt;br /&gt;
The entry in that file that determines where the log file will show up is the following: java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myLogging.properties&lt;br /&gt;
# ================================&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ==   Web Logging Properties   ==&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # ------------------&lt;br /&gt;
    # General properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # This defines a whitespace separated list of class names for handler classes to load and register as handlers on&lt;br /&gt;
    # the root Logger (the Logger named &amp;quot;&amp;quot;). Each class name must be for a Handler class which has a default constructor.&lt;br /&gt;
    # Note that these Handlers may be created lazily, when they are first used.&lt;br /&gt;
    handlers=java.util.logging.FileHandler&lt;br /&gt;
	# ------------------&lt;br /&gt;
    # Loggers properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
    .level=WARNING&lt;br /&gt;
    org.mortbay.level=WARNING&lt;br /&gt;
    org.restlet.level=INFO&lt;br /&gt;
    com.noelios.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    com.noelios.web.WebComponent.www.level=INFO&lt;br /&gt;
    com.noelios.web.WebComponent.www.handlers=com.noelios.restlet.util.AccessLogFileHandler&lt;br /&gt;
    com.noelios.web.WebComponent.www.useParentHandlers=false&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # ConsoleHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.INFO).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.formatter=&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.encoding=&lt;br /&gt;
	&lt;br /&gt;
	# ------------------------------&lt;br /&gt;
    # General FileHandler properties&lt;br /&gt;
    # ------------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # java.util.logging.FileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.FileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.FileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    java.util.logging.FileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    java.util.logging.FileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot;&lt;br /&gt;
    java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # java.util.logging.FileHandler.append=&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # LogFileHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.formatter=com.noelios.restlet.util.AccessLogFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot; .pattern=/home/prod/data/log/WebComponent-www-%u-%g.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # org.restlet.util.AccessLogFileHandler.append=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Tuning/Confguration (Jetty) as of Rifidi 3.4= &lt;br /&gt;
&lt;br /&gt;
As of Rifidi 3.4 Jetty was made the default HTTP container for Restlet to allow for extended performance and configuration of the REST interface.&lt;br /&gt;
&lt;br /&gt;
The parameters can for configured in the Rifidi Server (ini) configuration&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.minThreads=8	Thread pool minimum threads&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.maxThreads=200	Thread pool max threads&lt;br /&gt;
&lt;br /&gt;
Full list of Jetty parameters using the same naming convention can be found here  - http://restlet.com/technical-resources/restlet-framework/javadocs/snapshot/jse/ext/org/restlet/ext/jetty/JettyServerHelper.html&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
==Command Code Snippet - start session - example how to use Rifidi API in a Java App==&lt;br /&gt;
All Rifidi Management API Command Logic here - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/SensorManagerServiceRestletImpl.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
sensorManagerService.startSession((String) request&lt;br /&gt;
	.getAttributes().get(&amp;quot;readerID&amp;quot;), (String) request&lt;br /&gt;
		.getAttributes().get(&amp;quot;sessionID&amp;quot;));&lt;br /&gt;
	response.setEntity(self.generateReturnString(self&lt;br /&gt;
		.generateSuccessMessage()), MediaType.TEXT_XML);&lt;br /&gt;
} catch (Exception e) {&lt;br /&gt;
	response.setEntity(e.getMessage(), MediaType.TEXT_PLAIN);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Command Basic Flow Example==&lt;br /&gt;
#Create a Reader - http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
#Create a Session (on a reader/sensor)  - http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
#Create a Command (on a reader/sensor)) -/createcommand/{commandType}/{properties} &lt;br /&gt;
*Note: some readers do not require create/executing a command as there is only one command hence for convenience is part of the create session/start session  (Thinkify, CSL and Generic adapter (for handhelds/async push calls) are some examples of this)&lt;br /&gt;
#Set Command Properties - http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
#Execute Command (on a given reader/sensor and session) - http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1&lt;br /&gt;
#Start Session (to begin processing reads using associate command/reader/sensor configuration)  - http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
#Save Configuartion (optional -  to save/persist config in case of a server restart) - http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
=Command Example=&lt;br /&gt;
&lt;br /&gt;
Note: localhost can be substituted with IP address/Host name of Rifidi Edge Server. Port can be changed in Rifidi configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==commandtypes command example==&lt;br /&gt;
&lt;br /&gt;
*commandtypes - returns a list of available command types&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commandtypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commandtypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-ADD_ROSPEC-File&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader via an XML file. Any changes made to the reader are determined by the contents of the file. To generate xml code for the commands you want to submit, check out LLRP Commander here: http://www.fosstrak.org/llrp/index.html&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;ThingMagic-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the ThingMagic reader for its tags. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;ThingMagic&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Start&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Alien reader to send back tags using the autonomous mode. To monitor a read zone, configure an Alien autonomous reader to listen. Then submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader to collect tags. By default, this command will cause the LLRP reader to push back tag reads automatically. If you would rather use the Poll mode, you will need to use the LLRP Poll command. To use the LLRP Configure command, submit it for a one-time execution&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the LLRP reader to stop sending back tags. To use, supply the RO Spec that is currently executing on the reader, and submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Thingmagic6-Push&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Sets the Thingmagic to push tags back to the edge server&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Thingmagic6&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the Alien reader for its tag list. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the LLRP reader for its tags. For monitoring of the read zone, first use the LLRP Configure command to configure the LLRP reader for Poll Mode. Then submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Mask-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID With Mask command. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Alien reader to stop sending back tags in autonomous mode. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Read-Block-Data&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back memory bank tags using the Read Block Data commmand. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readertypes command example==&lt;br /&gt;
&lt;br /&gt;
*readertypes - returns a list of available reader/sensor types (such as LLRP, Alien, BarCode etc..)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readertypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readertypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Generic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;A generic Rifidi Adapter.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Opticon&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Adapter for the Opticon Barcode Sensor&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien-Autonomous&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien autonomous adapter is an endpoint to passively receive tag reads from an Alien reader operating in autonomous mode. You cannot send any commands on the alien autonomous session&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid2010&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thingmagic6&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thingmagic 6 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi LLRP adapter supports any reader that exposes a Low Level Reader Protocol (LLRP) interface. LLRP is a standard from EPCglobal.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid3014&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien adapter supports the Alien ALR protocol on the 9900, 9800, 8800 readers.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thinkify50&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thinkify TR50 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;ThingMagic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi ThingMagic adapater supports the ThingMagic RQL protocol on the Mercury 4 and Mercury 5 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader command example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader overriding default readerID command example==&lt;br /&gt;
&lt;br /&gt;
The reader id is important for applications' read zones to appropriate operate, and this id is used to link read zones with sensors. This command enables one to set the readerId versus the system generating one (default behavior).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: To override the default reader id, there must be included the property readerID, in order to assign a specific reader id and override the default. &lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletereader command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletereader/{readerID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid readerID: LLRP&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readers command example==&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readers&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
*readers - returns a list of readers/senors managed by the Edge Server&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readers  &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_2&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get reader properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{readerID} - returns the reader/sensor properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this, to get a reader properties:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;5084&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;192.168.1.48&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;DisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;null&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReaderConfigPath&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;config/SET_READER_CONFIG.llrp&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get command properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{commandID} - returns the command properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ROSpecID&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;AntennaIDs&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Duration&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1000&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;TriggerType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;PUSH&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set reader properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{readerID}/{properties}&amp;quot; - sets the reader/sensor properties&lt;br /&gt;
Note: if there is an existing session for updated reader properties to take effect the session will need to be deleted and recreated so the properties are moved to the session &lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/Alien_1/MaxNumConnectionAttempts=11;DisplayName=Alien_Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_1/IpAddress=127.0.0.15;Port=4567;att1=aa;att2=bbb;attt3=YY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: att1=aa|att2=bbb|attt3=YY&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set command properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{commandID}/{properties}&amp;quot; - sets the command properties&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=7500;cc=4;other=67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: cc=4|other=67&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==commands command example==&lt;br /&gt;
&lt;br /&gt;
*commands - returns a list of available commands&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commands&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commands&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commands&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;&lt;br /&gt;
         &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createcommand example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the command instance is created or the call fails therefore the rcommand instance is not created&lt;br /&gt;
&lt;br /&gt;
*createcomamnd/{commandType}/{properties} - creates a command to be executed on a reader session&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createcommand&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=5000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commandID&amp;gt;Alien_Poll_2&amp;lt;/commandID&amp;gt; Note: Added in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response error (if there is at least one non valid property, the command is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=4000;propX=123;prop2=AB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: propX=123|prop2=AB&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletecommand command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletecommand/{commandID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid commandID: LLRP_Configure&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createsession command example==&lt;br /&gt;
&lt;br /&gt;
*createsession/{readerID} - creates a session (with corresponding reader/sensor configuration) and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sessionID&amp;gt;1&amp;lt;/sessionID&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail -already a session for sensor id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
     java.lang.Exception: Reader Alien_1 already has a session.&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startsession command example==&lt;br /&gt;
&lt;br /&gt;
*startsession/{readerID}/{sessionID} - starts a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;startsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CONNECTING&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to start session, current state is CONNECTING  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readerstatus command example==&lt;br /&gt;
&lt;br /&gt;
*readerstatus/{readerID} - retuns teh status of a given reader/sensor&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readerstatus&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readerstatus/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensor&amp;gt;&lt;br /&gt;
      &amp;lt;serviceID&amp;gt;LLRP_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
      &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
   &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;sessions&amp;gt;&lt;br /&gt;
      &amp;lt;session&amp;gt;&lt;br /&gt;
         &amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;&lt;br /&gt;
         &amp;lt;status&amp;gt;PROCESSING&amp;lt;/status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;executingcommands&amp;gt;&lt;br /&gt;
            &amp;lt;executingcommand&amp;gt;&lt;br /&gt;
               &amp;lt;commandFactory&amp;gt;LLRP-Configure&amp;lt;/commandFactory&amp;gt;&lt;br /&gt;
              &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
              &amp;lt;interval&amp;gt;0&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;/executingcommand&amp;gt;&lt;br /&gt;
        &amp;lt;/executingcommands&amp;gt;&lt;br /&gt;
      &amp;lt;/session&amp;gt;&lt;br /&gt;
   &amp;lt;/sessions&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==stopsession command example==&lt;br /&gt;
&lt;br /&gt;
*stopsession/{readerID}/{sessionID} - stops a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;stopsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/stopsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CREATED&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to stop session, current state is CREATED  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==resetsession command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/resetsession/{readerID}/{sessionID}&lt;br /&gt;
&lt;br /&gt;
Used to stop and start an existing reader session&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/resetsession/LLRP_1/1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
==executecommand command example==&lt;br /&gt;
&lt;br /&gt;
*executecommand/{readerID}/{sessionID}/{commandID}/{repeatInterval} - Executes a command for a given session&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;executecommand&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/0 (for single shot - one time execution)&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletesession command example==&lt;br /&gt;
&lt;br /&gt;
*deletesession/{readerID}/{sessionID} - deletes a session and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;deletesession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletesession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==save command example==&lt;br /&gt;
&lt;br /&gt;
*save - Saves the current state of the Edge Server configuration (such as created readers/sensors, modified properties etc..&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;save&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ping - Used by failover feature==&lt;br /&gt;
*ping -  Returns a date/timestamp&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;ping&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/ping&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp&amp;gt;1414610247969&amp;lt;/timestamp&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==currenttags example (released in Rifidi 3.4)==&lt;br /&gt;
*currenttags/{readerID} -  Returns a list of tags on a given reader&lt;br /&gt;
&lt;br /&gt;
Note: timestamp, reader and RSSI added in 3.5.1&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;currenttags&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/currenttags/LLRP_1 &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;currenttags&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
   &amp;lt;/currenttags&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readermetadata - Used by Web Administration Dashboard for Dynamic Reader &amp;amp; Command Properties/Wizard (released in 3.2)==&lt;br /&gt;
*readermetadata-  Returns reader metadata&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readermetadata&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readermetadata&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;readers&amp;gt;&lt;br /&gt;
  &amp;lt;reader&amp;gt;&lt;br /&gt;
   &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;ReconnectionInterval&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Reconnection Interval&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;500&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;&lt;br /&gt;
     Upon connection failure, the time to wait between two connection attempts (ms)&lt;br /&gt;
     &amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;4.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Port&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Port&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;8090&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Port of the Reader&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;maxvalue&amp;gt;65535&amp;lt;/maxvalue&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;1.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thinkify RCS Command - Used for one time configuration of a Thinkify USB reader (Deprecated in 3.5.1)==&lt;br /&gt;
*rcs/{Thinkify Reader ID}/{sessionid}&lt;br /&gt;
&lt;br /&gt;
request (via HTTP Post/Get) &amp;quot;rcs&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/rcs/ThinkifyUSB_1/1&lt;br /&gt;
&lt;br /&gt;
==startbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/startbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==stopbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/stopbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to install a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==installbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/installbundle&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to start a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/installbundle&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==uninstallbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/uninstallbundle/{bundleID}&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to uninstall a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/uninstallbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==ss OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/ss&lt;br /&gt;
&lt;br /&gt;
Used to list the OSGI bundles&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/ss&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.osgi&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.weaving.hook&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;RESOLVED&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.simpleconfigurator&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;com.sun.mail.javax.mail&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*/setgpo/{readerID}/{sessionID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to set gpo&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/setgpo/LLRP/1,2,3,4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flash GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//flashgpo/{readerID}/{ports}/{duration in seconds}&lt;br /&gt;
&lt;br /&gt;
Used to turn gpo on for a specified duration such as Flashing a light on for 4 seconds then turn it off again&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/flashgpo/LLRP/1,2/4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Management</id>
		<title>Edge Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Management"/>
				<updated>2020-02-26T19:20:20Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* Flash GPO Command Example (coming soon in Rifidi 3.8.1) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Starting in 3.1 Edge Management is now accessible though Restful Services (leveraging [http://restlet.com/ Restlet plugin]. Restlet allows all Rifidi Edge Management operations available through workbench to be accessible via Restful Services.Prior to Rifidi 3.1 Edge Management is available through RMI (currently used by Rifidi Workbench if looking for code examples). &lt;br /&gt;
&lt;br /&gt;
The types of operations available through Restful Services include:&lt;br /&gt;
*All &amp;quot;session&amp;quot; commands (for stopping and starting reader/sensor sessions)&lt;br /&gt;
*ExecuteCommand and deleteCommand  (for commands supported by a sensor such as a tag read)&lt;br /&gt;
*Readers (for getting a list of readers/sensors available on Edge Server instance)&lt;br /&gt;
*Commands (for issuing command line operations such as saving the Edge Server Configuration currently in memory)&lt;br /&gt;
*Get and Set Properties (for setting and getting sensor properties such as Setting the LLRP Reader Configuration dynamically)&lt;br /&gt;
*Create Reader (for creating a new reader connection)&lt;br /&gt;
*Managing Rifidi Applications (for stopping/starting, listing and deploying Rifidi Apps)&lt;br /&gt;
&lt;br /&gt;
Additional features can be found on [http://restlet.com/ Restlet User Guide ]&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
In rifidiserver.ini  - A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.port=8111&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.enabled=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source for Restful Rifidi Management Commands - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/&lt;br /&gt;
&lt;br /&gt;
=Configuration (HTTP over SSL) - Available as of version 3.1.1= &lt;br /&gt;
&lt;br /&gt;
A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SSL Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.port=8183&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.ssl.enabled=true&lt;br /&gt;
#Keystore Path&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepath=\config\serverX.jks&lt;br /&gt;
#Key store password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepassword=password&lt;br /&gt;
#Key Password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keypassword=password&lt;br /&gt;
#Key store Type&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystoretype=JKS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Note: Link to how to configure/setup certificates with REST - http://restlet.com/learn/guide/2.3/core/security/https&lt;br /&gt;
==REST HTTP over SSL Example Application==&lt;br /&gt;
link to https java client example - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge.rest/src/org/rifidi/edge/rest/test/HttpsTestClient.java&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user can add this jvm parameter to see detailed messages if getting any &lt;br /&gt;
trouble when running this example:&lt;br /&gt;
-Djavax.net.debug=all&lt;br /&gt;
&lt;br /&gt;
In order t0 successful get the https response from stand alone java &lt;br /&gt;
example, user must import the certificate into JVM:&lt;br /&gt;
&lt;br /&gt;
open command windows as administrator and execute keytool -import, like:&lt;br /&gt;
&lt;br /&gt;
keytool -import -alias localhost -keystore &amp;quot;C:\Program Files &lt;br /&gt;
(x86)\Java\jdk1.6.0_45\jre\lib\security\cacerts&amp;quot; -file &lt;br /&gt;
&amp;quot;D:\tmp\cert\localhost.cer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if requested, default password is: changeit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Logging= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1. Add an entry to the rifidiserver.ini (if using windows; when using linux you add this JVM argument in the rifidi-server executable):&lt;br /&gt;
-Djava.util.logging.config.file=d:/myLogging.properties&lt;br /&gt;
&lt;br /&gt;
*2. Create logging properties file, for example like the below myLogging.properties&lt;br /&gt;
The entry in that file that determines where the log file will show up is the following: java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myLogging.properties&lt;br /&gt;
# ================================&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ==   Web Logging Properties   ==&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # ------------------&lt;br /&gt;
    # General properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # This defines a whitespace separated list of class names for handler classes to load and register as handlers on&lt;br /&gt;
    # the root Logger (the Logger named &amp;quot;&amp;quot;). Each class name must be for a Handler class which has a default constructor.&lt;br /&gt;
    # Note that these Handlers may be created lazily, when they are first used.&lt;br /&gt;
    handlers=java.util.logging.FileHandler&lt;br /&gt;
	# ------------------&lt;br /&gt;
    # Loggers properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
    .level=WARNING&lt;br /&gt;
    org.mortbay.level=WARNING&lt;br /&gt;
    org.restlet.level=INFO&lt;br /&gt;
    com.noelios.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    com.noelios.web.WebComponent.www.level=INFO&lt;br /&gt;
    com.noelios.web.WebComponent.www.handlers=com.noelios.restlet.util.AccessLogFileHandler&lt;br /&gt;
    com.noelios.web.WebComponent.www.useParentHandlers=false&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # ConsoleHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.INFO).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.formatter=&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.encoding=&lt;br /&gt;
	&lt;br /&gt;
	# ------------------------------&lt;br /&gt;
    # General FileHandler properties&lt;br /&gt;
    # ------------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # java.util.logging.FileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.FileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.FileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    java.util.logging.FileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    java.util.logging.FileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot;&lt;br /&gt;
    java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # java.util.logging.FileHandler.append=&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # LogFileHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.formatter=com.noelios.restlet.util.AccessLogFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot; .pattern=/home/prod/data/log/WebComponent-www-%u-%g.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # org.restlet.util.AccessLogFileHandler.append=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Tuning/Confguration (Jetty) as of Rifidi 3.4= &lt;br /&gt;
&lt;br /&gt;
As of Rifidi 3.4 Jetty was made the default HTTP container for Restlet to allow for extended performance and configuration of the REST interface.&lt;br /&gt;
&lt;br /&gt;
The parameters can for configured in the Rifidi Server (ini) configuration&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.minThreads=8	Thread pool minimum threads&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.maxThreads=200	Thread pool max threads&lt;br /&gt;
&lt;br /&gt;
Full list of Jetty parameters using the same naming convention can be found here  - http://restlet.com/technical-resources/restlet-framework/javadocs/snapshot/jse/ext/org/restlet/ext/jetty/JettyServerHelper.html&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
==Command Code Snippet - start session - example how to use Rifidi API in a Java App==&lt;br /&gt;
All Rifidi Management API Command Logic here - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/SensorManagerServiceRestletImpl.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
sensorManagerService.startSession((String) request&lt;br /&gt;
	.getAttributes().get(&amp;quot;readerID&amp;quot;), (String) request&lt;br /&gt;
		.getAttributes().get(&amp;quot;sessionID&amp;quot;));&lt;br /&gt;
	response.setEntity(self.generateReturnString(self&lt;br /&gt;
		.generateSuccessMessage()), MediaType.TEXT_XML);&lt;br /&gt;
} catch (Exception e) {&lt;br /&gt;
	response.setEntity(e.getMessage(), MediaType.TEXT_PLAIN);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Command Basic Flow Example==&lt;br /&gt;
#Create a Reader - http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
#Create a Session (on a reader/sensor)  - http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
#Create a Command (on a reader/sensor)) -/createcommand/{commandType}/{properties} &lt;br /&gt;
*Note: some readers do not require create/executing a command as there is only one command hence for convenience is part of the create session/start session  (Thinkify, CSL and Generic adapter (for handhelds/async push calls) are some examples of this)&lt;br /&gt;
#Set Command Properties - http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
#Execute Command (on a given reader/sensor and session) - http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1&lt;br /&gt;
#Start Session (to begin processing reads using associate command/reader/sensor configuration)  - http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
#Save Configuartion (optional -  to save/persist config in case of a server restart) - http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
=Command Example=&lt;br /&gt;
&lt;br /&gt;
Note: localhost can be substituted with IP address/Host name of Rifidi Edge Server. Port can be changed in Rifidi configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==commandtypes command example==&lt;br /&gt;
&lt;br /&gt;
*commandtypes - returns a list of available command types&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commandtypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commandtypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-ADD_ROSPEC-File&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader via an XML file. Any changes made to the reader are determined by the contents of the file. To generate xml code for the commands you want to submit, check out LLRP Commander here: http://www.fosstrak.org/llrp/index.html&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;ThingMagic-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the ThingMagic reader for its tags. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;ThingMagic&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Start&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Alien reader to send back tags using the autonomous mode. To monitor a read zone, configure an Alien autonomous reader to listen. Then submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader to collect tags. By default, this command will cause the LLRP reader to push back tag reads automatically. If you would rather use the Poll mode, you will need to use the LLRP Poll command. To use the LLRP Configure command, submit it for a one-time execution&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the LLRP reader to stop sending back tags. To use, supply the RO Spec that is currently executing on the reader, and submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Thingmagic6-Push&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Sets the Thingmagic to push tags back to the edge server&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Thingmagic6&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the Alien reader for its tag list. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the LLRP reader for its tags. For monitoring of the read zone, first use the LLRP Configure command to configure the LLRP reader for Poll Mode. Then submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Mask-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID With Mask command. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Alien reader to stop sending back tags in autonomous mode. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Read-Block-Data&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back memory bank tags using the Read Block Data commmand. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readertypes command example==&lt;br /&gt;
&lt;br /&gt;
*readertypes - returns a list of available reader/sensor types (such as LLRP, Alien, BarCode etc..)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readertypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readertypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Generic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;A generic Rifidi Adapter.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Opticon&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Adapter for the Opticon Barcode Sensor&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien-Autonomous&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien autonomous adapter is an endpoint to passively receive tag reads from an Alien reader operating in autonomous mode. You cannot send any commands on the alien autonomous session&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid2010&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thingmagic6&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thingmagic 6 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi LLRP adapter supports any reader that exposes a Low Level Reader Protocol (LLRP) interface. LLRP is a standard from EPCglobal.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid3014&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien adapter supports the Alien ALR protocol on the 9900, 9800, 8800 readers.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thinkify50&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thinkify TR50 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;ThingMagic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi ThingMagic adapater supports the ThingMagic RQL protocol on the Mercury 4 and Mercury 5 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader command example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader overriding default readerID command example==&lt;br /&gt;
&lt;br /&gt;
The reader id is important for applications' read zones to appropriate operate, and this id is used to link read zones with sensors. This command enables one to set the readerId versus the system generating one (default behavior).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: To override the default reader id, there must be included the property readerID, in order to assign a specific reader id and override the default. &lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletereader command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletereader/{readerID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid readerID: LLRP&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readers command example==&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readers&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
*readers - returns a list of readers/senors managed by the Edge Server&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readers  &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_2&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get reader properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{readerID} - returns the reader/sensor properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this, to get a reader properties:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;5084&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;192.168.1.48&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;DisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;null&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReaderConfigPath&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;config/SET_READER_CONFIG.llrp&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get command properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{commandID} - returns the command properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ROSpecID&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;AntennaIDs&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Duration&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1000&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;TriggerType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;PUSH&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set reader properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{readerID}/{properties}&amp;quot; - sets the reader/sensor properties&lt;br /&gt;
Note: if there is an existing session for updated reader properties to take effect the session will need to be deleted and recreated so the properties are moved to the session &lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/Alien_1/MaxNumConnectionAttempts=11;DisplayName=Alien_Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_1/IpAddress=127.0.0.15;Port=4567;att1=aa;att2=bbb;attt3=YY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: att1=aa|att2=bbb|attt3=YY&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set command properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{commandID}/{properties}&amp;quot; - sets the command properties&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=7500;cc=4;other=67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: cc=4|other=67&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==commands command example==&lt;br /&gt;
&lt;br /&gt;
*commands - returns a list of available commands&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commands&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commands&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commands&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;&lt;br /&gt;
         &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createcommand example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the command instance is created or the call fails therefore the rcommand instance is not created&lt;br /&gt;
&lt;br /&gt;
*createcomamnd/{commandType}/{properties} - creates a command to be executed on a reader session&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createcommand&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=5000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commandID&amp;gt;Alien_Poll_2&amp;lt;/commandID&amp;gt; Note: Added in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response error (if there is at least one non valid property, the command is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=4000;propX=123;prop2=AB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: propX=123|prop2=AB&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletecommand command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletecommand/{commandID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid commandID: LLRP_Configure&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createsession command example==&lt;br /&gt;
&lt;br /&gt;
*createsession/{readerID} - creates a session (with corresponding reader/sensor configuration) and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sessionID&amp;gt;1&amp;lt;/sessionID&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail -already a session for sensor id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
     java.lang.Exception: Reader Alien_1 already has a session.&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startsession command example==&lt;br /&gt;
&lt;br /&gt;
*startsession/{readerID}/{sessionID} - starts a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;startsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CONNECTING&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to start session, current state is CONNECTING  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readerstatus command example==&lt;br /&gt;
&lt;br /&gt;
*readerstatus/{readerID} - retuns teh status of a given reader/sensor&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readerstatus&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readerstatus/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensor&amp;gt;&lt;br /&gt;
      &amp;lt;serviceID&amp;gt;LLRP_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
      &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
   &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;sessions&amp;gt;&lt;br /&gt;
      &amp;lt;session&amp;gt;&lt;br /&gt;
         &amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;&lt;br /&gt;
         &amp;lt;status&amp;gt;PROCESSING&amp;lt;/status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;executingcommands&amp;gt;&lt;br /&gt;
            &amp;lt;executingcommand&amp;gt;&lt;br /&gt;
               &amp;lt;commandFactory&amp;gt;LLRP-Configure&amp;lt;/commandFactory&amp;gt;&lt;br /&gt;
              &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
              &amp;lt;interval&amp;gt;0&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;/executingcommand&amp;gt;&lt;br /&gt;
        &amp;lt;/executingcommands&amp;gt;&lt;br /&gt;
      &amp;lt;/session&amp;gt;&lt;br /&gt;
   &amp;lt;/sessions&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==stopsession command example==&lt;br /&gt;
&lt;br /&gt;
*stopsession/{readerID}/{sessionID} - stops a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;stopsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/stopsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CREATED&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to stop session, current state is CREATED  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==resetsession command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/resetsession/{readerID}/{sessionID}&lt;br /&gt;
&lt;br /&gt;
Used to stop and start an existing reader session&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/resetsession/LLRP_1/1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
==executecommand command example==&lt;br /&gt;
&lt;br /&gt;
*executecommand/{readerID}/{sessionID}/{commandID}/{repeatInterval} - Executes a command for a given session&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;executecommand&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/0 (for single shot - one time execution)&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletesession command example==&lt;br /&gt;
&lt;br /&gt;
*deletesession/{readerID}/{sessionID} - deletes a session and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;deletesession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletesession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==save command example==&lt;br /&gt;
&lt;br /&gt;
*save - Saves the current state of the Edge Server configuration (such as created readers/sensors, modified properties etc..&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;save&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ping - Used by failover feature==&lt;br /&gt;
*ping -  Returns a date/timestamp&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;ping&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/ping&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp&amp;gt;1414610247969&amp;lt;/timestamp&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==currenttags example (released in Rifidi 3.4)==&lt;br /&gt;
*currenttags/{readerID} -  Returns a list of tags on a given reader&lt;br /&gt;
&lt;br /&gt;
Note: timestamp, reader and RSSI added in 3.5.1&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;currenttags&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/currenttags/LLRP_1 &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;currenttags&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
   &amp;lt;/currenttags&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readermetadata - Used by Web Administration Dashboard for Dynamic Reader &amp;amp; Command Properties/Wizard (released in 3.2)==&lt;br /&gt;
*readermetadata-  Returns reader metadata&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readermetadata&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readermetadata&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;readers&amp;gt;&lt;br /&gt;
  &amp;lt;reader&amp;gt;&lt;br /&gt;
   &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;ReconnectionInterval&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Reconnection Interval&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;500&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;&lt;br /&gt;
     Upon connection failure, the time to wait between two connection attempts (ms)&lt;br /&gt;
     &amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;4.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Port&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Port&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;8090&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Port of the Reader&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;maxvalue&amp;gt;65535&amp;lt;/maxvalue&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;1.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thinkify RCS Command - Used for one time configuration of a Thinkify USB reader (Deprecated in 3.5.1)==&lt;br /&gt;
*rcs/{Thinkify Reader ID}/{sessionid}&lt;br /&gt;
&lt;br /&gt;
request (via HTTP Post/Get) &amp;quot;rcs&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/rcs/ThinkifyUSB_1/1&lt;br /&gt;
&lt;br /&gt;
==startbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/startbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==stopbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/stopbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to install a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==installbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/installbundle&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to start a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/installbundle&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==uninstallbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/uninstallbundle/{bundleID}&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to uninstall a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/uninstallbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==ss OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/ss&lt;br /&gt;
&lt;br /&gt;
Used to list the OSGI bundles&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/ss&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.osgi&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.weaving.hook&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;RESOLVED&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.simpleconfigurator&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;com.sun.mail.javax.mail&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*/setgpo/{readerID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to set gpo&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/setgpo/LLRP/1,2,3,4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flash GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//flashgpo/{readerID}/{ports}/{duration in seconds}&lt;br /&gt;
&lt;br /&gt;
Used to turn gpo on for a specified duration such as Flashing a light on for 4 seconds then turn it off again&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/flashgpo/LLRP/1,2/4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Management</id>
		<title>Edge Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Management"/>
				<updated>2020-02-26T18:24:40Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Starting in 3.1 Edge Management is now accessible though Restful Services (leveraging [http://restlet.com/ Restlet plugin]. Restlet allows all Rifidi Edge Management operations available through workbench to be accessible via Restful Services.Prior to Rifidi 3.1 Edge Management is available through RMI (currently used by Rifidi Workbench if looking for code examples). &lt;br /&gt;
&lt;br /&gt;
The types of operations available through Restful Services include:&lt;br /&gt;
*All &amp;quot;session&amp;quot; commands (for stopping and starting reader/sensor sessions)&lt;br /&gt;
*ExecuteCommand and deleteCommand  (for commands supported by a sensor such as a tag read)&lt;br /&gt;
*Readers (for getting a list of readers/sensors available on Edge Server instance)&lt;br /&gt;
*Commands (for issuing command line operations such as saving the Edge Server Configuration currently in memory)&lt;br /&gt;
*Get and Set Properties (for setting and getting sensor properties such as Setting the LLRP Reader Configuration dynamically)&lt;br /&gt;
*Create Reader (for creating a new reader connection)&lt;br /&gt;
*Managing Rifidi Applications (for stopping/starting, listing and deploying Rifidi Apps)&lt;br /&gt;
&lt;br /&gt;
Additional features can be found on [http://restlet.com/ Restlet User Guide ]&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
In rifidiserver.ini  - A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.port=8111&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.enabled=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source for Restful Rifidi Management Commands - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/&lt;br /&gt;
&lt;br /&gt;
=Configuration (HTTP over SSL) - Available as of version 3.1.1= &lt;br /&gt;
&lt;br /&gt;
A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SSL Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.port=8183&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.ssl.enabled=true&lt;br /&gt;
#Keystore Path&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepath=\config\serverX.jks&lt;br /&gt;
#Key store password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepassword=password&lt;br /&gt;
#Key Password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keypassword=password&lt;br /&gt;
#Key store Type&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystoretype=JKS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Note: Link to how to configure/setup certificates with REST - http://restlet.com/learn/guide/2.3/core/security/https&lt;br /&gt;
==REST HTTP over SSL Example Application==&lt;br /&gt;
link to https java client example - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge.rest/src/org/rifidi/edge/rest/test/HttpsTestClient.java&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user can add this jvm parameter to see detailed messages if getting any &lt;br /&gt;
trouble when running this example:&lt;br /&gt;
-Djavax.net.debug=all&lt;br /&gt;
&lt;br /&gt;
In order t0 successful get the https response from stand alone java &lt;br /&gt;
example, user must import the certificate into JVM:&lt;br /&gt;
&lt;br /&gt;
open command windows as administrator and execute keytool -import, like:&lt;br /&gt;
&lt;br /&gt;
keytool -import -alias localhost -keystore &amp;quot;C:\Program Files &lt;br /&gt;
(x86)\Java\jdk1.6.0_45\jre\lib\security\cacerts&amp;quot; -file &lt;br /&gt;
&amp;quot;D:\tmp\cert\localhost.cer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if requested, default password is: changeit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Logging= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1. Add an entry to the rifidiserver.ini (if using windows; when using linux you add this JVM argument in the rifidi-server executable):&lt;br /&gt;
-Djava.util.logging.config.file=d:/myLogging.properties&lt;br /&gt;
&lt;br /&gt;
*2. Create logging properties file, for example like the below myLogging.properties&lt;br /&gt;
The entry in that file that determines where the log file will show up is the following: java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myLogging.properties&lt;br /&gt;
# ================================&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ==   Web Logging Properties   ==&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # ------------------&lt;br /&gt;
    # General properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # This defines a whitespace separated list of class names for handler classes to load and register as handlers on&lt;br /&gt;
    # the root Logger (the Logger named &amp;quot;&amp;quot;). Each class name must be for a Handler class which has a default constructor.&lt;br /&gt;
    # Note that these Handlers may be created lazily, when they are first used.&lt;br /&gt;
    handlers=java.util.logging.FileHandler&lt;br /&gt;
	# ------------------&lt;br /&gt;
    # Loggers properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
    .level=WARNING&lt;br /&gt;
    org.mortbay.level=WARNING&lt;br /&gt;
    org.restlet.level=INFO&lt;br /&gt;
    com.noelios.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    com.noelios.web.WebComponent.www.level=INFO&lt;br /&gt;
    com.noelios.web.WebComponent.www.handlers=com.noelios.restlet.util.AccessLogFileHandler&lt;br /&gt;
    com.noelios.web.WebComponent.www.useParentHandlers=false&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # ConsoleHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.INFO).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.formatter=&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.encoding=&lt;br /&gt;
	&lt;br /&gt;
	# ------------------------------&lt;br /&gt;
    # General FileHandler properties&lt;br /&gt;
    # ------------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # java.util.logging.FileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.FileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.FileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    java.util.logging.FileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    java.util.logging.FileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot;&lt;br /&gt;
    java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # java.util.logging.FileHandler.append=&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # LogFileHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.formatter=com.noelios.restlet.util.AccessLogFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot; .pattern=/home/prod/data/log/WebComponent-www-%u-%g.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # org.restlet.util.AccessLogFileHandler.append=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Tuning/Confguration (Jetty) as of Rifidi 3.4= &lt;br /&gt;
&lt;br /&gt;
As of Rifidi 3.4 Jetty was made the default HTTP container for Restlet to allow for extended performance and configuration of the REST interface.&lt;br /&gt;
&lt;br /&gt;
The parameters can for configured in the Rifidi Server (ini) configuration&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.minThreads=8	Thread pool minimum threads&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.maxThreads=200	Thread pool max threads&lt;br /&gt;
&lt;br /&gt;
Full list of Jetty parameters using the same naming convention can be found here  - http://restlet.com/technical-resources/restlet-framework/javadocs/snapshot/jse/ext/org/restlet/ext/jetty/JettyServerHelper.html&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
==Command Code Snippet - start session - example how to use Rifidi API in a Java App==&lt;br /&gt;
All Rifidi Management API Command Logic here - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/SensorManagerServiceRestletImpl.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
sensorManagerService.startSession((String) request&lt;br /&gt;
	.getAttributes().get(&amp;quot;readerID&amp;quot;), (String) request&lt;br /&gt;
		.getAttributes().get(&amp;quot;sessionID&amp;quot;));&lt;br /&gt;
	response.setEntity(self.generateReturnString(self&lt;br /&gt;
		.generateSuccessMessage()), MediaType.TEXT_XML);&lt;br /&gt;
} catch (Exception e) {&lt;br /&gt;
	response.setEntity(e.getMessage(), MediaType.TEXT_PLAIN);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Command Basic Flow Example==&lt;br /&gt;
#Create a Reader - http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
#Create a Session (on a reader/sensor)  - http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
#Create a Command (on a reader/sensor)) -/createcommand/{commandType}/{properties} &lt;br /&gt;
*Note: some readers do not require create/executing a command as there is only one command hence for convenience is part of the create session/start session  (Thinkify, CSL and Generic adapter (for handhelds/async push calls) are some examples of this)&lt;br /&gt;
#Set Command Properties - http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
#Execute Command (on a given reader/sensor and session) - http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1&lt;br /&gt;
#Start Session (to begin processing reads using associate command/reader/sensor configuration)  - http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
#Save Configuartion (optional -  to save/persist config in case of a server restart) - http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
=Command Example=&lt;br /&gt;
&lt;br /&gt;
Note: localhost can be substituted with IP address/Host name of Rifidi Edge Server. Port can be changed in Rifidi configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==commandtypes command example==&lt;br /&gt;
&lt;br /&gt;
*commandtypes - returns a list of available command types&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commandtypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commandtypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-ADD_ROSPEC-File&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader via an XML file. Any changes made to the reader are determined by the contents of the file. To generate xml code for the commands you want to submit, check out LLRP Commander here: http://www.fosstrak.org/llrp/index.html&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;ThingMagic-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the ThingMagic reader for its tags. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;ThingMagic&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Start&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Alien reader to send back tags using the autonomous mode. To monitor a read zone, configure an Alien autonomous reader to listen. Then submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader to collect tags. By default, this command will cause the LLRP reader to push back tag reads automatically. If you would rather use the Poll mode, you will need to use the LLRP Poll command. To use the LLRP Configure command, submit it for a one-time execution&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the LLRP reader to stop sending back tags. To use, supply the RO Spec that is currently executing on the reader, and submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Thingmagic6-Push&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Sets the Thingmagic to push tags back to the edge server&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Thingmagic6&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the Alien reader for its tag list. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the LLRP reader for its tags. For monitoring of the read zone, first use the LLRP Configure command to configure the LLRP reader for Poll Mode. Then submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Mask-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID With Mask command. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Alien reader to stop sending back tags in autonomous mode. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Read-Block-Data&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back memory bank tags using the Read Block Data commmand. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readertypes command example==&lt;br /&gt;
&lt;br /&gt;
*readertypes - returns a list of available reader/sensor types (such as LLRP, Alien, BarCode etc..)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readertypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readertypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Generic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;A generic Rifidi Adapter.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Opticon&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Adapter for the Opticon Barcode Sensor&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien-Autonomous&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien autonomous adapter is an endpoint to passively receive tag reads from an Alien reader operating in autonomous mode. You cannot send any commands on the alien autonomous session&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid2010&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thingmagic6&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thingmagic 6 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi LLRP adapter supports any reader that exposes a Low Level Reader Protocol (LLRP) interface. LLRP is a standard from EPCglobal.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid3014&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien adapter supports the Alien ALR protocol on the 9900, 9800, 8800 readers.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thinkify50&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thinkify TR50 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;ThingMagic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi ThingMagic adapater supports the ThingMagic RQL protocol on the Mercury 4 and Mercury 5 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader command example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader overriding default readerID command example==&lt;br /&gt;
&lt;br /&gt;
The reader id is important for applications' read zones to appropriate operate, and this id is used to link read zones with sensors. This command enables one to set the readerId versus the system generating one (default behavior).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: To override the default reader id, there must be included the property readerID, in order to assign a specific reader id and override the default. &lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletereader command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletereader/{readerID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid readerID: LLRP&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readers command example==&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readers&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
*readers - returns a list of readers/senors managed by the Edge Server&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readers  &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_2&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get reader properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{readerID} - returns the reader/sensor properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this, to get a reader properties:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;5084&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;192.168.1.48&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;DisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;null&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReaderConfigPath&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;config/SET_READER_CONFIG.llrp&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get command properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{commandID} - returns the command properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ROSpecID&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;AntennaIDs&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Duration&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1000&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;TriggerType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;PUSH&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set reader properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{readerID}/{properties}&amp;quot; - sets the reader/sensor properties&lt;br /&gt;
Note: if there is an existing session for updated reader properties to take effect the session will need to be deleted and recreated so the properties are moved to the session &lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/Alien_1/MaxNumConnectionAttempts=11;DisplayName=Alien_Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_1/IpAddress=127.0.0.15;Port=4567;att1=aa;att2=bbb;attt3=YY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: att1=aa|att2=bbb|attt3=YY&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set command properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{commandID}/{properties}&amp;quot; - sets the command properties&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=7500;cc=4;other=67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: cc=4|other=67&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==commands command example==&lt;br /&gt;
&lt;br /&gt;
*commands - returns a list of available commands&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commands&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commands&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commands&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;&lt;br /&gt;
         &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createcommand example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the command instance is created or the call fails therefore the rcommand instance is not created&lt;br /&gt;
&lt;br /&gt;
*createcomamnd/{commandType}/{properties} - creates a command to be executed on a reader session&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createcommand&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=5000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commandID&amp;gt;Alien_Poll_2&amp;lt;/commandID&amp;gt; Note: Added in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response error (if there is at least one non valid property, the command is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=4000;propX=123;prop2=AB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: propX=123|prop2=AB&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletecommand command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletecommand/{commandID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid commandID: LLRP_Configure&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createsession command example==&lt;br /&gt;
&lt;br /&gt;
*createsession/{readerID} - creates a session (with corresponding reader/sensor configuration) and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sessionID&amp;gt;1&amp;lt;/sessionID&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail -already a session for sensor id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
     java.lang.Exception: Reader Alien_1 already has a session.&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startsession command example==&lt;br /&gt;
&lt;br /&gt;
*startsession/{readerID}/{sessionID} - starts a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;startsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CONNECTING&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to start session, current state is CONNECTING  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readerstatus command example==&lt;br /&gt;
&lt;br /&gt;
*readerstatus/{readerID} - retuns teh status of a given reader/sensor&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readerstatus&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readerstatus/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensor&amp;gt;&lt;br /&gt;
      &amp;lt;serviceID&amp;gt;LLRP_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
      &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
   &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;sessions&amp;gt;&lt;br /&gt;
      &amp;lt;session&amp;gt;&lt;br /&gt;
         &amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;&lt;br /&gt;
         &amp;lt;status&amp;gt;PROCESSING&amp;lt;/status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;executingcommands&amp;gt;&lt;br /&gt;
            &amp;lt;executingcommand&amp;gt;&lt;br /&gt;
               &amp;lt;commandFactory&amp;gt;LLRP-Configure&amp;lt;/commandFactory&amp;gt;&lt;br /&gt;
              &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
              &amp;lt;interval&amp;gt;0&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;/executingcommand&amp;gt;&lt;br /&gt;
        &amp;lt;/executingcommands&amp;gt;&lt;br /&gt;
      &amp;lt;/session&amp;gt;&lt;br /&gt;
   &amp;lt;/sessions&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==stopsession command example==&lt;br /&gt;
&lt;br /&gt;
*stopsession/{readerID}/{sessionID} - stops a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;stopsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/stopsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CREATED&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to stop session, current state is CREATED  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==resetsession command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/resetsession/{readerID}/{sessionID}&lt;br /&gt;
&lt;br /&gt;
Used to stop and start an existing reader session&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/resetsession/LLRP_1/1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
==executecommand command example==&lt;br /&gt;
&lt;br /&gt;
*executecommand/{readerID}/{sessionID}/{commandID}/{repeatInterval} - Executes a command for a given session&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;executecommand&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/0 (for single shot - one time execution)&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletesession command example==&lt;br /&gt;
&lt;br /&gt;
*deletesession/{readerID}/{sessionID} - deletes a session and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;deletesession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletesession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==save command example==&lt;br /&gt;
&lt;br /&gt;
*save - Saves the current state of the Edge Server configuration (such as created readers/sensors, modified properties etc..&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;save&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ping - Used by failover feature==&lt;br /&gt;
*ping -  Returns a date/timestamp&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;ping&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/ping&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp&amp;gt;1414610247969&amp;lt;/timestamp&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==currenttags example (released in Rifidi 3.4)==&lt;br /&gt;
*currenttags/{readerID} -  Returns a list of tags on a given reader&lt;br /&gt;
&lt;br /&gt;
Note: timestamp, reader and RSSI added in 3.5.1&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;currenttags&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/currenttags/LLRP_1 &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;currenttags&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
   &amp;lt;/currenttags&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readermetadata - Used by Web Administration Dashboard for Dynamic Reader &amp;amp; Command Properties/Wizard (released in 3.2)==&lt;br /&gt;
*readermetadata-  Returns reader metadata&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readermetadata&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readermetadata&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;readers&amp;gt;&lt;br /&gt;
  &amp;lt;reader&amp;gt;&lt;br /&gt;
   &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;ReconnectionInterval&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Reconnection Interval&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;500&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;&lt;br /&gt;
     Upon connection failure, the time to wait between two connection attempts (ms)&lt;br /&gt;
     &amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;4.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Port&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Port&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;8090&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Port of the Reader&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;maxvalue&amp;gt;65535&amp;lt;/maxvalue&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;1.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thinkify RCS Command - Used for one time configuration of a Thinkify USB reader (Deprecated in 3.5.1)==&lt;br /&gt;
*rcs/{Thinkify Reader ID}/{sessionid}&lt;br /&gt;
&lt;br /&gt;
request (via HTTP Post/Get) &amp;quot;rcs&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/rcs/ThinkifyUSB_1/1&lt;br /&gt;
&lt;br /&gt;
==startbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/startbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==stopbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/stopbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to install a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==installbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/installbundle&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to start a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/installbundle&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==uninstallbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/uninstallbundle/{bundleID}&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to uninstall a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/uninstallbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==ss OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/ss&lt;br /&gt;
&lt;br /&gt;
Used to list the OSGI bundles&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/ss&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.osgi&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.weaving.hook&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;RESOLVED&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.simpleconfigurator&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;com.sun.mail.javax.mail&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*/setgpo/{readerID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to set gpo&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/setgpo/LLRP/1,2,3,4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flash GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//flashgpo/{readerID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to turn gpo on for a specified duration such as Flashing a light on for 4 seconds then turn it off again&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/flashgpo/LLRP/1,2/4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Management</id>
		<title>Edge Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Management"/>
				<updated>2020-02-26T18:24:18Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Starting in 3.1 Edge Management is now accessible though Restful Services (leveraging [http://restlet.com/ Restlet plugin]. Restlet allows all Rifidi Edge Management operations available through workbench to be accessible via Restful Services.Prior to Rifidi 3.1 Edge Management is available through RMI (currently used by Rifidi Workbench if looking for code examples). &lt;br /&gt;
&lt;br /&gt;
The types of operations available through Restful Services include:&lt;br /&gt;
*All &amp;quot;session&amp;quot; commands (for stopping and starting reader/sensor sessions)&lt;br /&gt;
*ExecuteCommand and deleteCommand  (for commands supported by a sensor such as a tag read)&lt;br /&gt;
*Readers (for getting a list of readers/sensors available on Edge Server instance)&lt;br /&gt;
*Commands (for issuing command line operations such as saving the Edge Server Configuration currently in memory)&lt;br /&gt;
*Get and Set Properties (for setting and getting sensor properties such as Setting the LLRP Reader Configuration dynamically)&lt;br /&gt;
*Create Reader (for creating a new reader connection)&lt;br /&gt;
*Managing Rifidi Applications (for stopping/starting, listing and deploying Rifidi Apps)&lt;br /&gt;
&lt;br /&gt;
Additional features can be found on [http://restlet.com/ Restlet User Guide ]&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
In rifidiserver.ini  - A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.port=8111&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.enabled=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source for Restful Rifidi Management Commands - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/&lt;br /&gt;
&lt;br /&gt;
=Configuration (HTTP over SSL) - Available as of version 3.1.1= &lt;br /&gt;
&lt;br /&gt;
A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SSL Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.port=8183&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.ssl.enabled=true&lt;br /&gt;
#Keystore Path&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepath=\config\serverX.jks&lt;br /&gt;
#Key store password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepassword=password&lt;br /&gt;
#Key Password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keypassword=password&lt;br /&gt;
#Key store Type&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystoretype=JKS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Note: Link to how to configure/setup certificates with REST - http://restlet.com/learn/guide/2.3/core/security/https&lt;br /&gt;
==REST HTTP over SSL Example Application==&lt;br /&gt;
link to https java client example - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge.rest/src/org/rifidi/edge/rest/test/HttpsTestClient.java&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user can add this jvm parameter to see detailed messages if getting any &lt;br /&gt;
trouble when running this example:&lt;br /&gt;
-Djavax.net.debug=all&lt;br /&gt;
&lt;br /&gt;
In order t0 successful get the https response from stand alone java &lt;br /&gt;
example, user must import the certificate into JVM:&lt;br /&gt;
&lt;br /&gt;
open command windows as administrator and execute keytool -import, like:&lt;br /&gt;
&lt;br /&gt;
keytool -import -alias localhost -keystore &amp;quot;C:\Program Files &lt;br /&gt;
(x86)\Java\jdk1.6.0_45\jre\lib\security\cacerts&amp;quot; -file &lt;br /&gt;
&amp;quot;D:\tmp\cert\localhost.cer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if requested, default password is: changeit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Logging= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1. Add an entry to the rifidiserver.ini (if using windows; when using linux you add this JVM argument in the rifidi-server executable):&lt;br /&gt;
-Djava.util.logging.config.file=d:/myLogging.properties&lt;br /&gt;
&lt;br /&gt;
*2. Create logging properties file, for example like the below myLogging.properties&lt;br /&gt;
The entry in that file that determines where the log file will show up is the following: java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myLogging.properties&lt;br /&gt;
# ================================&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ==   Web Logging Properties   ==&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # ------------------&lt;br /&gt;
    # General properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # This defines a whitespace separated list of class names for handler classes to load and register as handlers on&lt;br /&gt;
    # the root Logger (the Logger named &amp;quot;&amp;quot;). Each class name must be for a Handler class which has a default constructor.&lt;br /&gt;
    # Note that these Handlers may be created lazily, when they are first used.&lt;br /&gt;
    handlers=java.util.logging.FileHandler&lt;br /&gt;
	# ------------------&lt;br /&gt;
    # Loggers properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
    .level=WARNING&lt;br /&gt;
    org.mortbay.level=WARNING&lt;br /&gt;
    org.restlet.level=INFO&lt;br /&gt;
    com.noelios.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    com.noelios.web.WebComponent.www.level=INFO&lt;br /&gt;
    com.noelios.web.WebComponent.www.handlers=com.noelios.restlet.util.AccessLogFileHandler&lt;br /&gt;
    com.noelios.web.WebComponent.www.useParentHandlers=false&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # ConsoleHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.INFO).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.formatter=&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.encoding=&lt;br /&gt;
	&lt;br /&gt;
	# ------------------------------&lt;br /&gt;
    # General FileHandler properties&lt;br /&gt;
    # ------------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # java.util.logging.FileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.FileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.FileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    java.util.logging.FileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    java.util.logging.FileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot;&lt;br /&gt;
    java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # java.util.logging.FileHandler.append=&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # LogFileHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.formatter=com.noelios.restlet.util.AccessLogFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot; .pattern=/home/prod/data/log/WebComponent-www-%u-%g.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # org.restlet.util.AccessLogFileHandler.append=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Tuning/Confguration (Jetty) as of Rifidi 3.4= &lt;br /&gt;
&lt;br /&gt;
As of Rifidi 3.4 Jetty was made the default HTTP container for Restlet to allow for extended performance and configuration of the REST interface.&lt;br /&gt;
&lt;br /&gt;
The parameters can for configured in the Rifidi Server (ini) configuration&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.minThreads=8	Thread pool minimum threads&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.maxThreads=200	Thread pool max threads&lt;br /&gt;
&lt;br /&gt;
Full list of Jetty parameters using the same naming convention can be found here  - http://restlet.com/technical-resources/restlet-framework/javadocs/snapshot/jse/ext/org/restlet/ext/jetty/JettyServerHelper.html&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
==Command Code Snippet - start session - example how to use Rifidi API in a Java App==&lt;br /&gt;
All Rifidi Management API Command Logic here - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/SensorManagerServiceRestletImpl.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
sensorManagerService.startSession((String) request&lt;br /&gt;
	.getAttributes().get(&amp;quot;readerID&amp;quot;), (String) request&lt;br /&gt;
		.getAttributes().get(&amp;quot;sessionID&amp;quot;));&lt;br /&gt;
	response.setEntity(self.generateReturnString(self&lt;br /&gt;
		.generateSuccessMessage()), MediaType.TEXT_XML);&lt;br /&gt;
} catch (Exception e) {&lt;br /&gt;
	response.setEntity(e.getMessage(), MediaType.TEXT_PLAIN);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Command Basic Flow Example==&lt;br /&gt;
#Create a Reader - http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
#Create a Session (on a reader/sensor)  - http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
#Create a Command (on a reader/sensor)) -/createcommand/{commandType}/{properties} &lt;br /&gt;
*Note: some readers do not require create/executing a command as there is only one command hence for convenience is part of the create session/start session  (Thinkify, CSL and Generic adapter (for handhelds/async push calls) are some examples of this)&lt;br /&gt;
#Set Command Properties - http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
#Execute Command (on a given reader/sensor and session) - http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1&lt;br /&gt;
#Start Session (to begin processing reads using associate command/reader/sensor configuration)  - http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
#Save Configuartion (optional -  to save/persist config in case of a server restart) - http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
=Command Example=&lt;br /&gt;
&lt;br /&gt;
Note: localhost can be substituted with IP address/Host name of Rifidi Edge Server. Port can be changed in Rifidi configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==commandtypes command example==&lt;br /&gt;
&lt;br /&gt;
*commandtypes - returns a list of available command types&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commandtypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commandtypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-ADD_ROSPEC-File&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader via an XML file. Any changes made to the reader are determined by the contents of the file. To generate xml code for the commands you want to submit, check out LLRP Commander here: http://www.fosstrak.org/llrp/index.html&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;ThingMagic-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the ThingMagic reader for its tags. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;ThingMagic&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Start&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Alien reader to send back tags using the autonomous mode. To monitor a read zone, configure an Alien autonomous reader to listen. Then submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader to collect tags. By default, this command will cause the LLRP reader to push back tag reads automatically. If you would rather use the Poll mode, you will need to use the LLRP Poll command. To use the LLRP Configure command, submit it for a one-time execution&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the LLRP reader to stop sending back tags. To use, supply the RO Spec that is currently executing on the reader, and submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Thingmagic6-Push&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Sets the Thingmagic to push tags back to the edge server&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Thingmagic6&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the Alien reader for its tag list. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the LLRP reader for its tags. For monitoring of the read zone, first use the LLRP Configure command to configure the LLRP reader for Poll Mode. Then submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Mask-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID With Mask command. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Alien reader to stop sending back tags in autonomous mode. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Read-Block-Data&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back memory bank tags using the Read Block Data commmand. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readertypes command example==&lt;br /&gt;
&lt;br /&gt;
*readertypes - returns a list of available reader/sensor types (such as LLRP, Alien, BarCode etc..)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readertypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readertypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Generic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;A generic Rifidi Adapter.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Opticon&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Adapter for the Opticon Barcode Sensor&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien-Autonomous&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien autonomous adapter is an endpoint to passively receive tag reads from an Alien reader operating in autonomous mode. You cannot send any commands on the alien autonomous session&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid2010&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thingmagic6&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thingmagic 6 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi LLRP adapter supports any reader that exposes a Low Level Reader Protocol (LLRP) interface. LLRP is a standard from EPCglobal.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid3014&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien adapter supports the Alien ALR protocol on the 9900, 9800, 8800 readers.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thinkify50&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thinkify TR50 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;ThingMagic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi ThingMagic adapater supports the ThingMagic RQL protocol on the Mercury 4 and Mercury 5 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader command example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader overriding default readerID command example==&lt;br /&gt;
&lt;br /&gt;
The reader id is important for applications' read zones to appropriate operate, and this id is used to link read zones with sensors. This command enables one to set the readerId versus the system generating one (default behavior).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: To override the default reader id, there must be included the property readerID, in order to assign a specific reader id and override the default. &lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletereader command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletereader/{readerID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid readerID: LLRP&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readers command example==&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readers&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
*readers - returns a list of readers/senors managed by the Edge Server&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readers  &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_2&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get reader properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{readerID} - returns the reader/sensor properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this, to get a reader properties:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;5084&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;192.168.1.48&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;DisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;null&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReaderConfigPath&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;config/SET_READER_CONFIG.llrp&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get command properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{commandID} - returns the command properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ROSpecID&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;AntennaIDs&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Duration&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1000&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;TriggerType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;PUSH&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set reader properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{readerID}/{properties}&amp;quot; - sets the reader/sensor properties&lt;br /&gt;
Note: if there is an existing session for updated reader properties to take effect the session will need to be deleted and recreated so the properties are moved to the session &lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/Alien_1/MaxNumConnectionAttempts=11;DisplayName=Alien_Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_1/IpAddress=127.0.0.15;Port=4567;att1=aa;att2=bbb;attt3=YY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: att1=aa|att2=bbb|attt3=YY&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set command properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{commandID}/{properties}&amp;quot; - sets the command properties&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=7500;cc=4;other=67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: cc=4|other=67&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==commands command example==&lt;br /&gt;
&lt;br /&gt;
*commands - returns a list of available commands&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commands&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commands&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commands&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;&lt;br /&gt;
         &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createcommand example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the command instance is created or the call fails therefore the rcommand instance is not created&lt;br /&gt;
&lt;br /&gt;
*createcomamnd/{commandType}/{properties} - creates a command to be executed on a reader session&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createcommand&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=5000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commandID&amp;gt;Alien_Poll_2&amp;lt;/commandID&amp;gt; Note: Added in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response error (if there is at least one non valid property, the command is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=4000;propX=123;prop2=AB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: propX=123|prop2=AB&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletecommand command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletecommand/{commandID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid commandID: LLRP_Configure&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createsession command example==&lt;br /&gt;
&lt;br /&gt;
*createsession/{readerID} - creates a session (with corresponding reader/sensor configuration) and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sessionID&amp;gt;1&amp;lt;/sessionID&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail -already a session for sensor id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
     java.lang.Exception: Reader Alien_1 already has a session.&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startsession command example==&lt;br /&gt;
&lt;br /&gt;
*startsession/{readerID}/{sessionID} - starts a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;startsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CONNECTING&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to start session, current state is CONNECTING  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readerstatus command example==&lt;br /&gt;
&lt;br /&gt;
*readerstatus/{readerID} - retuns teh status of a given reader/sensor&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readerstatus&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readerstatus/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensor&amp;gt;&lt;br /&gt;
      &amp;lt;serviceID&amp;gt;LLRP_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
      &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
   &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;sessions&amp;gt;&lt;br /&gt;
      &amp;lt;session&amp;gt;&lt;br /&gt;
         &amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;&lt;br /&gt;
         &amp;lt;status&amp;gt;PROCESSING&amp;lt;/status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;executingcommands&amp;gt;&lt;br /&gt;
            &amp;lt;executingcommand&amp;gt;&lt;br /&gt;
               &amp;lt;commandFactory&amp;gt;LLRP-Configure&amp;lt;/commandFactory&amp;gt;&lt;br /&gt;
              &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
              &amp;lt;interval&amp;gt;0&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;/executingcommand&amp;gt;&lt;br /&gt;
        &amp;lt;/executingcommands&amp;gt;&lt;br /&gt;
      &amp;lt;/session&amp;gt;&lt;br /&gt;
   &amp;lt;/sessions&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==stopsession command example==&lt;br /&gt;
&lt;br /&gt;
*stopsession/{readerID}/{sessionID} - stops a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;stopsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/stopsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CREATED&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to stop session, current state is CREATED  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==resetsession command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/resetsession/{readerID}/{sessionID}&lt;br /&gt;
&lt;br /&gt;
Used to stop and start an existing reader session&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/resetsession/LLRP_1/1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
==executecommand command example==&lt;br /&gt;
&lt;br /&gt;
*executecommand/{readerID}/{sessionID}/{commandID}/{repeatInterval} - Executes a command for a given session&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;executecommand&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/0 (for single shot - one time execution)&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletesession command example==&lt;br /&gt;
&lt;br /&gt;
*deletesession/{readerID}/{sessionID} - deletes a session and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;deletesession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletesession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==save command example==&lt;br /&gt;
&lt;br /&gt;
*save - Saves the current state of the Edge Server configuration (such as created readers/sensors, modified properties etc..&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;save&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ping - Used by failover feature==&lt;br /&gt;
*ping -  Returns a date/timestamp&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;ping&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/ping&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp&amp;gt;1414610247969&amp;lt;/timestamp&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==currenttags example (released in Rifidi 3.4)==&lt;br /&gt;
*currenttags/{readerID} -  Returns a list of tags on a given reader&lt;br /&gt;
&lt;br /&gt;
Note: timestamp, reader and RSSI added in 3.5.1&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;currenttags&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/currenttags/LLRP_1 &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;currenttags&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
   &amp;lt;/currenttags&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readermetadata - Used by Web Administration Dashboard for Dynamic Reader &amp;amp; Command Properties/Wizard (released in 3.2)==&lt;br /&gt;
*readermetadata-  Returns reader metadata&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readermetadata&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readermetadata&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;readers&amp;gt;&lt;br /&gt;
  &amp;lt;reader&amp;gt;&lt;br /&gt;
   &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;ReconnectionInterval&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Reconnection Interval&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;500&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;&lt;br /&gt;
     Upon connection failure, the time to wait between two connection attempts (ms)&lt;br /&gt;
     &amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;4.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Port&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Port&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;8090&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Port of the Reader&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;maxvalue&amp;gt;65535&amp;lt;/maxvalue&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;1.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thinkify RCS Command - Used for one time configuration of a Thinkify USB reader (Deprecated in 3.5.1)==&lt;br /&gt;
*rcs/{Thinkify Reader ID}/{sessionid}&lt;br /&gt;
&lt;br /&gt;
request (via HTTP Post/Get) &amp;quot;rcs&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/rcs/ThinkifyUSB_1/1&lt;br /&gt;
&lt;br /&gt;
==startbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/startbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==stopbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/stopbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to install a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==installbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/installbundle&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to start a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/installbundle&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==uninstallbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/uninstallbundle/{bundleID}&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to uninstall a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/uninstallbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==ss OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/ss&lt;br /&gt;
&lt;br /&gt;
Used to list the OSGI bundles&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/ss&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.osgi&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.weaving.hook&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;RESOLVED&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.simpleconfigurator&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;com.sun.mail.javax.mail&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Set GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*/setgpo/{readerID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to set gpo&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/setgpo/LLRP/1,2,3,4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre)&lt;br /&gt;
&lt;br /&gt;
==Flash GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//flashgpo/{readerID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to turn gpo on for a specified duration such as Flashing a light on for 4 seconds then turn it off again&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/flashgpo/LLRP/1,2/4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre)&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Edge_Management</id>
		<title>Edge Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Edge_Management"/>
				<updated>2020-02-26T18:21:23Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
Starting in 3.1 Edge Management is now accessible though Restful Services (leveraging [http://restlet.com/ Restlet plugin]. Restlet allows all Rifidi Edge Management operations available through workbench to be accessible via Restful Services.Prior to Rifidi 3.1 Edge Management is available through RMI (currently used by Rifidi Workbench if looking for code examples). &lt;br /&gt;
&lt;br /&gt;
The types of operations available through Restful Services include:&lt;br /&gt;
*All &amp;quot;session&amp;quot; commands (for stopping and starting reader/sensor sessions)&lt;br /&gt;
*ExecuteCommand and deleteCommand  (for commands supported by a sensor such as a tag read)&lt;br /&gt;
*Readers (for getting a list of readers/sensors available on Edge Server instance)&lt;br /&gt;
*Commands (for issuing command line operations such as saving the Edge Server Configuration currently in memory)&lt;br /&gt;
*Get and Set Properties (for setting and getting sensor properties such as Setting the LLRP Reader Configuration dynamically)&lt;br /&gt;
*Create Reader (for creating a new reader connection)&lt;br /&gt;
*Managing Rifidi Applications (for stopping/starting, listing and deploying Rifidi Apps)&lt;br /&gt;
&lt;br /&gt;
Additional features can be found on [http://restlet.com/ Restlet User Guide ]&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
In rifidiserver.ini  - A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.port=8111&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.enabled=true&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Source for Restful Rifidi Management Commands - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/&lt;br /&gt;
&lt;br /&gt;
=Configuration (HTTP over SSL) - Available as of version 3.1.1= &lt;br /&gt;
&lt;br /&gt;
A full list of Rifidi Edge configuration parameters can be found [[Edge_Server_Configuration]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SSL Port can be set&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.port=8183&lt;br /&gt;
#Restlet starts by default this can be changed &lt;br /&gt;
-Dorg.rifidi.restlet.ssl.enabled=true&lt;br /&gt;
#Keystore Path&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepath=\config\serverX.jks&lt;br /&gt;
#Key store password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystorepassword=password&lt;br /&gt;
#Key Password&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keypassword=password&lt;br /&gt;
#Key store Type&lt;br /&gt;
-Dorg.rifidi.restlet.ssl.keystoretype=JKS&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Note: Link to how to configure/setup certificates with REST - http://restlet.com/learn/guide/2.3/core/security/https&lt;br /&gt;
==REST HTTP over SSL Example Application==&lt;br /&gt;
link to https java client example - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge.rest/src/org/rifidi/edge/rest/test/HttpsTestClient.java&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user can add this jvm parameter to see detailed messages if getting any &lt;br /&gt;
trouble when running this example:&lt;br /&gt;
-Djavax.net.debug=all&lt;br /&gt;
&lt;br /&gt;
In order t0 successful get the https response from stand alone java &lt;br /&gt;
example, user must import the certificate into JVM:&lt;br /&gt;
&lt;br /&gt;
open command windows as administrator and execute keytool -import, like:&lt;br /&gt;
&lt;br /&gt;
keytool -import -alias localhost -keystore &amp;quot;C:\Program Files &lt;br /&gt;
(x86)\Java\jdk1.6.0_45\jre\lib\security\cacerts&amp;quot; -file &lt;br /&gt;
&amp;quot;D:\tmp\cert\localhost.cer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if requested, default password is: changeit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Logging= &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*1. Add an entry to the rifidiserver.ini (if using windows; when using linux you add this JVM argument in the rifidi-server executable):&lt;br /&gt;
-Djava.util.logging.config.file=d:/myLogging.properties&lt;br /&gt;
&lt;br /&gt;
*2. Create logging properties file, for example like the below myLogging.properties&lt;br /&gt;
The entry in that file that determines where the log file will show up is the following: java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
myLogging.properties&lt;br /&gt;
# ================================&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ==   Web Logging Properties   ==&lt;br /&gt;
    # ==                            ==&lt;br /&gt;
    # ================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # ------------------&lt;br /&gt;
    # General properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # This defines a whitespace separated list of class names for handler classes to load and register as handlers on&lt;br /&gt;
    # the root Logger (the Logger named &amp;quot;&amp;quot;). Each class name must be for a Handler class which has a default constructor.&lt;br /&gt;
    # Note that these Handlers may be created lazily, when they are first used.&lt;br /&gt;
    handlers=java.util.logging.FileHandler&lt;br /&gt;
	# ------------------&lt;br /&gt;
    # Loggers properties&lt;br /&gt;
    # ------------------&lt;br /&gt;
&lt;br /&gt;
    .level=WARNING&lt;br /&gt;
    org.mortbay.level=WARNING&lt;br /&gt;
    org.restlet.level=INFO&lt;br /&gt;
    com.noelios.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    com.noelios.web.WebComponent.www.level=INFO&lt;br /&gt;
    com.noelios.web.WebComponent.www.handlers=com.noelios.restlet.util.AccessLogFileHandler&lt;br /&gt;
    com.noelios.web.WebComponent.www.useParentHandlers=false&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # ConsoleHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.INFO).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.level=WARNING&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.SimpleFormatter).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.formatter=&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.ConsoleHandler.encoding=&lt;br /&gt;
	&lt;br /&gt;
	# ------------------------------&lt;br /&gt;
    # General FileHandler properties&lt;br /&gt;
    # ------------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # java.util.logging.FileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # java.util.logging.FileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # java.util.logging.FileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    java.util.logging.FileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    java.util.logging.FileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot;&lt;br /&gt;
    java.util.logging.FileHandler.pattern=d:/restlet.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # java.util.logging.FileHandler.append=&lt;br /&gt;
	# -------------------------&lt;br /&gt;
    # LogFileHandler properties&lt;br /&gt;
    # -------------------------&lt;br /&gt;
&lt;br /&gt;
    # Specifies the default level for the Handler  (defaults to Level.ALL).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.level=ALL&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Filter class to use (defaults to no Filter).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.filter=&lt;br /&gt;
&lt;br /&gt;
    # Specifies the name of a Formatter class to use (defaults to java.util.logging.XMLFormatter)&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.formatter=com.noelios.restlet.util.AccessLogFormatter&lt;br /&gt;
&lt;br /&gt;
    # The name of the character set encoding to use (defaults to the default platform encoding).&lt;br /&gt;
    # org.restlet.engine.log.AccessLogFileHandler.encoding=&lt;br /&gt;
&lt;br /&gt;
    # Specifies an approximate maximum amount to write (in bytes) to any one file.&lt;br /&gt;
    # If this is zero, then there is no limit. (Defaults to no limit).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.limit=10000000&lt;br /&gt;
&lt;br /&gt;
    # Specifies how many output files to cycle through (defaults to 1).&lt;br /&gt;
    org.restlet.engine.log.AccessLogFileHandler.count=100&lt;br /&gt;
&lt;br /&gt;
    # Specifies a pattern for generating the output file name. (Defaults to &amp;quot;%h/java%u.log&amp;quot;).&lt;br /&gt;
    # A pattern consists of a string that includes the following special components that will be replaced at runtime:&lt;br /&gt;
    #    &amp;quot;/&amp;quot; the local pathname separator&lt;br /&gt;
    #    &amp;quot;%t&amp;quot; the system temporary directory&lt;br /&gt;
    #    &amp;quot;%h&amp;quot; the value of the &amp;quot;user.home&amp;quot; system property&lt;br /&gt;
    #    &amp;quot;%g&amp;quot; the generation number to distinguish rotated logs&lt;br /&gt;
    #    &amp;quot;%u&amp;quot; a unique number to resolve conflicts&lt;br /&gt;
    #    &amp;quot;%%&amp;quot; translates to a single percent sign &amp;quot;%&amp;quot; .pattern=/home/prod/data/log/WebComponent-www-%u-%g.log&lt;br /&gt;
&lt;br /&gt;
    # Specifies whether the FileHandler should append onto any existing files (defaults to false).&lt;br /&gt;
    # org.restlet.util.AccessLogFileHandler.append=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Restlet Tuning/Confguration (Jetty) as of Rifidi 3.4= &lt;br /&gt;
&lt;br /&gt;
As of Rifidi 3.4 Jetty was made the default HTTP container for Restlet to allow for extended performance and configuration of the REST interface.&lt;br /&gt;
&lt;br /&gt;
The parameters can for configured in the Rifidi Server (ini) configuration&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.minThreads=8	Thread pool minimum threads&lt;br /&gt;
*-Dorg.rifidi.restlet.threadPool.maxThreads=200	Thread pool max threads&lt;br /&gt;
&lt;br /&gt;
Full list of Jetty parameters using the same naming convention can be found here  - http://restlet.com/technical-resources/restlet-framework/javadocs/snapshot/jse/ext/org/restlet/ext/jetty/JettyServerHelper.html&lt;br /&gt;
&lt;br /&gt;
=Commands=&lt;br /&gt;
&lt;br /&gt;
==Command Code Snippet - start session - example how to use Rifidi API in a Java App==&lt;br /&gt;
All Rifidi Management API Command Logic here - https://transcends.svn.cloudforge.com/rifidi/rifidi/trunk/org.rifidi.edge/src/org/rifidi/edge/rest/SensorManagerServiceRestletImpl.java&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
try {&lt;br /&gt;
sensorManagerService.startSession((String) request&lt;br /&gt;
	.getAttributes().get(&amp;quot;readerID&amp;quot;), (String) request&lt;br /&gt;
		.getAttributes().get(&amp;quot;sessionID&amp;quot;));&lt;br /&gt;
	response.setEntity(self.generateReturnString(self&lt;br /&gt;
		.generateSuccessMessage()), MediaType.TEXT_XML);&lt;br /&gt;
} catch (Exception e) {&lt;br /&gt;
	response.setEntity(e.getMessage(), MediaType.TEXT_PLAIN);&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Command Basic Flow Example==&lt;br /&gt;
#Create a Reader - http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
#Create a Session (on a reader/sensor)  - http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
#Create a Command (on a reader/sensor)) -/createcommand/{commandType}/{properties} &lt;br /&gt;
*Note: some readers do not require create/executing a command as there is only one command hence for convenience is part of the create session/start session  (Thinkify, CSL and Generic adapter (for handhelds/async push calls) are some examples of this)&lt;br /&gt;
#Set Command Properties - http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
#Execute Command (on a given reader/sensor and session) - http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1&lt;br /&gt;
#Start Session (to begin processing reads using associate command/reader/sensor configuration)  - http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
#Save Configuartion (optional -  to save/persist config in case of a server restart) - http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
=Command Example=&lt;br /&gt;
&lt;br /&gt;
Note: localhost can be substituted with IP address/Host name of Rifidi Edge Server. Port can be changed in Rifidi configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==commandtypes command example==&lt;br /&gt;
&lt;br /&gt;
*commandtypes - returns a list of available command types&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commandtypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commandtypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;commands&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-ADD_ROSPEC-File&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader via an XML file. Any changes made to the reader are determined by the contents of the file. To generate xml code for the commands you want to submit, check out LLRP Commander here: http://www.fosstrak.org/llrp/index.html&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;ThingMagic-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the ThingMagic reader for its tags. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;ThingMagic&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Start&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Alien reader to send back tags using the autonomous mode. To monitor a read zone, configure an Alien autonomous reader to listen. Then submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the LLRP reader to collect tags. By default, this command will cause the LLRP reader to push back tag reads automatically. If you would rather use the Poll mode, you will need to use the LLRP Poll command. To use the LLRP Configure command, submit it for a one-time execution&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the LLRP reader to stop sending back tags. To use, supply the RO Spec that is currently executing on the reader, and submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Thingmagic6-Push&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Sets the Thingmagic to push tags back to the edge server&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Thingmagic6&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID command. To monitor a read zone, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid3014-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid3014&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the Alien reader for its tag list. For monitoring of the read zone, submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;LLRP-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Poll the LLRP reader for its tags. For monitoring of the read zone, first use the LLRP Configure command to configure the LLRP reader for Poll Mode. Then submit this command for recurring execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;LLRP&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Mask-Poll&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back tags using the Gen 2 Portal ID With Mask command. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Alien-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Alien reader to stop sending back tags in autonomous mode. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Alien&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid2010-Push-Stop&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Command the Awid reader to stop sending back tags. To use, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;command&amp;gt;&lt;br /&gt;
&amp;lt;factoryID&amp;gt;Awid-Read-Block-Data&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
&amp;lt;description&amp;gt;&lt;br /&gt;
Configure the Awid reader to send back memory bank tags using the Read Block Data commmand. To monitor a read zone and read a specific memory bank, submit this command for a one-time execution.&lt;br /&gt;
&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;readerFactoryID&amp;gt;Awid2010&amp;lt;/readerFactoryID&amp;gt;&lt;br /&gt;
&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readertypes command example==&lt;br /&gt;
&lt;br /&gt;
*readertypes - returns a list of available reader/sensor types (such as LLRP, Alien, BarCode etc..)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readertypes&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readertypes&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Generic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;A generic Rifidi Adapter.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Opticon&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Adapter for the Opticon Barcode Sensor&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien-Autonomous&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien autonomous adapter is an endpoint to passively receive tag reads from an Alien reader operating in autonomous mode. You cannot send any commands on the alien autonomous session&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid2010&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thingmagic6&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thingmagic 6 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi LLRP adapter supports any reader that exposes a Low Level Reader Protocol (LLRP) interface. LLRP is a standard from EPCglobal.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Awid3014&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Awid adapater supports the Awid TCP/IP protocol on the 2010 and 3014&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi Alien adapter supports the Alien ALR protocol on the 9900, 9800, 8800 readers.&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Thinkify50&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;Sensor plugin for Thinkify TR50 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;ThingMagic&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
         &amp;lt;description&amp;gt;The Rifidi ThingMagic adapater supports the ThingMagic RQL protocol on the Mercury 4 and Mercury 5 readers&amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader command example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createreader overriding default readerID command example==&lt;br /&gt;
&lt;br /&gt;
The reader id is important for applications' read zones to appropriate operate, and this id is used to link read zones with sensors. This command enables one to set the readerId versus the system generating one (default behavior).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: To override the default reader id, there must be included the property readerID, in order to assign a specific reader id and override the default. &lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*createreader/{readerType}/{properties} -creates a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createreader&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.1;Port=5084;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;readerID&amp;gt;LLRP_1&amp;lt;/readerID&amp;gt; Note: added in in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createreader/LLRP/IpAddress=127.0.0.2;Port=5084;fakeProp=1234;anotherProp=ABC;readerID=myReaderID&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: fakeProp=1234|anotherProp=ABC&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletereader command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletereader/{readerID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletereader/LLRP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid readerID: LLRP&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readers command example==&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readers&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
*readers - returns a list of readers/senors managed by the Edge Server&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readers  &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensors&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
      &amp;lt;sensor&amp;gt;&lt;br /&gt;
         &amp;lt;serviceID&amp;gt;Alien_2&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;Alien&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;/sensors&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get reader properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{readerID} - returns the reader/sensor properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this, to get a reader properties:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReconnectionInterval&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;500&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Port&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;5084&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;IpAddress&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;192.168.1.48&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;MaxNumConnectionAttempts&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;DisplayName&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;null&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ReaderConfigPath&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;config/SET_READER_CONFIG.llrp&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==getproperties command example (to get command properties)==&lt;br /&gt;
&lt;br /&gt;
*getproperties/{commandID} - returns the command properties&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;getproperties&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/getproperties/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;attributes&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;ROSpecID&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;AntennaIDs&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;Duration&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;1000&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
      &amp;lt;entry&amp;gt;&lt;br /&gt;
         &amp;lt;key&amp;gt;TriggerType&amp;lt;/key&amp;gt;&lt;br /&gt;
         &amp;lt;value&amp;gt;PUSH&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;/attributes&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set reader properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{readerID}/{properties}&amp;quot; - sets the reader/sensor properties&lt;br /&gt;
Note: if there is an existing session for updated reader properties to take effect the session will need to be deleted and recreated so the properties are moved to the session &lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/Alien_1/MaxNumConnectionAttempts=11;DisplayName=Alien_Name&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_1/IpAddress=127.0.0.15;Port=4567;att1=aa;att2=bbb;attt3=YY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: att1=aa|att2=bbb|attt3=YY&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==setproperties command example (to set command properties)==&lt;br /&gt;
&lt;br /&gt;
*setproperties/{commandID}/{properties}&amp;quot; - sets the command properties&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) setproperties&amp;quot; like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=2130&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response fail (valid properties are set, ignoring not valid ones):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/setproperties/LLRP_Configure_1/Duration=7500;cc=4;other=67&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;Warning&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: cc=4|other=67&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==commands command example==&lt;br /&gt;
&lt;br /&gt;
*commands - returns a list of available commands&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;commands&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/commands&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commands&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;&lt;br /&gt;
         &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
         &amp;lt;factoryID&amp;gt;LLRP-Configure&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
      &amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;/commands&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createcommand example==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the command instance is created or the call fails therefore the rcommand instance is not created&lt;br /&gt;
&lt;br /&gt;
*createcomamnd/{commandType}/{properties} - creates a command to be executed on a reader session&lt;br /&gt;
&lt;br /&gt;
*Special characters: See how to send special characters in properties' values http://wiki.rifidi.net/index.php?title=Rifidi_App_API#Properties_with_special_characters&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createcommand&amp;quot; command like this (splitting all property key/value pairs by a semicolon):&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=5000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;commandID&amp;gt;Alien_Poll_2&amp;lt;/commandID&amp;gt; Note: Added in 4.0 release&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response error (if there is at least one non valid property, the command is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createcommand/LLRP-Configure/Duration=4000;propX=123;prop2=AB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid properties: propX=123|prop2=AB&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletecommand command example (released in 3.2)==&lt;br /&gt;
&lt;br /&gt;
Note: The command is atomic so either all the parameters/properties in request are valid hence the reader/sensor adapter instance is created or the call fails therefore the reader/adapter instance is not created&lt;br /&gt;
&lt;br /&gt;
*deletecommand/{commandID} -deletes a reader/sensor configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure_1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail (if there is at least one non valid property, the reader is not created):&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletecommand/LLRP_Configure&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Not valid commandID: LLRP_Configure&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==createsession command example==&lt;br /&gt;
&lt;br /&gt;
*createsession/{readerID} - creates a session (with corresponding reader/sensor configuration) and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;createsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/createsession/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sessionID&amp;gt;1&amp;lt;/sessionID&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail -already a session for sensor id&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;message&amp;gt;Fail&amp;lt;/message&amp;gt;&lt;br /&gt;
  &amp;lt;description&amp;gt;&lt;br /&gt;
     java.lang.Exception: Reader Alien_1 already has a session.&lt;br /&gt;
   &amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==startsession command example==&lt;br /&gt;
&lt;br /&gt;
*startsession/{readerID}/{sessionID} - starts a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;startsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/startsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response: Success&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response: Fail&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CONNECTING&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to start session, current state is CONNECTING  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readerstatus command example==&lt;br /&gt;
&lt;br /&gt;
*readerstatus/{readerID} - retuns teh status of a given reader/sensor&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readerstatus&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readerstatus/LLRP_1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;sensor&amp;gt;&lt;br /&gt;
      &amp;lt;serviceID&amp;gt;LLRP_1&amp;lt;/serviceID&amp;gt;&lt;br /&gt;
      &amp;lt;factoryID&amp;gt;LLRP&amp;lt;/factoryID&amp;gt;&lt;br /&gt;
   &amp;lt;/sensor&amp;gt;&lt;br /&gt;
   &amp;lt;sessions&amp;gt;&lt;br /&gt;
      &amp;lt;session&amp;gt;&lt;br /&gt;
         &amp;lt;ID&amp;gt;1&amp;lt;/ID&amp;gt;&lt;br /&gt;
         &amp;lt;status&amp;gt;PROCESSING&amp;lt;/status&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;executingcommands&amp;gt;&lt;br /&gt;
            &amp;lt;executingcommand&amp;gt;&lt;br /&gt;
               &amp;lt;commandFactory&amp;gt;LLRP-Configure&amp;lt;/commandFactory&amp;gt;&lt;br /&gt;
              &amp;lt;commandID&amp;gt;LLRP_Configure_1&amp;lt;/commandID&amp;gt;&lt;br /&gt;
              &amp;lt;interval&amp;gt;0&amp;lt;/interval&amp;gt;&lt;br /&gt;
            &amp;lt;/executingcommand&amp;gt;&lt;br /&gt;
        &amp;lt;/executingcommands&amp;gt;&lt;br /&gt;
      &amp;lt;/session&amp;gt;&lt;br /&gt;
   &amp;lt;/sessions&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==stopsession command example==&lt;br /&gt;
&lt;br /&gt;
*stopsession/{readerID}/{sessionID} - stops a session for a given reader/sensor and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;stopsession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/stopsession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response success:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response fail:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Error&amp;lt;/message&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;CREATED&amp;lt;/state&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Unable to stop session, current state is CREATED  - See Rifidi Edge Sever Log for details&amp;lt;/description&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==resetsession command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/resetsession/{readerID}/{sessionID}&lt;br /&gt;
&lt;br /&gt;
Used to stop and start an existing reader session&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/resetsession/LLRP_1/1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
==executecommand command example==&lt;br /&gt;
&lt;br /&gt;
*executecommand/{readerID}/{sessionID}/{commandID}/{repeatInterval} - Executes a command for a given session&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;executecommand&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/-1 (for recurring)&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/executecommand/LLRP_1/1/LLRP_Configure_1/0 (for single shot - one time execution)&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==deletesession command example==&lt;br /&gt;
&lt;br /&gt;
*deletesession/{readerID}/{sessionID} - deletes a session and returns status code (such as successful)&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;deletesession&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/deletesession/LLRP_1/1&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==save command example==&lt;br /&gt;
&lt;br /&gt;
*save - Saves the current state of the Edge Server configuration (such as created readers/sensors, modified properties etc..&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;save&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/save&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ping - Used by failover feature==&lt;br /&gt;
*ping -  Returns a date/timestamp&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;ping&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/ping&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp&amp;gt;1414610247969&amp;lt;/timestamp&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==currenttags example (released in Rifidi 3.4)==&lt;br /&gt;
*currenttags/{readerID} -  Returns a list of tags on a given reader&lt;br /&gt;
&lt;br /&gt;
Note: timestamp, reader and RSSI added in 3.5.1&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;currenttags&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/currenttags/LLRP_1 &lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
   &amp;lt;currenttags&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
        &amp;lt;tag&amp;gt;&amp;lt;id&amp;gt;2f6a00ab13c1536b3085aba3&amp;lt;/id&amp;gt;&amp;lt;antenna&amp;gt;1&amp;lt;/antenna&amp;gt;&amp;lt;timestamp&amp;gt;1466736476986&amp;lt;/timstamp&amp;gt;&amp;lt;reader&amp;gt;LLRP_1&amp;lt;/reader&amp;gt;&amp;lt;rssir&amp;gt;-100&amp;lt;/rssi&amp;gt;&amp;lt;/tag&amp;gt;&lt;br /&gt;
   &amp;lt;/currenttags&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==readermetadata - Used by Web Administration Dashboard for Dynamic Reader &amp;amp; Command Properties/Wizard (released in 3.2)==&lt;br /&gt;
*readermetadata-  Returns reader metadata&lt;br /&gt;
&lt;br /&gt;
Request (via HTTP Post/Get) &amp;quot;readermetadata&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/readermetadata&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
 &amp;lt;readers&amp;gt;&lt;br /&gt;
  &amp;lt;reader&amp;gt;&lt;br /&gt;
   &amp;lt;properties&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;ReconnectionInterval&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Reconnection Interval&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;500&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;&lt;br /&gt;
     Upon connection failure, the time to wait between two connection attempts (ms)&lt;br /&gt;
     &amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;4.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Port&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;displayName&amp;gt;Port&amp;lt;/displayName&amp;gt;&lt;br /&gt;
     &amp;lt;defaultvalue&amp;gt;8090&amp;lt;/defaultvalue&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Port of the Reader&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;type&amp;gt;java.lang.Integer&amp;lt;/type&amp;gt;&lt;br /&gt;
     &amp;lt;maxvalue&amp;gt;65535&amp;lt;/maxvalue&amp;gt;&lt;br /&gt;
     &amp;lt;minvalue&amp;gt;0&amp;lt;/minvalue&amp;gt;&lt;br /&gt;
     &amp;lt;category&amp;gt;connection&amp;lt;/category&amp;gt;&lt;br /&gt;
     &amp;lt;writable&amp;gt;true&amp;lt;/writable&amp;gt;&lt;br /&gt;
     &amp;lt;ordervalue&amp;gt;1.0&amp;lt;/ordervalue&amp;gt;&lt;br /&gt;
    &amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Thinkify RCS Command - Used for one time configuration of a Thinkify USB reader (Deprecated in 3.5.1)==&lt;br /&gt;
*rcs/{Thinkify Reader ID}/{sessionid}&lt;br /&gt;
&lt;br /&gt;
request (via HTTP Post/Get) &amp;quot;rcs&amp;quot; command like this:&lt;br /&gt;
&lt;br /&gt;
http://localhost:8111/rcs/ThinkifyUSB_1/1&lt;br /&gt;
&lt;br /&gt;
==startbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/startbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to stop a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/startbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==stopbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/stopbundle/{bundleID}&lt;br /&gt;
&lt;br /&gt;
Used to install a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/stopbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==installbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*/installbundle&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to start a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/installbundle&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==uninstallbundle OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/uninstallbundle/{bundleID}&lt;br /&gt;
(put the path in the request)&lt;br /&gt;
&lt;br /&gt;
Used to uninstall a OSGI bundle&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/uninstallbundle/1&lt;br /&gt;
&lt;br /&gt;
Response: success&lt;br /&gt;
&lt;br /&gt;
==ss OSGI command example (released in Rifidi 3.7)==&lt;br /&gt;
&lt;br /&gt;
*/ss&lt;br /&gt;
&lt;br /&gt;
Used to list the OSGI bundles&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/ss&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.osgi&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;0&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.weaving.hook&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;1&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;RESOLVED&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;org.eclipse.equinox.simpleconfigurator&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;2&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;bundles&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;com.sun.mail.javax.mail&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;id&amp;gt;3&amp;lt;/id&amp;gt;&lt;br /&gt;
&amp;lt;state&amp;gt;ACTIVE&amp;lt;/state&amp;gt;&lt;br /&gt;
&amp;lt;/bundles&amp;gt;&lt;br /&gt;
&amp;lt;/pre)&lt;br /&gt;
&lt;br /&gt;
==Set GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//setgpo/{readerID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to set gpo&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/setgpo/LLRP/1,2,3,4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre)&lt;br /&gt;
&lt;br /&gt;
==Flash GPO Command Example (coming soon in Rifidi 3.8.1)==&lt;br /&gt;
&lt;br /&gt;
*//flashgpo/{readerID}/{ports}&lt;br /&gt;
&lt;br /&gt;
Used to turn gpo on for a specified duration such as Flashing a light on for 4 seconds then turn it off again&lt;br /&gt;
&lt;br /&gt;
Request&lt;br /&gt;
http://localhost:8111/flashgpo/LLRP/1,2/4&lt;br /&gt;
&lt;br /&gt;
Response: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;response&amp;gt;&lt;br /&gt;
&amp;lt;message&amp;gt;Success&amp;lt;/message&amp;gt;&lt;br /&gt;
&amp;lt;/response&amp;gt;&lt;br /&gt;
&amp;lt;/pre)&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Tag_Streamer_User%27s_Guide_1.1</id>
		<title>Tag Streamer User's Guide 1.1</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Tag_Streamer_User%27s_Guide_1.1"/>
				<updated>2019-07-26T18:07:02Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Quick Start Vdieo=&lt;br /&gt;
A quick start video is available at http://rifidi.org/videos/streamer/streamer.swf&lt;br /&gt;
=Purpose=&lt;br /&gt;
Tag Streamer is a load testing tool for edge servers.  It allows the user to create multiple virtual readers, chain them together in some way, and add batches of tags to the readers based on patterns.  Furthermore, because the readers can exist on different physical hosts, Tag Streamer can distribute its load among several machines.  The Tag Streamer UI allows users to rapidly construct the necessary xml files for a test suite.  In addition, it allows the user to easily run test suites.&lt;br /&gt;
&lt;br /&gt;
=Getting Started=&lt;br /&gt;
This section will help you get started running Tag Streamer 1.1&lt;br /&gt;
==Requirements==&lt;br /&gt;
*Microsoft Windows 2000/XP/2003 or Linux (Ubuntu, Red Hat, SuSe)&lt;br /&gt;
*Sun Java Runtime Environment 1.6 update 4 (32 bit only) or greater (Tag Streamer 1.1 will not work with previous versions of the JRE)&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
There are two ways to run Tag Streamer:&lt;br /&gt;
*Download the release from sourceforge (http://sourceforge.net/project/showfiles.php?group_id=170933)&lt;br /&gt;
** Double click on the installer and click next until it is installed&lt;br /&gt;
** Double click on the executable to run Tag Streamer&lt;br /&gt;
*Download the latest code from our external [[Rifidi:Source_Code | svn]]&lt;br /&gt;
** Once the code is downloaded into eclipse, right click on the Tag Streamer product file and select Run As-&amp;gt;Eclipse Application&lt;br /&gt;
&lt;br /&gt;
=Tag Streamer Concepts=&lt;br /&gt;
==Test Suite==&lt;br /&gt;
A Test Suite is a collection of four elements that define a particular simulation run of Tag Streamer.  Conceptually, a Test Suite represents a particular configuration of readers and tag load that the user would like simulate.  For example, a test suite could represent the receiving dock doors at a distribution center; the distribution center has four dock doors that are independent; tags seen by reader at dock door 1 will not be seen by the reader at dock door 2.  In addition tags are seen in bursts, as workers unload the trucks with fork lifts.  All this information is captured within a Test Suite.&lt;br /&gt;
&lt;br /&gt;
A Test Suite can be completely created within Tag Streamer and saved as an XML.  In addition, a user can load a previously saved Test Suite, edit it and save it again.&lt;br /&gt;
&lt;br /&gt;
===Components===&lt;br /&gt;
Components are the emulated devices in a test suite simulation.  At this time the only components are virtual RFID readers, but in the future there could be other kinds of components that could act in the simulation, such as electric eyes, barriers, or push arms.  the important thing about components are that they represent a ''physical'' configuration for the objec; the component defines configuration information for the reader such as its IP, port, number of antennas and GPI/O ports, etc.  It does not contain any information about how the reader is used.&lt;br /&gt;
===Scenarios===&lt;br /&gt;
Scenarios define a linear flow path of components.  For example a scenario having two readers in it could represent an assembly line with two readers where tags seen by reader 1 will be seen by reader 2 at some later time.  Scenarios are made up of ''path items'', where each path item has a component  (i.e. reader) and also a travel time to the next component in the scenario.  This allows us to specify the number of milliseconds that it would tags to travel from reader 1 to reader 2.&lt;br /&gt;
===Batches===&lt;br /&gt;
Batches are a sequence of patterns of actions that happen on a reader.  For example, a batch cause 20 C1G2 tags to be shown to a reader for 500 milliseconds, then wait for 5 seconds, then cause a GPI port to go high for 5 seconds.  The important thing to note about batches is that they define a pattern that can be applied to any reader.  In other words, batches do ''not'' define on which reader they are applied.  This information is left up the the Test Unit.&lt;br /&gt;
There are three basic units called ''actions''&lt;br /&gt;
;Tag Action&lt;br /&gt;
:The tag action defines a pattern of tags that is shown to a reader.  For example, 10 Gen 1 tags are placed in the reader's field of view for 5 seconds.  Currently, every time that a tag action executes, the tags are regenerated according to the defined pattern.  This means that if &amp;lt;tt&amp;gt;Reader1&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Reader2&amp;lt;/tt&amp;gt; both see a particular tag action, they will see different tags (i.e. the ids will be different).&lt;br /&gt;
;GPI Action&lt;br /&gt;
:The GPI action will set a certain GPI port either high or low for a certain amount of time.  For example a GPI Action might be to set GPI port 3 high for 10 seconds.&lt;br /&gt;
;Wait Action&lt;br /&gt;
:A wait Action is simply a wait time between actions.&lt;br /&gt;
&lt;br /&gt;
The other important aspect about batches is that they are ''sequences'' of actions.  That is, a particular batch can have an arbitrary number of actions inside of it that are executed in order.  For example, a batch can have a GPI action followed by a tag action followed by another GPI action.&lt;br /&gt;
&lt;br /&gt;
===Test Unit===&lt;br /&gt;
The Test Unit combines the previous three elements into a runnable simulation.  It short, it simply makes the connection between scenarios and batches. Each batch-scenario pair is run in parallel.  For example, if a user defines two scenarios and two batches, the Test Unit associates a batch with a scenario.  Then, when this test unit is run, it will start both batch-scenario pairs at the same time.&lt;br /&gt;
&lt;br /&gt;
In addition the Test Unit defines the number of iterations that batches should execute on a scenario.  For example, a batch may run on the scenario just once; in this case the simulation would be finished when the last action in the batch executes on the final reader in the scenario.  In another case, the user may set the number of runs to infinity, so that the batch keeps executing on the scenario.&lt;br /&gt;
&lt;br /&gt;
==Interaction between elements==&lt;br /&gt;
//TODO: insert a diagram depicting how the four elements work together&lt;br /&gt;
&lt;br /&gt;
=Using Tag Streamer=&lt;br /&gt;
This section will give step-by-step instructions on how to use Tag Streamer.&lt;br /&gt;
==Components==&lt;br /&gt;
Components are the descriptions of physical readers.  It gives information such as IP, number of antennas, etc.&lt;br /&gt;
===Create===&lt;br /&gt;
# Click the &amp;quot;New Item&amp;quot; icon ([[Image:AddItem.gif]]).&lt;br /&gt;
# Select &amp;quot;new Component Wizard&amp;quot;&lt;br /&gt;
# Select a type of reader and an unused Component ID in the New Component Wizard&lt;br /&gt;
# Finish creating the reader&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;background:transparent;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Image:Ts-component-select.png|300px|thumb|left|Select new component wizard]]&lt;br /&gt;
||&lt;br /&gt;
[[Image:Ts-component-new.png|300px|thumb|left|Select a type of reader]]&lt;br /&gt;
||&lt;br /&gt;
[[Image:Ts-component-new-alien.png|300px|thumb|left| select properties for the reader]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Edit===&lt;br /&gt;
To edit existing components:&lt;br /&gt;
# Select the component you wish to edit on the tree on the left.&lt;br /&gt;
# Change the settings in the right pane&lt;br /&gt;
[[Image:ts-component-edit.png|300px|thumb|none|Edit Components]]&lt;br /&gt;
&lt;br /&gt;
==Scenarios==&lt;br /&gt;
Scenarios are paths of components along which batches flow.  For example, if we have three readers (reader_A, reader_B, and reader_C), we can define a scenario as &lt;br /&gt;
&amp;lt;pre&amp;gt; reader_C -&amp;gt; reader_A -&amp;gt; reader_B&amp;lt;/pre&amp;gt;&lt;br /&gt;
which means that tags will be initially seen by reader_C, then by reader_A, and finally by reader_B.&lt;br /&gt;
===Create===&lt;br /&gt;
# Click the &amp;quot;New Item&amp;quot; icon ([[Image:AddItem.gif]]).&lt;br /&gt;
# Select &amp;quot;new Scenario Wizard&amp;quot;&lt;br /&gt;
# Add Components to the scenario&lt;br /&gt;
## The component ID is the ID number of the component you wish to add&lt;br /&gt;
## The travel time is the amount of time after the batch items have finished executing on the reader before they appear on the next reader&lt;br /&gt;
## The Antenna is the antenna number that tags should be added to when they enter this component&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;background:transparent;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Image:Ts-scenario-select.png|300px|thumb|left|Select new scenario wizard]]&lt;br /&gt;
||&lt;br /&gt;
[[Image:Ts-scenario-new.png|300px|thumb|left|Add components to the scenario]]&lt;br /&gt;
|}&lt;br /&gt;
===Edit===&lt;br /&gt;
To edit existing scenarios:&lt;br /&gt;
# Select the scenario you wish to edit on the tree on the left.&lt;br /&gt;
# Change the settings in the right pane&lt;br /&gt;
[[Image:ts-scenario-edit.png|300px|thumb|none|Edit Scenario]]&lt;br /&gt;
&lt;br /&gt;
==Batches==&lt;br /&gt;
A batch is a pattern of actions that will act on a component.  The available pattern types are:&lt;br /&gt;
#Tag Patterns, called Tag Actions&lt;br /&gt;
#GPI Patterns, called GPI Actions&lt;br /&gt;
#Wait Patterns, called Wait Actoin&lt;br /&gt;
===Create===&lt;br /&gt;
# Click the &amp;quot;New Item&amp;quot; icon ([[Image:AddItem.gif]]).&lt;br /&gt;
# Select &amp;quot;new Batch Wizard&amp;quot;&lt;br /&gt;
# Add Actions to the Batch (at least one Tag, GPI, or Wait action is required)&lt;br /&gt;
# If you are adding a new Tag Action, you must add at least on pattern&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;background:transparent;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Image:Ts-batch-new.png|300px|thumb|left|Select new batch wizard]]&lt;br /&gt;
||&lt;br /&gt;
[[Image:Ts-batch-tagAction.png|300px|thumb|left|Add tag actions to the batch]]&lt;br /&gt;
||&lt;br /&gt;
|[[Image:Ts-batch-GPIAction.png|300px|thumb|left|Add GPI actions to the batch]]&lt;br /&gt;
||&lt;br /&gt;
|[[Image:Ts-batch-waitAction.png|300px|thumb|left|Add wait actions to the batch]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Edit===&lt;br /&gt;
To edit existing batches&lt;br /&gt;
# Select the batch you wish to edit on the tree on the left.&lt;br /&gt;
# Change the settings in the right pane&lt;br /&gt;
# Make sure to click the save button after you finish editing&lt;br /&gt;
[[Image:ts-batch-edit.png|300px|thumb|none|Edit Batches]]&lt;br /&gt;
==Test Unit==&lt;br /&gt;
Test Units match up scenarios to batches and are the &amp;quot;executable&amp;quot; part of a Tag Streamer file. &lt;br /&gt;
===Create===&lt;br /&gt;
# Click the &amp;quot;New Item&amp;quot; icon ([[Image:AddItem.gif]]).&lt;br /&gt;
# Select &amp;quot;new Test Unit Wizard&amp;quot;&lt;br /&gt;
# Add at least one batch-scenario pair&lt;br /&gt;
# Optionally add wait actions so that the batch will pause before moving on to the next batch-scenario pair&lt;br /&gt;
# Select the number of repetitions (anywhere from 1 to infinity)&lt;br /&gt;
# If you want wait times before or after the test unit begins execution, fill in the pre and post wait times.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; style=&amp;quot;background:transparent;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Image:Ts-testunit-select.png|300px|thumb|left|Select new test unit wizard]]&lt;br /&gt;
||&lt;br /&gt;
[[Image:Ts-testunit-new.png|300px|thumb|left|Add a batch-scenario pair]]&lt;br /&gt;
|}&lt;br /&gt;
===Edit===&lt;br /&gt;
To edit existing Test Units:&lt;br /&gt;
# Select the test unit you wish to edit on the tree on the left.&lt;br /&gt;
# Change the settings in the right pane&lt;br /&gt;
# Make sure to click the save button after you change settings&lt;br /&gt;
[[Image:ts-testunit-edit.png|300px|thumb|none|Edit Test Unit]]&lt;br /&gt;
===Save===&lt;br /&gt;
If you wish to save the test suite that you made for future use: &lt;br /&gt;
# Click File-&amp;gt;Save Test Suite&lt;br /&gt;
# Choose a file name and a directory&lt;br /&gt;
&lt;br /&gt;
===Load===&lt;br /&gt;
If you wish to load a previously saved Test Suite:&lt;br /&gt;
# Click File-&amp;gt;Load&lt;br /&gt;
# Select the test suite file (xml) that you wish to load&lt;br /&gt;
&lt;br /&gt;
==Run Test Suite==&lt;br /&gt;
To run a test suite:&lt;br /&gt;
#Highlight the test unit that you wish to run in the tree on the right&lt;br /&gt;
#Click the run button() at the top ([[Image:Ts-Start.png]])&lt;br /&gt;
[[Image:ts-testunit-start.png|300px|thumb|none|Start Test Unit]]&lt;br /&gt;
&lt;br /&gt;
=== Run a TestSuite from command line ===&lt;br /&gt;
&lt;br /&gt;
Since version 1.1 of Rifidi TagStreamer it is also possible to run a previously created TestSuite File (XML) via command line. There are two arguments you need to specify for the execution these are the TestSuite save file and the ID of the TestSuite you want to execute.&lt;br /&gt;
&lt;br /&gt;
For Windows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TagStreamer.exe [Filename] [#ID of TestUnit]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
for example&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TagStreamer.exe C:/temp/streamer.xml 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Sample Test Suites=&lt;br /&gt;
==Assembly Line==&lt;br /&gt;
==Dock Door==&lt;br /&gt;
&lt;br /&gt;
This is an example configuration for a Rifidi Tag Streamer test suite.  For this scenario, imagine that a warehouse has two dock doors, each with their own readers.  Boxes come through the dock doors in parallel (at the same time).  To model this, we have two components defined: DockDoor-1 and DockDoor-2 (both Alien Reader).  We also have two batches defined: batch1 with 4 tags in it, and batch2 with 5 tags in it.  In order to make the batches run in parallel on the readers, we define two scenarios, each with one pathItem that contains the reader.  The testSuite defines two batchActions: The first batchAction matches scenario1 to batch1, and the second batchAction matches scenario2 to batch2.  These two batchActions then run in parallel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;metaFile&amp;gt;&lt;br /&gt;
    &amp;lt;batchSuite&amp;gt;&lt;br /&gt;
        &amp;lt;batch id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tagAction&amp;gt;&lt;br /&gt;
                &amp;lt;execDuration&amp;gt;1000&amp;lt;/execDuration&amp;gt;&lt;br /&gt;
                &amp;lt;regenerate&amp;gt;true&amp;lt;/regenerate&amp;gt;&lt;br /&gt;
                &amp;lt;tagCreationPattern&amp;gt;&lt;br /&gt;
                    &amp;lt;accessPass&amp;gt;AAAAAA==&amp;lt;/accessPass&amp;gt;&lt;br /&gt;
                    &amp;lt;lockPass&amp;gt;AAAAAA==&amp;lt;/lockPass&amp;gt;&lt;br /&gt;
                    &amp;lt;numberOfTags&amp;gt;4&amp;lt;/numberOfTags&amp;gt;&lt;br /&gt;
                    &amp;lt;prefix&amp;gt;&amp;lt;/prefix&amp;gt;&lt;br /&gt;
                    &amp;lt;tagGeneration&amp;gt;GEN2&amp;lt;/tagGeneration&amp;gt;&lt;br /&gt;
                    &amp;lt;tagType&amp;gt;DoD96&amp;lt;/tagType&amp;gt;&lt;br /&gt;
                &amp;lt;/tagCreationPattern&amp;gt;&lt;br /&gt;
            &amp;lt;/tagAction&amp;gt;&lt;br /&gt;
        &amp;lt;/batch&amp;gt;&lt;br /&gt;
        &amp;lt;batch id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;tagAction&amp;gt;&lt;br /&gt;
                &amp;lt;execDuration&amp;gt;1000&amp;lt;/execDuration&amp;gt;&lt;br /&gt;
                &amp;lt;regenerate&amp;gt;true&amp;lt;/regenerate&amp;gt;&lt;br /&gt;
                &amp;lt;tagCreationPattern&amp;gt;&lt;br /&gt;
                    &amp;lt;accessPass&amp;gt;AAAAAA==&amp;lt;/accessPass&amp;gt;&lt;br /&gt;
                    &amp;lt;lockPass&amp;gt;AAAAAA==&amp;lt;/lockPass&amp;gt;&lt;br /&gt;
                    &amp;lt;numberOfTags&amp;gt;5&amp;lt;/numberOfTags&amp;gt;&lt;br /&gt;
                    &amp;lt;prefix&amp;gt;FFF&amp;lt;/prefix&amp;gt;&lt;br /&gt;
                    &amp;lt;tagGeneration&amp;gt;GEN2&amp;lt;/tagGeneration&amp;gt;&lt;br /&gt;
                    &amp;lt;tagType&amp;gt;CustomEPC96&amp;lt;/tagType&amp;gt;&lt;br /&gt;
                &amp;lt;/tagCreationPattern&amp;gt;&lt;br /&gt;
            &amp;lt;/tagAction&amp;gt;&lt;br /&gt;
        &amp;lt;/batch&amp;gt;&lt;br /&gt;
    &amp;lt;/batchSuite&amp;gt;&lt;br /&gt;
    &amp;lt;componentSuite&amp;gt;&lt;br /&gt;
        &amp;lt;readerComponents id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;reader&amp;gt;&lt;br /&gt;
                &amp;lt;numAntennas&amp;gt;1&amp;lt;/numAntennas&amp;gt;&lt;br /&gt;
                &amp;lt;numGPIs&amp;gt;0&amp;lt;/numGPIs&amp;gt;&lt;br /&gt;
                &amp;lt;numGPOs&amp;gt;0&amp;lt;/numGPOs&amp;gt;&lt;br /&gt;
                &amp;lt;propertiesMap&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&lt;br /&gt;
                        &amp;lt;key&amp;gt;heartbeat_port&amp;lt;/key&amp;gt;&lt;br /&gt;
                        &amp;lt;value&amp;gt;3989&amp;lt;/value&amp;gt;&lt;br /&gt;
                    &amp;lt;/entry&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&lt;br /&gt;
                        &amp;lt;key&amp;gt;heartbeat_power&amp;lt;/key&amp;gt;&lt;br /&gt;
                        &amp;lt;value&amp;gt;false&amp;lt;/value&amp;gt;&lt;br /&gt;
                    &amp;lt;/entry&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&lt;br /&gt;
                        &amp;lt;key&amp;gt;inet_address&amp;lt;/key&amp;gt;&lt;br /&gt;
                        &amp;lt;value&amp;gt;127.0.0.1:20000&amp;lt;/value&amp;gt;&lt;br /&gt;
                    &amp;lt;/entry&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&lt;br /&gt;
                        &amp;lt;key&amp;gt;heartbeat_address&amp;lt;/key&amp;gt;&lt;br /&gt;
                        &amp;lt;value&amp;gt;255.255.255.255:3988&amp;lt;/value&amp;gt;&lt;br /&gt;
                    &amp;lt;/entry&amp;gt;&lt;br /&gt;
                &amp;lt;/propertiesMap&amp;gt;&lt;br /&gt;
                &amp;lt;readerClassName&amp;gt;org.rifidi.emulator.reader.alien.module.AlienReaderModule&amp;lt;/readerClassName&amp;gt;&lt;br /&gt;
                &amp;lt;readerName&amp;gt;DockDoor-1&amp;lt;/readerName&amp;gt;&lt;br /&gt;
            &amp;lt;/reader&amp;gt;&lt;br /&gt;
        &amp;lt;/readerComponents&amp;gt;&lt;br /&gt;
        &amp;lt;readerComponents id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;reader&amp;gt;&lt;br /&gt;
                &amp;lt;numAntennas&amp;gt;1&amp;lt;/numAntennas&amp;gt;&lt;br /&gt;
                &amp;lt;numGPIs&amp;gt;0&amp;lt;/numGPIs&amp;gt;&lt;br /&gt;
                &amp;lt;numGPOs&amp;gt;0&amp;lt;/numGPOs&amp;gt;&lt;br /&gt;
                &amp;lt;propertiesMap&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&lt;br /&gt;
                        &amp;lt;key&amp;gt;heartbeat_port&amp;lt;/key&amp;gt;&lt;br /&gt;
                        &amp;lt;value&amp;gt;3989&amp;lt;/value&amp;gt;&lt;br /&gt;
                    &amp;lt;/entry&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&lt;br /&gt;
                        &amp;lt;key&amp;gt;heartbeat_power&amp;lt;/key&amp;gt;&lt;br /&gt;
                        &amp;lt;value&amp;gt;false&amp;lt;/value&amp;gt;&lt;br /&gt;
                    &amp;lt;/entry&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&lt;br /&gt;
                        &amp;lt;key&amp;gt;inet_address&amp;lt;/key&amp;gt;&lt;br /&gt;
                        &amp;lt;value&amp;gt;127.0.0.1:20001&amp;lt;/value&amp;gt;&lt;br /&gt;
                    &amp;lt;/entry&amp;gt;&lt;br /&gt;
                    &amp;lt;entry&amp;gt;&lt;br /&gt;
                        &amp;lt;key&amp;gt;heartbeat_address&amp;lt;/key&amp;gt;&lt;br /&gt;
                        &amp;lt;value&amp;gt;255.255.255.255:3988&amp;lt;/value&amp;gt;&lt;br /&gt;
                    &amp;lt;/entry&amp;gt;&lt;br /&gt;
                &amp;lt;/propertiesMap&amp;gt;&lt;br /&gt;
                &amp;lt;readerClassName&amp;gt;org.rifidi.emulator.reader.alien.module.AlienReaderModule&amp;lt;/readerClassName&amp;gt;&lt;br /&gt;
                &amp;lt;readerName&amp;gt;DockDoor-2&amp;lt;/readerName&amp;gt;&lt;br /&gt;
            &amp;lt;/reader&amp;gt;&lt;br /&gt;
        &amp;lt;/readerComponents&amp;gt;&lt;br /&gt;
    &amp;lt;/componentSuite&amp;gt;&lt;br /&gt;
    &amp;lt;scenarioSuite&amp;gt;&lt;br /&gt;
        &amp;lt;scenario id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;pathItem&amp;gt;&lt;br /&gt;
                &amp;lt;antennaNum&amp;gt;0&amp;lt;/antennaNum&amp;gt;&lt;br /&gt;
                &amp;lt;readerID&amp;gt;1&amp;lt;/readerID&amp;gt;&lt;br /&gt;
                &amp;lt;travelTime&amp;gt;0&amp;lt;/travelTime&amp;gt;&lt;br /&gt;
            &amp;lt;/pathItem&amp;gt;&lt;br /&gt;
        &amp;lt;/scenario&amp;gt;&lt;br /&gt;
        &amp;lt;scenario id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;pathItem&amp;gt;&lt;br /&gt;
                &amp;lt;antennaNum&amp;gt;0&amp;lt;/antennaNum&amp;gt;&lt;br /&gt;
                &amp;lt;readerID&amp;gt;2&amp;lt;/readerID&amp;gt;&lt;br /&gt;
                &amp;lt;travelTime&amp;gt;0&amp;lt;/travelTime&amp;gt;&lt;br /&gt;
            &amp;lt;/pathItem&amp;gt;&lt;br /&gt;
        &amp;lt;/scenario&amp;gt;&lt;br /&gt;
    &amp;lt;/scenarioSuite&amp;gt;&lt;br /&gt;
    &amp;lt;testUnitSuite&amp;gt;&lt;br /&gt;
        &amp;lt;testUnits iterations=&amp;quot;-1&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;batchAction&amp;gt;&lt;br /&gt;
                &amp;lt;batchID&amp;gt;1&amp;lt;/batchID&amp;gt;&lt;br /&gt;
                &amp;lt;scenarioID&amp;gt;1&amp;lt;/scenarioID&amp;gt;&lt;br /&gt;
            &amp;lt;/batchAction&amp;gt;&lt;br /&gt;
            &amp;lt;batchAction&amp;gt;&lt;br /&gt;
                &amp;lt;batchID&amp;gt;2&amp;lt;/batchID&amp;gt;&lt;br /&gt;
                &amp;lt;scenarioID&amp;gt;2&amp;lt;/scenarioID&amp;gt;&lt;br /&gt;
            &amp;lt;/batchAction&amp;gt;&lt;br /&gt;
            &amp;lt;waitAction&amp;gt;&lt;br /&gt;
                &amp;lt;maxWaitTime&amp;gt;1000&amp;lt;/maxWaitTime&amp;gt;&lt;br /&gt;
                &amp;lt;minWaitTime&amp;gt;1000&amp;lt;/minWaitTime&amp;gt;&lt;br /&gt;
                &amp;lt;random&amp;gt;false&amp;lt;/random&amp;gt;&lt;br /&gt;
            &amp;lt;/waitAction&amp;gt;&lt;br /&gt;
            &amp;lt;postWait&amp;gt;0&amp;lt;/postWait&amp;gt;&lt;br /&gt;
            &amp;lt;preWait&amp;gt;0&amp;lt;/preWait&amp;gt;&lt;br /&gt;
        &amp;lt;/testUnits&amp;gt;&lt;br /&gt;
    &amp;lt;/testUnitSuite&amp;gt;&lt;br /&gt;
&amp;lt;/metaFile&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Emulator_User%27s_Guide</id>
		<title>Emulator User's Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Emulator_User%27s_Guide"/>
				<updated>2019-07-26T18:06:13Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category:userDoc]]&lt;br /&gt;
&lt;br /&gt;
=Quick Start Video=&lt;br /&gt;
A quick start video is available at http://rifidi.net/www/videos/emulator/emulator.swf&lt;br /&gt;
&lt;br /&gt;
=Requirements=&lt;br /&gt;
*Microsoft Windows 2000/XP/2003 or Linux (Ubuntu, Red Hat, SuSe)&lt;br /&gt;
*Java&lt;br /&gt;
**For [[Emulator 1.5.1]] and above: Sun Java Runtime Environment 1.6 update 4 (32 bit only) or higher &amp;lt;b&amp;gt;Note: Not yet supported on Java 1.8 on product backlog&amp;lt;/b&amp;gt;&lt;br /&gt;
**For [[Emulator 1.5]] and below: Sun Java Runtime Environment 1.5 (32 bit only&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
Emulator is completely written in Java so installation is very easy. Additionally, Emulator is packaged in a standard installer.&lt;br /&gt;
&lt;br /&gt;
# Download the latest version of Rifidi Emulator from http://sourceforge.net/projects/rifidi/&lt;br /&gt;
# Double click to run the install.  Follow the on screen instructions.&lt;br /&gt;
&lt;br /&gt;
=Launching Rifidi=&lt;br /&gt;
&lt;br /&gt;
*Windows Users: Simply click the shortcut located in the Rifidi folder in the Start Menu/Programs folder.&lt;br /&gt;
*Linux Users: Double click the executable file located in the installation directory. &lt;br /&gt;
** Note: If the application binary does not have the correct permissions after installation (not marked executable), you can use one of the following steps to correct this:&lt;br /&gt;
**# From a terminal:&lt;br /&gt;
**#* Change to the application directory (''e.g.,'' &amp;quot;cd /home/user/rifidi/RifidiEmulator1.6/&amp;quot;)&lt;br /&gt;
**#* Add executable permissions to the application file: &amp;quot;chmod +x emulator&amp;quot; (without the quotes).&lt;br /&gt;
**# Within the Ubuntu File Manager (nautilus):&lt;br /&gt;
**#* Navigate to the application directory (''e.g.,'' /home/user/rifidi/RifidiEmulator1.6/)&lt;br /&gt;
**#* Right-click on the &amp;quot;emulator&amp;quot; application, and select &amp;quot;Properties&amp;quot; from the context menu.&lt;br /&gt;
**#* Click on the &amp;quot;Permissions&amp;quot; tab at the top and mark the checkbox &amp;quot;Allow executing file as program&amp;quot;, then click &amp;quot;Close.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Starting a Virtual Reader=&lt;br /&gt;
&lt;br /&gt;
# Once the program is loaded, the main GUI will be present.  &lt;br /&gt;
[[Image:Quickstart-1-initial.png  |none|thumb|800px|The Rifidi Emulator GUI]]&lt;br /&gt;
#To start the reader, click the 'add reader button'.  &lt;br /&gt;
#Select the reader type to be emulated and pick the address to start the reader on. For the purposes of this quickstart guide, start an Alien Reader.[[Image:Quickstart-2-reader.png |none|thumb|400px|Select the kind of reader]]  &lt;br /&gt;
#Select the Reader's IP and port address. 127.0.0.1:1000, will use the loopback address of the current system and start listening on port 30000. [[Image:Quickstart-3-createReader.png|none|thumb|400px|Supply the reader's IP and port]]  &lt;br /&gt;
#Right click the reader and press start [[Image:Quickstart-4-startReader.png  |none|thumb|800px|Rightclick on the reader to begin]]&lt;br /&gt;
#The reader may be stopped at any time right clicking and pushing stop.&lt;br /&gt;
&lt;br /&gt;
=Adding and Removing Tags=&lt;br /&gt;
&lt;br /&gt;
#First you will need to create the tags.  There are two ways to do this:  &lt;br /&gt;
##Manual entry may be done by entering tags into the provided text field and clicking add.&lt;br /&gt;
###Click on the add multiple tags button&lt;br /&gt;
###Follow the steps in the tag creation wizard [[Image:Quickstart-5-createTags.png |none|thumb|400px|Tag creation wizard]]     &lt;br /&gt;
###Removal may also be done in the similar manner by clicking remove tag after either selecting tags from the list or manually entering the tag.   &lt;br /&gt;
##Tags may also be added from an XML file.   A few example tag files are included with the program installation.   Loading tag files are not additive, however, and will replace any data already present in the reader.&lt;br /&gt;
#Next Add the tags by dragging and dropping them onto a reader [[Image:Quickstart-6-tagsOnAntenna.png  |none|thumb|800px|Tags on an Antenna]] &lt;br /&gt;
&lt;br /&gt;
=Viewing Results=&lt;br /&gt;
&lt;br /&gt;
To view the results of adding tags on the fly, one may either have a supporting tool open, such as the Alien RFID Gateway, or simply use telnet to perform command interaction with the reader.   To telnet into the reader, simply connect to the address given to the reader when it was started.   Once connected, the following commands may be useful.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;get TagList - Displays the tags currently detected by the reader.&lt;br /&gt;
get $PROPERTY - Returns the value for the passed property.&lt;br /&gt;
set $PROPERTY=$VALUE - Sets the passed property to the passed value.&lt;br /&gt;
q - Close the connection&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you would like to see how to write a client tool connect to the reader, see our [[Alien Example Client]]&lt;br /&gt;
&lt;br /&gt;
=Quickstart Video=&lt;br /&gt;
A video of these installation steps can be seen here: http://www.rifidi.net/www/rifidipackage/rif_out.html&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Version_3.8.0</id>
		<title>Version 3.8.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Version_3.8.0"/>
				<updated>2019-07-23T18:54:41Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* LLRP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Changes in 3.8  =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==LLRP==&lt;br /&gt;
&lt;br /&gt;
# Ability to set antenna power&lt;br /&gt;
# ENABLE_EVENTS_AND_REPORTS for compatibility with Zebra FX9500/9600 readers&lt;br /&gt;
# Fixes for the RSSI filtering service impacting LLRP compatible readers - http://forums.rifidi.net/viewtopic.php?f=35&amp;amp;t=4706&lt;br /&gt;
# Fixes for scenarios causing LLRP reader sessions to get stuck in a Loggingin state&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
Javadocs:&lt;br /&gt;
http://www.transcends.co/www/javadoc/edge3.8.0/&lt;br /&gt;
&lt;br /&gt;
[[Developer's_Guide]]&lt;br /&gt;
&lt;br /&gt;
[[User's_Guide]]&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	<entry>
		<id>https://wiki.transcends.co/index.php/Version_3.8.0</id>
		<title>Version 3.8.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.transcends.co/index.php/Version_3.8.0"/>
				<updated>2019-07-23T18:54:20Z</updated>
		
		<summary type="html">&lt;p&gt;Bppause: /* LLRP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Changes in 3.8  =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==LLRP==&lt;br /&gt;
&lt;br /&gt;
# Ability to set antenna power&lt;br /&gt;
# ENABLE_EVENTS_AND_REPORTS for compatibility with Zebra FX9500/9600 readers&lt;br /&gt;
# Fixes for the RSSI filtering service - http://forums.rifidi.net/viewtopic.php?f=35&amp;amp;t=4706&lt;br /&gt;
# Fixes for scenarios causing LLRP reader sessions to get stuck in a Loggingin state&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
Javadocs:&lt;br /&gt;
http://www.transcends.co/www/javadoc/edge3.8.0/&lt;br /&gt;
&lt;br /&gt;
[[Developer's_Guide]]&lt;br /&gt;
&lt;br /&gt;
[[User's_Guide]]&lt;/div&gt;</summary>
		<author><name>Bppause</name></author>	</entry>

	</feed>