eid | Just the entity ID. Used when you have the entity's ID. |
key1 and cid |
Generally, key1 is the First/System name. cid is the Class id. key1 is always unique on the system for a given class. Therefore, an entity can be uniquely identified by the key1 and cid. e.g. To get an Elster A1140 with serial 0123456789 you can specify cid=107 and key1=0123456789 |
key2 and cid |
Generally, key2 is the Second/User name. key2 is advised to be unique, however, the user/client can specify any value here. e.g. To get an Elster A1140 with user specified name "Main Incomer" you can specify cid=107 and key2=Main Incomer (remember in an HTTP GET this will be key2=Main%20Incomer) cid is generally not compulsory. |
key3 | key3 is an alphanumeric customer identifier that can be set up by an automated system remotely via setKey3.jsp. It can be up to 128 characters long. By default it is null. |
Key1, Key2 and Key3 | Note the uppercase K. This is generally used when specifying a range of entities as opposed to just one. In the case of Key1 and Key2, it enable SQL wildcards, and in the case of Key3, it allows a comma delimited list. |
LOGIN
and PWD
parameters with each query to establish your credentials.
LOGIN
should be in the form domain.login
, for example sdg.marinusvz
ORG
parameter must be specified. That is the name of the organization to which the login belongs.
LOGIN | The short organisation name and then the username with which you log into the site, separated with a dot (.). if using HTTP GET, spaces must be written as %20 |
PWD | Your password. if using HTTP GET, spaces must be written as %20 |
ORG | Your organisations full name. if using HTTP GET, spaces must be written as %20 |
phone | phone number in international format. if using HTTP GET, the plus must be written as %2B, since + in a url is interpreted as a space. e.g. 082 123 4567 should be given as %2B27821234567 |
sim | SIM number of sim card. This must be the full 19 or 20 digit number. e.g. 8927000000111111111 |
id | Alphanumeric string, maximum length 64 characters. |
serial | Meter serial number. Maximum length 20 characters. |
port | Value between 1-65535. Ports to the server must be above 1024 |
type | Alphanumeric string. |
error message | Alphanumeric string describing the problem with the operation. |
Input | type: The description of the class of Entity to add. (if not giving advar_class) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Input |
Different class types require different inputs.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Description | Add an entity to the system. Each entity is placed in a class. To see a list of classes, look at getAllClasses and then getClass. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Return on success | <xml><result>SUCCESS</result><eid>ID of added entity</eid></xml> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Return on failure | <xml><result>ERROR:error message</result></xml> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Example | https://adam.pnpscada.com:441/addEntity?LOGIN=subdomain.testme&PWD=testme...TODO |
Input | eid: id of entity to be deleted |
Description |
Deletes the given entity. If other entities depend on this entity, delete will fail with the error message: Unresolved Dependency. Cannot remove [this entity id] because of [dependant entity id]. All entities dependant on this entity should be removed before this entity can be removed. |
Return on success | <xml><result>SUCCESS</result></xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | https://adam.pnpscada.com:441/deleteEntity?LOGIN=subdomain.testme&PWD=testme&eid=1 |
Input | date:The exact date of the total to get. See Note 3 |
Input | eid: Entity ID |
Input | key1: First/System name |
Input | key2: Second/User name |
Input | cid: Class ID |
Input | phone: Phone number. See Note 2 |
Description |
See Note 1 for eid, cid, key1 and key2 This will return only non-calculated totals. i.e. Totals as read from the meter. Profile will not be used to get to a total on a specific date and time. User must have access to view meters with totals, to be able to view the totals through this service. |
Return on success | <xml> <meter> <serial>Meter's serial</serial> <id>Meter's user defined name</id> <before> <result>SUCCESS/ERROR:error message</result> <date>Date of this total. (The total before the given time)</date> <P1>Active import (kWh). Does not reclock. With secondary metering this is the value after the multiplier</P1> <P2>Active export (kWh). With secondary metering this is the value after the multiplier</P2> <Q1>Reactive energy register quadrant 1 (kvarh). Does not reclock.</Q1> <Q2>Reactive energy register quadrant 2 (kvarh)</Q2> <Q3>Reactive energy register quadrant 3 (kvarh)</Q3> <Q4>Reactive energy register quadrant 4 (kvarh)</Q4> <P1READING>Unmodified active import as read from the meter. Re-clocks. No multiplier</P1READING> <Q1READING>Unmodified reactive energy as read from the meter. Re-clocks. No multiplier</Q1READING> <STATUS>See Note 4</STATUS> </before> <after> <result>SUCCESS/ERROR:error message</result> <date>Date of this total. (The total after the given time)</date> <P1>Active import (kWh). Does not reclock. With secondary metering this is the value after the multiplier</P1> <P2>Active export (kWh). With secondary metering this is the value after the multiplier</P2> <Q1>Reactive energy register quadrant 1 (kvarh). Does not reclock.</Q1> <Q2>Reactive energy register quadrant 2 (kvarh)</Q2> <Q3>Reactive energy register quadrant 3 (kvarh)</Q3> <Q4>Reactive energy register quadrant 4 (kvarh)</Q4> <P1READING>Unmodified active import as read from the meter. Reclocks. No multiplier</P1READING> <Q1READING>Unmodified reactive energy as read from the meter. Reclocks. No multiplier</Q1READING> <STATUS>See Note 4</STATUS> </after> <on_time> <result>SUCCESS/ERROR:error message</result> <date>The date as close to the given time as possible, using profile.</date> <P1>Active import (kWh). Does not reclock. With secondary metering this is the value after the multiplier</P1> <P2>Active export (kWh). With secondary metering this is the value after the multiplier</P2> <Q1>Reactive energy register quadrant 1 (kvarh). Does not reclock.</Q1> <Q2>Reactive energy register quadrant 2 (kvarh)</Q2> <Q3>Reactive energy register quadrant 3 (kvarh)</Q3> <Q4>Reactive energy register quadrant 4 (kvarh)</Q4> <P1READING>Unmodified active import as read from the meter. Reclocks. No multiplier</P1READING> <Q1READING>Unmodified reactive energy as read from the meter. Reclocks. No multiplier</Q1READING> <STATUS>See Note 4</STATUS> </on_time> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | https://adam.pnpscada.com:441/readMeterActualTotals?LOGIN=subdomain.testme&PWD=testme&eid=1145&date=2008-07-09 |
Input | startdate:The oldest date from where to calculate Maximum Demand. See Note 3 |
Input | enddate:The youngest date up to where to calculate Maximum Demand. See Note 3 |
Input | eid: Entity ID |
Input | key1: First/System name |
Input | key2: Second/User name |
Input | cid: Class ID |
Input | phone: Phone number. See Note 2 |
Description |
See Note 1 for eid, cid, key1 and key2 User must have access to view meters with totals, to be able to view the totals through this service. |
Return on success | <xml><meter> <serial>Meter's serial</serial> <id>Meter's user defined name</id> <start_total> <result>SUCCESS/ERROR:error message</result> <date>Date of start total.</date> <P1>Active import (kWh). Does not reclock. With secondary metering this is the value after the multiplier</P1> <P2>Active export (kWh). With secondary metering this is the value after the multiplier</P2> <Q1>Reactive energy register quadrant 1 (kvarh). Does not reclock.</Q1> <Q2>Reactive energy register quadrant 2 (kvarh)</Q2> <Q3>Reactive energy register quadrant 3 (kvarh)</Q3> <Q4>Reactive energy register quadrant 4 (kvarh)</Q4> <P1READING>Unmodified active import as read from the meter. Reclocks. No multiplier</P1READING> <Q1READING>Unmodified reactive energy as read from the meter. Reclocks. No multiplier</Q1READING> <STATUS>See Note 4</STATUS> </start_total> <end_total> <result>SUCCESS/ERROR:error message</result> <date>Date of end total.</date> <P1>Active import (kWh). Does not reclock. With secondary metering this is the value after the multiplier</P1> <P2>Active export (kWh). With secondary metering this is the value after the multiplier</P2> <Q1>Reactive energy register quadrant 1 (kvarh). Does not reclock.</Q1> <Q2>Reactive energy register quadrant 2 (kvarh)</Q2> <Q3>Reactive energy register quadrant 3 (kvarh)</Q3> <Q4>Reactive energy register quadrant 4 (kvarh)</Q4> <P1READING>Unmodified active import as read from the meter. Reclocks. No multiplier</P1READING> <Q1READING>Unmodified reactive energy as read from the meter. Reclocks. No multiplier</Q1READING> <STATUS>See Note 4</STATUS> </end_total> <max_demand> <result>SUCCESS/ERROR:error message</result> <date>The date as close to the given time as possible, using profile.</date> <kVA>The calculated kVA</kVA> </max_demand> </meter></xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example |
https://adam.pnpscada.com:441/readMeterTotals?LOGIN=subdomain.testme&PWD=testme&eid=1145&startdate=2008-07-09&enddate=2008-08-09%2000:00:00.000 https://adam.pnpscada.com:441/readMeterTotals?LOGIN=subdomain.testme&PWD=testme&key1=802786&startdate=2008-07-09%2000:00&enddate=2008-08-09%2000:00 https://adam.pnpscada.com:441/readMeterTotals?LOGIN=subdomain.testme&PWD=testme&key2=802786&startdate=2008-07-09%2000:00&enddate=2008-08-09%2000:00 https://adam.pnpscada.com:441/readMeterTotals?LOGIN=subdomain.testme&PWD=testme&phone=%2B27833835921&startdate=2008-07-09%2000:00&enddate=2008-08-09%2000:00 |
Input | startdate:The oldest date from where to return profile values. See Note 3 |
Input | enddate:The youngest date from where to return profile values. See Note 3 |
Input | eid: Entity ID |
Input | key1: First/System name |
Input | key2: Second/User name |
Input | cid: Class ID |
Input | phone: Phone number. See Note 2 |
Description |
See Note 1 for eid, cid, key1 and key2 User must have access to view meters with totals, to be able to view the totals through this service. |
Return on success | <xml> <meter> <serial>Meter's serial</serial> <id>Meter's user defined name</id> <profile> <sample> <result>SUCCESS</result> <date>Date of this sample.</date> <P1>Active import (kW). Does not count up. With secondary metering this is the value after the multiplier</P1> <P2>Active export (kvar). With secondary metering this is the value after the multiplier</P2> <Q1>Reactive energy register quadrant 1 (kW). Does not count up.</Q1> <Q2>Reactive energy register quadrant 2 (kvar)</Q2> <Q3>Reactive energy register quadrant 3 (kvar)</Q3> <Q4>Reactive energy register quadrant 4 (kvar)</Q4> <STATUS>See Note 4</STATUS> </sample> ... (more samples) </profile> </meter> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example |
https://adam.pnpscada.com:441/readMeterProfile?LOGIN=subdomain.testme&PWD=testme&eid=1145&startdate=2009-08-08&enddate=2009-08-14 https://adam.pnpscada.com:441/readMeterProfile?LOGIN=subdomain.testme&PWD=testme&key1=01P00713&startdate=2009-08-08&enddate=2009-08-14 https://adam.pnpscada.com:441/readMeterProfile?LOGIN=subdomain.testme&PWD=testme&key2=01P00713&startdate=2009-08-08&enddate=2009-08-14 https://adam.pnpscada.com:441/readMeterProfile?LOGIN=subdomain.testme&PWD=testme&phone=%2B27833835921&startdate=2009-08-08&enddate=2009-08-14 |
Input | start:The oldest date from where to return profile values. See Note 3 |
Input | end:The youngest date from where to return profile values. See Note 3 |
Input | eids: Entity ID of meter account |
Input | key1: (optional) First/System name |
Input | key2: (optional) Second/User name |
Input | cid: (optional) Class ID (109) |
Description | Get meter account profile, already summed according to the portions specified in the meter account |
Return on success | <xml> <result>SUCCESS</result> <meter_account> <id>Meter's serial</id> <meter> <serial>Serial of meter</serial> <portion>Portion of meter in this account</portion> <period>Period in which meter's profile is stored in seconds (e.g. 1800 = half hour)</period> </meter> .. more meters <profile> <sample> <date>Date of this sample.</date> <P1>Active import (kW). Does not count up. With secondary metering this is the value after the multiplier</P1> <P2>Active export (kWh). With secondary metering this is the value after the multiplier</P2> <Q1>Reactive energy register quadrant 1 (kvarh). Does not reclock.</Q1> <Q2>Reactive energy register quadrant 2 (kvar)</Q2> <Q3>Reactive energy register quadrant 3 (kvar)</Q3> <Q4>Reactive energy register quadrant 4 (kvar)</Q4> </sample> ... (more samples) </profile> </meter_account> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example |
https://adam.pnpscada.com:441/getMeterAccountProfile.jsp?LOGIN=subdomain.testme&PWD=testme&eid=1145&start=2009-08-08&end=2009-08-14 |
Input | id: id of the class to get. e.g. 123 |
Input | descr: the name of the class to get (if not giving the id). e.g. SmarTee |
Description |
Gets the class along with all it's imports and exports. e.g. A SIM (class) exports SIM (interface) and a modem imports SIM (interface) and exports Communication Device (interface). |
Return on success | <xml> <result>SUCCESS</result> <clas> <id>The class ID</id> <descr>Human readable name for class</descr> <category>Categories of class. Categories are: <ul><li>TODO</li></ul></category> <mports> <mport> <id>ID of import</id> <iid>ID of interface that this import refers to</iid> <num>Number of times that this import imports the interface</num> <descr>Description of import (If there are multiple imports)</descr> </mport> ... (more interfaces imported) </mports> <xports> <xport> <id>ID of export</id> <iid>ID of interface that this import refers to</iid> <descr>Description of export</descr> </xport> ... (more interfaces exported) </xports> <key1name> what is key1 called for this class, e.g. ID </key1name> <key2name> what is key1 called for this class, e.g. Name </key2name> </clas> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | https://adam.pnpscada.com:441/getClass?LOGIN=subdomain.testme&PWD=testme&id=101 |
Input | id: id of the interface to get. e.g. 1 |
Input | descr: the name of the interface to get (if not giving the id). e.g. SIM |
Description | Gets a description of the interface |
Return on success | <xml> <result>SUCCESS</result> <interf><id>Interface ID</id> <descr>Description of interface</descr> </interf> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | https://adam.pnpscada.com:441/getInterface?LOGIN=subdomain.testme&PWD=testme&id=1 |
Input | eid: ID of entity to get. |
Input | cid: ID of class of entity. |
Input | key1: First/System name. |
Input | key2: Second/User name. |
Description |
Returns the specified entity with imports and exports. See Note 1 for eid, cid, key1 and key2 Use getAllEntities to get all entity IDs, and then use this (getEntity) to get the details of the entities you got. User must have access to view the specified entity. |
Return on success | <xml> <result>SUCCESS</result> <ent> <id>id of entity</id> <cid>class id</cid> <key1>Entities first/system name</key1> <key2>Entities second/human name</key2> <mports> <mport> <mid>Interface ID imported</mid> <num>Number of times that interface is imported</num> <deid> ID of the entity imported with this interface. The depended Entity ID. e.g. A GPRS modem depends on a SIM. Calling getEntity on the modem, will then give the SIMs ID here once they are linked up. </deid> <xid>The export ID of the imported entity. This is required because some entities export interfaces multiple times. e.g. A SIM exports xid 2 (which points to the SIM interface) and a modem imports mid 1 (which points to the SIM interface)</xid> </mport> ... (more imports) </mports> <xports> <xport> <xid>Interface ID exported</xid> <num>Number of times that interface is exported</num> <eid> ID of the entity exported with this interface. The dependent Entity ID. e.g. A GPRS modem depends on a SIM. Calling getEntity on the SIM, will then give the modem's ID here once they are linked up. </eid> <mid>The import ID of the exported entity.</mid> </xport> ... (more exports) </xports> </ent> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | https://adam.pnpscada.com:441/getEntity?LOGIN=subdomain.testme&PWD=testme&eid=1144 |
Input | iid: Interface that must be imported |
Description | All class IDs on the current system that imports the given interface. Use getClass to get the details of a specific class |
Return on success | <xml> <result>SUCCESS</result> <clas><id>Class ID</id></clas> ... (more classes) </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | https://adam.pnpscada.com:441/getClassesThatImports?LOGIN=subdomain.testme&PWD=testme&iid=1 |
Input | iid: Interface that must be exported |
Description | All class IDs on the current system that exports the given interface. Use getClass to get the details of a specific class |
Return on success | <xml> <result>SUCCESS</result> <clas><id>Class ID</id></clas> ... (more classes) </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | https://adam.pnpscada.com:441/getClassesThatExports?LOGIN=subdomain.testme&PWD=testme&iid=1 |
Input | cid (optional): ID of class to get. If left out, it gets all the entities |
Input | showkey1: First/System name. |
Input | showkey2: Second/User name. |
Input | showcid: ID of class of entity. |
Description | All entity IDs on the current system belonging to the specified username. Use getEntity to get the details of a specific entity |
Return on success | <xml><result>SUCCESS</result><entities> <entity><id>Entity ID</id></entity> ... (more entities) </entities> <len>Amount of entities passed</len> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | https://adam.pnpscada.com:441/getAllEntities?LOGIN=subdomain.testme&PWD=testme |
Description | All class IDs on the current system. Use getClass to get the details of a specific class |
Return on success | <xml> <result>SUCCESS</result> <classes> <clas><id>ID of class</id></clas> ...(more classes) </classes> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | https://adam.pnpscada.com:441/getAllClasses?LOGIN=subdomain.testme&PWD=testme |
Input | oldeid: ID of entity that exports Communication Device interface (2) to remove |
Input | neweid: ID of entity that exports Communication Device interface (2) to insert |
Description | Changes the communication device used by all dependent entities (e.g. meter/Accumulator) from one communication device to another. |
Return on success | <xml><result>SUCCESS</result></xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | https://adam.pnpscada.com:441/replaceComms?LOGIN=subdomain.testme&PWD=testme&oldeid=1&neweid=2 |
Input | sim |
Input | phone |
Description | Add a SIM card to the system. |
Return on success | <xml><result>SUCCESS</result></xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | https://adam.pnpscada.com:441/simAdd?LOGIN=subdomain.testme&PWD=testme&sim=8927000000111111111&phone=%2B27111111111 |
Input | phone |
Input | port |
Input | id |
Description | Add a maestro Modem. |
Return on success | <xml><result>SUCCESS</result></xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | https://adam.pnpscada.com:441/maestroAdd?LOGIN=subdomain.testme&PWD=testme&phone=%2B27111111111&id=123&port=10010 |
Input | phone |
Input | id |
Description | Add a CSD Modem. |
Return on success | <xml><result>SUCCESS</result></xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | https://adam.pnpscada.com:441/csdModemAdd?LOGIN=subdomain.testme&PWD=testme&sim=8927000000111111111&id=111 |
Input | serial |
Input | phone |
Input | id |
Description | Add an Accumulator. |
Return on success | <xml><result>SUCCESS</result></xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | https://adam.pnpscada.com:441/accumulatorAdd?LOGIN=subdomain.testme&PWD=testme&serial=1111111&id=11&phone=%2B27111111111 |
Input | serial |
Input | id |
Input | type |
Input | rtuid or accumulatorId |
Description | Add a meter. |
Return on success | <xml><result>SUCCESS</result></xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | https://adam.pnpscada.com:441/meterAdd?LOGIN=subdomain.testme&PWD=testme&serial=111111&id=111&type=Etron%2012PL&accumulatorID=11 |
Input | days |
Description | List of meters that could not be phoned in the last n days. |
Example | e.g. https://adam.pnpscada.com:441/meterProblems?LOGIN=subdomain.testme&PWD=testme&days=10 |
Input | optional: phone or sim or PNPENTID and PNPENTCLASID | |
phone | the Connection's 'phone number' | |
sim | the Connection's 'sim number' | |
PNPENTID | the meter Entity's DB ID | |
PNPENTCLASID | the meter Entity's Class ID. It must be a meter, in other words, export the Meter Admin interface | See getClass for a list of possible class IDs |
askMask | Optional. Default of 15 The mask of the sets to get:
PROFILE = 0x01; // bit 0 d
| |
preferCSD | Optional. Default is 'no' Should be a value of 'yes' if you prefer a CSD connection to a GPRS connection, e.g. with a GPRS modem. You must have CSD modem/s connected and configured on your PNPSCADA server for this to work. | |
Description | Add a meter or many meters on one connection to the queue for reading it. Will put it at the head of the Acquire queue. | |
Return on success | <xml><result>SUCCESS</result></xml> | |
Return on failure | <xml><result>ERROR:error message</result></xml> | |
Example | Request a meter to be read. e.g. http://adam.pnpscada.com:441/meterRead?LOGIN=subdomain.testme&PWD=testme&phone=%2B27111111111 |
PNPENTID | the Entity's DB ID (you can also specify the entity using key1 or key2 or key3) has to be a meter |
PNPENTCLASID | the Entity's Class ID |
Description | Request an entity's Read Status. |
Return on success | <xml> <result>SUCCESS</result> <key1>[Requested Meter Serial Number]</key1> <key2>[Requested Meter Name]</key2> <maxdate>[Date of latest data in DB for meter (YYYY-MM-DD hh:mm:ss)]</maxdate> <readdate>[last dat and time a read attempt was completed (YYYY-MM-DD hh:mm:ss)]</readdate> <smsg>[Short message]</smsg> <tmsg>[Technical error report]</tmsg> <lmsg>[Long message]</lmsg> <readlevel>[read level 0-3]</readlevel> <readleveldesc>[read level description]</readleveldesc> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | e.g. https://adam.pnpscada.com:441/getMeterReadStatus.jsp?key1=88888888&LOGIN=subdomain.testme&PWD=testme |
key1 | the meter's serial number. |
Description | Request a Meter's decryption key. |
Return on success | <xml><result>SUCCESS</result><eid>Requested Entity ID</eid><cid>Requested Entity Class ID</cid><key1>Key 1 of requested Entity (Name unique per class)</key1><key2>Key 2 of requested Entity (User defined name)</key2><enckey>Decryption key</enckey></xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | e.g. https://adam.pnpscada.com:441/getKamstrupKey.jsp?key1=92341634&LOGIN=subdomain.testme&PWD=testme |
PNPENTID | the Entity's DB ID | |
PNPENTCLASID | the Entity's Class ID | See getClass for a list of possible class IDs |
Description | Request an entity's Key3 value. | |
Return on success | <xml><result>SUCCESS</result><eid>Requested Entity ID</eid><cid>Requested Entity Class ID</cid><key1>Key 1 of requested Entity (Name unique per class)</key1><key2>Key 2 of requested Entity (User defined name)</key2><key3>Key 3 of requested Entity (Unique in all of database)</key3></xml> | |
Return on failure | <xml><result>ERROR:error message</result></xml> | |
Example | e.g. https://adam.pnpscada.com:441/getKey3.jsp?PNPENTID=1&PNPENTCLASID=100&LOGIN=subdomain.testme&PWD=testme |
PNPENTID | the Entity's DB ID | |
PNPENTCLASID | the Entity's Class ID | See getClass for a list of possible class IDs |
key3 | Set an entity's Key3 value. | |
Description | Request an entity's Key3 value. | |
Return on success | <xml><result>SUCCESS</result><eid>Requested Entity ID</eid><cid>Requested Entity Class ID</cid><key1>Key 1 of requested Entity (Name unique per class)</key1><key2>Key 2 of requested Entity (User defined name)</key2><key3>Key 3 of requested Entity (Unique in all of database)</key3></xml> | |
Return on failure | <xml><result>ERROR:error message</result></xml> | |
Example | e.g. https://adam.pnpscada.com:441/setKey3.jsp?PNPENTID=1&PNPENTCLASID=100&LOGIN=subdomain.testme&PWD=testme |
Key3 (Note: key names are case sensitive) | a comma delimited string of key3 IDs | |
startdate | The start date of the profile (If omitted, defaults to the enddate - 24 hours) | |
enddate | The end date of the profile in the form "YYYY-MM-DD HH:MM:SS". The "HH:MM:SS" part is optional | |
Key1 (optional) | Filter on meter's Key1. (where % is the wild card, this must be URL-Encoded with %25, e.g. Key1=%25loc%25) | |
Key2 (optional) | Filter on meter's Key2 | |
pk1 (optional) | Filter on an ancestor's Key1, e.g. a SIM card number. SQL wildcards supported. | |
pk2 (optional) | Filter on an ancestor's Key2, e.g. a phone number. SQL wildcards supported. | |
place (optional) | Filter on meter's place | |
site (optional) | Filter on meter's site | |
zone (optional) | Filter on meter's zone | |
commissioned (optional) | yes/no/all. Default is 'yes'. If yes, only considers meters where the commissioned flag in the Meter Details has been set on. | e.g. commissioned=all |
p1 (optional) | if "false" (or "no"), do not return this set of values, default true | e.g. p1=false |
q1 (optional) | if "false" (or "no"), do not return this set of values, default true | e.g. q1=false |
p2 (optional) | if "false" (or "no"), do not return this set of values, default false | e.g. p2=true |
q2 (optional) | if "false" (or "no"), do not return this set of values, default false | e.g. q2=true |
q3 (optional) | if "false" (or "no"), do not return this set of values, default false | e.g. q3=true |
q4 (optional) | if "false" (or "no"), do not return this set of values, default false | e.g. q4=true |
minutes (optional) | if the meter has 15 minute data, you may change it to 15 from the default 30, then there should be 96 instead of 48 values per day, default 30 | e.g. minutes=15 |
totalProfiles (optional) | if "true", the sets of profile values are returned as totals, default false | e.g. totalProfiles=true |
Description | Get the half-hour profile readings in kWh and kvarh for one or more meters | |
Return on success | <xml> <result>SUCCESS</result> <date>the last profile date</date> <meters> <meter> <p1> comma delimited string with 48 values ordered by time starting with 00:30. Units of Measure is kWh or kl </p1> <q1> comma delimited string with 48 values ordered by time starting with 00:30 – only included if parameter set to true. Units of Measure is kvarh </q1> <kVA>max demand in the 24hour period</kVA> <Status> The lower 7 bits are used to represent a NUMBER for the STATUS sample, that can mean different things for different meters. The higher bits after that have generic meanings, and can be simultaneously set to mean more than one thing at the same time: UNDER VOLTAGE = 0x0080 OVER VOLTAGE = 0x0100 REVERSE FLOW = 0x0200 OVER CURRENT = 0x0400 OVER ENERGY = 0x0800 CALC IMPORTED = 0x1000 CALC INTERPOLATED = 0x2000 CALC ALMOST INTERPOLATED = 0x4000 GAPS = 0x8000 </Status> <e1>total + profile up to the enddate (kWh)</e1> <f1>total +profile up to the enddate (kvarh)</f1> <cid>Class ID</cid> <primary>if primary metering "Y", else "N"</primary> <serial>Meter's serial</serial> <key2>Meter's user defined name</key2> <key3>Meter's Key3 (which may be null)</key3> </meter> ...next meter... </meters> <xml> | |
Return on failure | <xml><result>ERROR:error message</result></xml> | |
Example | Get the profile for multiple meters, during 2 dates. e.g. https://adam.pnpscada.com:441/getNewProfile.jsp?LOGIN=subdomain.testme&PWD=testme&Key1=38900008&enddate=2011-09-15&commissioned=false |
Key3 (Note: key names are case sensitive) | a comma delimited string of key3 IDs | |
startdate | The start date (If omitted, defaults to the enddate - 24 hours) | |
enddate | The end date in the form "YYYY-MM-DD HH:MM:SS". The "HH:MM:SS" part is optional | |
Key1 (optional) | Filter on meter's Key1. (where % is the wild card, this must be URL-Encoded with %25, e.g. Key1=%25loc%25) | |
Key2 (optional) | Filter on meter's Key2 | |
pk1 (optional) | Filter on an ancestor's Key1, e.g. a SIM card number. SQL wildcards supported. | |
pk2 (optional) | Filter on an ancestor's Key2, e.g. a phone number. SQL wildcards supported. | |
place (optional) | Filter on meter's place | |
site (optional) | Filter on meter's site | |
zone (optional) | Filter on meter's zone | |
commissioned (optional) | yes/no/all. Default is 'yes'. If yes, only considers meters where the commissioned flag in the Meter Details has been set on. | e.g. commissioned=all |
p1 (optional) | if "false" (or "no"), do not return this set of values, default true | e.g. p1=false |
q1 (optional) | if "false" (or "no"), do not return this set of values, default true | e.g. q1=false |
p2 (optional) | if "false" (or "no"), do not return this set of values, default false | e.g. p2=true |
q2 (optional) | if "false" (or "no"), do not return this set of values, default false | e.g. q2=true |
q3 (optional) | if "false" (or "no"), do not return this set of values, default false | e.g. q3=true |
q4 (optional) | if "false" (or "no"), do not return this set of values, default false | e.g. q4=true |
Description | Get the totals for a meter, between two dates. | |
Return on success | <xml> <result>SUCCESS</result> <date>the last total date</date> <meters> <meter> <p1> comma delimited string with 48 values ordered by time starting with 00:30 </p1> <q1> comma delimited string with 48 values ordered by time starting with 00:30 – only included if parameter set to true </q1> <kVA>max demand in the 24hour period</kVA> <Status> The lower 7 bits are used to represent a NUMBER for the STATUS sample, that can mean different things for different meters. The higher bits after that have generic meanings, and can be simultaneously set to mean more than one thing at the same time: UNDER VOLTAGE = 0x0080 OVER VOLTAGE = 0x0100 REVERSE FLOW = 0x0200 OVER CURRENT = 0x0400 OVER ENERGY = 0x0800 CALC IMPORTED = 0x1000 CALC INTERPOLATED = 0x2000 CALC ALMOST INTERPOLATED = 0x4000 GAPS = 0x8000 </Status> <e1>total + profile up to the enddate (kWh)</e1> <f1>total + profile up to the enddate (kvarh)</f1> <e1_start>total + profile up to the startdate (kWh)</e1_start> <f1_start>total + profile up to the startdate (kvarh)</f1_start> <consumtpion>e1 - e1_start(kWh)</consumtpion> <cid>Class ID</cid> <primary>if primary metering "Y", else "N"</primary> <serial>Meter's serial</serial> <key2>Meter's user defined name</key2> <key3>Meter's Key3 (which may be null)</key3> </meter> ...next meter... </meters> <xml> | |
Return on failure | <xml><result>ERROR:error message</result></xml> | |
Example | Get the totals for a meter, between two dates. e.g. https://adam.pnpscada.com:441/getAllTotals.jsp?LOGIN=subdomain.testme&PWD=testme&enddate=2010-09-14 |
Key3 (Note: key names are case sensitive) | a comma delimited string of key3 IDs |
startdate | The start date |
enddate | The end date in the form "YYYY-MM-DD HH:MM:SS". The "HH:MM:SS" part is optional |
Key1 (optional) | Filter on meter's Key1. (where % is the wild card, this must be URL-Encoded with %25, e.g. Key1=%25loc%25) |
Key2 (optional) | Filter on meter's Key2 |
calculate (optional) | If no other total found, try to calculate a total from profile for startdate and enddate |
Description | Get all the totals for a meter, between two dates. |
Return on success | <xml> <result>SUCCESS</result> <meter> <serial>Serial</serial> <name>Name of meter</name> <total> <date>date of this total</date> <E1>Total Energy reading (Active import - this is the default of most meters) kWh</E1> <E2>Total Reverse Active Energy reading (this is left out if zero)</E2> <F1>Total Reactive Energy reading (Quadrant 1 - forward lagging) (this is left out if zero) kvarh</F1> <F2>Total Reactive Energy reading (Quadrant 2 - reverse leading) (this is left out if zero)</F2> <F3>Total Reactive Energy reading (Quadrant 3 - reverse lagging) (this is left out if zero)</F3> <F4>Total Reactive Energy reading (Quadrant 4 - forward leading) (this is left out if zero)</F4> <status>See Note 4</status> </total> next total... next meter... </meter> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | Get the totals for a meter 123456789, between two dates. e.g. https://adam.pnpscada.com:441/getTotals.jsp?LOGIN=subdomain.testme&PWD=testme&startdate=2010-08-14&enddate=2010-09-14&key1=123456789 |
Key3 (Note: key names are case sensitive) | a comma delimited string of key3 IDs. Optional |
start | Start range of initialization dates. |
end | End range of initialization dates in the form "YYYY-MM-DD HH:MM". Optional |
Key1 (optional) | Filter on meter's Key1. (where % is the wild card, this must be URL-Encoded with %25, e.g. Key1=%25loc%25) Optional |
Key2 (optional) | Filter on meter's Key2. Optional |
Description | Get all the Fault Logs for one or more meters, between two dates. |
Return on success | <xml> <result>SUCCESS</result> <meter> <serial>Serial</serial> <name>Name of meter</name> <fault> <faultid>Unique ID of fault</faultid> <init_date>Create date of Fault.</init_date> <initiator>Login of person that created the fault, followed by double colon, and then the first and last name</initiator> <cnumber>ID of linked Meter Account, if any</cnumber> <symptom>Free form description of symptom.</symptom> <technician>Login of technician assigned to fault, followed by double colon, and then the first and last name</technician> <finding>Free form description of finding</finding> <responsible>Login of person responsible to sort out fault, followed by double colon, and then the first and last name</responsible> <action>Free form description of action to take</action> <clear_date>Date Fault was cleared, or null</clear_date> <cleared>Y if fault has been cleared</cleared> <toinvoice>Y/N</toinvoice> <newwork>Y/N</newwork> <jobnum>Job number, or blank if none</jobnum> </fault> next fault... next meter... </meter> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | Get the faults for all meters from 2010-08-14. e.g. https://adam.pnpscada.com:441/getFaultLog.jsp?LOGIN=subdomain.testme&PWD=testme&start=2010-08-14%2000:00 |
Input xml | <xml> <fault> <serial>Meter's serial</serial> <faultid>blank for new, or the ID of the fault to update</faultid> <initiator>login of person that made the fault, cannot be blank</initiator> <cnumber>ID of Meter Account</cnumber> <symptom>Free form description of sympton</symptom> <technician>full login of technician assigned, or blank for none</technician> <finding>Free form description of finding</finding> <responsible>full login of person responsible for following up on this fault, or blank for none</responsible> <action>Free form description of action</action> <cleared>Y if cleared</cleared> <clear_date>if cleared Y, then this is the date it was cleared</clear_date> <toinvoice>Y if this is to invoice for</toinvoice> <newwork>Y if new work</newwork> <jobnum>the job number or blank if none</jobnum> </fault> </xml> |
Description | Log a Fault against a meter, or update a fault |
Return on success | <xml> <xml> <fault> <faultid>id of fault added</faultid> <serial>serial number</serial> <result>SUCCESS</result> </fault> ...next fault </xml> |
Return on failure | <xml> <fault> <faultid>id of fault added</faultid> <serial>serial number</serial> <result>ERROR:[reason]</result> </fault> ...next fault </xml> |
Example | Put a fault for meter 0123210 e.g. https://adam.pnpscada.com:441/putFaultLog.jsp?LOGIN=subdomain.testme&PWD=testme&xml=<xml><fault><serial>0123210</serial><faultid></faultid><initiator>testme.user1</initiator><cnumber>2228</cnumber><symptom>sympton</symptom><technician>testme.user2</technician><finding>finding</finding><responsible>testme.user3</responsible><action>action</action><cleared>Y</cleared><clear_date>2020-11-23 16:57:55</clear_date><toinvoice>Y</toinvoice><newwork>Y</newwork><jobnum>123</jobnum></fault></xml> |
PageToDo | this is the web page that should be executed as a web-service |
doPageSubmit | (optional) set to "1" to first get the page values, and then submit with those values. This allows you to only change one value on an edit page. |
Description | Execute a web-page as a web-service. |
Return on success | <xml> <result>SUCCESS</result> <form> <type>text/hidden/checkbox/select/textarea</type> <value>The value of the input submitted by the form.</value> <flag>"checked" for checkboxes</flag> </form> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | Please note that with the above method, you set everything on the Meter Details screen. It is almost like pushing the submit button at the bottom of the screen. The result of the page is XML with all variables in the page's form. e.g. https://adam.pnpscada.com:441/doPage?LOGIN=subdomain.testme&PWD=testme&SNUMBER=700697&PageToDo=commisioning.jsp&submitbt=true&MNAME=key2Here&CTPRIM=1&CTSEC=1&VTPRIM=1&VTSEC=1&FULLLOAD=60&PLACE=&PASSWD=&NOTE=&WIRES=2&SITE=&ZONE=&PRIMARYM=&UPP=1&PPU=1&COMDATE=2009-08-24%2016%3A38%3A08&MAXDATE=2009-08-24%2016%3A38%3A08 To change only the ZONE on Edit->Meter Details to TESTZONE e.g. https://adam.pnpscada.com:441/doPage?LOGIN=subdomain.testme&PWD=testme&key1=700697&PageToDo=commisioning.jsp&doPageSubmit=1&submitbt=1&ZONE=TESTZONE |
eid | id of meter account (can also specify key1, key2 or key3) |
startdate | this is the FROM date and time for the bill |
enddate | this is the TO date and time for the bill |
TGIDX (optional) | this is configured tariff to use. Index 0 is the default tariff. Other options would typicall be 1, 2,... etc. |
Teid (optional) | the entity id of the configured tariff to use |
Tkey1 (optional) | the key1 of the configured tariff to use |
published (optional) | P for provisional bills (the default), N for not published monthly bills, Y for published monthly bills, and C for captured bills |
documentdate (optional) | When you run a provisional bill, you can use this to determine the invoice date, which can affect things like which VAT rate is applicable, for instance |
tariffdate (optional) | If you want to see what your last month would have cost you in next month's tariff, then enter last month's start and end as above, but enter a date within next month in this field. |
Description | Get the provisional bill for one meter account between two dates for the specified tariff. |
Return on success | <xml> <result>SUCCESS</result> <startdate>Start Date (YYYY-MM-DD HH:MM:SS)</startdate> <enddate>End Date (YYYY-MM-DD HH:MM:SS)</enddate> <published>P</published> <key1>Meter Account id</key1> <key2>Meter Account description</key2> <util>Utility of account, e.g. Electricity or Water</util> <currency>Currency Symbol of Bill</currency> <align>Is the symbol pre-pended or post-pended to the amount?</align> <tariff>the name of the tariff that was used</tariff> <taxtype>the description of the tax to add, e.g. VAT</taxtype> <taxperc>the percentage of the tax to add</taxperc> <items> amount of li items in bill</items> <bill> <li> <tname> Description of tariff line item</tname> <desc1> Description 1 of bill line item</desc1> <desc2> Description 2 of bill line item</desc2> <units> Quantity of units that is billed in this line</units> <rate> Price per unit</rate> <amount> Total amount (units multiplied by rate)</amount> <unitsunit> The unit in which this item is measured, e.g. kWh, kl, etc.</unitsunit> <type> An indication of what type of algorithm was followed to calculate the amount of this item</type> <compareId> this is used to be able to compare similar line item fields accross months, e.g. Peak (LS) and Peak (HS)</compareId> <tarifflineid> this is a unique identifier per tariff line item</tarifflineid> </li> ... next li ... </bill> <readings> <mr> <snumber>This is the meter serial number</snumber> <mtype>This is the meter type</mtype> <start> <date>date of the start reading for this meter for this bill</date> <E1>Total Energy reading (Active import - this is the default of most meters) kWh</E1> <E2>Total Reverse Active Energy reading (this is left out if zero)</E2> <F1>Total Reactive Energy reading (Quadrant 1 - forward lagging) (this is left out if zero) kvarh</F1> <F2>Total Reactive Energy reading (Quadrant 2 - reverse leading) (this is left out if zero)</F2> <F3>Total Reactive Energy reading (Quadrant 3 - reverse lagging) (this is left out if zero)</F3> <F4>Total Reactive Energy reading (Quadrant 4 - forward leading) (this is left out if zero)</F4> .. alternatively, if for example water, this could be .. <W1>Total Water reading (kl)</W1> </start> <end>The end reading... follows the same format as the start reading</end> </mr> ... next meter reading (mr) ... </readings> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | for a meter account with ID 10469 using default tariff for the date 2015-03-01 to 2015-04-01 https://adam.pnpscada.com/getProvisionalBill.jsp?LOGIN=subdomain.testme&PWD=testme&key1=10469&startdate=2015-03-01&enddate=2015-04-01 |
eid | id of meter account (can also specify key1, key2 or key3) |
startdate | this is the FROM date and time for the bill |
enddate | this is the TO date and time for the bill (optional) |
Description | If enddate is not specified, returns a list of all the dates for which there are bill for this meter account. Alternatively, returns the monthly bill for one meter account between two dates. |
Return on success (no enddate specified) | <xml> <result>Pls Specify startdate and enddate</result> <key1>Meter Account id</key1> <key2>Meter Account Name</key2> <util>Utility of account, e.g. Electricity or Water</util> <bills> <bill> <startdate>Start Date of Bill Run (YYYY-MM-DD HH:MM:SS.mmm)</startdate> <enddate>End Date of Bill Run (YYYY-MM-DD HH:MM:SS.mmm)</enddate> <brid>2126203</brid> </bill> ... repeated for each bill run </bills> </xml> |
Return on success (enddate specified) | <xml> <result>SUCCESS</result> <startdate>Start Date of Bill Run (YYYY-MM-DD HH:MM:SS.mmm)</startdate> <enddate>End Date of Bill Run (YYYY-MM-DD HH:MM:SS.mmm)</enddate> <key1>Meter Account id</key1> <key2>Meter Account Name</key2> <util>Utility of account, e.g. Electricity or Water</util> <brid>Bill Run ID</brid> <currency>Currency Symbol of Bill</currency> <align>Is the symbol pre-pended or post-pended to the amount?</align> <tariff>the name of the tariff that was used</tariff> <taxtype>the description of the tax to add, e.g. VAT</taxtype> <taxperc>the percentage of the tax to add</taxperc> <currency_decimals>is the amount of decimals in the currency, e.g. usually 2 for cents</currency_decimals> <items>amount of li items in bill</items> <bill> <li> <tname>Description of tariff line item</tname> <desc1>Description 1 of bill line item</desc1> <desc2> Description 2 of bill line item</desc2> <units>Quantity of units that is billed in this line</units> <rate>Price per unit</rate> <amount>Total amount (units multiplied by rate)</amount> <unitsunit>The unit in which this item is measured, e.g. kWh, kl, etc.</unitsunit> <type>An indication of what type of algorithm was followed to calculate the amount of this item</type> <compareId>this is used to be able to compare similar line item fields accross months, e.g. Peak (LS) and Peak (HS)</compareId> </li> ... more per bill line item </bill> <readings> <mr> <snumber>Serial of Meter</snumber> <mtype>This is the meter type</mtype> <start> <date>Start date</date> <E1>Total Energy reading and unit at time of bill start (Active import - this is the default of most meters)</E1> <F1>Total Reactive Energy reading and unit at time of bill start (Quadrant 1 - forward lagging) (this is left out if zero)</F1> </start> <end> <date>End date</date> <E1>Total Energy reading and unit at time of bill end (Active import - this is the default of most meters)</E1> <F1>Total Reactive Energy reading and unit at time of bill end (Quadrant 1 - forward lagging) (this is left out if zero)</F1> </end> </mr> </readings> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | for a meter account with ID 10469 for the date 2015-03-01 to 2015-04-01 https://adam.pnpscada.com/getMonthlyBill.jsp?LOGIN=subdomain.testme&PWD=testme&key1=10469&startdate=2015-03-01&enddate=2015-04-01 |
eid | id of entity (can also specify key1, key2 or key3). |
Description | Currently only Meter Accounts, Tariffs and Meters are supported, and the return is different between them. Returns information about each entity. |
Return on success (Meter Account) | <xml> <result>SUCCESS</result> <id>They key1 of the Meter Account</id> <name>They key2 of the Meter Account</name> <utility>The utility of the Meter Account, e.g. Electricity or Water</utility> <meters> <meter> <eid>Entity id of meter in meter account</eid> <key1>key1 of meter (the serial number)</key1> <key2>key2 of meter (the use defined name)</key2> <portion>multiplier, e.g. 1 or -1 or 0.3</portion> </meter> ... next meter ... </meters> <meterlen>The quantity of meters in this meter account</meterlen> <tariffs> <tariff> <eid>Entity id of tariff</eid> <key1>key1 of tariff (the id)</key1> <key2>key2 of tariff (the name)</key2> <tgidx>The tariff option number. Option 0 is the default tariff for this meter account, used for monthly bills. The others can be used for Provisional Bills, but not for Monthly Bills.</tgidx> </tariff> ... next tariff ... </tariffs> <tarifflen>The quantity of tariffs configured for this meter account</tarifflen> </xml> |
Return on success (Ledger) | <xml> <result>SUCCESS</result> <id>They key1 of the Ledger</id> <name>They key2 of the Ledger</name> <date_of_last_transaction>Date of last transaction</date_of_last_transaction> <balance>Current balance of the ledger multiplied by 100000.</balance> </xml> |
Return on success (Tariff) | <xml> <result>SUCCESS</result> <id>The key1 of the tariff</id> <name>The key2 (name) of the tariff</name> <utility>The utility of the tariff, e.g. Electricity or Water</utility> <vfrom>Valid From date. If this is null, it has not been validated</vfrom> <vto>Valid To date. If this is null, it has not been validated</vto> <certifiedby>Indication of who validated this tariff</certifiedby> <certifiedon>When was it validated?</certifiedon> <taxtype>What is the name of the tax, e.g. VAT</taxtype> <taxperc>What is the percentage of the tax levied</taxperc> <currency>What is the currency symbol</currency> <currency_align>PRE or POST: is the currency symbol written before or after the amount</currency_align> <currency_decimals>is the amount of decimals in the currency, e.g. usually 100 for cents</currency_decimals> <calendars> <calendar> <eid>Entity id of a calendar that is referred to by the tariff. For these relationships to be set up correctly, the tariff should be validated first.</eid> <key1>key1 of calendar (id)</key1> <key2>key2 of calendar (name)</key2> <tourateperiods> <tourateperiod> <touid>Unique Time of Use ID for a specific tariff rate period in this calendar. This is unique over all calendars per server.</touid> <descr>Human readable description of the time of use tariff rate period</descr> </tourateperiod> ... next tourateperiod ... </tourateperiods> <tourateperiodlen>the amount of tourateperiods in this calendar</tourateperiodlen> </calendar> ... next calendar ... </calendars> <calendarlen>the amount of calendars in this tariff</calendarlen> <lineitems> <li> <tarifflineid>unique id for a specific line item on the tariff. This ties up with the field of the same name in getProvisionalBill.jsp</tarifflineid> <descr>The tariff line item description</descr> <type>Indication of the type of algorithm followed to calculate this line item</type> <compareId>Sometimes different tarifflineitems should be compared to each other for statistical comparisons accross seasons, e.g. between Peak (HS) and Peak (LS). Although their tarifflineid would be different, their compareId would be the same.</compareId> <color>This is an RGB value</color> <touid>If this is a Time Of Use tariff line item, the touid will be specified here. This can be cross referenced to touid in the calendars element.</touid> </li> ... next tariff line item (li) ... </lineitems> <lineitemlen>the amount of line items in this tariff</lineitemlen> </xml> |
Return on success (Meter) | <xml> <result>SUCCESS</result> <serialnumber>meter serial</serialnumber> <name>user defined meter name</name> <ctprim>CT primary value</ctprim> <ctsec>CT secondary value</ctsec> <vtprim>VT primary</vtprim> <vtsec>VT secondary</vtsec> <fullload>Breaker Size</fullload> <wires>Single Phase: 2 Wires, 3 Phase: Normally 4 Wires, sometimes 3 wires</wires> <place>Address 1 Freefrom</place> <site>Address 2 Freefrom</site> <zone>Address 3 Freefrom</zone> <primarymetering>If Y (default) we take the readings from the meter as is, if N, we apply CT and VT ratios by modifying UPP and PPU</primarymetering> <units_per_pulse>Number of kWh/kvarh/liters per pulse</units_per_pulse> <pulses_per_unit>Number of pulses per kWh/kvarh/liter</pulses_per_unit> <commissioned>Y/N is meter commisioned</commissioned> <disabled>Y/N is meter disabled</disabled> <password>The password for the meter, blank if the meter's default password is to be used</password> <comdate>Date the meter was installed/commissioned</comdate> <maxdate>The last profile data we have for the meter</maxdate> <maxdatenonzero>The last profile data we have for the meter that is not zero</maxdatenonzero> <maxdatenoninterp>The last profile data we have for the meter that was not interpolated. You can derive/inerpolate profile from totals, but it is not always useful profile.</maxdatenoninterp> <manualonly>Y/N is meter read manually only</manualonly> <utility>Electricity/Water</utility> <type>Type of meter</type> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | https://adam.pnpscada.com:441/getEntityDetails.jsp?LOGIN=subdomain.testme&PWD=testme&key1=88501326 |
Eids | (optional): comma delimited entity IDs of entities to get. If left out, it gets all the entities |
cid | (optional): Restricts returned entities to entities of this class. |
iid | cid (optional): Restricts returned entities to entities of this interface. |
Key2 | cid (optional): Restricts returned entities to entities of this Key2. Can use SQL wildcards. |
Description | Currently only Meter Accounts, Tariffs and Meters are supported, and the return is different between them. Returns information about each entity. |
Return on success (Meter Account) | <xml> <result>SUCCESS</result> <id>They key1 of the Meter Account</id> <name>They key2 of the Meter Account</name> <utility>The utility of the Meter Account, e.g. Electricity or Water</utility> <meters> <meter> <eid>Entity id of meter in meter account</eid> <key1>key1 of meter (the serial number)</key1> <key2>key2 of meter (the use defined name)</key2> <portion>multiplier, e.g. 1 or -1 or 0.3</portion> <meteraccount> <eid>ID of Meter Account linked to meter</eid> <key1>Meter Account key</key1> <key2>Meter Account Name</key2> <accountnumber>Meter Account number</accountnumber> </meteraccount> ... next meter account ... </meter> ... next meter ... </meters> <meterlen>The quantity of meters in this meter account</meterlen> <tariffs> <tariff> <eid>Entity id of tariff</eid> <key1>key1 of tariff (the id)</key1> <key2>key2 of tariff (the name)</key2> <tgidx>The tariff option number. Option 0 is the default tariff for this meter account, used for monthly bills. The others can be used for Provisional Bills, but not for Monthly Bills.</tgidx> </tariff> ... next tariff ... </tariffs> <tarifflen>The quantity of tariffs configured for this meter account</tarifflen> </xml> |
Return on success (Ledger) | <xml> <result>SUCCESS</result> <entity> <id>They key1 of the Ledger</id> <name>They key2 of the Ledger</name> <date_of_last_transaction>Date of last transaction</date_of_last_transaction> <balance>Current balance of the ledger multiplied by 100000.</balance> </entity> ...next entity... </xml> |
Return on success (Tariff) | <xml> <result>SUCCESS</result> <id>The key1 of the tariff</id> <name>The key2 (name) of the tariff</name> <utility>The utility of the tariff, e.g. Electricity or Water</utility> <vfrom>Valid From date. If this is null, it has not been validated</vfrom> <vto>Valid To date. If this is null, it has not been validated</vto> <certifiedby>Indication of who validated this tariff</certifiedby> <certifiedon>When was it validated?</certifiedon> <taxtype>What is the name of the tax, e.g. VAT</taxtype> <taxperc>What is the percentage of the tax levied</taxperc> <currency>What is the currency symbol</currency> <currency_align>PRE or POST: is the currency symbol written before or after the amount</currency_align> <currency_decimals>is the amount of decimals in the currency, e.g. usually 100 for cents</currency_decimals> <calendars> <calendar> <eid>Entity id of a calendar that is referred to by the tariff. For these relationships to be set up correctly, the tariff should be validated first.</eid> <key1>key1 of calendar (id)</key1> <key2>key2 of calendar (name)</key2> <tourateperiods> <tourateperiod> <touid>Unique Time of Use ID for a specific tariff rate period in this calendar. This is unique over all calendars per server.</touid> <descr>Human readable description of the time of use tariff rate period</descr> </tourateperiod> ... next tourateperiod ... </tourateperiods> <tourateperiodlen>the amount of tourateperiods in this calendar</tourateperiodlen> </calendar> ... next calendar ... </calendars> <calendarlen>the amount of calendars in this tariff</calendarlen> <lineitems> <li> <tarifflineid>unique id for a specific line item on the tariff. This ties up with the field of the same name in getProvisionalBill.jsp</tarifflineid> <descr>The tariff line item description</descr> <type>Indication of the type of algorithm followed to calculate this line item</type> <compareId>Sometimes different tarifflineitems should be compared to each other for statistical comparisons accross seasons, e.g. between Peak (HS) and Peak (LS). Although their tarifflineid would be different, their compareId would be the same.</compareId> <color>This is an RGB value</color> <touid>If this is a Time Of Use tariff line item, the touid will be specified here. This can be cross referenced to touid in the calendars element.</touid> </li> ... next tariff line item (li) ... </lineitems> <lineitemlen>the amount of line items in this tariff</lineitemlen> <periods> <period> <id>Period ID</id> <from>Period From Date</from> <to>Period End Date</to> </period> </periods> <rates> <rate> <tarifflineid>Tariff Line Item ID</tarifflineid> <periodid>Tariff Period ID</periodid> <value>Rate in rands (or percent for discount line items)</value> </rate> </rates> </xml> |
Return on success (Meter) | <xml> <result>SUCCESS</result> <serialnumber>meter serial</serialnumber> <name>user defined meter name</name> <ctprim>CT primary value</ctprim> <ctsec>CT secondary value</ctsec> <vtprim>VT primary</vtprim> <vtsec>VT secondary</vtsec> <fullload>Breaker Size</fullload> <wires>Single Phase: 2 Wires, 3 Phase: Normally 4 Wires, sometimes 3 wires</wires> <place>Address 1 Freefrom</place> <site>Address 2 Freefrom</site> <zone>Address 3 Freefrom</zone> <primarymetering>If Y (default) we take the readings from the meter as is, if N, we apply CT and VT ratios by modifying UPP and PPU</primarymetering> <units_per_pulse>Number of kWh/kvarh/liters per pulse</units_per_pulse> <pulses_per_unit>Number of pulses per kWh/kvarh/liter</pulses_per_unit> <commissioned>Y/N is meter commisioned</commissioned> <disabled>Y/N is meter disabled</disabled> <password>The password for the meter, blank if the meter's default password is to be used</password> <comdate>Date the meter was installed/commissioned</comdate> <maxdate>The last profile data we have for the meter</maxdate> <maxdatenonzero>The last profile data we have for the meter that is not zero</maxdatenonzero> <maxdatenoninterp>The last profile data we have for the meter that was not interpolated. You can derive/inerpolate profile from totals, but it is not always useful profile.</maxdatenoninterp> <manualonly>Y/N is meter read manually only</manualonly> <utility>Electricity/Water</utility> <type>Type of meter</type> </xml> |
Return on success (Organization) | <xml> <result>SUCCESS</result> <id>Same as the key1</id> <adminid>Id of role that administrates this organization</adminid> <organizationname>Name</organizationname> <postaladdrl1>Postal Address line 1</postaladdrl1> <postaladdrl2>Postal Address line 2</postaladdrl2> <city>CityPostal </city> <province>Postal Province</province> <postalcode>Postal Code</postalcode> <country>e.g. ZA</country> <telephonenumberdial>e.g. 27</telephonenumberdial> <telephonenumber>Telephone number</telephonenumber> <telephonenumberext>Extention</telephonenumberext> <faxnumberdial></faxnumberdial> <faxnumber>Fax number</faxnumber> <streetaddr>Physical Street Address</streetaddr> <vatnumber>VAT number</vatnumber> <subdomain>Subdomain that is pre-pended to .pnpscada.com e.g. sdg. (This is also used to determine the banner on the login page)</subdomain> <timezone>e.g. Africa/Johannesburg</timezone> <aid>-1</aid> <deleted>N if this Organization has been deleted</deleted> <hasbanner>N if this Organization has it's own banner</hasbanner> <loginnewpage>???</loginnewpage> <decimaldelimeter>e.g. .</decimaldelimeter> <thousandsdelimeter>e.g. [empty]</thousandsdelimeter> <unitsdelimeter>e.g. [empty]</unitsdelimeter> <domainserver>Main Server (if you have multiple servers)</domainserver> <bill_companyname/>Company to bill</bill_companyname> <bill_email/>billing email address</bill_email> <bill_email2/>second billing email</bill_email2> <adderorg>Id of org that added this organization</adderorg> </xml> |
Return on success (Login Account) | <xml> <result>SUCCESS</result> <id>ID of this login</id> <firstname>First name</firstname> <lastname>Last name</lastname> <email>email address</email> <cellphone>Cellphone number</cellphone> <login>login name with subdomain. e.g. sdg.joe</login> <cellphonedial>e.g. 27</cellphonedial> <emailcontactme>Y if we can contact this person at this email address</emailcontactme> <verified>Y when the login has been verified (used mainly for first time top level organization registration)</verified> <deleted>Y if deleted</deleted> <inwiki>Not used anymore</inwiki> <j2meon>Not used anymore</j2meon> <pwddate>Date of last password change</pwddate> <oldmenu>Y if the old menu is used on this login</oldmenu> </xml> |
Return on success (Role) | <xml> <result>SUCCESS</result> <id>Same as key1</id> <orgid>Key1 of organization</orgid> <rolename>Name of role</rolename> <addrestricted>Y if this role is restricted to which entities it may add</addrestricted> <interfrestricted>Y if this role is restricted to which screens it may access</interfrestricted> <entrestricted>Y if this role is restricted to which entities it may see in it's organization</entrestricted> <globl>e.g. Y</globl> <deleted>Y if deleted</deleted> <startpage>First screen after login, or null for overview screen</startpage> <pagrestricted>Y if restricted to which pages this role may access</pagrestricted> <smsdelay>e.g. 30</smsdelay> <emaildelay>e.g. 30</emaildelay> <smsdaystart>e.g. 7</smsdaystart> <emaildaystart>e.g. 0</emaildaystart> <smsdayend>e.g. 20</smsdayend> <emaildayend>e.g. 24</emaildayend> <smslimit>e.g. 10</smslimit> <emaillimit>e.g. 10</emaillimit> <smsatnight>Y if SMSes are to be sent at night</smsatnight> <emailatnight>Y if emails are to be sent at night</emailatnight> <custommenu>Customer Menu eid</custommenu> <smsparms>CommunitySMS login details or name of SMS connector</smsparms> <pwdregexp>Password expiry e.g. .*</pwdregexp> <pwddays>Password expiry e.g. 40000</pwddays> <pwdgracedays>Password expiry e.g. 0</pwdgracedays> <pwddescr>Password expiry e.g. Please specify a valid password</pwddescr> <lid>Ledger to charge for SMSes.</lid> <price>Price per SMS e.g. 0</price> <freesmspermonth>Number of free SMSs per month. e.g. 0</freesmspermonth> </xml> |
Return on success (Meter Account Group) | <xml> <result>SUCCESS</result> <roles> <role> <id>ID of Role</id> <descr>Descript of Role</descr> <tenant>Y if this role is under a tenant (as opposed to being a main incomer)</tenant> </role> ...more roles </roles> <meter_accounts> <meter_account> <id>entity id of meter account</id> <meter_account_id>id of meter account</meter_account_id> <multiplier>1</multiplier> <roleid>role of this account</roleid> </meter_account> ...more accounts </meter_accounts> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | https://adam.pnpscada.com:441/getEntityDetails.jsp?LOGIN=subdomain.testme&PWD=testme&key1=88501326 |
none | |
Return on success | <xml> <result>SUCCESS</result> <len>Number of entities returned</len> <entities> <entity> <id>eid of the meter</id> <cid>id of the meter's class</cid> <key1>The meter's serial</key1> </entity> more meters... </entities> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
eid | entity id of calendar. This is not the same as the calendar id. (can also specify key1, key2 or key3) |
from | this is the FROM date and time for the TOU dump |
to | this is the TO date and time for the TOU dump |
doall | pass true in here to get the same period multiple times if more than one TOUID exist for it. This is relevant e.g. in the case where the TOUID of the period without season also exists. |
multi | pass true in here to get all the TOUIDs in this calendar per period. This is relevant e.g. in the case where the TOUID of the period without season also exists. |
Return on success | <xml> <result>SUCCESS</result> <id>The key1 of the calendar (id)</id> <name>The key2 of the calendar</name> <certified>Has this calendar been certified, i.e. populated correctly in the database? Y/N</certified> <certifiedby>Indication of who certified it</certifiedby> <certifiedfrom>from when is the calendar valid</certifiedfrom> <certifiedto>until when is the calendar valid</certifiedto> <certifiedon>when was it certified?</certifiedon> <timezone>Time Zone of the calendar</timezone> <ignoredst>Should daylight savings time - if applicable to the time zone - be ignored?</ignoredst> <periods> <li> <ts>time stamp of period in calendar</ts> <touid>Time of Use unique id for that period</touid> </li> ... next period in time range (li) ... </periods> <periodlen>amount of periods in the calendar for the selected time range</periodlen> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Key3 (optional) (Note: key names are case sensitive) | a comma delimited string of key3 IDs | |
startdate | The start date of the phasors (If omitted, defaults to the enddate - 24 hours) | |
enddate | The end date of the phasors in the form "YYYY-MM-DD HH:MM:SS". The "HH:MM:SS" part is optional | |
Key1 (optional) | Filter on meter's Key1. (where % is the wild card, this must be URL-Encoded with %25, e.g. Key1=%25loc%25) | |
Key2 (optional) | Filter on meter's Key2 | |
pk1 (optional) | Filter on an ancestor's Key1, e.g. a SIM card number. SQL wildcards supported. | |
pk2 (optional) | Filter on an ancestor's Key2, e.g. a phone number. SQL wildcards supported. | |
place (optional) | Filter on meter's place | |
site (optional) | Filter on meter's site | |
zone (optional) | Filter on meter's zone | |
commissioned (optional) | yes/no/all. Default is 'yes'. If yes, only considers meters where the commissioned flag in the Meter Details has been set on. | e.g. commissioned=all |
Return on success | <xml> <result>SUCCESS</result> <date>the last profile date</date> <meters> <meter> <cid>Class ID</cid> <primary>if primary metering "Y", else "N"</primary> <serial>Meter's serial</serial> <key2>Meter's user defined name</key2> <key3>Meter's Key3 (which may be null)</key3> <Data> <TimeItem> <Time>hh:mm</Time> <Red> <I>current</I> <V>voltage</V> <Iangle>current angle</Iangle> <Vangle>voltage angle</Vangle> <S>Apparent Energy kVA</S> <P>Active Energy kW</P> <Q>Reactive Energy kvar</Q> <pf>Power Factor</pf> <lead_lag>leading or lagging</lead_lag> </Red> <White> <I>current</I> <V>voltage</V> <Iangle>current angle</Iangle> <Vangle>voltage angle</Vangle> <S>Apparent Energy kVA</S> <P>Active Energy kW</P> <Q>Reactive Energy kvar</Q> <pf>Power Factor</pf> <lead_lag>leading or lagging</lead_lag> </White> <Blue> <I>current</I> <V>voltage</V> <Iangle>current angle</Iangle> <Vangle>voltage angle</Vangle> <S>Apparent Energy kVA</S> <P>Active Energy kW</P> <Q>Reactive Energy kvar</Q> <pf>Power Factor</pf> <lead_lag>leading or lagging</lead_lag> </Blue> <Neutral> <I>Current</I> <Iangle>Current Angle</Iangle> </Neutral> <Total> <S>Apparent Energy kVA</S> <P>Active Energy kW</P> <Q>Reactive Energy kvar</Q> <pf>Power Factor</pf> <lead_lag>leading or lagging</lead_lag> </Total> </TimeItem> ...next time item... </Data> </meter> ...next meter... </meters> <xml> | |
Return on failure | <xml><result>ERROR:error message</result></xml> | |
Example | Get the phasor for multiple meters, during 2 dates. e.g. https://adam.pnpscada.com:441/getVI.jsp?LOGIN=subdomain.testme&PWD=testme&commissioned=all&Key1=38900001&startdate=2010-09-10&enddate=2010-09-15 |
mag_id | Meter Account Group's entity ID |
Return on success | <xml> <result>SUCCESS</result> <meters_online>Number Of Meters Online since yesterday. Excluding Uncommissioned and manual meters.</meters_online> <meters_offline>Number Of Meters Offline</meters_offline> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | Get number of meters online and offline e.g. https://adam.pnpscada.com/metersonline.jsp?LOGIN=subdomain.testme&PWD=testme&mag_id=8738 |
serial | a comma separated list of serials of the BMSRTUs |
startdate | Start date of events |
enddate | End date of events |
Return on success | <xml> <result>SUCCESS</result> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | Get the time spent in bypass for each bmsrtu relay e.g. https://adam.pnpscada.com/metersonline.jsp?LOGIN=subdomain.testme&PWD=testme&serial=3212&start=2014-01-01&end=2014-01-14 |
Input | eid: Entity ID |
Input | key1: First/System name (meter serial) |
Input | key2: Second/User name |
Input | cid: Class ID |
Input | phone: Phone number. See Note 2 |
Return on success | <xml> <result>SUCCESS</result> <meter> <serial>meter's serial e.g. ICP0000</serial> <id>meter's entity ID e.g. 4763</id> <vset> <id>instrumentation profile's ID e.g. 145</id> <cust_name>instrumentation profile's custom name in the context of this meter e.g. Heat</cust_name> <column> <id>first column in the instrumentation profile's ID e.g. 1203</id> <unit>unit of this column e.g. Celcius</unit> <description>standard description for this column e.g. Temperature Channel 0</description> <color>color on graph for this column in RRGGBB when converted to hex e.g. 16646144</color> <unitgraph>0=this value can not be graphed, 1=this value can be graphed</unitgraph> <custom_desc>custom description for this column in the context of this meter e.g. Cold</custom_desc> </column> more columns ... </vset> more vsets... </meter> more meters... </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | Get the description of an instrumentation profile set e.g. https://adam.pnpscada.com:441/vsetInfo.jsp?LOGIN=subdomain.testme&PWD=testme&key1=ICP0000&cid=163&startdate=2012-08-14&enddate=2013-08-14 |
Inputs | |
---|---|
startdate | The oldest date from where to return profile values. See Note 3 |
enddate | The youngest date from where to return profile values. See Note 3 |
vset | ID of the vset (see vsetInfo.jsp). Optional |
register | The name of the register to get e.g. 'Credit'. Optional |
eid | Entity ID |
key1 | First/System name (meter serial) |
key2 | Second/User name |
cid | Class ID |
phone | Phone number. See Note 2 |
Return on success | <xml> <result>SUCCESS</result> <meter> <serial>meter's serial e.g. ICP0000</serial> <id>meter's entity ID e.g. 4763</id> <vset> <date>date and time of the reading e.g. 2012-08-14 00:05:00</date> <val>value of the reading e.g. 26.46</val> <id>vset column id (see vsetInfo.jsp) e.g. 1205</id> </vset> next columns and dates... </meter> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | Get the instrumentation profile e.g. https://adam.pnpscada.com:441/readVSet.jsp?LOGIN=subdomain.testme&PWD=testme&key1=ICP0000&cid=163&vset=145&startdate=2012-08-15&enddate=2013-08-14 |
Inputs | |
---|---|
quickbalance | (optional) only for DirectDeposit Payment facility enabled Ledgers, if you want a super quick balance web call, pass in your account reference, e.g. WDERAQHN. Returns in 100/ths of the currency, e.g. cents. By the way, you do not currently need to pass in a login and password to access this function. |
cellphone | must specify, only if quickbalance is specified |
startdate | (not used if quickbalance was specified) The oldest date from where to return transactions. See Note 3 |
enddate | (not used if quickbalance was specified)The youngest date from where to return transactions. See Note 3 |
eid | Entity ID (ledger or meter or meter account). Only one of this and the following parameters need to be specified, in order to uniquely identify the ledger: |
key1 | First/System name (ledger id) (this can also be the meter serial number) |
key2 | Second/Ledger name |
ANUMBER | Meter Account Account Number (the configured account number in Edit Meter Account) |
Serial | The associated meter serial number |
pay | (optional, use with payment) true - use this to do a payment |
amt | (required with payment) the amount to pay in, e.g. 50.00 for R50, for example |
tpe | (required with payment) R for Receipt, I for Invoice |
desc | (required with payment) Description of transaction |
RequestID | optional, for getting a list of transaction or specifying a payment. Guard against duplicates |
billingstart | (optional) Filter on transactions with this billing start |
billingend | (optional) Filter on transactions with this billing end |
Return on success | if quickbalance was specified: <xml> <result>SUCCESS</result> <currentbalance>10000</currentbalance> </xml> normally: <xml> <result>SUCCESS</result> <eid>Entity ID of Ledger</eid> <key1>key1 of Ledger</key1> <key2>user defined name of Ledger</key2> <odate>Opening Date of Ledger</odate> <obal>Opening balance of Ledger</obal> <obalRAW>Opening balance of Ledger without formatting</obalRAW> <action>None</action> <cbal>Current Balance</cbal> <cbalRAW>Current Balance without formatting</cbalRAW> <hasprepaid>true if linked to a prepaid facility, false otherwise</hasprepaid> when buying an STS token / garnish orders / debit orders: <garnish> <gamtRAW>Garnish amount without formatting</gamtRAW> <gamt>Garnish amount</gamt> </garnish> <debit> <damtRAW>Debit amount without formatting</damtRAW> <damt>Debit amount</damt> </debit> <tokentrn> <tamtRAW>Token cost without formatting</tamtRAW> <tamt>Token cost</tamt> <token>20 digit token</token> <tdescr>transaction description</tdescr> </tokentrn> per prepaid facility: <prepaidfacility> <eid>Entity ID of n-th Prepaid Facility linked to ledger</eid> <key1>key1 of Prepaid Facility</key1> <key2>User defined name of Prepaid Facility</key2> </prepaidfacility> <breaker> <eid>Entity ID of Breaker linked to previous Prepaid Facility</eid> <key1>key1 of Breaker</key1> <key2>User defined name of Breaker</key2> <state>Current state, (Switched on/Switched off)</state> <date>Date of last state change</date> </breaker> <meteraccount> <eid>Entity ID of Meter Account linked to previous Prepaid Facility</eid> <key1>key1 of Meter Account</key1> <key2>User defined name of Meter Account</key2> </meteraccount> <tariff> <eid>Entity ID of default Tariff linked to previous Meter Account</eid> <key1>key1 of tariff</key1> <key2>User defined tariff name</key2> </tariff> ... (more [prepaid facility,breaker,meteraccount,tariff] - combos, if any) <hastrans>true if there are transactions returned in this request, false if there are no transactions returned in this request (dependant on start and end date)</hastrans> if transactions available: <transactions> <partialtrans>true if transactions from the begging is returned, false if the first transaction in not returned</partialtrans> <startdate>Start date and time of transactions returned</startdate> <enddate>End date and time of transaction returned</enddate> <obal>Opening Balance at start date</obal> <obalRAW>Opening Balance without formatting</obalRAW> <cbal>Current balance as end date</cbal> <cbalRAW>Current balance without formatting</cbalRAW> <transactionlog> per transaction: <transaction> <num>Sequence number of the transaction (starts from 0 per ledger)</num> <tdate>Date of transaction</tdate> <amt>Unformatted amount of transaction</amt> <descr>Description of transaction (text filled in by user or billing engine)</descr> <tpe>C=Credit Note ; D=Debit Note ; R=Receipt ; I=Invoice</tpe> </transaction> ... (more transactions if available) </transactionlog> </transactions> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | Get the ledger state and transactions from 2015-05-01 to 2015-05-23 for ledger with eid 577 e.g. https://adam.pnpscada.com:441/getLedger.jsp?LOGIN=subdomain.testme&PWD=testme&eid=577&startdate=2015-05-01&enddate=2015-05-23 |
ANUMBER | Optional. Find meter account by account number |
CNUMBER | Optional. Find meter account by automatically assigned number |
LNUMBER | Optional. Find meter account by lot number |
STANDNUMBER | Optional. Find meter account by stand number |
REGION | Optional. Find meter account by region number |
Return on success | <xml> <result>SUCCESS</result> <id>eid of the meter account</id> <cnumber>Automatically assigned unique Meter Account ID</cnumber> <cname>Account Name</cname> <anumber>Account Number</anumber> <lnumbernme>Name for Lot Number (defaults to Lot Number)</lnumbernme> <lnumber>Lot Number</lnumber> <standnumbernme>Name for Stand Number (defaults to Stand Number)</standnumbernme> <standnumber>Stand Number</standnumber> <regionnme>Name for region (defaults to Region)</regionnme> <region>Region</region> <tariffs> <tariff> <eid>Entity ID of Tariff</eid> <option>0 for default tariff, used for billing, the others are used for recons and comparisons</option> <tariffcode>Tariff Code</tariffcode> <tariffname>Tariff Name</tariffname> </tariff> .. more tariffs </tariffs> <meters> <meter> <eid>Entity ID of Meter</eid> <serial>Meter's Serial</serial> <portion>Portion to which this meter contributes to this meter account's usage</portion> </meter> ...more meters </meters> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
key1ts | Optional. Comma delimited list of meters serial numbers, but after every serial number must be space and a timestamp in SQL format FROM when to retrieve the profile. If this is NOT specified, it returns the last 2 days of profile - if available - for ALL meters of meter types that has profile, visible to this user. New Addition: you can specify a second timestamp after a second space, which will be treated as the TO timestamp up to which to return profile. |
Return on success | <xml> <result>SUCCESS</result> <len>Number of entities returned</len> <meters> <meter> <meterresult>SUCCESS or ERROR: No New Readings</meterresult> (and if success:) <key1>The meter's serial</key1> <sets> <set> <period>energy minutes in one period</period> <readings> <reading><ts>YYYY-MM-DD HH:MM:SS (period end)</ts> <kWh>kWh used in this period</kWh> <kVAh>kVAh in this period</kVAh> <kvarh>kvarh in this period</kvarh> (not used yet:)<pf></pf><pf1></pf1><pf2></pf2><pf3></pf3><V1></V1><V2></V2><V3></V3> <V1deg></V1deg><V2deg></V2deg><V3deg></V3deg><I1></I1><I2></I2><I3></I3> <I1deg></I1deg><I2deg></I2deg><I3deg></I3deg><thd></thd> <P2>Reverse kWh in this period</P2> </reading> more readings... </readings> </set> </sets> </meter> more meters... </meters> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
none | |
Return on success | <xml> <result>SUCCESS</result> <len>Number of entities returned</len> <entities> <entity> <id>eid of the meter</id> <cid>id of the meter's class</cid> <key1>The meter's serial</key1> </entity> more meters... </entities> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
none | |
Return on success | <xml> <result>SUCCESS</result> <len>Number of entities returned</len> <entities> <entity> <id>eid of the meter</id> <cid>id of the meter's class</cid> <key1>The meter's serial</key1> </entity> more meters... </entities> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
none | |
Return on success | <xml> <result>SUCCESS</result> <len>Number of entities returned</len> <entities> <entity> <id>eid of the meter</id> <cid>id of the meter's class</cid> <key1>The meter's serial</key1> </entity> more meters... </entities> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Input | startdate:The oldest date from where to return events. See Note 3 |
Input | enddate:The youngest date from where to return events. See Note 3 |
Input | since:The last time you asked for events. Return events read since this date. This overrides start/enddate |
Input | eid: Entity ID |
Input | key1: First/System name |
Input | key2: Second/User name |
Input | eclassid: (optional) Event Category id |
Input | eventids: (optional) Specific Event id |
Input | dshort: (optional) Display short event description if specified |
Input | dlong: (optional) Display long event description if specified |
Input | dclasss: (optional) Display short event class description if specified |
Input | dclassl: (optional) Display long event class description if specified |
Return on success | <xml> <result>SUCCESS</result> <meter> <serial>Meter's Serial</serial> <name>Meter's Name</name> <events> <event> <result>SUCCESS</result> <class_id>Event Class ID</class_id> <event_id>Event Type ID</event_id> <phase>A/B/C or Space for all or n/a</phase> <start_date>Event Start Date</start_date> <end_date>Event End Date</end_date> <value>Additional values or comments logged with the event</value> <reservation>N for no reservation, Y if there was a reservation logged against this event</reservation> <validated>N if the event has still not been cleared for billing purposes, Y if the event has been cleared</validated> <fault_id>ID of fault reservation</fault_id> <read_at>Time this event was read from the meter</read_at> </event> ...next event </events> </meter> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | Get events for meter with serial 19535358 between since 2015-03-01 http://adam.pnpscada.com:8080/getMeterEvents.jsp?LOGIN=subdomain.testme&PWD=testme&key1=19535358&since=2015-03-01 |
Input | none |
Return on success | <xml> <result>SUCCESS</result> <types> <type> <id>Event Type ID</id> <class>Class ID</class> <desc>Description of event</desc> <short_desc>Short code for event</short_desc> <istimespan>Y for events that spans a time range, like power loss, N for events that are instantaneous like reprogram</istimespan> <isexternal>Y for events that do not come from the meter, like software or user logged events, N for events that come from the meter</isexternal> <invalidates>Y if it causes the meter's data to become invalid for billing purposes, N otherwise</invalidates> </type> </types> <classes> <class> <id>Class ID</id> <desc>Description of class</desc> <short_desc>Short code for class</short_desc> </class> </classes> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | Get event types http://adam.pnpscada.com:8080/eventTypes.jsp |
Input | eid:entity ID of meter (can also alternatively specify the serial number with key1) |
Input | key1:serial number of meter (can also alternatively specify the entity id with eid) |
Input | sts20 digit STS code to send to meter (optional. empty if you just want to see the return of the last_attempt) |
Input | retry:if sending an STS code failed (as opposed when sending STS code successfully but the meter rejects it), schedule a retry |
Return on success | <xml> <result>SUCCESS:success message</result> <retry>no</retry> <last_attempt> <date>Date of last token sent or none if there was no previous switch</date> <result>SUCCESS:success message or ERROR:error message</result> <retry>yes/no</retry> </last_attempt> </xml> |
Return on failure | <xml> <result>ERROR:error message</result> <retry>yes/no</retry> <last_attempt> <date>Date of last token sent or none if there was no previous switch</date> <result>SUCCESS:success message or ERROR:error message</result> <retry>yes/no</retry> </last_attempt> </xml> |
Example | Send STS code 12345678901234567890 to meter with serial number 88088238 http://adam.pnpscada.com:8080/sendSTSCode.jsp?LOGIN=subdomain.testme&PWD=testme&key1=88088238&sts=12345678901234567890&retry=yes |
Input | eid:ID of breaker (required) |
Input | action:on/off/none, if omitted, defaults to none |
Input | retry:if a switch failed, schedule a retry |
Return on success | <xml> <result>SUCCESS</result> <action>on/off</action> <last_state> <date>Date of last switch or none if there was no previous switch</date> <state>Switched on/off or none if there was no previous switch</state> </last_state> </xml> |
Return on failure (no retry) | <xml><result>ERROR:error message</result><msg>Not retrying</msg></xml> |
Return on failure (retry) | <xml><result>ERROR:error message</result><msg>Switching Attempt Failed. Task scheduled to switch breaker on/off</msg></xml> |
Example | Switch on breaker with ID 43293 http://adam.pnpscada.com:8080/switchBreaker.jsp?LOGIN=subdomain.testme&PWD=testme&eid=43293&action=on |
Input | eids:Comma separated list of entity IDs of meter accounts. If omitted, returns all visible meter accounts |
Return on success | <xml> <result>SUCCESS</result> <meter_account> <id>ID of meter account</id> <tariff> <id>ID of tariff</id> <calendar_id>ID of Calendar (if any)</calendar_id> </tariff> more tariffs... <meter> <id>ID of meter</id> <comms_dev> <id>ID of Communication Device</id> <sim_id>ID of SIM card (if any)</sim_id> </comms_dev> <breaker_id>ID of breaker</breaker_id> more breakers... </meter> more meters... <prepaid_facility> <id>ID of Prepaid Facility</id> <ledger_id>ID of Ledger</ledger_id> <breaker_id>ID of Breaker (could be connected to a different breaker than what is on the meter)</breaker_id> </prepaid_facility> more prepaid facilities... </meter_account> ... more meter accounts if specified </xml> |
Return on failure | <xml><result>ERROR:error message</result><msg>Reason for failure</msg></xml> |
Example | Get all entities linked to Meter Accounts with entity IDs 9904 and 7512 http://adam.pnpscada.com:8080/getMeterAccount.jsp?LOGIN=subdomain.testme&PWD=testme&eids=9904,7512 |
Input setbackmaxdate | set to y if you want to overwrite samples that is already there (or omit this value if you dont want to overwrite) |
Input xml | <xml> <meter> <serial>Meter's serial</serial> <profile> <sample> <date>End Date of this sample in the format: yyyy-MM-dd HH:mm. Profiles MUST be given in ascending order. Profile dated before last reading will be discarded</date> <P1>Active import (kWh). Does not count up. With secondary metering this is the value after the multiplier</P1> <P2>Active export (kWh). With secondary metering this is the value after the multiplier</P2> <Q1>Reactive energy register quadrant 1 (kvarh). Does not reclock.</Q1> <Q2>Reactive energy register quadrant 2 (kvarh)</Q2> <Q3>Reactive energy register quadrant 3 (kvarh)</Q3> <Q4>Reactive energy register quadrant 4 (kvarh)</Q4> <STATUS>See note 4</STATUS> </sample> more samples... </profile> </meter> more meters... </xml> |
Return on success | <xml> <meter> <serial>Meter Serial</serial> <last_imported_date>Last imported date</last_imported_date> <max_date>Date meter is up to date to</max_date> [if there were errors: <errors> <error>Error 1</error> more errors... </errors>] </meter> </xml> |
Return on failure | <xml><result>ERROR:error message</result><msg>Reason for failure</msg></xml> |
Example | Put reading for meter 111111178 curl --data "LOGIN=subdomain.testme&PWD=testme&xml=<xml><meter><serial>111111178</serial><profile><sample><date>2016-06-17 12:00</date><P1>1</P1><P2>2</P2><Q1>3</Q1><Q2>4</Q2><Q3>5</Q3><Q4>6</Q4><STATUS>0</STATUS></sample></profile></meter></xml>" http://adam.pnpscada.com:8080/putProfile.jsp |
Input setbackmaxdate | set to y if you want to overwrite samples that is already there (or omit this value if you dont want to overwrite) |
Input xml | <xml> <meter> <serial>Meter's serial</serial> <total> <sample> <date>End Date of this sample in the format: yyyy-MM-dd HH:mm. Totals MUST be given in ascending order. Totals dated before last reading will be discarded</date> <E1>Active import (kWh). Does not count up. With secondary metering this is the value before the multiplier</E1> <E2>Reactive energy register quadrant 1 (kvarh). Does not count up.</E2> <F1>Active export (kWh). With secondary metering this is the value before the multiplier</F1> <F2>Reactive energy register quadrant 2 (kvarh)</F2> <F3>Reactive energy register quadrant 3 (kvarh)</F3> <F4>Reactive energy register quadrant 4 (kvarh)</F4> <STATUS>See note 4</STATUS> </sample> more samples... </total> </meter> more meters... </xml> |
Return on success | <xml> <meter> <serial>Meter Serial</serial> <last_imported_date>Last imported date</last_imported_date> <max_date>Date meter is up to date to</max_date> [if there were errors: <errors> <error>Error 1</error> more errors... </errors>] </meter> </xml> |
Return on failure | <xml><result>ERROR:error message</result><msg>Reason for failure</msg></xml> |
Example | Put total for meter 111111178 curl --data "LOGIN=subdomain.testme&PWD=testme&xml=<xml><meter><serial>111111178</serial><totals><sample><date>2016-06-17 12:00</date><E1>1</E1><E2>2</E2><F1>3</F1><F2>4</F2><F3>5</F3><F4>6</F4><STATUS>0</STATUS></sample></totals></meter></xml>" http://adam.pnpscada.com:8080/putTotals.jsp |
Input xml | <xml> <meter> <serial>Meter's serial</serial> <events> <sample> <eventid>The id of the event. see: http://sdg.pnpscada.com/eventTypes.jsp</eventid> <startdate>Start date of event (optional if end date is specified and a previous "unclosed" event exists)</startdate> <enddate>End date of event (optional if start date is specified)</enddate> <value>Optional: Additional Text Information</value> <phase>Optional: Phase of the event: A, B or C</phase> <file name="file.jpg">Optional: file attachment in base64. If you want to attach an image to a meter reading, use eventid 685 (Manual Meter Read) and the start date and time must be exactly the same as the total</file> </sample> more samples... </events> </meter> more meters... </xml> |
Return on success | <xml> <meter> <serial>Meter Serial</serial> [if there were errors: <errors> <error>Error 1</error> more errors... </errors>] </meter> <events_processed>Number of events processed<events_processed> </xml> |
Return on failure | <xml><result>ERROR:error message</result><msg>Reason for failure</msg></xml> |
Example | Put meter read event for meter 01234568 with imagecurl --data "LOGIN=subdomain.testme&PWD=testme&xml=<xml><meter><serial>01234568</serial><events><sample><eventid>685</eventid><startdate>2018-02-14 13:00</startdate><file name=\"test.gif\"> R0lGODlhMgAyAPf/AACEvQCExghKcwhKewhShAhjnAiEvRA5UhBKcxBKexBScxBSexBShBBahBBajBBalBBjlBBjnBBrpRBzrRB7rRB7tRB7vRCEvRgxQhg5Shg5WhhCWhhKYxhKaxhKcxhScxhSexhahBhajBhjjBhjlBhrlBhrnBhrpRhzpRhzrRh 7rRh7tRiEtRiEvRiMvRiUvSExQiE5QiE5SiFCQiFCSiFCUiFSayFScyFSeyFaeyFahCFjjCFjlCFrjCFrlCFrnCFznCFzpSFzrSF7pSF7rSF7tSGErSGEtSGEvSGMtSGMvSGUvSlCSilCUilKWilSYylSaylaaylacylaeyljeyljhCljjClrjClrlC lzlClznClzpSl7pSl7rSmErSmEtSmMtSmMvSmUvSmUximcxjFSWjFSYzFSazFaazFjezFjhDFrhDFrjDFzjDFzlDFznDF7nDF7pTGEpTGErTGEtTGMrTGMtTGUtTGUvTGcvTlaYzlaazljczljezlrhDlrjDlzjDlzlDl7lDl7nDl7pTmEpTmErTmMr TmMtTmUtTmUvTmcvUJjc0Jre0JzhEJzjEJ7lEJ7nEKEnEKEpUKErUKMpUKMrUKMtUKUrUKUtUKctUKcvUKlxkKlzkKtzkpzhEp7hEp7jEp7lEqElEqEnEqMpUqMrUqUrUqUtUqctUqlvUqlxlKElFKEnFKMnFKMpVKUpVKUrVKcrVKctVKlvVKlxlK1 1lqMnFqMpVqUpVqUrVqcrVqctVqltVqlvVqtxlq91mOUpWOUrWOcpWOcrWOctWOltWOlvWOtxmO1zmO11mO91mO93mucpWucrWuctWultWulvWutxmu1xmu1znOlrXOltXOttXOtvXOtxnO1xnO1znuttXutvXu1xnvG3oStvYTG1oTG3oTO3oTO54y 9zozG1ozG3ozO3ozO55S9xpS9zpTO3pzG1pzO3pzW55ze76XGzqXO1qXW3qXe563O1q3O3q3W3q3W57XW1rXW57Xe573W3r3e58be55CYqCH5BAkKAP8ALAAAAAAyADIAQAj+AP8JHEiwoMGDCBMqXMjQYD113ZwJyxXKTIyGDc1Nm5XpUCA2g0z5On aMlyxTkdBgwDiQmScxLlgoOZKEJpgvN8HM8aJFCxYrVaywceMm0CBClk5FUsMSIwIHJlIUOQImTBgwdrDa2Yqo66FMHd1AaUr24AcQO7R02bpJVS1EhazYKEu3rl268ZrdXVguW69YpPw0emVMlyiLdtElW4Vn69Y6Xi0h+mopEyZTp05N8vPkLgIGE E4QOUKa9BecWLVuPZSIdeVMqCwNkrJ3IQgQIUwI8QJGNddEmhIZujK3tt0POq5sifMmh/Hn0DE+tHaLEZPoCdV5K+xK1CtXjZj+oMEu0Jw0Wagm/fEDiNSxctFe9Wni5Lm4ZKoUIUo02ZIlTJdchklmsUACRX11obNMJ2IkkURvvWXlGGSTTXaJf5T4 N4kaY5HFwAMRqMBCC0eYQIIII5BQwg9BbMFFF3PMYQeFXl2CSmyDpFFbAg2QgMJUSoAhRoRa1WEHa4dMBlYmlghCW3QNeJBbEEfg5JgdiNxx5H5gGSIWeQWBsMAIP3TxxVZ4JKKIKpsId0UHYCrkAQhYbOGFjIjEUcUNcWKkwwc53ABnn4QWaihBDwW zx0WHDvRQRLl84kQTjd4DDjfF6JJLLq3wwWih62hjDGCPiAJLLo84cV2f5vh1Cin+6z0yCzi8kMKHDHGa5wsqlQTiRyCl8OINfLCkSgN25lCTSiZwvYHUgJdlZkopacjQh33JaKIIV5Dxl0hl/yVlCUpP3jWOMpzgAaFqrO33FWWYYJKUKYGMRxcwDM 6kxBdJoObbZHYYUggcbrDBxhptTGIJIFGQJcEEKYwoE4lIHEHEDz/soLEPWPjQUxxxyGHIIYdUJi8gHTa1AGgniJiCCTAHQUQXXqDmWIWufZUKr2ykXNZnoa1AkxJJhPGglVdiOVkimWiCySQ91/aZj6NVBaGEjy39FViFcPhcCAiIUEIQRfSmLtZGt tv0JV2X+1wDCYygG05hNHZlkkwfMkhJFX2C8AGZZmJ1B393LInIIFMYOucIQJi5VSKb1KLJIW8k3uicPagFWZuUu90ooD68MUcdh2TBZ6MGIXcFFjoUh7pBOXDwOkYBAQA7</file></sample></events></meter></xml>" http://adam.pnpscada.com:8080/putEvent.jsp |
Input xml | <xml> <meter> <serial>Meter's serial</serial> <instprof> <set> (instumentation profile sets are identified by the channels) <period>The period of the set in milliseconds. e.g. 1800000 for half hour. Use 0 for irregular intervals</period> <billing>Y if these values are used for billing (such as TOU off-peak register), N otherwise</billing> <channel> <name>name of this channel e.g. Voltage A</name> <phase>A,B,C or a space for all or not applicable</phase> <unit>unit of measurement e.g. kW,kvarh,kVA,m3,m³,DegC or °C</unit> </channel> more channels... </set> <sample> <date>Date of this sample in the format: yyyy-MM-dd HH:mm:ss.SSS e.g. 2019-02-22 10:57:43.000 Profile must be given in ascending order.</date> <channel>Channel value, numeric value. e.g. 23.01 If a channel does not have a value for this time, please leave empty</channel> more channels... (channels must be given in the same order as in the set.) </sample> more samples... </instprof> </meter> more meters... </xml> |
Return on failure | <xml><result>ERROR:error message</result><msg>Reason for failure</msg></xml> |
Example | Put instrumentation profile for meter curl --data "LOGIN=subdomain.testme&PWD=testme&xml=<xml> <meter> <serial>91129004</serial> <instprof> <set> <period>0</period> <billing>N</billing> <channel> <name>Temp1</name> <phase> </phase> <unit>DegC</unit> </channel> <channel> <name>Temp2</name> <phase> </phase> <unit>DegC</unit> </channel> </set> </instprof> <sample><date>2019-02-22 11:41:10.000</date><value>40.0</value><value>25.1</value></sample> <sample><date>2019-02-22 12:41:10.000</date><value>41.0</value><value>27.1</value></sample> </meter></xml>" http://adam.pnpscada.com:8080/putInstrProfile.jsp |
Input BILL | The bill run ID |
Input isall | all |
Input detail | high/low |
Return on success | <csv> </csv> |
Return on failure | |
Example | Bill export of all customers for bill run id 2126203 curl --data "LOGIN=subdomain.testme&PWD=testme&BILL=2126203&isall=all&detail=high" http://adam.pnpscada.com:8080/billexport.jsp |
Input brid | The bill run ID |
Input CSV | 1 |
Return on success | <csv> </csv> |
Return on failure | |
Example | Summary for bill run id 2126203 curl --data "LOGIN=subdomain.testme&PWD=testme&brid=2126203&CSV=1" http://adam.pnpscada.com:8080/billexport.jsp |
Return on success | <xml> <communication> <sim>SIM number</sim> <modem_connected>modem connected date and time. e.g. 2017-02-03 08:32:09.554</modem_connected> <last_read_attempt>last read attempt. e.g.2017-02-03 03:29:14.712</last_read_attempt> <last_read_success>last successful read. e.g.2017-02-03 03:29:14.712</last_read_success> </communication> </xml> |
Return on failure | <xml> <result>ERROR:reason</result> </xml> |
Example | http://adam.pnpscada.com:8080/kocosConn.jsp?LOGIN=testme.testme&PWD=testme |
Return on success | <xml> <billrun> <brid>Bill Run ID of first bill</brid> <start>Bill Run Start Date of first bill</start> <end>Bill Run End Date of first bill</end> </billrun> ...more bill runs... <result>SUCCESS</result> </xml> |
Return on failure | <xml> <result>ERROR:reason</result> </xml> |
Example | Get bill runs http://adam.pnpscada.com:8080/getBillruns.jsp?LOGIN=testme.testme&PWD=testme |
Return | CSV with the following columns:Meter Serial | Serial of meter | e.g. 63901154 | Meter Name | Name of meter | e.g. Battery Cabinet Floor 1 | Meter Type | Type of meter | e.g. Elster AS230 | Data In Up To | The Date and Time up to which there is data for the meter | e.g. 2017-03-20 11:30:00 | Non-Zero Up To | The Date and Time of the last non-zero data | e.g. 2017-03-20 11:30:00 | Non-Interpolated Up To | The Date and Time of the last actual data from the meter (or manual entries) | e.g. 2017-03-20 11:30:00 | Installed At | The Date and Time of the meter was installed | e.g. | Last Total | Last total (E1) | e.g. 6045 | Last Total At | Date of last total | e.g. '2017-01-07 04:00:00.000 | Meter Account Name | Comma Separated List of Meter Accounts linked to this meter | e.g. | Meter Site | Freeform address-type field | e.g. Mandela Square | Meter Zone | Freeform address-type field | e.g. Kiosk 14 | Meter Place | Freeform address-type field | e.g. Rand park Ridge | Connection | Connection string to communication device, like IP:Port, Cell Phone Number or HTTP Address | e.g. +27635543670 | Connection Type | Connection code: GPRSTC65 - TC65 Modem | GPRSSMAR - Smartee/Smartoo/Smartone GPRSKOCOS - Kocos Modem GPRSIPT - IPT Modems HEXING - Hexing Concentrator HOLLEY - Holley Concentrator HEXINGDLMS - Hexing Concentrator (DLMS Type) TCPS - Etherpad Active TCPC - Passive GPRSAPN - Generic Modem Passive GPRSMAESTRO - Generic Modem Active CSD - Generic CSD Modem TCPCA - Etherpad Active Always Connected GPRSLG - Generic Modem Active Always Connected TCPSA - Etherpad Passive Always Connected GPRSMAESTROA - Generic Modem Passive Always Connected INHE - INHE Concentrator WASION - Wasion Concentrator GPRSWGM - Wasion Modem SYM2 - SYM2 Concentrator Note that most modems can be loaded as their own type or generic (like KoCoS can be added as Generic Modem) e.g. GPRSTC65 | Connection Name | Name of communication device | e.g. Lion Mill D Cooler | RTU | Unique identifier for connection, like SIM no./IP:Port | e.g. 89064900000002923978 | Responsible | If there is an uncleared faultlog against this meter, this is the faultlog's person responsible or No one if none | e.g. No one | Finding | If there is an uncleared faultlog against this meter, this is the faultlog's finding or None yet if none | e.g. None yet | Scheduling | How often meter is read by AMR system. monthly, weekly, daily or a number in minutes | e.g. daily | Time Zone | Time Zone of meter | e.g. Africa/Johannesburg | Sets Not Read | Space separated list of sets not read. Profile/Totals/Events/Phasor/InstrumentationProfile/BillingRegisters | e.g. Profile Totals Events | Problem Summary | Short description of problem | e.g. Could not connect | Disabled | Y if meter is disabled, else N | e.g. Y | Commissioned | Y if meter is commissioned, else N | e.g. N | Problem Technical | Long description of problem | e.g. SDGInputElster:No data returned from meter | Problem Story | Even longer description of problem. | e.g. It did connect to the modem/pad correctly, but the meter didn't answer at all. The meter could be off. Alternatively, the problem is probably the cable between the modem/pad and the meter. They could also be programmed at different baud rates. The easiest way to troubleshoot this is to first successfully talk from your notebook computer using the Meter Manufacturer's software (PMU) through the same serial cable that normally connects to the modem/etherpad. (You may need a normal 9-pin-female-to-9-pin-female laplink serial cable for this). | Latitude | Latitude of meter | e.g. -25.4 | Longitude | Longitude of meter | e.g. 23.4 | Height Above Sea Level | Height Above Sea Level in meters | e.g. 10 | Follow-up | If there is an uncleared faultlog against this meter, this is the faultlog's follow up or null if none | e.g. null | |
Example | http://adam.pnpscada.com:8080/problemMeterList.jsp?LOGIN=testme.testme&PWD=testme&AGO=0&iscsv=yes&commonly=false |
Input key1 | Meter Serial |
Input snumber | Meter Serial |
Input maxcacheage | Optional. When present, result is in XML, else result is in JSON |
Return | XML result<xml> <meter>Serial</meter> each value in it's own tag, meter dependant: <E1 - Accumulative Forward Active kWh F1 - Accumulative Forward Reactive kvarh E2 - Accumulative Reverse Active kWh F2 - Accumulative Reverse Capacitive kvarh F3 - Accumulative Reverse Inductive kvarh F4 - Accumulative Forward Inductive kvarh V1 - Volts Phase 1 V2 - Volts Phase 2 V3 - Volts Phase 3 I1 - Currents Phase 1 I2 - I3 - V1A - V2A - V3A - I1A - I2A - I3A - > <val>e.g. 114574.26369</val> <ts>e.g. 2011-04-14 17:11:01.036</ts> </E1> ... more values </xml> |
Example |
To get realtime values of a meter 58501425 in JSON: http://adam.pnpscada.com:8080/realtime.jsp?LOGIN=testme.testme&PWD=testme&key1=58501425&snumber=58501425 To get realtime values of a meter 58501425 in XML: http://adam.pnpscada.com:8080/realtime.jsp?LOGIN=testme.testme&PWD=testme&key1=58501425&snumber=58501425&maxcacheage=1 |
Input TOU | The TOU ID |
Input start | Start date and time required format: YYYY-MM-DD HH:mm |
Input end | End date and time required format: YYYY-MM-DD HH:mm |
Return on success | <xml> <tou> <start>Start time the TOU ID becomes applicable</start> <end>End time the TOU ID stops being applicable after the assiciated start time</end> </tou> ...more TOU entries... <result>SUCCESS</result> </xml> |
Return on failure | <xml> <result>ERROR:reason</result> </xml> |
Example | Get all applicable times for TOU ID 123456 from 2016-08-01 to 2016-09-01 http://adam.pnpscada.com:8080/expandTOU.jsp?LOGIN=testme.testme&PWD=testme&TOU=123456&start=2016-08-01 00:00&end=2016-09-01 00:00 |
Key3 (optional) (Note: key names are case sensitive) | a comma delimited string of key3 IDs | |
startdate (optional) | The start date of the phasors (If omitted, defaults to the enddate - 24 hours) | |
enddate (optional) | The end date of the phasors in the form "YYYY-MM-DD HH:MM:SS". The "HH:MM:SS" part is optional. If left out, defaults to now. | |
Key1 (optional) | Filter on meter's Key1. (where % is the wild card, this must be URL-Encoded with %25, e.g. Key1=%25loc%25) | |
Key2 (optional) | Filter on meter's Key2 | |
pk1 (optional) | Filter on an ancestor's Key1, e.g. a SIM card number. SQL wildcards supported. | |
pk2 (optional) | Filter on an ancestor's Key2, e.g. a phone number. SQL wildcards supported. | |
place (optional) | Filter on meter's place | |
site (optional) | Filter on meter's site | |
zone (optional) | Filter on meter's zone | |
token (optional) | the token or partial token to restrict the search on | |
action (optional) | see 'token' | |
commissioned (optional) | yes/no/all. Default is 'yes'. If yes, only considers meters where the commissioned flag in the Meter Details has been set on. | e.g. commissioned=all |
Return on success | <xml> <result>SUCCESS</result> <attempts> <attempt> <meter>Meter's serial</meter> <action>Action, e.g. token number</action> <whoid>Individual ID of person or negative eid of entity responsible</whoid> <datetime>Date and Time of attempted action</datetime> <success>Only appears if success.</success> <error>Only appears if error, and describe the error</error> </attempt> ...next attempt... </attempts> </xml> | |
Return on failure | <xml><result>ERROR:error message</result></xml> | |
Example | Get the sts delivery attempts for multiple meters, during 2 dates. e.g. https://adam.pnpscada.com:441/stsDeliveryHistory.jsp?LOGIN=subdomain.testme&PWD=testme&commissioned=all&Key1=38900001&enddate=2010-09-15 |
Return | <xml> <server> <name>Server's unique name</name> <id>Server's unique PNPSCADA server id</id> <mac>server's MAC address</mac> </server> <xml> |
Example | Get the server ids of adam. e.g. https://adam.pnpscada.com:441/serverId.jsp |
eid | id of meter account group |
start | start date of report e.g. 2017-06-09 |
startPrev | start date of comparable time e.g. 2016-06-09 |
ahstart | After Hours start time e.g. 19:00 |
ahend | After Hours end time e.g. 07:00 |
days | Number of days for comparison e.g. 7 |
Return CSV | Start [start time] to [end time] Start [comparable start] to [comparable end] And the following columns: -Code -Name -Total kWh Used -Afterhours kWh Used -% of Usage After Hours -Total kWh Used -Afterhours kWh Used -% of Usage After Hours -Total Usage Changed % -Afterhours Usage Changed % |
Example | Run 2017-06-09 agains 2016-06-09 for a week for a Meter Account Group with id 1234 e.g. https://adam.pnpscada.com:441/reportComparableSavings.jsp?LOGIN=subdomain.testme&PWD=testme&eid=1234&start=2017-06-09&startPrev=2017-06-09&ahstart=19:00&ahend=07:00 |
eid | id of meter account group |
showTime | Show Column for when kVA happened (e.g. "on") |
showComparable | Shows comparable time as separate row (e.g. "on") |
compare_start | Time when comparable range starts (e.g. 2016-07-01) |
showAH | Shows After Hours as separate row (e.g. "on") |
ahstart | After Hours start time (e.g. 19:00) |
ahend | After Hours end time (e.g. 07:00) |
csv | 2 different formats to output CSV. (e.g. 1 or 2) |
bucketSize | Times that are summated (e.g. hour,halfhour,day,week,month,year) |
start | Start time for report (e.g. 2017-07-01) |
end | End time for report (e.g. 2017-08-01) |
P1 | Show this column (e.g. "on") |
P2 | Show this column (e.g. "on") |
Q1 | Show this column (e.g. "on") |
Q2 | Show this column (e.g. "on") |
Q3 | Show this column (e.g. "on") |
Q4 | Show this column (e.g. "on") |
S | Show this column (e.g. "on") |
count | Show this column. This is the number of rows summated. (e.g. "on") |
Return CSV (csv=1) | Has the following columns for each line: name Date of group 1 + P1 (if on) Date of group 1 + P2 (if on) Date of group 1 + Q1 (if on) Date of group 1 + Q2 (if on) Date of group 1 + Q3 (if on) Date of group 1 + Q4 (if on) Date of group 1 + S (if on) Date of group 1 + S time (if on) ... Date of group n + P1 (if on) Date of group n + P2 (if on) Date of group n + Q1 (if on) Date of group n + Q2 (if on) Date of group n + Q3 (if on) Date of group n + Q4 (if on) Date of group n + S (if on) Date of group n + S time (if on) If Comparable is switched on, contains another row, with Comparable in the name, and the same columns If After Hours is switched on, contains another row, with After Hours in the name, and the same columns |
Return CSV (csv=2) | Has the following columns for each line: name date type value the previous table is written out in one column with many rows |
Example | Run 2017-01-01 to 2017-06-01, just consumption, summated monthly, for Meter Account Group with eid 1234 e.g. https://adam.pnpscada.com:441/reportProfile.jsp?LOGIN=subdomain.testme&PWD=testme&eid=1234&start=2017-01-01&end=2017-01-01&P1=on&csv=2 |
Return | <xml> <result>SUCCESS</result> <meters> <meter> <snumber>Meter's serial</snumber> <date>Date and Time of reading</date> <E1>Reading in system units</rssi> </meter> ...next meter... </meters> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | Get all signal logs. e.g. https://adam.pnpscada.com:441/getLatestReadings.jsp?LOGIN=subdomain.testme&PWD=testme |
readdate | Compulsory. format YYYY-MM-DD HH:MM:SS, but you can leave out the seconds or the time completely, which would default it to zero |
Return | <xml> <result>SUCCESS</result> <meters> <meter> <snumber>Meter's serial</snumber> <err>meter specific Error code. Zero is success. -1 is meter not called in up to date. -2 is meter installed after date. -3 is Discrepancy. </err> <E1>Reading in system units</rssi> </meter> ...next meter... </meters> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | Get all signal logs. e.g. https://adam.pnpscada.com:441/getReadingsAt.jsp?LOGIN=subdomain.testme&PWD=testme&readdate=2001-09-11 |
meids | Optional. Meter entity ids |
ceids | Optional. Concentrator ids |
start | Optional. From when (e.g. 2017-11-01) |
end | Optional. To when (e.g. 2017-11-20) |
metersperconcentrator | Optional. set to 'true' to get one line per meter per concentrator |
permeter | Optional. set to 'true' to get one line per meter |
perconcentrator | Optional. set to 'true' to get one line per concentrator |
timefield | Optional. default is 'ts' which is the time the concentrator received the packet from the meter. Set to 'created' to look at the time that meter packet was first received from the concentrator into the server. Set to 'created2' to look at the last time that meter packet was received from the concentrator into the server. |
Return | <xml> <result>SUCCESS</result> <recs> <rec> <meter>Meter's serial</meter> <conc>Concentrator serial</conc> <ts>Timestamp of signal sample</ts> <rssi>RSSI</rssi> <signal>Signal.</signal> <fail>Y/N usually N, except in case of some catastrophic failure</fail> </rec> ...next rec... </recs> </xml> or <xml> <result>SUCCESS</result> <recs> <rec> <meter>Meter's serial</meter> <ts>Timestamp of latest packet for this meter</ts> <concentrators>[number of concentrators in which the meter was found]</concentrators> <count>[number of records for this meter]</count> </rec> ...next rec... </recs> </xml> or <xml> <result>SUCCESS</result> <recs> <rec> <conc>Concentrator serial</conc> <ts>Timestamp of latest packet for this concentrator</ts> <meters>[number of meters found by this concentrator in the packets]</concentrators> <count>[number of records for this concentrator]</count> </rec> ...next rec... </recs> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | Get all signal logs. e.g. https://adam.pnpscada.com:441/getMeterConcentratorSignal.jsp?LOGIN=subdomain.testme&PWD=testme |
eid | Specify the entity. Can use any of the alternative methods, e.g. key1 or key2 or key3 |
start | Optional. From when (e.g. 2017-11-01) otherwise from the start of time |
end | Optional. To when (e.g. 2017-11-20) otherwise until the end of time |
lat | Optional. Latitude in degrees as a floating point value. Will set a new location if both lat and lng are specified |
lng | Optional. Longitude in degrees as a floating point value. Will set a new location if both lat and lng are specified |
hasl | Optional. Height above sea level to set. If not specified, assume 0m above sea level |
proximity | Optional. Proximity / Size / Accuracy of object location in meters (radius). If not specified, assume 1m radius, therefore 2m diameter. |
ldate | Optional. The time when the entity assumed this position (e.g. 2017-11-20). If not specified, assume Current Timestamp. |
Return | <xml> <result>SUCCESS</result> <eid>Entity's id </eid> <loci> <location> <ldate>Date of location setting</ldate> <lat>Latitude in degrees as a floating point value </lat> <lng>Longitude in degrees as a floating point value </lng> <hasl>Height above sea level in meters </hasl> <proximity>Proximity / Size / Accuracy of object location in meters (radius) </proximity> <user_id> Entity ID of user login who set it </user_id> </location> ...next location... </loci> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | Get all signal logs. e.g. https://adam.pnpscada.com:441/getMeterConcentratorSignal.jsp?LOGIN=subdomain.testme&PWD=testme |
coctinst | Specify the coctinst. return meter serials |
utilitiesdeviceid | Specify the utilitiesdeviceid. return meter serials |
serialid | Specify the serialid. return meter serials |
materialid | Specify the materialid. return meter serials |
parentinstpointid | Specify the parentinstpointid. return meter serials |
liskey | Specify the liskey. return meter serials |
Return | <xml> <result>SUCCESS</result> <method>[coctinst/utilitiesdeviceid/serialid/materialid/parentinstpointid/liskey]</method> <value>[value specified for above method]</value> <meters> <snumber>[meter serial]</snumber> ...next meter... </meters> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | Get all signal logs. e.g. https://adam.pnpscada.com:441/sapLookup.jsp?LOGIN=subdomain.testme&PWD=testme&liskey=1234 |
limit | optional. How many latest records to be returned? Default is 5. |
metersselected | optional. Specify one or more meter serial numbers (comma delimited) to be returned. Default is all meters. |
Return | <xml> <push> <pid>[push entity id]</pid> <meter>[meter serial number]</meter> <mask>[set mask pushed, e.g. 4 for events]</mask> <upto>[date and time up to which the last push was]</upto> <status>[for events this would be 1 for start and 0 for end of event]</status> <status_date_time>[date and time of last happening]</status_date_time> </push> ...next push record... <result>SUCCESS</result> </xml> |
Return on failure | <xml><result>ERROR:error message</result></xml> |
Example | Get all signal logs. e.g. https://adam.pnpscada.com:441/getPushLog.jsp?LOGIN=subdomain.testme&PWD=testme |
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Login+Details
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=All+Entities
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=All+Attributes
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=All+Attribute+Values
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=All+Entity+Attributes&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meters+Everything&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meters+Where&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meters+Setup&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meters+Constants&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meters+Date&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meters+Interval&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meters+Channels&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meters+Read+and+Alarm
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meters+Error&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meters+Properties
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Last+Total&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Last+Phasor&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Min+Date&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=UAS+Queue&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Metering+Information&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Kamstrup+Profile+Setup+Cache
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Seal&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Type
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+TOU+Calendars
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meters+SAP+Disconnect+Status&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Back+Plane+Meter+Date
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Event+Setup&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=License+Info&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=SyM2+Time+Index&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Accounts
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Account+Numbers
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+To+Meter+Account+Allocations
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Account+Min+Date
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Billing
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Default+Tariffs
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Bill+Reset+Problems&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Unique+Meter+Account+Channels
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Account+~+Meter+Changes&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Account+~+Tariff+Changes&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Account+~+Changes&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Account,+Meter+and+Groups&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Accounts+in+Multiple+Prepaid+Facilities&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Additional+Tariff+Parameters&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Account+Role&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Tariffs
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Tariff+Line+Items
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Calendars
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Communication+Device
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Modem+Connection+Times
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Most+Used+CSD+Meters
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Roles
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Role+Parameters
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Role+Entities&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Login+Entities&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=CommunitySMS+Login
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Ledgers
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Ledger+Notes
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Ledger+Final+Deductions
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Duplicate+Ledger+Transactions
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Prepaid+Facilities&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Prepaid+Facility+Edit&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Garnish+Orders&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Debit+Order+Logs&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=PayFAST+Orders
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Payment+Gateway+Edit+Log&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Breaker+Last+Successfull+Switches&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=All+Successful+Switches&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=All+Failed+Switches&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Communication+Devices+Online+-+Offline
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Communication+Devices+Online+-+Online
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meters+Online+-+Online
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meters+Online+-+Offline
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Ledger+Transactions+Today+-+No+Transactions
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Ledger+Transactions+-+At+Least+One
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Accounts+Billed+31+Days+-+Not+Billed
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Accounts+Billed+31+Days+-+Billed
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Read+Attempts
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Read+Attempts+Last+Month
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Alarm+Log
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Bill+Delete+Log
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Fault+Log&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Modify+Readings+Log&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Import+Log&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Individual+Log
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Account+Log&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Edit+Log&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Event+Log&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Event+Mask+Log&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Import+Log&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Total+Log&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Role+Log&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Delete+Log
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Ledger+Log
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Tariff+Log
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Calendar+Log
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=SMS+Send+Attempt
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Email+Send+Attempt
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Task+Scheduler+Log
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=PayU+Transactions
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=STS+Vend&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=CSV+FTP+Queue
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=CSV+FTP+Log
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Sensus+FTP+Queue
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Sensus+FTP+Log
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=TOU+Billing+Register+Edit+Log&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=SigFox&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=PayCorp
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Pulse+Log&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Prepaid+Log&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=KoCoS+Queue&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Meter+Push+Updater+Meter+Event&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Spike+Log&set=all
https://Adam.pnpscada.com:441/reportVarious.jsp?LOGIN=subdomain.testme&PWD=testme&type=xml&report=Echelon+Orders&set=all