Download OpenAPI specification:Download
eGauge Meter API
The eGauge WebAPI is a JSON-based API that provides access to eGauge meters. It offers secure means to read device data, configure the device, and perform various control operations.
The WebAPI is intended to eventually replace the eGauge XML API. For new applications, developers are encouraged to use WebAPI rather than the legacy XML API.
This document and the API it describes may be amended and modified by eGauge Systems LLC at any time with or without notice. eGauge Systems LLC strives to avoid changes that break backwards-compatibility, but reserves the right to do so at its sole discretion.
To make it easy to get started, eGauge provides an open source Python package. It can be installed with the command:
pip install egauge-python
With this package installed, accessing an eGauge meter becomes very simple. For example, to fetch the hostname of the meter, you could use:
from egauge import webapi
URI = "https://DEV.egaug.es" # replace DEV with meter name
USR = "USER" # replace USER with user name
PWD = "PASS" # replace PASS with password
dev = webapi.device.Device(URI, webapi.JWTAuth(USR,PWD))
print("hostname is " + dev.get("/config/net/hostname")["result"])
The package also contains various convenience classes to read meter data, capture waveform samples, convert between physical units, and so on.
The official GIT repository for this package is at https://bitbucket.org/egauge/python/. Various code examples can be found in the examples directory.
The authentication service. Clients can use this to obtain and manage tokens that grant access to the other resources in this API.
The meter uses JSON Web Tokens (JWT or simply token) to restrict access to protected resources. Clients must include such tokens in requests via the HTTP Authorization header. This header must have the form:
Authorization: Bearer JWT
where JWT is a valid token.
Tokens are valid for a limited time; typically for about 10 minutes. However, a meter may revoke a token earlier, e.g., due to a reboot.
There are two ways for supplying credentials to obtain a token:
With a Digest object in the request body, a token is obtained without transmitting the password.
With a Password object in the request body, a token is
obtained with a password. This option is available only over
a secure connection (https://
scheme).
We recommend using Digest-based authentication whenever possible.
rlm required | string The authentication realm as returned in a 401 response. |
usr required | string The username to authenticate with. |
nnc required | string The server nonce as returned in a 401 response. Server nonces have a lifetime of about 1 minute. This means a client has to be able to complete the digest login within a minute of receiving a 401 response. If it fails to do so, the server would reject an authentication request, even though the credentials may have been valid. If this were to happen, the client would simply have to redo the digest login with the new nonce. It is therefore advisable for the client to (temporarily) save the password the user entered, so that if the 1 minute lifetime were to expire, the client could reissue the request without having to prompt the user for credentials again. |
cnnc required | string A client-selected nonce. This should be generated with a cryptographically strong random number generator. The purpose of the client-nonce is to prevent chosen plain-text attacks by a malicious server (or intermediary). Without the client nonce, a malicious server could try to guess the password by sending specially crafted nonce values. The client nonce prevents such attacks as long as the client uses new and cryptographically strong random value on each login attempt. |
hash required | string The hash which proves that the client possesses the password of the specified username. This must be calculated as the MD5 hash of the string obtained by concatenating ha1, a colon, nnc, a colon, and cnnc. nnc is the server nonce returned in a 401 response, cnnc is the client-selected nonce, and ha1 is the string obtained by calculating the MD5 hash of the string obtained by concatenating the username usr, a colon, realm rlm, a colon, and password pwd. More formally:
|
{- "rlm": "eGauge Administration",
- "usr": "owner",
- "nnc": "eyJ0eXAi...w5GCvM",
- "cnnc": "565ce9541eddec103347b5174704e188",
- "hash": "ce5e308c27da651964de14f65bd8b059"
}
{- "jwt": "eyJ0eXAi...aQvQxY",
- "rights": [
- "ctrl",
- "save",
- "view_settings"
], - "error": "Error message (present if an error occurred)."
}
GET /capture&i
returns information about the channels for which
waveform data can be captured. The returned object might look
like this:
{
"channels": {
"0": {"name": "L1", "unit": "V"},
"1": {"name": "L2", "unit": "V"},
"4": {"name": "S1", "unit": "A"}
}
}
This response indicates that three channels are available. The
meter-internal channel numbers are 0, 1, and 4. As the name
values indicate, those channels correspond to meter inputs L1, L2,
and S1, respectively. The first two channels return samples as
volts (V
) and the third returns samples as amperes (A
).
GET /capture?n&d=1e-3&c=0&c=4
initiates a capture for 1ms of
samples on channels 0 and 4 and returns a cookie (token) to be
used to retrieve the capture samples. The response for this
request might look like this:
{"state": "armed", "cookie": 1875353535}
State armed
indicates that the meter successfully processed the
capture request and is waiting for the trigger to occur. Cookie
1875353535
is a random integer to be used when retrieving the
sampled data, as shown next.
GET /capture?n=1875353535
can now be used to fetch the samples.
The response might look as shown below:
{
"state": "full", "ts_freq": 1000000, "first_sample": "1619637288.061",
"ch_mask": [17, 0],
"r": [
{"t": 495514564, "d": [135.059]},
{"t": 82, "d": [-0.0146239]},
{"t": 1354, "d": [105.454, -0.00731193]}
]
}
State full
indicates that the capture buffer is full and
therefore the response contains sample values. The frequency of
the counter used to generate the timestamps is 1MHz ("ts_freq": 1000000
) and the realtime Unix
timestamp of the first sample is 28
April 2021, 19:14:48 UTC (first_sample": "1619637288.061"
). The
ch_mask
member is an array of 32-bit integers. If a bit is set
in this mask, data for that channel is included in the response.
In our case, the channel mask has only bits 0 and 4 set in the
first integer (17), indicating that channels 0 and 4 are contained
in the sampled data (in order from smallest to largest channel
numbers). The timestamp t
of the first sample is 495514564 and
the subsequent samples were acquired 82 and 1354 timestamp ticks
after the corresponding previous sample. Thus, the reconstructed
sample values for the channels are:
Timestamp [µs] | Channel 0 value [V] | Channel 1 value [A] |
---|---|---|
495514564 | 135.059 | |
495514646 | -0.01462390 | |
495516000 | 105.454 | -0.00731193 |
Note how the sample values are returned strictly in order from
lowest number to highest numbered channel: 0, 4, 0, 4. Also note
how there is a separate entry in the result array r
for each
unique timestamp. Each data array (d
) may have just a single
entry or multiple entries if there are multiple sample values with
the same timestamp.
A Python program illustrating the use of this service can be found
here.
This program takes advantage of class
egauge.webapi.device.Capture
to handle the details of encoding
the HTTP requests and decoding the responses.
C | integer >= 0 The channel number to use as the trigger. |
M | string Enum: "any" "rise" "fall" "gt" "lt" The trigger mode to use. |
L | number The trigger level. |
R | boolean If present, this query parameter cancels a pending capture and
resets the state to |
T | number >= 0 Trigger timeout in milliseconds. After starting a capture, if the trigger condition is not satisfied within this timeout period, the capture is auto-triggered. |
c | integer >= 0 Channel number to be captured. This query parameter can be specified multiple times to capture multiple channels. If not specified, all configured channels are captured by default. |
d | number Capture duration in seconds. If less than or equal to 0, the maximum number of samples are acquired. This maximum is implementation dependent but, generally, a fixed size buffer is used to store all samples of all channels, so the more channels are being captured, the lower the upper bound for this value. If the value is greater than this upper bound, it is automatically capped at that value. |
i | boolean Return a channel info object, describing each channel that may be captured, its name and its physical unit. |
n | integer >= 0 Non-blocking operation. If the query parameter has no value or an empty string value, this requests that a capture is initiated without waiting for the result to be available (asynchronous operation). In this case, a cookie object is returned which contains a token. The token can be used in subsequent requests to fetch the result of the capture or to check on its status. If a value is specified, it must be a token returned in an earlier cookie object response. In this case, the capture status is reported via a progress object if it is still pending or a capture result object if the capture is complete. |
p | number Pre-trigger duration in seconds. Specifies how many seconds of samples before the trigger point should be acquired. If omitted, this defaults to 0 seconds of pre-trigger data. |
t | boolean Deprecated If present, this query parameter requests that the data should be returned as plain text rather than as JSON. |
r | boolean If present, this query parameter requests that the sample values should be returned as raw (digital) sample values rather than as values converted to the channel's physical unit. |
{- "channels": {
- "0": {
- "name": "L1",
- "unit": "V"
}, - "4": {
- "name": "S1",
- "unit": "A"
}
}, - "error": "Error message (present if an error occurred)."
}
The service provides the ability to execute various operations for their side effects, such as rebooting the meter. Unless stated otherwise, the resources in this service are available only to users with the save right (see /auth/rights).
This request returns a token which can then be used to monitor the status of the operation. See /sys/status/token/result for details.
service required | string Enum: "alert" "push" The type of service to activate. This can be |
provider required | string The name of the service provider with which to activate the service. |
{- "service": "alert",
- "provider": "Cloudly's Alert Service"
}
{- "token": "473c31462e62848b5352314dfc608669",
- "error": "Error message (present if an error occurred)."
}
token | string >= 32 characters The token of the operation to be cancelled. This token is the hexadecimal string (typically 32 characters long) that was returned when the operation was initiated. |
{- "token": "473c31462e62848b5352314dfc608669"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Clear data. The string in the request body identifies what data to clear:
excess
: For register values that are read from a remote
device, it is possible that the meter may not be able to
reach the remote device at times (e.g., due to a networking
problem). If the remote device provides cumulative values,
this means that when the remote device becomes accessible
again, the cumulative value may have increased
significantly, which could then cause a spike in the graphed
values for that register. To prevent such spikes, the meter
will instead record the jump as an excess and then replay
that excess gradually over time so that the meter can catch
up to the true value without causing a spike. Executing
this command clears to zero the excess of all registers.
This will typically cause a spike in the graphed values for
any remote registers which had a non-zero excess but, on the
positive side, will then ensure that the cumulative
values afterwards match those of the remote
device(s).
Note If excess keeps accumulating, it may be better to
use the spiky
option for remote
registers.
web_cache
: Clears the web server cache of compressed
files. Under normal circumstances, it is not necessary to
clear this cache explicitly. However, this command can be
used in case the cache gets corrupted, e.g., due to a power
cycle while the meter is in the middle of writing a cache
file.
"excess"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
This command supports creating a new database, listing available database configurations, restoring the database from a backup file, zeroing of all or parts of the database, as well as splitting the positive values of certain registers into separate positive-only registers.
action required | string Enum: "create" "list" "restore" "zero" "split" The action to perform. The possible values are:
|
config | string For the |
from | string (ForeverStamp) If specified, this limits the operation to data that is not older than the timestamp specified here. |
to | string (ForeverStamp) If specified, this limits the operation to data that is not younger than the timestamp specified here. |
regs | Array of integers[ items >= 0 ] If specified, the operation is limited to the registers whose database ids appear in this list. |
data | string This member is required for action |
more_chunks | boolean This is used only for |
{- "action": "create",
- "config": "string",
- "from": "1677523091.000900435",
- "to": "1677523091.000900435",
- "regs": [
- 0
], - "data": "string",
- "more_chunks": true
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
action required | string Value: "setpwd" The action to perform. The only action currently
supported is |
password required | string [ 4 .. 24 ] characters The password to use for encrypting the HomePlug traffic. The password may consist of any characters except for double-quote or control characters. |
targets required | Array of strings non-empty The list of bridges on which to set the new
password. Each bridge is identified by a string
that specifies its MAC address (in the form
|
{- "action": "setpwd",
- "password": "HomePlugAV",
- "targets": [
- "11:22:33:44:55:66/ABCD-EFGH-IJKL-MNOP",
- "78:9a:bc:de:f0:01/TPED-PBTX-BLRQ-CPER"
]
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Initiate a reboot of the meter. The actual reboot command is delayed by one second to increase the likelihood that the reply to this request can be received by the client before the meter shuts down.
Once initiated, the meter will be unavailable for a while (typically, 20 to 60 seconds). If the network configuration of the meter was changed, the reboot may cause the meter to not become available again at the old network address. Thus, the client should check for such changes before initiating the reboot and take appropriate action if the network configuration did change.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Optionally set the date/time of the meter and restart the NTP and/or the PTP services, if configured.
A Unix timestamp expressed as a decimal string that may contain a fractional value for sub-second resolution. A string is used here since most JSON libraries store numbers as IEEE-754 double-precision numbers and the 54-bit mantissa of that format may not be sufficient to accurately represent the timestamp.
"1677523091.000900435"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
This request returns a token which can then be used to monitor the status of the operation. See /sys/status/token/result for details.
address required | string The email address to send the test email to. |
smarthost | string The hostname of the smart host (mail relay) through which to send the email. If this is left unspecified, the meter will attempt to send the email directly to the destination address. |
mailuser | string If a smarthost is defined, this specifies the user name which is used to log into the smart host. If left unspecified, the meter will attempt to send the email without authentication. |
mailpass | string If a smarthost is defined, this specifies the password which is used to log into the smart host. If left unspecified, the meter will attempt to send the email without authentication. |
fromaddr | string The email address to use as the sender of the email ("From:" address). |
{- "address": "user@domain.com",
- "smarthost": "smtp.domain.com",
- "mailuser": "username",
- "mailpass": "secret-pw",
- "fromaddr": "nobody@eGauge123456"
}
{- "token": "473c31462e62848b5352314dfc608669",
- "error": "Error message (present if an error occurred)."
}
This request returns a token which can then be used to monitor the status of the operation. See /sys/status/token/result for details.
address required | string The address of the remote device. The format of
this string depends on the value of |
linktype required | string The link type to use to connect to the remote device. |
{- "address": "modbus://sunspec.1@USB2",
- "linktype": "slowd"
}
{- "token": "473c31462e62848b5352314dfc608669",
- "error": "Error message (present if an error occurred)."
}
Update the meter firmware or kernel.
action required | string Enum: "list" "install" The action to perform. The value The value |
target required | string Enum: "fw" "kernel" The target of the action. A value of |
branch | string The release branch to install from or to list the available version for. If left unspecified, this defaults to the branch the currently running firmware was installed from. An empty string refers to the default release branch. |
force | boolean If |
version | string The version to install. Note Downgrading to an older firmware or kernel may have unpredictable effects and may damage the meter. |
{- "action": "list",
- "target": "fw",
- "branch": "string",
- "force": true,
- "version": 4.5
}
{- "version": 4.4,
- "minimum": "4.1.2",
- "error": "Error message (present if an error occurred)."
}
Manage WLAN (Wi-Fi) connection. See /sys/net/wlan to get the currently detected and configured WLAN networks.
action required | string Enum: "add" "select" "forget" The action to perform. It must be one of:
|
hex | boolean Must be set to |
hidden | boolean Must be set to |
id | integer >= 0 The id of the network that should be selected or forgotten. |
key | string The passphrase or hex key to use for the network being added. If omitted, the newly added network has key management disabled. |
ssid | string The name (SSID) of the network to be added. The characters in this string may be any Unicode character except for ASCII newline or ASCII NUL. |
{- "action": "add",
- "hex": true,
- "hidden": true,
- "id": 0,
- "key": "secrets-secrets",
- "ssid": "string"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The meter configuration service.
The endpoints under /config
provide common method semantics and
atomicity guarantees as described below.
The endpoints generally support HTTP methods GET
, PUT
, POST
,
and DELETE
, though some of the endpoints may have restrictions.
For example, security-sensitive values such as certificates or
passwords are usually write-only.
GET
returns the current value of the endpoint and has no
side-effect.
The exact semantics of the other methods depend on the JSON type of the value that the endpoint represents:
PUT
replaces the value of the object with the one in the request
body. POST
updates the object based on the members in the
request body. That is, the POST
may add new members or updates
the values of existing members. DELETE
removes the object where
that makes sense and otherwise resets the object to its default
value.
PUT
replaces the value of the array with the array contained in
the request body. POST
appends the array in the request body to
the existing array. DELETE
removes the array where that makes
sense and otherwise resets it to its default value (usually the
empty array).
PUT
and POST
replace the value. DELETE
removes the
value if that is possible and otherwise resets it to the default
value.
GET
responses are guaranteed to return a consistent view of the
meter configuration. That is, if there are simultaneous
modification requests, it is guaranteed that the modifications
take place either before or after the GET
response is created,
not partway through it.
Modification requests (POST
, PUT
, and DELETE
) are executed
transactionally, meaning either all of a modification is applied
or none of it. Multiple modifications are applied in a
sequentially consistent fashion. That is, there must exist a
sequential order in which the modifications can be applied that
yields the final result.
HTTP headers ETag
and If-Match
can be used to ensure a
modification request is applied only if the configuration has not
been changed since the GET
request that returned the ETag
.
{- "result": {
- "bacnet": {
- "server": {
- "bip": {
- "port": 47808
}, - "enable": [
- "ethernet"
], - "epoch-relative": true,
- "id": 4194303,
- "mstp": 1
}
}, - "db": {
- "epoch": "1675276020"
}, - "display": {
- "backlight": {
- "brightness": 255,
- "duration": 60
}, - "contrast": 65,
- "fontset": "normal",
- "screen": {
- "use": "ic",
- "gen": "ic",
- "Grid": "ic",
- "Solar": "ic",
- "temp": "i",
- ".default": ""
}, - "orientation": 90
}, - "language_code": "en_GB",
- "local": {
- "sensor": {
- "L1": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -74.013999939
}, - "error": 0,
- "model": "1:1",
- "phase": ""
}, - "S1": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.659896851
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.96@1.5:2.59@3:2.34@6:2.06@15:1.82@50:1.89@100"
}, - "S2": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.659896851
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.96@1.5:2.59@3:2.34@6:2.06@15:1.82@50:1.89@100"
}
}, - "gain": "normal",
- "update-interval": 500
}, - "location": {
- "latitude": 36.035,
- "longitude": -115.46639
}, - "log": {
- "system": {
- "size": 131072
}
}, - "lua": {
- "script": {
- "alertd": "print(\"this is the alert script\");",
- "tariff": "print(\"this is the tariff script\");",
- "teamd": "print(\"this is the formulas script\");"
}, - "ctrld": {
- "test": "print(\"this is control script test\");"
}
}, - "modbus": {
- "client": {
- "map": {
- "user_dev": {
- "option": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "reg": [
- {
- "name": "irradiance",
- "addr": 0,
- "type": "u32",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - {
- "name": "temp",
- "addr": 1,
- "type": "s32",
- "kind": "analog",
- "unit": "degC",
- "offset": 0,
- "scale": 0.01,
- "access": "ro"
}
]
}
}
}, - "server": {
- "enable": [
- "rtu"
], - "id": 1,
- "rtu": {
- "port": "USB2:9600/8o2"
}, - "tcp": {
- "port": 502
}
}
}, - "net": {
- "ethernet": {
- "watchdog": true
}, - "goproxy": {
- "enable": true,
- "server": "proxy.egauge.io"
}, - "homeplug": {
- "region": "CE"
}, - "hostname": "eGauge42",
- "http": {
- "cgi-bin": "user-required",
- "client": {
- "insecure": "false"
}
}, - "ipv4": {
- "dhcp": true,
- "address": "192.168.1.42",
- "broadcast": "192.168.1.255",
- "netmask": "255.255.255.0",
- "network": "192.168.1.0",
- "gateway": "192.168.1.1"
}, - "nameserver": {
- "server": [
- "1.1.1.1",
- "8.8.8.8",
- "2606:4700:4700::1111"
]
}, - "ntp": {
- "server": [
- "192.168.1.1",
- "north-america.pool.ntp.org",
- "2610:20:6f15:15::27"
]
}, - "option": {
- "secure_only": false
}, - "proxy": {
- "enable": true,
- "server": "d.egauge.net"
}, - "ptp": {
- "client_only": true,
- "interface": {
- "eth0": {
- "transport": "UDPv4",
- "udp_ttl": 1
}
}
}
}, - "push": {
- "interval": 60,
- "options": "json,gzip,epoch,sec,skip=59",
- "service": "",
- "user": "jsmith"
}, - "remote": {
- "PRM3": {
- "address": "modbus://sunspec.1@USB2",
- "link_type": "slowd"
}, - "panel2": {
- "address": "panel2.local",
- "link_type": "udp"
}
}, - "register": {
- "physical": {
- "grid": {
- "dev": "local",
- "did": 0,
- "type": "P",
- "value": "S16*L1+S17*L2"
}, - "grid*": {
- "dev": "local",
- "did": 8,
- "type": "S",
- "value": "grid"
}, - "solar": {
- "dev": "local",
- "did": 1,
- "type": "P",
- "value": "S3*L1+-S3*L2"
}, - "temp": {
- "dev": "SMANet",
- "did": 12,
- "type": "T",
- "value": "13590.TmpAmb_C"
}
}, - "virtual": {
- "use": {
- "value": [
- {
- "op": "+",
- "register": "grid"
}, - {
- "op": "+",
- "register": "solar"
}
]
}, - "gen": {
- "value": [
- {
- "op": "+",
- "register": "solar"
}
]
}
}
}, - "time": {
- "zone": "LST7LDT6,M3.2.0/02:00,M11.1.0/02:00"
}, - "user": {
- "jsmith": {
- "priv": [
- "unlimited_save",
- "view_settings"
]
}, - "guest": {
- "priv": [
- "view_settings"
]
}
}, - "var": {
- "global": {
- "billing.start_day": "6",
- "billing.interval": "15"
}, - "health": {
- "last_check": "1682200804"
}
}, - "alert": {
- "custom": [
- {
- "name": "temperature alert",
- "detail": "It is hot in here: %l C!",
- "frequency": "sec",
- "priority": 7,
- "cond": {
- "lhs": "temp_internal()",
- "op": "<",
- "rhs": "30"
}
}
], - "reporter": {
- "web": {
- "min-priority": 7,
- "service": "",
- "options": "gzip,secure",
- "user": "jsmith",
- "password": "secret!"
}, - "mail": {
- "server": "smtp.mail.com",
- "user": "egaugealert@mail.com",
- "password": "string",
- "from-address": "eGauge1345",
- "to": [
- {
- "format": "string",
- "min-priority": 3,
- "address": "user@site.com"
}
]
}
}, - "sys-prio": [
- 0,
- 0,
- 7,
- 0,
- 7,
- 4,
- 0,
- 0,
- 1,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
]
}
}, - "error": "Error message (present if an error occurred)."
}
A PUT
request is equivalent to a DELETE
followed by a POST
with the same request body. Because of that, care must be taken
to ensure the desired configuration is written. Specifically:
The classic interface uses CGI-BIN programs. It is
therefore recommended to include member
"net":{"http":{"cgi-bin":"user-required"}}
in the request
body as otherwise CGI-BIN support is disabled.
Member alert
may contain references to register names (as
part of custom alert conditions). This member should
therefore appear after member register
.
Member remote
must appear in the request body before
member register
as otherwise the remote registers in this
member will be deleted when member remote
is processed.
object (configBacnet) The BACnet configuration. | |
object (configDb) The database configuration. | |
object (configDisplay) The display (LCD) configuration of the meter. | |
language_code | string (configLanguageCode) The code of the preferred language for the meter. When the meter
needs to generate a message (e.g., as a result of an alert
triggering), it will generate the message in the language selected
by this code whenever possible. The code should be in a format
acceptable to the
See eGauge Internationalization Instructions for information on adding other languages or improving an existing translation. Note When accessing the meter from a web browser, the value of this resource has normally no effect as the user interface is presented in the language selected by the browser. |
object (configLocal) The configuration of directly attached sensors. | |
object (configLocation) The geographic location of the meter. | |
object (configLog) The log configuration. | |
object (configLua) Lua scripting configuration. | |
object (configModbus) Modbus-related configurations. | |
object (configNet) The network configuration. The current state of the network is available at /sys/net. | |
object (configPush) The push service configuration. This service is used to share the
meter data with a remote web server. The data is sent via an HTTP
| |
object (configRemote) The remote device configurations. | |
object (configRegister) The register configuration of the meter. | |
object (configTime) Time related configurations. | |
object (configUser) The user accounts. | |
object (configVar) The set of meter variable sections. | |
object (configAlert) The alert configuration of the meter. |
{- "bacnet": {
- "server": {
- "bip": {
- "port": 47808
}, - "enable": [
- "ethernet"
], - "epoch-relative": true,
- "id": 4194303,
- "mstp": 1
}
}, - "db": {
- "epoch": "1675276020"
}, - "display": {
- "backlight": {
- "brightness": 255,
- "duration": 60
}, - "contrast": 65,
- "fontset": "normal",
- "screen": {
- "use": "ic",
- "gen": "ic",
- "Grid": "ic",
- "Solar": "ic",
- "temp": "i",
- ".default": ""
}, - "orientation": 90
}, - "language_code": "en_GB",
- "local": {
- "sensor": {
- "L1": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -74.013999939
}, - "error": 0,
- "model": "1:1",
- "phase": ""
}, - "S1": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.659896851
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.96@1.5:2.59@3:2.34@6:2.06@15:1.82@50:1.89@100"
}, - "S2": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.659896851
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.96@1.5:2.59@3:2.34@6:2.06@15:1.82@50:1.89@100"
}
}, - "gain": "normal",
- "update-interval": 500
}, - "location": {
- "latitude": 36.035,
- "longitude": -115.46639
}, - "log": {
- "system": {
- "size": 131072
}
}, - "lua": {
- "script": {
- "alertd": "print(\"this is the alert script\");",
- "tariff": "print(\"this is the tariff script\");",
- "teamd": "print(\"this is the formulas script\");"
}, - "ctrld": {
- "test": "print(\"this is control script test\");"
}
}, - "modbus": {
- "client": {
- "map": {
- "user_dev": {
- "option": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "reg": [
- {
- "name": "irradiance",
- "addr": 0,
- "type": "u32",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - {
- "name": "temp",
- "addr": 1,
- "type": "s32",
- "kind": "analog",
- "unit": "degC",
- "offset": 0,
- "scale": 0.01,
- "access": "ro"
}
]
}
}
}, - "server": {
- "enable": [
- "rtu"
], - "id": 1,
- "rtu": {
- "port": "USB2:9600/8o2"
}, - "tcp": {
- "port": 502
}
}
}, - "net": {
- "ethernet": {
- "watchdog": true
}, - "goproxy": {
- "enable": true,
- "server": "proxy.egauge.io"
}, - "homeplug": {
- "region": "CE"
}, - "hostname": "eGauge42",
- "http": {
- "cgi-bin": "user-required",
- "client": {
- "insecure": "false"
}
}, - "ipv4": {
- "dhcp": true,
- "address": "192.168.1.42",
- "broadcast": "192.168.1.255",
- "netmask": "255.255.255.0",
- "network": "192.168.1.0",
- "gateway": "192.168.1.1"
}, - "nameserver": {
- "server": [
- "1.1.1.1",
- "8.8.8.8",
- "2606:4700:4700::1111"
]
}, - "ntp": {
- "server": [
- "192.168.1.1",
- "north-america.pool.ntp.org",
- "2610:20:6f15:15::27"
]
}, - "option": {
- "secure_only": false
}, - "proxy": {
- "enable": true,
- "server": "d.egauge.net"
}, - "ptp": {
- "client_only": true,
- "interface": {
- "eth0": {
- "transport": "UDPv4",
- "udp_ttl": 1
}
}
}
}, - "push": {
- "interval": 60,
- "options": "json,gzip,epoch,sec,skip=59",
- "service": "",
- "user": "jsmith"
}, - "remote": {
- "PRM3": {
- "address": "modbus://sunspec.1@USB2",
- "link_type": "slowd"
}, - "panel2": {
- "address": "panel2.local",
- "link_type": "udp"
}
}, - "register": {
- "physical": {
- "grid": {
- "dev": "local",
- "did": 0,
- "type": "P",
- "value": "S16*L1+S17*L2"
}, - "grid*": {
- "dev": "local",
- "did": 8,
- "type": "S",
- "value": "grid"
}, - "solar": {
- "dev": "local",
- "did": 1,
- "type": "P",
- "value": "S3*L1+-S3*L2"
}, - "temp": {
- "dev": "SMANet",
- "did": 12,
- "type": "T",
- "value": "13590.TmpAmb_C"
}
}, - "virtual": {
- "use": {
- "value": [
- {
- "op": "+",
- "register": "grid"
}, - {
- "op": "+",
- "register": "solar"
}
]
}, - "gen": {
- "value": [
- {
- "op": "+",
- "register": "solar"
}
]
}
}
}, - "time": {
- "zone": "LST7LDT6,M3.2.0/02:00,M11.1.0/02:00"
}, - "user": {
- "jsmith": {
- "priv": [
- "unlimited_save",
- "view_settings"
]
}, - "guest": {
- "priv": [
- "view_settings"
]
}
}, - "var": {
- "global": {
- "billing.start_day": "6",
- "billing.interval": "15"
}, - "health": {
- "last_check": "1682200804"
}
}, - "alert": {
- "custom": [
- {
- "name": "temperature alert",
- "detail": "It is hot in here: %l C!",
- "frequency": "sec",
- "priority": 7,
- "cond": {
- "lhs": "temp_internal()",
- "op": "<",
- "rhs": "30"
}
}
], - "reporter": {
- "web": {
- "min-priority": 7,
- "service": "",
- "options": "gzip,secure",
- "user": "jsmith",
- "password": "secret!"
}, - "mail": {
- "server": "smtp.mail.com",
- "user": "egaugealert@mail.com",
- "password": "string",
- "from-address": "eGauge1345",
- "to": [
- {
- "format": "string",
- "min-priority": 3,
- "address": "user@site.com"
}
]
}
}, - "sys-prio": [
- 0,
- 0,
- 7,
- 0,
- 7,
- 4,
- 0,
- 0,
- 1,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
]
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
object (configBacnet) The BACnet configuration. | |
object (configDb) The database configuration. | |
object (configDisplay) The display (LCD) configuration of the meter. | |
language_code | string (configLanguageCode) The code of the preferred language for the meter. When the meter
needs to generate a message (e.g., as a result of an alert
triggering), it will generate the message in the language selected
by this code whenever possible. The code should be in a format
acceptable to the
See eGauge Internationalization Instructions for information on adding other languages or improving an existing translation. Note When accessing the meter from a web browser, the value of this resource has normally no effect as the user interface is presented in the language selected by the browser. |
object (configLocal) The configuration of directly attached sensors. | |
object (configLocation) The geographic location of the meter. | |
object (configLog) The log configuration. | |
object (configLua) Lua scripting configuration. | |
object (configModbus) Modbus-related configurations. | |
object (configNet) The network configuration. The current state of the network is available at /sys/net. | |
object (configPush) The push service configuration. This service is used to share the
meter data with a remote web server. The data is sent via an HTTP
| |
object (configRemote) The remote device configurations. | |
object (configRegister) The register configuration of the meter. | |
object (configTime) Time related configurations. | |
object (configUser) The user accounts. | |
object (configVar) The set of meter variable sections. | |
object (configAlert) The alert configuration of the meter. |
{- "bacnet": {
- "server": {
- "bip": {
- "port": 47808
}, - "enable": [
- "ethernet"
], - "epoch-relative": true,
- "id": 4194303,
- "mstp": 1
}
}, - "db": {
- "epoch": "1675276020"
}, - "display": {
- "backlight": {
- "brightness": 255,
- "duration": 60
}, - "contrast": 65,
- "fontset": "normal",
- "screen": {
- "use": "ic",
- "gen": "ic",
- "Grid": "ic",
- "Solar": "ic",
- "temp": "i",
- ".default": ""
}, - "orientation": 90
}, - "language_code": "en_GB",
- "local": {
- "sensor": {
- "L1": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -74.013999939
}, - "error": 0,
- "model": "1:1",
- "phase": ""
}, - "S1": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.659896851
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.96@1.5:2.59@3:2.34@6:2.06@15:1.82@50:1.89@100"
}, - "S2": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.659896851
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.96@1.5:2.59@3:2.34@6:2.06@15:1.82@50:1.89@100"
}
}, - "gain": "normal",
- "update-interval": 500
}, - "location": {
- "latitude": 36.035,
- "longitude": -115.46639
}, - "log": {
- "system": {
- "size": 131072
}
}, - "lua": {
- "script": {
- "alertd": "print(\"this is the alert script\");",
- "tariff": "print(\"this is the tariff script\");",
- "teamd": "print(\"this is the formulas script\");"
}, - "ctrld": {
- "test": "print(\"this is control script test\");"
}
}, - "modbus": {
- "client": {
- "map": {
- "user_dev": {
- "option": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "reg": [
- {
- "name": "irradiance",
- "addr": 0,
- "type": "u32",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - {
- "name": "temp",
- "addr": 1,
- "type": "s32",
- "kind": "analog",
- "unit": "degC",
- "offset": 0,
- "scale": 0.01,
- "access": "ro"
}
]
}
}
}, - "server": {
- "enable": [
- "rtu"
], - "id": 1,
- "rtu": {
- "port": "USB2:9600/8o2"
}, - "tcp": {
- "port": 502
}
}
}, - "net": {
- "ethernet": {
- "watchdog": true
}, - "goproxy": {
- "enable": true,
- "server": "proxy.egauge.io"
}, - "homeplug": {
- "region": "CE"
}, - "hostname": "eGauge42",
- "http": {
- "cgi-bin": "user-required",
- "client": {
- "insecure": "false"
}
}, - "ipv4": {
- "dhcp": true,
- "address": "192.168.1.42",
- "broadcast": "192.168.1.255",
- "netmask": "255.255.255.0",
- "network": "192.168.1.0",
- "gateway": "192.168.1.1"
}, - "nameserver": {
- "server": [
- "1.1.1.1",
- "8.8.8.8",
- "2606:4700:4700::1111"
]
}, - "ntp": {
- "server": [
- "192.168.1.1",
- "north-america.pool.ntp.org",
- "2610:20:6f15:15::27"
]
}, - "option": {
- "secure_only": false
}, - "proxy": {
- "enable": true,
- "server": "d.egauge.net"
}, - "ptp": {
- "client_only": true,
- "interface": {
- "eth0": {
- "transport": "UDPv4",
- "udp_ttl": 1
}
}
}
}, - "push": {
- "interval": 60,
- "options": "json,gzip,epoch,sec,skip=59",
- "service": "",
- "user": "jsmith"
}, - "remote": {
- "PRM3": {
- "address": "modbus://sunspec.1@USB2",
- "link_type": "slowd"
}, - "panel2": {
- "address": "panel2.local",
- "link_type": "udp"
}
}, - "register": {
- "physical": {
- "grid": {
- "dev": "local",
- "did": 0,
- "type": "P",
- "value": "S16*L1+S17*L2"
}, - "grid*": {
- "dev": "local",
- "did": 8,
- "type": "S",
- "value": "grid"
}, - "solar": {
- "dev": "local",
- "did": 1,
- "type": "P",
- "value": "S3*L1+-S3*L2"
}, - "temp": {
- "dev": "SMANet",
- "did": 12,
- "type": "T",
- "value": "13590.TmpAmb_C"
}
}, - "virtual": {
- "use": {
- "value": [
- {
- "op": "+",
- "register": "grid"
}, - {
- "op": "+",
- "register": "solar"
}
]
}, - "gen": {
- "value": [
- {
- "op": "+",
- "register": "solar"
}
]
}
}
}, - "time": {
- "zone": "LST7LDT6,M3.2.0/02:00,M11.1.0/02:00"
}, - "user": {
- "jsmith": {
- "priv": [
- "unlimited_save",
- "view_settings"
]
}, - "guest": {
- "priv": [
- "view_settings"
]
}
}, - "var": {
- "global": {
- "billing.start_day": "6",
- "billing.interval": "15"
}, - "health": {
- "last_check": "1682200804"
}
}, - "alert": {
- "custom": [
- {
- "name": "temperature alert",
- "detail": "It is hot in here: %l C!",
- "frequency": "sec",
- "priority": 7,
- "cond": {
- "lhs": "temp_internal()",
- "op": "<",
- "rhs": "30"
}
}
], - "reporter": {
- "web": {
- "min-priority": 7,
- "service": "",
- "options": "gzip,secure",
- "user": "jsmith",
- "password": "secret!"
}, - "mail": {
- "server": "smtp.mail.com",
- "user": "egaugealert@mail.com",
- "password": "string",
- "from-address": "eGauge1345",
- "to": [
- {
- "format": "string",
- "min-priority": 3,
- "address": "user@site.com"
}
]
}
}, - "sys-prio": [
- 0,
- 0,
- 7,
- 0,
- 7,
- 4,
- 0,
- 0,
- 1,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
]
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
{- "result": {
- "custom": [
- {
- "name": "temperature alert",
- "detail": "It is hot in here: %l C!",
- "frequency": "sec",
- "priority": 7,
- "cond": {
- "lhs": "temp_internal()",
- "op": "<",
- "rhs": "30"
}
}
], - "reporter": {
- "web": {
- "min-priority": 7,
- "service": "",
- "options": "gzip,secure",
- "user": "jsmith",
- "password": "secret!"
}, - "mail": {
- "server": "smtp.mail.com",
- "user": "egaugealert@mail.com",
- "password": "string",
- "from-address": "eGauge1345",
- "to": [
- {
- "format": "string",
- "min-priority": 3,
- "address": "user@site.com"
}
]
}
}, - "sys-prio": [
- 0,
- 0,
- 7,
- 0,
- 7,
- 4,
- 0,
- 0,
- 1,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
]
}, - "error": "Error message (present if an error occurred)."
}
Array of objects (configAlertCustom) Up to 32 custom alerts. Custom alerts consist of an arbitrary boolean condition that is checked at certain times. When the condition evaluates to true, the alert is triggered. | |
object (configAlertReporter) The alert reporting configuration. Alerts may be reported via a web server or via an email server. | |
sys-prio | Array of integers (configAlertSysPrio) [ items [ 0 .. 7 ] ] The priority of each system-generated alert. /sys/alert provides a description of these alerts. |
{- "custom": [
- {
- "name": "temperature alert",
- "detail": "It is hot in here: %l C!",
- "frequency": "sec",
- "priority": 7,
- "cond": {
- "lhs": "temp_internal()",
- "op": "<",
- "rhs": "30"
}
}
], - "reporter": {
- "web": {
- "min-priority": 7,
- "service": "",
- "options": "gzip,secure",
- "user": "jsmith",
- "password": "secret!"
}, - "mail": {
- "server": "smtp.mail.com",
- "user": "egaugealert@mail.com",
- "password": "string",
- "from-address": "eGauge1345",
- "to": [
- {
- "format": "string",
- "min-priority": 3,
- "address": "user@site.com"
}
]
}
}, - "sys-prio": [
- 0,
- 0,
- 7,
- 0,
- 7,
- 4,
- 0,
- 0,
- 1,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
]
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Array of objects (configAlertCustom) Up to 32 custom alerts. Custom alerts consist of an arbitrary boolean condition that is checked at certain times. When the condition evaluates to true, the alert is triggered. | |
object (configAlertReporter) The alert reporting configuration. Alerts may be reported via a web server or via an email server. | |
sys-prio | Array of integers (configAlertSysPrio) [ items [ 0 .. 7 ] ] The priority of each system-generated alert. /sys/alert provides a description of these alerts. |
{- "custom": [
- {
- "name": "temperature alert",
- "detail": "It is hot in here: %l C!",
- "frequency": "sec",
- "priority": 7,
- "cond": {
- "lhs": "temp_internal()",
- "op": "<",
- "rhs": "30"
}
}
], - "reporter": {
- "web": {
- "min-priority": 7,
- "service": "",
- "options": "gzip,secure",
- "user": "jsmith",
- "password": "secret!"
}, - "mail": {
- "server": "smtp.mail.com",
- "user": "egaugealert@mail.com",
- "password": "string",
- "from-address": "eGauge1345",
- "to": [
- {
- "format": "string",
- "min-priority": 3,
- "address": "user@site.com"
}
]
}
}, - "sys-prio": [
- 0,
- 0,
- 7,
- 0,
- 7,
- 4,
- 0,
- 0,
- 1,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
]
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Up to 32 custom alerts.
Custom alerts consist of an arbitrary boolean condition that is checked at certain times. When the condition evaluates to true, the alert is triggered.
{- "result": [
- {
- "name": "temperature alert",
- "detail": "It is hot in here: %l C!",
- "frequency": "sec",
- "priority": 7,
- "cond": {
- "lhs": "temp_internal()",
- "op": "<",
- "rhs": "30"
}
}
], - "error": "Error message (present if an error occurred)."
}
name | string (configAlertCustomItemName) The user-selected name of this custom alert. |
detail | string (configAlertCustomItemDetail) Alert detail message. This may be up to 255 bytes in length. The following sequences within this string get replaced as follows:
|
frequency | string (configAlertCustomItemFrequency) Enum: "sec" "min" "hr" "dy" "wk" "mon" "an" The frequency with which this custom alert should be checked. Possible values are:
|
priority | integer (configAlertCustomItemPriority) [ 0 .. 7 ] The priority of this custom alert. Zero is the lowest, seven the highest priority. |
object (configAlertCustomItemCond) The boolean condition consists of three parts: |
[- {
- "name": "temperature alert",
- "detail": "It is hot in here: %l C!",
- "frequency": "sec",
- "priority": 7,
- "cond": {
- "lhs": "temp_internal()",
- "op": "<",
- "rhs": "30"
}
}
]
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name | string (configAlertCustomItemName) The user-selected name of this custom alert. |
detail | string (configAlertCustomItemDetail) Alert detail message. This may be up to 255 bytes in length. The following sequences within this string get replaced as follows:
|
frequency | string (configAlertCustomItemFrequency) Enum: "sec" "min" "hr" "dy" "wk" "mon" "an" The frequency with which this custom alert should be checked. Possible values are:
|
priority | integer (configAlertCustomItemPriority) [ 0 .. 7 ] The priority of this custom alert. Zero is the lowest, seven the highest priority. |
object (configAlertCustomItemCond) The boolean condition consists of three parts: |
[- {
- "name": "temperature alert",
- "detail": "It is hot in here: %l C!",
- "frequency": "sec",
- "priority": 7,
- "cond": {
- "lhs": "temp_internal()",
- "op": "<",
- "rhs": "30"
}
}
]
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a custom alert. |
max-depth | |
filter |
{- "result": {
- "name": "temperature alert",
- "detail": "It is hot in here: %l C!",
- "frequency": "sec",
- "priority": 7,
- "cond": {
- "lhs": "temp_internal()",
- "op": "<",
- "rhs": "30"
}
}, - "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a custom alert. |
name | string (configAlertCustomItemName) The user-selected name of this custom alert. |
detail | string (configAlertCustomItemDetail) Alert detail message. This may be up to 255 bytes in length. The following sequences within this string get replaced as follows:
|
frequency | string (configAlertCustomItemFrequency) Enum: "sec" "min" "hr" "dy" "wk" "mon" "an" The frequency with which this custom alert should be checked. Possible values are:
|
priority | integer (configAlertCustomItemPriority) [ 0 .. 7 ] The priority of this custom alert. Zero is the lowest, seven the highest priority. |
object (configAlertCustomItemCond) The boolean condition consists of three parts: |
{- "name": "temperature alert",
- "detail": "It is hot in here: %l C!",
- "frequency": "sec",
- "priority": 7,
- "cond": {
- "lhs": "temp_internal()",
- "op": "<",
- "rhs": "30"
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a custom alert. |
name | string (configAlertCustomItemName) The user-selected name of this custom alert. |
detail | string (configAlertCustomItemDetail) Alert detail message. This may be up to 255 bytes in length. The following sequences within this string get replaced as follows:
|
frequency | string (configAlertCustomItemFrequency) Enum: "sec" "min" "hr" "dy" "wk" "mon" "an" The frequency with which this custom alert should be checked. Possible values are:
|
priority | integer (configAlertCustomItemPriority) [ 0 .. 7 ] The priority of this custom alert. Zero is the lowest, seven the highest priority. |
object (configAlertCustomItemCond) The boolean condition consists of three parts: |
{- "name": "temperature alert",
- "detail": "It is hot in here: %l C!",
- "frequency": "sec",
- "priority": 7,
- "cond": {
- "lhs": "temp_internal()",
- "op": "<",
- "rhs": "30"
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The boolean condition consists of three parts: lhs op rhs
. lhs
and rhs
are arbitrary expressions and op
must be a comparison
operator.
idx required | integer >= 0 The index of a custom alert. |
max-depth | |
filter |
{- "result": {
- "lhs": "temp_internal()",
- "op": "<",
- "rhs": "30"
}, - "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a custom alert. |
lhs | string (configAlertCustomItemCondLhs) An eScript expression that returns the value to use on the left hand side of the comparison. |
op | string (configAlertCustomItemCondOp) Enum: "<" "<=" "=" "!=" ">=" ">" The comparison-operator to use for comparing the left-hand-side
expression
|
rhs | string (configAlertCustomItemCondRhs) An eScript expression that returns the value that to use on the right hand side of the comparison. |
{- "lhs": "temp_internal()",
- "op": "<",
- "rhs": "30"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a custom alert. |
lhs | string (configAlertCustomItemCondLhs) An eScript expression that returns the value to use on the left hand side of the comparison. |
op | string (configAlertCustomItemCondOp) Enum: "<" "<=" "=" "!=" ">=" ">" The comparison-operator to use for comparing the left-hand-side
expression
|
rhs | string (configAlertCustomItemCondRhs) An eScript expression that returns the value that to use on the right hand side of the comparison. |
{- "lhs": "temp_internal()",
- "op": "<",
- "rhs": "30"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default condition which is always false.
idx required | integer >= 0 The index of a custom alert. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
An eScript expression that returns the value to use on the left hand side of the comparison.
idx required | integer >= 0 The index of a custom alert. |
An eScript expression that returns the value to use on the left hand side of the comparison.
"temp_internal()"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a custom alert. |
An eScript expression that returns the value to use on the left hand side of the comparison.
"temp_internal()"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The comparison-operator to use for comparing the left-hand-side
expression lhs
against the right-hand side expression rhs
. It
may be one of:
<
: Condition is true if lhs
is less than rhs
.<=
: Condition is true if lhs
is less-than-or-equal to rhs
.=
: Condition is true if lhs
is equal to rhs
.!=
: Condition is true if lhs
differs from rhs
.>=
: Condition is true if lhs
is greater-than-or-equal to rhs
.>
: Condition is true if lhs
is greater than rhs
.idx required | integer >= 0 The index of a custom alert. |
The comparison-operator to use for comparing the left-hand-side
expression lhs
against the right-hand side expression rhs
. It
may be one of:
<
: Condition is true if lhs
is less than rhs
.<=
: Condition is true if lhs
is less-than-or-equal to rhs
.=
: Condition is true if lhs
is equal to rhs
.!=
: Condition is true if lhs
differs from rhs
.>=
: Condition is true if lhs
is greater-than-or-equal to rhs
.>
: Condition is true if lhs
is greater than rhs
."<"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a custom alert. |
The comparison-operator to use for comparing the left-hand-side
expression lhs
against the right-hand side expression rhs
. It
may be one of:
<
: Condition is true if lhs
is less than rhs
.<=
: Condition is true if lhs
is less-than-or-equal to rhs
.=
: Condition is true if lhs
is equal to rhs
.!=
: Condition is true if lhs
differs from rhs
.>=
: Condition is true if lhs
is greater-than-or-equal to rhs
.>
: Condition is true if lhs
is greater than rhs
."<"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
An eScript expression that returns the value that to use on the right hand side of the comparison.
idx required | integer >= 0 The index of a custom alert. |
An eScript expression that returns the value that to use on the right hand side of the comparison.
"30"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a custom alert. |
An eScript expression that returns the value that to use on the right hand side of the comparison.
"30"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Alert detail message. This may be up to 255 bytes in length. The following sequences within this string get replaced as follows:
%%
is replaced by a single percent character.%l
is replaced by the value of the lhs
expression.%r
is replaced by the value of the rhs
expression.%L
is replaced by the lhs
expression string.%R
is replaced by the rhs
expression string.idx required | integer >= 0 The index of a custom alert. |
Alert detail message. This may be up to 255 bytes in length. The following sequences within this string get replaced as follows:
%%
is replaced by a single percent character.%l
is replaced by the value of the lhs
expression.%r
is replaced by the value of the rhs
expression.%L
is replaced by the lhs
expression string.%R
is replaced by the rhs
expression string."It is hot in here: %l C!"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a custom alert. |
Alert detail message. This may be up to 255 bytes in length. The following sequences within this string get replaced as follows:
%%
is replaced by a single percent character.%l
is replaced by the value of the lhs
expression.%r
is replaced by the value of the rhs
expression.%L
is replaced by the lhs
expression string.%R
is replaced by the rhs
expression string."It is hot in here: %l C!"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The frequency with which this custom alert should be checked. Possible values are:
sec
: The alert will be checked once a second.min
: The alert will be checked once a minute.hr
: The alert will be checked once an hour.dy
: The alert will be checked once a day.wk
: The alert will be checked once a week.mon
: The alert will be checked once a month.an
: The alert will be checked once a year.idx required | integer >= 0 The index of a custom alert. |
The frequency with which this custom alert should be checked. Possible values are:
sec
: The alert will be checked once a second.min
: The alert will be checked once a minute.hr
: The alert will be checked once an hour.dy
: The alert will be checked once a day.wk
: The alert will be checked once a week.mon
: The alert will be checked once a month.an
: The alert will be checked once a year."sec"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a custom alert. |
The frequency with which this custom alert should be checked. Possible values are:
sec
: The alert will be checked once a second.min
: The alert will be checked once a minute.hr
: The alert will be checked once an hour.dy
: The alert will be checked once a day.wk
: The alert will be checked once a week.mon
: The alert will be checked once a month.an
: The alert will be checked once a year."sec"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a custom alert. |
The user-selected name of this custom alert.
"temperature alert"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a custom alert. |
The user-selected name of this custom alert.
"temperature alert"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The priority of this custom alert. Zero is the lowest, seven the highest priority.
idx required | integer >= 0 The index of a custom alert. |
The priority of this custom alert. Zero is the lowest, seven the highest priority.
7
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a custom alert. |
The priority of this custom alert. Zero is the lowest, seven the highest priority.
7
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The alert reporting configuration. Alerts may be reported via a web server or via an email server.
{- "result": {
- "web": {
- "min-priority": 7,
- "service": "",
- "options": "gzip,secure",
- "user": "jsmith",
- "password": "secret!"
}, - "mail": {
- "server": "smtp.mail.com",
- "user": "egaugealert@mail.com",
- "password": "string",
- "from-address": "eGauge1345",
- "to": [
- {
- "format": "string",
- "min-priority": 3,
- "address": "user@site.com"
}
]
}
}, - "error": "Error message (present if an error occurred)."
}
object (configAlertReporterWeb) The configuration for reporting alerts via web server. | |
object (configAlertReporterMail) The configuration for reporting alerts via email server. If alert reporting via web server is enabled (/config/alert/reporter/web/uri is not empty), reporting via email server is disabled. |
{- "web": {
- "min-priority": 7,
- "service": "",
- "options": "gzip,secure",
- "user": "jsmith",
- "password": "secret!"
}, - "mail": {
- "server": "smtp.mail.com",
- "user": "egaugealert@mail.com",
- "password": "string",
- "from-address": "eGauge1345",
- "to": [
- {
- "format": "string",
- "min-priority": 3,
- "address": "user@site.com"
}
]
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
object (configAlertReporterWeb) The configuration for reporting alerts via web server. | |
object (configAlertReporterMail) The configuration for reporting alerts via email server. If alert reporting via web server is enabled (/config/alert/reporter/web/uri is not empty), reporting via email server is disabled. |
{- "web": {
- "min-priority": 7,
- "service": "",
- "options": "gzip,secure",
- "user": "jsmith",
- "password": "secret!"
}, - "mail": {
- "server": "smtp.mail.com",
- "user": "egaugealert@mail.com",
- "password": "string",
- "from-address": "eGauge1345",
- "to": [
- {
- "format": "string",
- "min-priority": 3,
- "address": "user@site.com"
}
]
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The configuration for reporting alerts via email server. If alert reporting via web server is enabled (/config/alert/reporter/web/uri is not empty), reporting via email server is disabled.
{- "result": {
- "server": "smtp.mail.com",
- "user": "egaugealert@mail.com",
- "password": "string",
- "from-address": "eGauge1345",
- "to": [
- {
- "format": "string",
- "min-priority": 3,
- "address": "user@site.com"
}
]
}, - "error": "Error message (present if an error occurred)."
}
server | string (configAlertReporterMailServer) The hostname of a mail server that speaks the SMTP protocol. If this is set to an empty string, the meter will attempt to deliver mail directly to the destination host. Many Internet service providers block direct mail delivery, so leaving this string empty generally results in alert emails getting blocked. |
user | string (configAlertReporterMailUser) The user name to provide to the email server for authentication purposes. |
password | string (configAlertReporterMailPassword) The password to provide to the email server for authentication purposes. This resource is write-only. |
from-address | string (configAlertReporterMailFromAddress) The "From" email address to use when sending an email alert. If set to an empty string, the email server will use a default address. |
Array of objects (configAlertReporterMailTo) The email destinations to send the alerts to. |
{- "server": "smtp.mail.com",
- "user": "egaugealert@mail.com",
- "password": "string",
- "from-address": "eGauge1345",
- "to": [
- {
- "format": "string",
- "min-priority": 3,
- "address": "user@site.com"
}
]
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
server | string (configAlertReporterMailServer) The hostname of a mail server that speaks the SMTP protocol. If this is set to an empty string, the meter will attempt to deliver mail directly to the destination host. Many Internet service providers block direct mail delivery, so leaving this string empty generally results in alert emails getting blocked. |
user | string (configAlertReporterMailUser) The user name to provide to the email server for authentication purposes. |
password | string (configAlertReporterMailPassword) The password to provide to the email server for authentication purposes. This resource is write-only. |
from-address | string (configAlertReporterMailFromAddress) The "From" email address to use when sending an email alert. If set to an empty string, the email server will use a default address. |
Array of objects (configAlertReporterMailTo) The email destinations to send the alerts to. |
{- "server": "smtp.mail.com",
- "user": "egaugealert@mail.com",
- "password": "string",
- "from-address": "eGauge1345",
- "to": [
- {
- "format": "string",
- "min-priority": 3,
- "address": "user@site.com"
}
]
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The hostname of a mail server that speaks the SMTP protocol. If this is set to an empty string, the meter will attempt to deliver mail directly to the destination host. Many Internet service providers block direct mail delivery, so leaving this string empty generally results in alert emails getting blocked.
The hostname of a mail server that speaks the SMTP protocol. If this is set to an empty string, the meter will attempt to deliver mail directly to the destination host. Many Internet service providers block direct mail delivery, so leaving this string empty generally results in alert emails getting blocked.
"smtp.mail.com"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The hostname of a mail server that speaks the SMTP protocol. If this is set to an empty string, the meter will attempt to deliver mail directly to the destination host. Many Internet service providers block direct mail delivery, so leaving this string empty generally results in alert emails getting blocked.
"smtp.mail.com"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The user name to provide to the email server for authentication purposes.
The user name to provide to the email server for authentication purposes.
"egaugealert@mail.com"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The user name to provide to the email server for authentication purposes.
"egaugealert@mail.com"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The password to provide to the email server for authentication purposes.
This resource is write-only.
The password to provide to the email server for authentication purposes.
This resource is write-only.
"string"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The password to provide to the email server for authentication purposes.
This resource is write-only.
"string"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The "From" email address to use when sending an email alert. If set to an empty string, the email server will use a default address.
The "From" email address to use when sending an email alert. If set to an empty string, the email server will use a default address.
"eGauge1345"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The "From" email address to use when sending an email alert. If set to an empty string, the email server will use a default address.
"eGauge1345"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
format | string (configAlertReporterMailToItemFormat) The reporting format to use for this destination. Valid values are:
|
min-priority | integer (configAlertReporterMailToItemMinPriority) [ 0 .. 7 ] The minimum priority that is required for a new alert to generate an email. When an email is generated, other lower priority alerts may also be included if they are unacknowledged and the reporting format allows it. |
address | string (configAlertReporterMailToItemAddress) The destination email address to send the alert to. |
[- {
- "format": "string",
- "min-priority": 3,
- "address": "user@site.com"
}
]
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
format | string (configAlertReporterMailToItemFormat) The reporting format to use for this destination. Valid values are:
|
min-priority | integer (configAlertReporterMailToItemMinPriority) [ 0 .. 7 ] The minimum priority that is required for a new alert to generate an email. When an email is generated, other lower priority alerts may also be included if they are unacknowledged and the reporting format allows it. |
address | string (configAlertReporterMailToItemAddress) The destination email address to send the alert to. |
[- {
- "format": "string",
- "min-priority": 3,
- "address": "user@site.com"
}
]
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer [ 0 .. 3 ] The index of an alert destination. |
max-depth | |
filter |
{- "result": {
- "format": "string",
- "min-priority": 3,
- "address": "user@site.com"
}, - "error": "Error message (present if an error occurred)."
}
idx required | integer [ 0 .. 3 ] The index of an alert destination. |
format | string (configAlertReporterMailToItemFormat) The reporting format to use for this destination. Valid values are:
|
min-priority | integer (configAlertReporterMailToItemMinPriority) [ 0 .. 7 ] The minimum priority that is required for a new alert to generate an email. When an email is generated, other lower priority alerts may also be included if they are unacknowledged and the reporting format allows it. |
address | string (configAlertReporterMailToItemAddress) The destination email address to send the alert to. |
{- "format": "string",
- "min-priority": 3,
- "address": "user@site.com"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer [ 0 .. 3 ] The index of an alert destination. |
format | string (configAlertReporterMailToItemFormat) The reporting format to use for this destination. Valid values are:
|
min-priority | integer (configAlertReporterMailToItemMinPriority) [ 0 .. 7 ] The minimum priority that is required for a new alert to generate an email. When an email is generated, other lower priority alerts may also be included if they are unacknowledged and the reporting format allows it. |
address | string (configAlertReporterMailToItemAddress) The destination email address to send the alert to. |
{- "format": "string",
- "min-priority": 3,
- "address": "user@site.com"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
idx required | integer [ 0 .. 3 ] The index of an alert destination. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer [ 0 .. 3 ] The index of an alert destination. |
The destination email address to send the alert to.
"user@site.com"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer [ 0 .. 3 ] The index of an alert destination. |
The destination email address to send the alert to.
"user@site.com"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to empty string.
idx required | integer [ 0 .. 3 ] The index of an alert destination. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The reporting format to use for this destination. Valid values are:
short
: Report only the newest alert with the highest
priority.
full
: Report all unacknowledged alerts that are pending in
order from highest to lowest priority.
idx required | integer [ 0 .. 3 ] The index of an alert destination. |
The reporting format to use for this destination. Valid values are:
short
: Report only the newest alert with the highest
priority.
full
: Report all unacknowledged alerts that are pending in
order from highest to lowest priority.
"string"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer [ 0 .. 3 ] The index of an alert destination. |
The reporting format to use for this destination. Valid values are:
short
: Report only the newest alert with the highest
priority.
full
: Report all unacknowledged alerts that are pending in
order from highest to lowest priority.
"string"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Delete this mail destination.
idx required | integer [ 0 .. 3 ] The index of an alert destination. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The minimum priority that is required for a new alert to generate an email. When an email is generated, other lower priority alerts may also be included if they are unacknowledged and the reporting format allows it.
idx required | integer [ 0 .. 3 ] The index of an alert destination. |
The minimum priority that is required for a new alert to generate an email. When an email is generated, other lower priority alerts may also be included if they are unacknowledged and the reporting format allows it.
3
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer [ 0 .. 3 ] The index of an alert destination. |
The minimum priority that is required for a new alert to generate an email. When an email is generated, other lower priority alerts may also be included if they are unacknowledged and the reporting format allows it.
3
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to 0.
idx required | integer [ 0 .. 3 ] The index of an alert destination. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
{- "result": {
- "min-priority": 7,
- "service": "",
- "options": "gzip,secure",
- "user": "jsmith",
- "password": "secret!"
}, - "error": "Error message (present if an error occurred)."
}
min-priority | integer (configAlertReporterWebMinPriority) [ 0 .. 7 ] The minimum priority that is required for a new alert to generate a report to the web server. When a report is generated, all other unacknowledged alerts are also reported, even if they have a priority lower than the value indicated by this resource. |
service | string (configAlertReporterWebService) The name of the alert service provider to use for reporting alerts. To set this to a non-empty value please use the service
activation command since that ensures the
service provider knows to expect alerts from this meter. The body
of the activation request should contain member |
uri | string (configAlertReporterWebUri) The URI of the web server to use for reporting alerts. This resource is available only if /config/alert/reporter/web/service is an empty string. |
options | string (configAlertReporterWebOptions) The options to use when sending an alert report to the web server. This resource is available only if /config/alert/reporter/web/service is an empty string. Multiple options can be specified in the string by separating them with a comma. Supported options are:
|
user | string (configAlertReporterWebUser) The user name to provide to the web server for authentication purposes. If this string is not empty, the user name and the password are both sent to the web server using HTTP Basic authorization. For security reasons, this should only be used when connecting to the server via an encrypted connection (https). This resource is available only if /config/alert/reporter/web/service is an empty string. |
password | string (configAlertReporterWebPassword) The password to be provided to the web server for authentication purposes. This resource is write-only. |
{- "min-priority": 7,
- "service": "",
- "options": "gzip,secure",
- "user": "jsmith",
- "password": "secret!"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
min-priority | integer (configAlertReporterWebMinPriority) [ 0 .. 7 ] The minimum priority that is required for a new alert to generate a report to the web server. When a report is generated, all other unacknowledged alerts are also reported, even if they have a priority lower than the value indicated by this resource. |
service | string (configAlertReporterWebService) The name of the alert service provider to use for reporting alerts. To set this to a non-empty value please use the service
activation command since that ensures the
service provider knows to expect alerts from this meter. The body
of the activation request should contain member |
uri | string (configAlertReporterWebUri) The URI of the web server to use for reporting alerts. This resource is available only if /config/alert/reporter/web/service is an empty string. |
options | string (configAlertReporterWebOptions) The options to use when sending an alert report to the web server. This resource is available only if /config/alert/reporter/web/service is an empty string. Multiple options can be specified in the string by separating them with a comma. Supported options are:
|
user | string (configAlertReporterWebUser) The user name to provide to the web server for authentication purposes. If this string is not empty, the user name and the password are both sent to the web server using HTTP Basic authorization. For security reasons, this should only be used when connecting to the server via an encrypted connection (https). This resource is available only if /config/alert/reporter/web/service is an empty string. |
password | string (configAlertReporterWebPassword) The password to be provided to the web server for authentication purposes. This resource is write-only. |
{- "min-priority": 7,
- "service": "",
- "options": "gzip,secure",
- "user": "jsmith",
- "password": "secret!"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The minimum priority that is required for a new alert to generate a report to the web server. When a report is generated, all other unacknowledged alerts are also reported, even if they have a priority lower than the value indicated by this resource.
The minimum priority that is required for a new alert to generate a report to the web server. When a report is generated, all other unacknowledged alerts are also reported, even if they have a priority lower than the value indicated by this resource.
7
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The minimum priority that is required for a new alert to generate a report to the web server. When a report is generated, all other unacknowledged alerts are also reported, even if they have a priority lower than the value indicated by this resource.
7
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The options to use when sending an alert report to the web server.
This resource is available only if /config/alert/reporter/web/service is an empty string.
Multiple options can be specified in the string by separating them with a comma. Supported options are:
deflate
: Use HTTP Content-Encoding deflate
when
transmitting the alert report.
gzip
: Use HTTP Content-Encoding gzip
when
transmitting the alert report.
secure
: Only send the alert report if the server's HTTP
certificate can be verified by the meter. This option is
ignored if
/config/net/http/client/insecure
is true
.
The options to use when sending an alert report to the web server.
This resource is available only if /config/alert/reporter/web/service is an empty string.
Multiple options can be specified in the string by separating them with a comma. Supported options are:
deflate
: Use HTTP Content-Encoding deflate
when
transmitting the alert report.
gzip
: Use HTTP Content-Encoding gzip
when
transmitting the alert report.
secure
: Only send the alert report if the server's HTTP
certificate can be verified by the meter. This option is
ignored if
/config/net/http/client/insecure
is true
.
"gzip,secure"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The options to use when sending an alert report to the web server.
This resource is available only if /config/alert/reporter/web/service is an empty string.
Multiple options can be specified in the string by separating them with a comma. Supported options are:
deflate
: Use HTTP Content-Encoding deflate
when
transmitting the alert report.
gzip
: Use HTTP Content-Encoding gzip
when
transmitting the alert report.
secure
: Only send the alert report if the server's HTTP
certificate can be verified by the meter. This option is
ignored if
/config/net/http/client/insecure
is true
.
"gzip,secure"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The password to be provided to the web server for authentication purposes.
This resource is write-only.
The password to be provided to the web server for authentication purposes.
This resource is write-only.
"secret!"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The password to be provided to the web server for authentication purposes.
This resource is write-only.
"secret!"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The name of the alert service provider to use for reporting alerts.
To set this to a non-empty value please use the service
activation command since that ensures the
service provider knows to expect alerts from this meter. The body
of the activation request should contain member service
set to
the string alert
and provider
set to name of the desired
service provider.
The name of the alert service provider to use for reporting alerts.
To set this to a non-empty value please use the service
activation command since that ensures the
service provider knows to expect alerts from this meter. The body
of the activation request should contain member service
set to
the string alert
and provider
set to name of the desired
service provider.
""
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The name of the alert service provider to use for reporting alerts.
To set this to a non-empty value please use the service
activation command since that ensures the
service provider knows to expect alerts from this meter. The body
of the activation request should contain member service
set to
the string alert
and provider
set to name of the desired
service provider.
""
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The URI of the web server to use for reporting alerts.
This resource is available only if /config/alert/reporter/web/service is an empty string.
{- "error": "Error message (present if an error occurred)."
}
The URI of the web server to use for reporting alerts.
This resource is available only if /config/alert/reporter/web/service is an empty string.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The URI of the web server to use for reporting alerts.
This resource is available only if /config/alert/reporter/web/service is an empty string.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The user name to provide to the web server for authentication purposes. If this string is not empty, the user name and the password are both sent to the web server using HTTP Basic authorization. For security reasons, this should only be used when connecting to the server via an encrypted connection (https).
This resource is available only if /config/alert/reporter/web/service is an empty string.
The user name to provide to the web server for authentication purposes. If this string is not empty, the user name and the password are both sent to the web server using HTTP Basic authorization. For security reasons, this should only be used when connecting to the server via an encrypted connection (https).
This resource is available only if /config/alert/reporter/web/service is an empty string.
"jsmith"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The user name to provide to the web server for authentication purposes. If this string is not empty, the user name and the password are both sent to the web server using HTTP Basic authorization. For security reasons, this should only be used when connecting to the server via an encrypted connection (https).
This resource is available only if /config/alert/reporter/web/service is an empty string.
"jsmith"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The priority of each system-generated alert. /sys/alert provides a description of these alerts.
The priority of this system alert.
[- 0,
- 0,
- 7,
- 0,
- 7,
- 4,
- 0,
- 0,
- 1,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
]
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The priority of this system alert.
[- 0,
- 0,
- 7,
- 0,
- 7,
- 4,
- 0,
- 0,
- 1,
- 6,
- 0,
- 0,
- 0,
- 5,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
]
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a system alert. |
The priority of this system alert.
7
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a system alert. |
The priority of this system alert.
7
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The BACnet configuration.
{- "result": {
- "server": {
- "bip": {
- "port": 47808
}, - "enable": [
- "ethernet"
], - "epoch-relative": true,
- "id": 4194303,
- "mstp": 1
}
}, - "error": "Error message (present if an error occurred)."
}
object (configBacnetServer) The BACnet server configuration. |
{- "server": {
- "bip": {
- "port": 47808
}, - "enable": [
- "ethernet"
], - "epoch-relative": true,
- "id": 4194303,
- "mstp": 1
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
object (configBacnetServer) The BACnet server configuration. |
{- "server": {
- "bip": {
- "port": 47808
}, - "enable": [
- "ethernet"
], - "epoch-relative": true,
- "id": 4194303,
- "mstp": 1
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The BACnet server configuration.
{- "result": {
- "bip": {
- "port": 47808
}, - "enable": [
- "ethernet"
], - "epoch-relative": true,
- "id": 4194303,
- "mstp": 1
}, - "error": "Error message (present if an error occurred)."
}
enable | Array of strings (configBacnetServerEnable) Items Enum: "ethernet" "bip" "mstp" The list of BACnet protocols that are enabled. An empty list indicates that the BACnet server is disabled. The meter is currently restricted to supporting a single protocol at a time, so this array may have at most one element. |
epoch-relative | boolean (configBacnetServerEpochRelative) If true, the BACnet server reports cumulative values relative to the meter epoch. If false, raw absolute values are reported relative to when the meter was manufactured. |
id | integer (configBacnetServerId) [ 0 .. 4194303 ] The object id of the BACnet server. |
object (configBacnetServerMstp) [ 0 .. 127 ] The BACnet over MS/TP configuration. This is used only if the
|
{- "bip": {
- "port": 47808
}, - "enable": [
- "ethernet"
], - "epoch-relative": true,
- "id": 4194303,
- "mstp": 1
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
enable | Array of strings (configBacnetServerEnable) Items Enum: "ethernet" "bip" "mstp" The list of BACnet protocols that are enabled. An empty list indicates that the BACnet server is disabled. The meter is currently restricted to supporting a single protocol at a time, so this array may have at most one element. |
epoch-relative | boolean (configBacnetServerEpochRelative) If true, the BACnet server reports cumulative values relative to the meter epoch. If false, raw absolute values are reported relative to when the meter was manufactured. |
id | integer (configBacnetServerId) [ 0 .. 4194303 ] The object id of the BACnet server. |
object (configBacnetServerMstp) [ 0 .. 127 ] The BACnet over MS/TP configuration. This is used only if the
|
{- "bip": {
- "port": 47808
}, - "enable": [
- "ethernet"
], - "epoch-relative": true,
- "id": 4194303,
- "mstp": 1
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
port | integer (configBacnetServerBipPort) [ 0 .. 65535 ] The IPv4 port number used by the server when |
{- "port": 47808
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
port | integer (configBacnetServerBipPort) [ 0 .. 65535 ] The IPv4 port number used by the server when |
{- "port": 47808
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The IPv4 port number used by the server when bip
is enabled in
/config/bacnet/server/enable.
The default value is 0xBAC0 (47808).
The IPv4 port number used by the server when bip
is enabled in
/config/bacnet/server/enable.
The default value is 0xBAC0 (47808).
47808
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The IPv4 port number used by the server when bip
is enabled in
/config/bacnet/server/enable.
The default value is 0xBAC0 (47808).
47808
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The list of BACnet protocols that are enabled. An empty list indicates that the BACnet server is disabled. The meter is currently restricted to supporting a single protocol at a time, so this array may have at most one element.
The name of an enabled BACnet protocol. Possible values are:
ethernet
: BACnet over raw Ethernet.
bip
: BACnet over the UDP/IP.
mstp
: BACnet over MS/TP (RS-485).
[- "ethernet"
]
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The name of an enabled BACnet protocol. Possible values are:
ethernet
: BACnet over raw Ethernet.
bip
: BACnet over the UDP/IP.
mstp
: BACnet over MS/TP (RS-485).
[- "ethernet"
]
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The name of an enabled BACnet protocol. Possible values are:
ethernet
: BACnet over raw Ethernet.
bip
: BACnet over the UDP/IP.
mstp
: BACnet over MS/TP (RS-485).
idx required | integer [ 0 .. 0 ] The index of an enabled BACnet protocol. |
The name of an enabled BACnet protocol. Possible values are:
ethernet
: BACnet over raw Ethernet.
bip
: BACnet over the UDP/IP.
mstp
: BACnet over MS/TP (RS-485).
"ethernet"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer [ 0 .. 0 ] The index of an enabled BACnet protocol. |
The name of an enabled BACnet protocol. Possible values are:
ethernet
: BACnet over raw Ethernet.
bip
: BACnet over the UDP/IP.
mstp
: BACnet over MS/TP (RS-485).
"ethernet"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Disable this protocol.
idx required | integer [ 0 .. 0 ] The index of an enabled BACnet protocol. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
If true, the BACnet server reports cumulative values relative to the meter epoch. If false, raw absolute values are reported relative to when the meter was manufactured.
If true, the BACnet server reports cumulative values relative to the meter epoch. If false, raw absolute values are reported relative to when the meter was manufactured.
true
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
If true, the BACnet server reports cumulative values relative to the meter epoch. If false, raw absolute values are reported relative to when the meter was manufactured.
true
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The object id of the BACnet server.
4194303
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The object id of the BACnet server.
4194303
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The BACnet over MS/TP configuration. This is used only if the
mstp
protocol is enabled.
mac | integer (configBacnetServerMstpMac) [ 0 .. 127 ] The MS/TP address of the meter's BACnet server. |
max-mac | integer (configBacnetServerMstpMaxMac) The maximum address used by any device connected to the same MS/TP network as this meter. A value of 127 is safe, but setting it to the lowest address in use significantly increases MS/TP performance. |
port | string (configBacnetServerMstpPort) The serial-port to use for the MS/TP protocol. |
1
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
mac | integer (configBacnetServerMstpMac) [ 0 .. 127 ] The MS/TP address of the meter's BACnet server. |
max-mac | integer (configBacnetServerMstpMaxMac) The maximum address used by any device connected to the same MS/TP network as this meter. A value of 127 is safe, but setting it to the lowest address in use significantly increases MS/TP performance. |
port | string (configBacnetServerMstpPort) The serial-port to use for the MS/TP protocol. |
1
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The MS/TP address of the meter's BACnet server.
127
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The MS/TP address of the meter's BACnet server.
127
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The maximum address used by any device connected to the same MS/TP network as this meter. A value of 127 is safe, but setting it to the lowest address in use significantly increases MS/TP performance.
The maximum address used by any device connected to the same MS/TP network as this meter. A value of 127 is safe, but setting it to the lowest address in use significantly increases MS/TP performance.
0
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The maximum address used by any device connected to the same MS/TP network as this meter. A value of 127 is safe, but setting it to the lowest address in use significantly increases MS/TP performance.
0
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The serial-port to use for the MS/TP protocol.
The serial-port to use for the MS/TP protocol.
"USB1:19200/8n1"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The serial-port to use for the MS/TP protocol.
"USB1:19200/8n1"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
epoch | string (configDbEpoch) The time when the meter started recording data. This is a decimal Unix timestamp string. The relevance of this resource is that other services in this API by default return accumulated register values relative to this time so that, at the time of the epoch, they all read 0. Changing this value therefore changes the values reported by those services. Similarly, user interfaces that use this API generally do not present data before the epoch, effectively providing a limit to the history visible to the user. Writing this resource does not change the data stored in the database. In other words, the epoch generally can freely be moved forward or backward in time. The only constraint is that the new epoch does have to be within the time range covered by the database. If a future time is specified, it will automatically be capped to the time of the most recent row in the database. If a time is specified that is older than the oldest row in the database, an error object is returned. If this error occurs, check the device time (/sys/time) and database configuration (/sys/db) to confirm that they have the expected values. |
{- "epoch": "1675276020"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
epoch | string (configDbEpoch) The time when the meter started recording data. This is a decimal Unix timestamp string. The relevance of this resource is that other services in this API by default return accumulated register values relative to this time so that, at the time of the epoch, they all read 0. Changing this value therefore changes the values reported by those services. Similarly, user interfaces that use this API generally do not present data before the epoch, effectively providing a limit to the history visible to the user. Writing this resource does not change the data stored in the database. In other words, the epoch generally can freely be moved forward or backward in time. The only constraint is that the new epoch does have to be within the time range covered by the database. If a future time is specified, it will automatically be capped to the time of the most recent row in the database. If a time is specified that is older than the oldest row in the database, an error object is returned. If this error occurs, check the device time (/sys/time) and database configuration (/sys/db) to confirm that they have the expected values. |
{- "epoch": "1675276020"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The time when the meter started recording data. This is a decimal Unix timestamp string.
The relevance of this resource is that other services in this API by default return accumulated register values relative to this time so that, at the time of the epoch, they all read 0. Changing this value therefore changes the values reported by those services. Similarly, user interfaces that use this API generally do not present data before the epoch, effectively providing a limit to the history visible to the user.
Writing this resource does not change the data stored in the database. In other words, the epoch generally can freely be moved forward or backward in time. The only constraint is that the new epoch does have to be within the time range covered by the database. If a future time is specified, it will automatically be capped to the time of the most recent row in the database. If a time is specified that is older than the oldest row in the database, an error object is returned. If this error occurs, check the device time (/sys/time) and database configuration (/sys/db) to confirm that they have the expected values.
Update the epoch with the value passed in the request body.
This resource is not updated transactionally.
The time when the meter started recording data. This is a decimal Unix timestamp string.
The relevance of this resource is that other services in this API by default return accumulated register values relative to this time so that, at the time of the epoch, they all read 0. Changing this value therefore changes the values reported by those services. Similarly, user interfaces that use this API generally do not present data before the epoch, effectively providing a limit to the history visible to the user.
Writing this resource does not change the data stored in the database. In other words, the epoch generally can freely be moved forward or backward in time. The only constraint is that the new epoch does have to be within the time range covered by the database. If a future time is specified, it will automatically be capped to the time of the most recent row in the database. If a time is specified that is older than the oldest row in the database, an error object is returned. If this error occurs, check the device time (/sys/time) and database configuration (/sys/db) to confirm that they have the expected values.
"1675276020"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Update the epoch with the value passed in the request body.
This resource is not updated transactionally.
The time when the meter started recording data. This is a decimal Unix timestamp string.
The relevance of this resource is that other services in this API by default return accumulated register values relative to this time so that, at the time of the epoch, they all read 0. Changing this value therefore changes the values reported by those services. Similarly, user interfaces that use this API generally do not present data before the epoch, effectively providing a limit to the history visible to the user.
Writing this resource does not change the data stored in the database. In other words, the epoch generally can freely be moved forward or backward in time. The only constraint is that the new epoch does have to be within the time range covered by the database. If a future time is specified, it will automatically be capped to the time of the most recent row in the database. If a time is specified that is older than the oldest row in the database, an error object is returned. If this error occurs, check the device time (/sys/time) and database configuration (/sys/db) to confirm that they have the expected values.
"1675276020"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset the database epoch to the current time of the meter.
This resource is not updated transactionally.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
{- "result": {
- "backlight": {
- "brightness": 255,
- "duration": 60
}, - "contrast": 65,
- "fontset": "normal",
- "screen": {
- "use": "ic",
- "gen": "ic",
- "Grid": "ic",
- "Solar": "ic",
- "temp": "i",
- ".default": ""
}, - "orientation": 90
}, - "error": "Error message (present if an error occurred)."
}
object (configDisplayBacklight) The backlight configuration of the display. | |
contrast | integer (configDisplayContrast) [ 0 .. 127 ] The LCD contrast Zero means no contrast (display is blank), 127 means maximum contrast (display is all black). A value of around 65 usually provides a good contrast. |
fontset | string (configDisplayFontset) Enum: "small" "normal" "large" The fontset to use for the display. Possible values are:
Note The value of this resource needs to be localized (translated) before presenting it to a user. |
object (configDisplayScreen) Screen configurations. | |
orientation | integer (configDisplayOrientation) [ 0 .. 359 ] The angle in degrees by which the orientation of the display should be rotated in the counterclockwise direction. An angle of 0 degree results in the display being aligned with the label on the meter. The value of this resource is rounded to an integer multiple of 90 degrees. |
{- "backlight": {
- "brightness": 255,
- "duration": 60
}, - "contrast": 65,
- "fontset": "normal",
- "screen": {
- "use": "ic",
- "gen": "ic",
- "Grid": "ic",
- "Solar": "ic",
- "temp": "i",
- ".default": ""
}, - "orientation": 90
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
object (configDisplayBacklight) The backlight configuration of the display. | |
contrast | integer (configDisplayContrast) [ 0 .. 127 ] The LCD contrast Zero means no contrast (display is blank), 127 means maximum contrast (display is all black). A value of around 65 usually provides a good contrast. |
fontset | string (configDisplayFontset) Enum: "small" "normal" "large" The fontset to use for the display. Possible values are:
Note The value of this resource needs to be localized (translated) before presenting it to a user. |
object (configDisplayScreen) Screen configurations. | |
orientation | integer (configDisplayOrientation) [ 0 .. 359 ] The angle in degrees by which the orientation of the display should be rotated in the counterclockwise direction. An angle of 0 degree results in the display being aligned with the label on the meter. The value of this resource is rounded to an integer multiple of 90 degrees. |
{- "backlight": {
- "brightness": 255,
- "duration": 60
}, - "contrast": 65,
- "fontset": "normal",
- "screen": {
- "use": "ic",
- "gen": "ic",
- "Grid": "ic",
- "Solar": "ic",
- "temp": "i",
- ".default": ""
}, - "orientation": 90
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
brightness | integer (configDisplayBacklightBrightness) [ 0 .. 255 ] The brightness of the backlight. Zero is darkest (backlight off), 255 is the brightest. |
duration | integer <int32> (configDisplayBacklightDuration) [ -1 .. 2147483647 ] The number of seconds the backlight should remain on after the last activation of the display navigation buttons. Zero means the backlight is always off. The special value -1 indicates that the backlight remains on at all times. |
{- "brightness": 255,
- "duration": 60
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
brightness | integer (configDisplayBacklightBrightness) [ 0 .. 255 ] The brightness of the backlight. Zero is darkest (backlight off), 255 is the brightest. |
duration | integer <int32> (configDisplayBacklightDuration) [ -1 .. 2147483647 ] The number of seconds the backlight should remain on after the last activation of the display navigation buttons. Zero means the backlight is always off. The special value -1 indicates that the backlight remains on at all times. |
{- "brightness": 255,
- "duration": 60
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The brightness of the backlight. Zero is darkest (backlight off), 255 is the brightest.
The brightness of the backlight. Zero is darkest (backlight off), 255 is the brightest.
255
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The brightness of the backlight. Zero is darkest (backlight off), 255 is the brightest.
255
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The number of seconds the backlight should remain on after the last activation of the display navigation buttons. Zero means the backlight is always off. The special value -1 indicates that the backlight remains on at all times.
The number of seconds the backlight should remain on after the last activation of the display navigation buttons. Zero means the backlight is always off. The special value -1 indicates that the backlight remains on at all times.
60
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The number of seconds the backlight should remain on after the last activation of the display navigation buttons. Zero means the backlight is always off. The special value -1 indicates that the backlight remains on at all times.
60
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The LCD contrast Zero means no contrast (display is blank), 127 means maximum contrast (display is all black). A value of around 65 usually provides a good contrast.
The LCD contrast Zero means no contrast (display is blank), 127 means maximum contrast (display is all black). A value of around 65 usually provides a good contrast.
65
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The LCD contrast Zero means no contrast (display is blank), 127 means maximum contrast (display is all black). A value of around 65 usually provides a good contrast.
65
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The fontset to use for the display. Possible values are:
small
: Smaller than the normal
fontset, this is a lower
quality fontset that can fit more text on the display.
normal
: This fontset provides a good tradeoff between font
quality and the amount of text that can fit on the display.
This should work well for languages with relatively simple
characters, such as English or French.
large
: This fontset should work well for languages with more
complex characters such as Korean or Chinese.
Note The value of this resource needs to be localized (translated) before presenting it to a user.
The fontset to use for the display. Possible values are:
small
: Smaller than the normal
fontset, this is a lower
quality fontset that can fit more text on the display.
normal
: This fontset provides a good tradeoff between font
quality and the amount of text that can fit on the display.
This should work well for languages with relatively simple
characters, such as English or French.
large
: This fontset should work well for languages with more
complex characters such as Korean or Chinese.
Note The value of this resource needs to be localized (translated) before presenting it to a user.
"normal"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The fontset to use for the display. Possible values are:
small
: Smaller than the normal
fontset, this is a lower
quality fontset that can fit more text on the display.
normal
: This fontset provides a good tradeoff between font
quality and the amount of text that can fit on the display.
This should work well for languages with relatively simple
characters, such as English or French.
large
: This fontset should work well for languages with more
complex characters such as Korean or Chinese.
Note The value of this resource needs to be localized (translated) before presenting it to a user.
"normal"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The angle in degrees by which the orientation of the display should be rotated in the counterclockwise direction. An angle of 0 degree results in the display being aligned with the label on the meter. The value of this resource is rounded to an integer multiple of 90 degrees.
The angle in degrees by which the orientation of the display should be rotated in the counterclockwise direction. An angle of 0 degree results in the display being aligned with the label on the meter. The value of this resource is rounded to an integer multiple of 90 degrees.
90
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The angle in degrees by which the orientation of the display should be rotated in the counterclockwise direction. An angle of 0 degree results in the display being aligned with the label on the meter. The value of this resource is rounded to an integer multiple of 90 degrees.
90
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Screen configurations. At this time, only the registers screen is configurable.
object (configDisplayScreenRegisters) The register screen configuration. |
{- "use": "ic",
- "gen": "ic",
- "Grid": "ic",
- "Solar": "ic",
- "temp": "i",
- ".default": ""
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
object (configDisplayScreenRegisters) The register screen configuration. |
{- "use": "ic",
- "gen": "ic",
- "Grid": "ic",
- "Solar": "ic",
- "temp": "i",
- ".default": ""
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The configuration of the registers screen - a screen that cycles through a list of registers, displaying their values.
name* additional property | string (configDisplayScreenRegistersName) Specifies how the named register is to be displayed. The following characters may appear in this string:
Note that an empty string implies that the register is not displayed at all For the special keyword |
{- "name1": "ic",
- "name2": "ic"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name* additional property | string (configDisplayScreenRegistersName) Specifies how the named register is to be displayed. The following characters may appear in this string:
Note that an empty string implies that the register is not displayed at all For the special keyword |
{- "name1": "ic",
- "name2": "ic"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Specifies how the named register is to be displayed. The following characters may appear in this string:
i
: The instantaneous (rate of change) value of the register
should be displayed.
c
: The accumulated (cumulative) value of the register should
be displayed.
Note that an empty string implies that the register is not displayed at all
For the special keyword .default
, this establishes how registers
should be displayed that are not mentioned otherwise.
name required | string Example: Solar The name of a register or the special keyword |
{- "result": "ic",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: Solar The name of a register or the special keyword |
Specifies how the named register is to be displayed. The following characters may appear in this string:
i
: The instantaneous (rate of change) value of the register
should be displayed.
c
: The accumulated (cumulative) value of the register should
be displayed.
Note that an empty string implies that the register is not displayed at all
For the special keyword .default
, this establishes how registers
should be displayed that are not mentioned otherwise.
"ic"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: Solar The name of a register or the special keyword |
Specifies how the named register is to be displayed. The following characters may appear in this string:
i
: The instantaneous (rate of change) value of the register
should be displayed.
c
: The accumulated (cumulative) value of the register should
be displayed.
Note that an empty string implies that the register is not displayed at all
For the special keyword .default
, this establishes how registers
should be displayed that are not mentioned otherwise.
"ic"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Remove this register from the screen.
name required | string Example: Solar The name of a register or the special keyword |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The code of the preferred language for the meter. When the meter
needs to generate a message (e.g., as a result of an alert
triggering), it will generate the message in the language selected
by this code whenever possible. The code should be in a format
acceptable to the
setlocale()
function.
Language codes currently supported include:
de
: German.
en
: US English (defaults to 12-hour clock and imperial units).
en_GB
: British English (defaults to 24-hour clock and metric units).
es
: Spanish.
fr
: French.
he
: Hebrew.
it
: Italian.
ko
: Korean.
pl
: Polish.
zh_Hans
: Simplified Chinese (Mandarin).
zh_Hant
: Traditional Chinese (Cantonese).
See eGauge Internationalization Instructions for information on adding other languages or improving an existing translation.
Note When accessing the meter from a web browser, the value of this resource has normally no effect as the user interface is presented in the language selected by the browser.
The code of the preferred language for the meter. When the meter
needs to generate a message (e.g., as a result of an alert
triggering), it will generate the message in the language selected
by this code whenever possible. The code should be in a format
acceptable to the
setlocale()
function.
Language codes currently supported include:
de
: German.
en
: US English (defaults to 12-hour clock and imperial units).
en_GB
: British English (defaults to 24-hour clock and metric units).
es
: Spanish.
fr
: French.
he
: Hebrew.
it
: Italian.
ko
: Korean.
pl
: Polish.
zh_Hans
: Simplified Chinese (Mandarin).
zh_Hant
: Traditional Chinese (Cantonese).
See eGauge Internationalization Instructions for information on adding other languages or improving an existing translation.
Note When accessing the meter from a web browser, the value of this resource has normally no effect as the user interface is presented in the language selected by the browser.
"en_GB"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The code of the preferred language for the meter. When the meter
needs to generate a message (e.g., as a result of an alert
triggering), it will generate the message in the language selected
by this code whenever possible. The code should be in a format
acceptable to the
setlocale()
function.
Language codes currently supported include:
de
: German.
en
: US English (defaults to 12-hour clock and imperial units).
en_GB
: British English (defaults to 24-hour clock and metric units).
es
: Spanish.
fr
: French.
he
: Hebrew.
it
: Italian.
ko
: Korean.
pl
: Polish.
zh_Hans
: Simplified Chinese (Mandarin).
zh_Hant
: Traditional Chinese (Cantonese).
See eGauge Internationalization Instructions for information on adding other languages or improving an existing translation.
Note When accessing the meter from a web browser, the value of this resource has normally no effect as the user interface is presented in the language selected by the browser.
"en_GB"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
{- "result": {
- "sensor": {
- "L1": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -74.013999939
}, - "error": 0,
- "model": "1:1",
- "phase": ""
}, - "S1": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.659896851
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.96@1.5:2.59@3:2.34@6:2.06@15:1.82@50:1.89@100"
}, - "S2": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.659896851
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.96@1.5:2.59@3:2.34@6:2.06@15:1.82@50:1.89@100"
}
}, - "gain": "normal",
- "update-interval": 500
}, - "error": "Error message (present if an error occurred)."
}
object (configLocalSensor) The sensor configurations. | |
gain | string (configLocalGain) Enum: "normal" "high" The amplifier gain to use for the local sensor inputs ( |
update-interval | integer (configLocalUpdateInterval) The interval in milliseconds between measurement updates. The default is 1000ms (one update per second) but some meters support smaller values. The rate of change values are averaged over this period of time. |
{- "sensor": {
- "L1": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -74.013999939
}, - "error": 0,
- "model": "1:1",
- "phase": ""
}, - "S1": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.659896851
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.96@1.5:2.59@3:2.34@6:2.06@15:1.82@50:1.89@100"
}, - "S2": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.659896851
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.96@1.5:2.59@3:2.34@6:2.06@15:1.82@50:1.89@100"
}
}, - "gain": "normal",
- "update-interval": 500
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
object (configLocalSensor) The sensor configurations. | |
gain | string (configLocalGain) Enum: "normal" "high" The amplifier gain to use for the local sensor inputs ( |
update-interval | integer (configLocalUpdateInterval) The interval in milliseconds between measurement updates. The default is 1000ms (one update per second) but some meters support smaller values. The rate of change values are averaged over this period of time. |
{- "sensor": {
- "L1": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -74.013999939
}, - "error": 0,
- "model": "1:1",
- "phase": ""
}, - "S1": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.659896851
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.96@1.5:2.59@3:2.34@6:2.06@15:1.82@50:1.89@100"
}, - "S2": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.659896851
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.96@1.5:2.59@3:2.34@6:2.06@15:1.82@50:1.89@100"
}
}, - "gain": "normal",
- "update-interval": 500
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The amplifier gain to use for the local sensor inputs (S1
and
up). All meters support the value normal
. Model EG4xxx meters
also support the value high
. This gain increases the input gain
to approximately ten times of the normal gain. That is, the
sensors are approximately 10 times more sensitive than normal, at
the expense of having a 10 times smaller range.
The amplifier gain to use for the local sensor inputs (S1
and
up). All meters support the value normal
. Model EG4xxx meters
also support the value high
. This gain increases the input gain
to approximately ten times of the normal gain. That is, the
sensors are approximately 10 times more sensitive than normal, at
the expense of having a 10 times smaller range.
"normal"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The amplifier gain to use for the local sensor inputs (S1
and
up). All meters support the value normal
. Model EG4xxx meters
also support the value high
. This gain increases the input gain
to approximately ten times of the normal gain. That is, the
sensors are approximately 10 times more sensitive than normal, at
the expense of having a 10 times smaller range.
"normal"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
{- "result": {
- "L1": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -74.013999939
}, - "error": 0,
- "model": "1:1",
- "phase": ""
}, - "S1": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.659896851
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.96@1.5:2.59@3:2.34@6:2.06@15:1.82@50:1.89@100"
}, - "S2": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.659896851
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.96@1.5:2.59@3:2.34@6:2.06@15:1.82@50:1.89@100"
}
}, - "error": "Error message (present if an error occurred)."
}
additional property | object (configLocalSensorName) The sensor configuration. |
{- "L1": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -74.013999939
}, - "error": 0,
- "model": "1:1",
- "phase": ""
}, - "S1": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.659896851
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.96@1.5:2.59@3:2.34@6:2.06@15:1.82@50:1.89@100"
}, - "S2": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.659896851
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.96@1.5:2.59@3:2.34@6:2.06@15:1.82@50:1.89@100"
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
additional property | object (configLocalSensorName) The sensor configuration. |
{- "L1": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -74.013999939
}, - "error": 0,
- "model": "1:1",
- "phase": ""
}, - "S1": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.659896851
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.96@1.5:2.59@3:2.34@6:2.06@15:1.82@50:1.89@100"
}, - "S2": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.659896851
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.96@1.5:2.59@3:2.34@6:2.06@15:1.82@50:1.89@100"
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
max-depth | |
filter |
{- "result": {
- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.66
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.59@3:2.34@6:2.06@15:1.89@100"
}, - "error": "Error message (present if an error occurred)."
}
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
object (configLocalSensorNameChannel) The A/D converter channel configuration of the named sensor. | |
error | number (configLocalSensorNameError) The attached sensor's relative output error (ratio error) in
percent. For example, a value of 2.5 would indicate that the
sensor is reading 2.5% higher than nominal. This value is ignored
if member |
model | string (configLocalSensorNameModel) The model name of the attached sensor. If this is |
phase | string (configLocalSensorNamePhase) The phase (timing) adjustment required by the attached sensor.
This value is ignored if member The format of this string is a colon-separated list of phase- and
amplitude-level pairs of the form |
{- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.66
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.59@3:2.34@6:2.06@15:1.89@100"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
object (configLocalSensorNameChannel) The A/D converter channel configuration of the named sensor. | |
error | number (configLocalSensorNameError) The attached sensor's relative output error (ratio error) in
percent. For example, a value of 2.5 would indicate that the
sensor is reading 2.5% higher than nominal. This value is ignored
if member |
model | string (configLocalSensorNameModel) The model name of the attached sensor. If this is |
phase | string (configLocalSensorNamePhase) The phase (timing) adjustment required by the attached sensor.
This value is ignored if member The format of this string is a colon-separated list of phase- and
amplitude-level pairs of the form |
{- "channel": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.66
}, - "error": 0,
- "model": "ML-SCT-019-0100",
- "phase": "2.59@3:2.34@6:2.06@15:1.89@100"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset configuration to off.
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
max-depth | |
filter |
{- "result": {
- "bias": 0,
- "mode": "normal",
- "scale": -206.66
}, - "error": "Error message (present if an error occurred)."
}
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
bias | number (configLocalSensorNameChannelBias) The bias value (offset) to be added when converting an A/D converter sample to a physical quantity. |
mode | string (configLocalSensorNameChannelMode) Enum: "off" "normal" "integrate" The channel's acquisition mode. Possible values are:
|
scale | number (configLocalSensorNameChannelScale) The scale value by which an A/D converter sample is to be divided to convert a sample to a physical quantity (the bias value is added to the sample before the scale is applied). |
{- "bias": 0,
- "mode": "normal",
- "scale": -206.66
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
bias | number (configLocalSensorNameChannelBias) The bias value (offset) to be added when converting an A/D converter sample to a physical quantity. |
mode | string (configLocalSensorNameChannelMode) Enum: "off" "normal" "integrate" The channel's acquisition mode. Possible values are:
|
scale | number (configLocalSensorNameChannelScale) The scale value by which an A/D converter sample is to be divided to convert a sample to a physical quantity (the bias value is added to the sample before the scale is applied). |
{- "bias": 0,
- "mode": "normal",
- "scale": -206.66
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset channel to default configuration.
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The bias value (offset) to be added when converting an A/D converter sample to a physical quantity.
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
The bias value (offset) to be added when converting an A/D converter sample to a physical quantity.
0
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
The bias value (offset) to be added when converting an A/D converter sample to a physical quantity.
0
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to 0.
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The channel's acquisition mode. Possible values are:
integrate
: The sample values are integrated over time.
normal
: The sensor is operating in normal mode.
off
: The sensor is not in use.
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
The channel's acquisition mode. Possible values are:
integrate
: The sample values are integrated over time.
normal
: The sensor is operating in normal mode.
off
: The sensor is not in use.
"normal"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
The channel's acquisition mode. Possible values are:
integrate
: The sample values are integrated over time.
normal
: The sensor is operating in normal mode.
off
: The sensor is not in use.
"normal"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to off
.
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The scale value by which an A/D converter sample is to be divided to convert a sample to a physical quantity (the bias value is added to the sample before the scale is applied).
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
The scale value by which an A/D converter sample is to be divided to convert a sample to a physical quantity (the bias value is added to the sample before the scale is applied).
-206.66
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
The scale value by which an A/D converter sample is to be divided to convert a sample to a physical quantity (the bias value is added to the sample before the scale is applied).
-206.66
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to 0.
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The attached sensor's relative output error (ratio error) in
percent. For example, a value of 2.5 would indicate that the
sensor is reading 2.5% higher than nominal. This value is ignored
if member model
is CTid
.
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
The attached sensor's relative output error (ratio error) in
percent. For example, a value of 2.5 would indicate that the
sensor is reading 2.5% higher than nominal. This value is ignored
if member model
is CTid
.
0
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
The attached sensor's relative output error (ratio error) in
percent. For example, a value of 2.5 would indicate that the
sensor is reading 2.5% higher than nominal. This value is ignored
if member model
is CTid
.
0
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The model name of the attached sensor. If this is CTid
, a
CTid®-enabled sensor is attached and the /ctid
service should be used to obtain details about the attached
sensor.
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
The model name of the attached sensor. If this is CTid
, a
CTid®-enabled sensor is attached and the /ctid
service should be used to obtain details about the attached
sensor.
"ML-SCT-019-0100"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
The model name of the attached sensor. If this is CTid
, a
CTid®-enabled sensor is attached and the /ctid
service should be used to obtain details about the attached
sensor.
"ML-SCT-019-0100"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to empty string.
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The phase (timing) adjustment required by the attached sensor.
This value is ignored if member model
is CTid
.
The format of this string is a colon-separated list of phase- and
amplitude-level pairs of the form p@l
, where p
is the
phase-adjustment in degrees at 60Hz, and l
is a percentage of
the sensor's full scale value. For example, for a 100A current
sensor, the phase string 1@1:0.75@50
would indicate that the
phase needs to be adjusted by 1 degree at 1A and by 0.75 degrees
at 50A.
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
{- "result": "2.59@3:2.34@6:2.06@15:1.89@100",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
The phase (timing) adjustment required by the attached sensor.
This value is ignored if member model
is CTid
.
The format of this string is a colon-separated list of phase- and
amplitude-level pairs of the form p@l
, where p
is the
phase-adjustment in degrees at 60Hz, and l
is a percentage of
the sensor's full scale value. For example, for a 100A current
sensor, the phase string 1@1:0.75@50
would indicate that the
phase needs to be adjusted by 1 degree at 1A and by 0.75 degrees
at 50A.
"2.59@3:2.34@6:2.06@15:1.89@100"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
The phase (timing) adjustment required by the attached sensor.
This value is ignored if member model
is CTid
.
The format of this string is a colon-separated list of phase- and
amplitude-level pairs of the form p@l
, where p
is the
phase-adjustment in degrees at 60Hz, and l
is a percentage of
the sensor's full scale value. For example, for a 100A current
sensor, the phase string 1@1:0.75@50
would indicate that the
phase needs to be adjusted by 1 degree at 1A and by 0.75 degrees
at 50A.
"2.59@3:2.34@6:2.06@15:1.89@100"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to empty string.
name required | string Example: S1 The name of a sensor (L1-L3, Ldc, or S1-S30). |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The interval in milliseconds between measurement updates. The default is 1000ms (one update per second) but some meters support smaller values. The rate of change values are averaged over this period of time.
The interval in milliseconds between measurement updates. The default is 1000ms (one update per second) but some meters support smaller values. The rate of change values are averaged over this period of time.
500
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The interval in milliseconds between measurement updates. The default is 1000ms (one update per second) but some meters support smaller values. The rate of change values are averaged over this period of time.
500
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
latitude | number (configLocationLatitude) The latitude of the meter's location in degrees. Positive values are north of the equator, negative values south of it. |
longitude | number (configLocationLongitude) The longitude of the meter's location in degrees. Positive values are east of the prime meridian, negative values are west of it. |
{- "latitude": 36.035,
- "longitude": -115.46639
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
latitude | number (configLocationLatitude) The latitude of the meter's location in degrees. Positive values are north of the equator, negative values south of it. |
longitude | number (configLocationLongitude) The longitude of the meter's location in degrees. Positive values are east of the prime meridian, negative values are west of it. |
{- "latitude": 36.035,
- "longitude": -115.46639
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The latitude of the meter's location in degrees. Positive values are north of the equator, negative values south of it.
The latitude of the meter's location in degrees. Positive values are north of the equator, negative values south of it.
36.035
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The latitude of the meter's location in degrees. Positive values are north of the equator, negative values south of it.
36.035
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The longitude of the meter's location in degrees. Positive values are east of the prime meridian, negative values are west of it.
The longitude of the meter's location in degrees. Positive values are east of the prime meridian, negative values are west of it.
-115.46639
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The longitude of the meter's location in degrees. Positive values are east of the prime meridian, negative values are west of it.
-115.46639
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
object (configLogSystem) The system log configuration. |
{- "system": {
- "size": 131072
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
object (configLogSystem) The system log configuration. |
{- "system": {
- "size": 131072
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
size | integer (configLogSystemSize) The size of the system log buffer in bytes. When writing this value, it is rounded up to the nearest kilobyte boundary. A size of 0 disables the system log. Otherwise, the size is rounded up to a minimum of 4KiB. |
{- "size": 131072
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
size | integer (configLogSystemSize) The size of the system log buffer in bytes. When writing this value, it is rounded up to the nearest kilobyte boundary. A size of 0 disables the system log. Otherwise, the size is rounded up to a minimum of 4KiB. |
{- "size": 131072
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The size of the system log buffer in bytes. When writing this value, it is rounded up to the nearest kilobyte boundary. A size of 0 disables the system log. Otherwise, the size is rounded up to a minimum of 4KiB.
The size of the system log buffer in bytes. When writing this value, it is rounded up to the nearest kilobyte boundary. A size of 0 disables the system log. Otherwise, the size is rounded up to a minimum of 4KiB.
131072
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The size of the system log buffer in bytes. When writing this value, it is rounded up to the nearest kilobyte boundary. A size of 0 disables the system log. Otherwise, the size is rounded up to a minimum of 4KiB.
131072
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
{- "result": {
- "script": {
- "alertd": "print(\"this is the alert script\");",
- "tariff": "print(\"this is the tariff script\");",
- "teamd": "print(\"this is the formulas script\");"
}, - "ctrld": {
- "test": "print(\"this is control script test\");"
}
}, - "error": "Error message (present if an error occurred)."
}
object (configLuaScript) Lua scripts. | |
object (configLuaCtrld) The control scripts. Control scripts generally run indefinitely. The more control scripts exist, the slower they will execute. If a control script voluntarily terminates execution, it is restarted automatically after five seconds. If a control script is updated, its execution is automatically restarted. |
{- "script": {
- "alertd": "print(\"this is the alert script\");",
- "tariff": "print(\"this is the tariff script\");",
- "teamd": "print(\"this is the formulas script\");"
}, - "ctrld": {
- "test": "print(\"this is control script test\");"
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
object (configLuaScript) Lua scripts. | |
object (configLuaCtrld) The control scripts. Control scripts generally run indefinitely. The more control scripts exist, the slower they will execute. If a control script voluntarily terminates execution, it is restarted automatically after five seconds. If a control script is updated, its execution is automatically restarted. |
{- "script": {
- "alertd": "print(\"this is the alert script\");",
- "tariff": "print(\"this is the tariff script\");",
- "teamd": "print(\"this is the formulas script\");"
}, - "ctrld": {
- "test": "print(\"this is control script test\");"
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
{- "result": {
- "alertd": "print(\"this is the alert script\");",
- "tariff": "print(\"this is the tariff script\");",
- "teamd": "print(\"this is the formulas script\");"
}, - "error": "Error message (present if an error occurred)."
}
alertd | string (configLuaScriptAlertd) The Lua script loaded by alert reporting daemon. This script can be used to define helper functions that can then be called from the alert conditions. If loading this script takes longer than 15 seconds or evaluating any custom alert condition takes longer than 60 seconds, an alert is raised. |
tariff | string (configLuaScriptTariff) The Lua script used to calculate energy cost. This script can be
modified only if server-storage variable
If loading this script takes longer than 15 seconds or evaluating the register formulas takes longer than half the update-interval, an alert is raised. |
teamd | string (configLuaScriptTeamd) The Lua script loaded by the register calculator. This script can be used to define helper functions that can then be called from register formulas. If loading this script takes longer than 15 seconds or evaluating the register formulas takes longer than half the update-interval, an alert is raised. |
{- "alertd": "print(\"this is the alert script\");",
- "tariff": "print(\"this is the tariff script\");",
- "teamd": "print(\"this is the formulas script\");"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
alertd | string (configLuaScriptAlertd) The Lua script loaded by alert reporting daemon. This script can be used to define helper functions that can then be called from the alert conditions. If loading this script takes longer than 15 seconds or evaluating any custom alert condition takes longer than 60 seconds, an alert is raised. |
tariff | string (configLuaScriptTariff) The Lua script used to calculate energy cost. This script can be
modified only if server-storage variable
If loading this script takes longer than 15 seconds or evaluating the register formulas takes longer than half the update-interval, an alert is raised. |
teamd | string (configLuaScriptTeamd) The Lua script loaded by the register calculator. This script can be used to define helper functions that can then be called from register formulas. If loading this script takes longer than 15 seconds or evaluating the register formulas takes longer than half the update-interval, an alert is raised. |
{- "alertd": "print(\"this is the alert script\");",
- "tariff": "print(\"this is the tariff script\");",
- "teamd": "print(\"this is the formulas script\");"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The Lua script loaded by alert reporting daemon. This script can be used to define helper functions that can then be called from the alert conditions.
If loading this script takes longer than 15 seconds or evaluating any custom alert condition takes longer than 60 seconds, an alert is raised.
The Lua script loaded by alert reporting daemon. This script can be used to define helper functions that can then be called from the alert conditions.
If loading this script takes longer than 15 seconds or evaluating any custom alert condition takes longer than 60 seconds, an alert is raised.
"print(\"this is the alert script\");"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The Lua script loaded by alert reporting daemon. This script can be used to define helper functions that can then be called from the alert conditions.
If loading this script takes longer than 15 seconds or evaluating any custom alert condition takes longer than 60 seconds, an alert is raised.
"print(\"this is the alert script\");"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The Lua script used to calculate energy cost. This script can be
modified only if server-storage variable
global.billing.tariff_uri
is empty or unset.
If loading this script takes longer than 15 seconds or evaluating the register formulas takes longer than half the update-interval, an alert is raised.
The Lua script used to calculate energy cost. This script can be
modified only if server-storage variable
global.billing.tariff_uri
is empty or unset.
If loading this script takes longer than 15 seconds or evaluating the register formulas takes longer than half the update-interval, an alert is raised.
"print(\"this is the tariff script\");"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The Lua script used to calculate energy cost. This script can be
modified only if server-storage variable
global.billing.tariff_uri
is empty or unset.
If loading this script takes longer than 15 seconds or evaluating the register formulas takes longer than half the update-interval, an alert is raised.
"print(\"this is the tariff script\");"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The Lua script loaded by the register calculator. This script can be used to define helper functions that can then be called from register formulas.
If loading this script takes longer than 15 seconds or evaluating the register formulas takes longer than half the update-interval, an alert is raised.
The Lua script loaded by the register calculator. This script can be used to define helper functions that can then be called from register formulas.
If loading this script takes longer than 15 seconds or evaluating the register formulas takes longer than half the update-interval, an alert is raised.
"print(\"this is the formulas script\");"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The Lua script loaded by the register calculator. This script can be used to define helper functions that can then be called from register formulas.
If loading this script takes longer than 15 seconds or evaluating the register formulas takes longer than half the update-interval, an alert is raised.
"print(\"this is the formulas script\");"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The control scripts. Control scripts generally run indefinitely. The more control scripts exist, the slower they will execute. If a control script voluntarily terminates execution, it is restarted automatically after five seconds. If a control script is updated, its execution is automatically restarted.
script* additional property | string (configLuaCtrldScript) The control script. |
{- "test": "print(\"this is control script test\");"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
script* additional property | string (configLuaCtrldScript) The control script. |
{- "test": "print(\"this is control script test\");"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
script required | string The name of a Lua script. |
The control script.
"print(\"this is control script test\");"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
script required | string The name of a Lua script. |
The control script.
"print(\"this is control script test\");"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Modbus-related configurations.
{- "result": {
- "client": {
- "map": {
- "user_dev": {
- "option": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "reg": [
- {
- "name": "irradiance",
- "addr": 0,
- "type": "u32",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - {
- "name": "temp",
- "addr": 1,
- "type": "s32",
- "kind": "analog",
- "unit": "degC",
- "offset": 0,
- "scale": 0.01,
- "access": "ro"
}
]
}
}
}, - "server": {
- "enable": [
- "rtu"
], - "id": 1,
- "rtu": {
- "port": "USB2:9600/8o2"
}, - "tcp": {
- "port": 502
}
}
}, - "error": "Error message (present if an error occurred)."
}
object (configModbusClient) Modbus client configuration. This is used by the meter to communicate with other Modbus devices. | |
object (configModbusServer) Modbus server configuration. This configures the server-side of the meter. That is, it defines how the meter provides its own data to other Modbus devices. |
{- "client": {
- "map": {
- "user_dev": {
- "option": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "reg": [
- {
- "name": "irradiance",
- "addr": 0,
- "type": "u32",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - {
- "name": "temp",
- "addr": 1,
- "type": "s32",
- "kind": "analog",
- "unit": "degC",
- "offset": 0,
- "scale": 0.01,
- "access": "ro"
}
]
}
}
}, - "server": {
- "enable": [
- "rtu"
], - "id": 1,
- "rtu": {
- "port": "USB2:9600/8o2"
}, - "tcp": {
- "port": 502
}
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
object (configModbusClient) Modbus client configuration. This is used by the meter to communicate with other Modbus devices. | |
object (configModbusServer) Modbus server configuration. This configures the server-side of the meter. That is, it defines how the meter provides its own data to other Modbus devices. |
{- "client": {
- "map": {
- "user_dev": {
- "option": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "reg": [
- {
- "name": "irradiance",
- "addr": 0,
- "type": "u32",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - {
- "name": "temp",
- "addr": 1,
- "type": "s32",
- "kind": "analog",
- "unit": "degC",
- "offset": 0,
- "scale": 0.01,
- "access": "ro"
}
]
}
}
}, - "server": {
- "enable": [
- "rtu"
], - "id": 1,
- "rtu": {
- "port": "USB2:9600/8o2"
}, - "tcp": {
- "port": 502
}
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Modbus client configuration. This is used by the meter to communicate with other Modbus devices.
{- "result": {
- "map": {
- "user_dev": {
- "option": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "reg": [
- {
- "name": "irradiance",
- "addr": 0,
- "type": "u32",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - {
- "name": "temp",
- "addr": 1,
- "type": "s32",
- "kind": "analog",
- "unit": "degC",
- "offset": 0,
- "scale": 0.01,
- "access": "ro"
}
]
}
}
}, - "error": "Error message (present if an error occurred)."
}
object (configModbusClientMap) User-defined Modbus address maps. The builtin, read-only system maps are available at /sys/modbus/client/map. If a user-defined map with the same name as a system map exists, it will shadow (mask) the system map with them same name. |
{- "map": {
- "user_dev": {
- "option": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "reg": [
- {
- "name": "irradiance",
- "addr": 0,
- "type": "u32",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - {
- "name": "temp",
- "addr": 1,
- "type": "s32",
- "kind": "analog",
- "unit": "degC",
- "offset": 0,
- "scale": 0.01,
- "access": "ro"
}
]
}
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
object (configModbusClientMap) User-defined Modbus address maps. The builtin, read-only system maps are available at /sys/modbus/client/map. If a user-defined map with the same name as a system map exists, it will shadow (mask) the system map with them same name. |
{- "map": {
- "user_dev": {
- "option": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "reg": [
- {
- "name": "irradiance",
- "addr": 0,
- "type": "u32",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - {
- "name": "temp",
- "addr": 1,
- "type": "s32",
- "kind": "analog",
- "unit": "degC",
- "offset": 0,
- "scale": 0.01,
- "access": "ro"
}
]
}
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
User-defined Modbus address maps. The builtin, read-only system maps are available at /sys/modbus/client/map. If a user-defined map with the same name as a system map exists, it will shadow (mask) the system map with them same name.
{- "result": {
- "user_dev": {
- "option": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "reg": [
- {
- "name": "irradiance",
- "addr": 0,
- "type": "u32",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - {
- "name": "temp",
- "addr": 1,
- "type": "s32",
- "kind": "analog",
- "unit": "degC",
- "offset": 0,
- "scale": 0.01,
- "access": "ro"
}
]
}
}, - "error": "Error message (present if an error occurred)."
}
additional property | object (configModbusClientMapName) Modbus map consisting of a list of register definitions and a set of options. |
{- "user_dev": {
- "option": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "reg": [
- {
- "name": "irradiance",
- "addr": 0,
- "type": "u32",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - {
- "name": "temp",
- "addr": 1,
- "type": "s32",
- "kind": "analog",
- "unit": "degC",
- "offset": 0,
- "scale": 0.01,
- "access": "ro"
}
]
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
additional property | object (configModbusClientMapName) Modbus map consisting of a list of register definitions and a set of options. |
{- "user_dev": {
- "option": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "reg": [
- {
- "name": "irradiance",
- "addr": 0,
- "type": "u32",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - {
- "name": "temp",
- "addr": 1,
- "type": "s32",
- "kind": "analog",
- "unit": "degC",
- "offset": 0,
- "scale": 0.01,
- "access": "ro"
}
]
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Modbus map consisting of a list of register definitions and a set of options.
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
max-depth | |
filter |
{- "result": {
- "option": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "reg": [
- {
- "name": "irradiance",
- "addr": 0,
- "type": "u32",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - {
- "name": "temp",
- "addr": 1,
- "type": "s32",
- "kind": "analog",
- "unit": "degC",
- "offset": 0,
- "scale": 0.01,
- "access": "ro"
}
]
}, - "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
object (configModbusClientMapNameOption) A set of options. The meter currently supports the following options:
| |
Array of objects (configModbusClientMapNameReg) A list of Modbus register definitions. |
{- "option": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "reg": [
- {
- "name": "irradiance",
- "addr": 0,
- "type": "u32",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - {
- "name": "temp",
- "addr": 1,
- "type": "s32",
- "kind": "analog",
- "unit": "degC",
- "offset": 0,
- "scale": 0.01,
- "access": "ro"
}
]
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
object (configModbusClientMapNameOption) A set of options. The meter currently supports the following options:
| |
Array of objects (configModbusClientMapNameReg) A list of Modbus register definitions. |
{- "option": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "reg": [
- {
- "name": "irradiance",
- "addr": 0,
- "type": "u32",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - {
- "name": "temp",
- "addr": 1,
- "type": "s32",
- "kind": "analog",
- "unit": "degC",
- "offset": 0,
- "scale": 0.01,
- "access": "ro"
}
]
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Delete this map.
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
A set of options. The meter currently supports the following options:
default-modbus-addr
: The Modbus unit-number to use by
default. This must be a decimal string. For example: 1
.
default-serial-params
: The default serial parameters to use
when the remote device is connected via a serial port
(Modbus/RTU). This must be a string. For example: 9600/8n1
for 9600 baud, 8 databits, no parity, 1 stop bit.
default-tcp-port
: The default TCP port number to use when
the remote device is connected via Modbus/TCP. This must be a
decimal string. For example: 6001
.
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
max-depth | |
filter |
{- "result": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
opt* additional property | string (configModbusClientMapNameOptionOpt) The value of the Modbus map option. |
{- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
opt* additional property | string (configModbusClientMapNameOptionOpt) The value of the Modbus map option. |
{- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Delete all options.
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
opt required | string Enum: "default-modbus-addr" "default-serial-params" "default-tcp-port" The name of a Modbus map option. |
{- "result": "9600/8n1",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
opt required | string Enum: "default-modbus-addr" "default-serial-params" "default-tcp-port" The name of a Modbus map option. |
The value of the Modbus map option.
"9600/8n1"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
opt required | string Enum: "default-modbus-addr" "default-serial-params" "default-tcp-port" The name of a Modbus map option. |
The value of the Modbus map option.
"9600/8n1"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Delete this option.
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
opt required | string Enum: "default-modbus-addr" "default-serial-params" "default-tcp-port" The name of a Modbus map option. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
max-depth | |
filter |
{- "result": [
- {
- "name": "irradiance",
- "addr": 65535,
- "type": "u32",
- "encoding": "ABCD",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}
], - "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
name | string (configModbusClientMapNameRegItemName) The name of the register. The user can choose this name freely so long as each register within a map has a unique name. |
addr | integer (configModbusClientMapNameRegItemAddr) [ 0 .. 65535 ] The Modbus address of the register. |
type | string (configModbusClientMapNameRegItemType) Enum: "bit" "s16" "u16" "s32" "u32" "s32l" "u32l" "s64" "u64" "float16" "float16l" "float" "floatl" "double" The type of the register value. This may be one of the following:
|
encoding | string (configModbusClientMapNameRegItemEncoding) The byte-order used when encoding or decoding numeric values
to/from Modbus packets. This consists of a string of up eight
characters, each of which must be a letter in the range from The encoding is ignored for non-numeric or word-swapped types
(i.e., it is used only for |
kind | string (configModbusClientMapNameRegItemKind) Enum: "analog" "enum" "bitset" The kind of the register. Possible values are:
|
unit | string (configModbusClientMapNameRegItemUnit) For register of the
|
offset | number (configModbusClientMapNameRegItemOffset) An offset value that is used to convert the Modbus register value to a value in the specified physical unit. Specifically, when the Modbus value of the register is reg, then corresponding physical value phys is calculated as:
where |
scale | number (configModbusClientMapNameRegItemScale) A scale value that is used to convert the Modbus register value to a value in the specified physical unit. Specifically, when the Modbus value of the register is reg, then corresponding physical value phys is calculated as:
where |
access | string (configModbusClientMapNameRegItemAccess) Enum: "ro" "rw" The access-mode of the register. It must be one of:
|
[- {
- "name": "irradiance",
- "addr": 65535,
- "type": "u32",
- "encoding": "ABCD",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}
]
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
name | string (configModbusClientMapNameRegItemName) The name of the register. The user can choose this name freely so long as each register within a map has a unique name. |
addr | integer (configModbusClientMapNameRegItemAddr) [ 0 .. 65535 ] The Modbus address of the register. |
type | string (configModbusClientMapNameRegItemType) Enum: "bit" "s16" "u16" "s32" "u32" "s32l" "u32l" "s64" "u64" "float16" "float16l" "float" "floatl" "double" The type of the register value. This may be one of the following:
|
encoding | string (configModbusClientMapNameRegItemEncoding) The byte-order used when encoding or decoding numeric values
to/from Modbus packets. This consists of a string of up eight
characters, each of which must be a letter in the range from The encoding is ignored for non-numeric or word-swapped types
(i.e., it is used only for |
kind | string (configModbusClientMapNameRegItemKind) Enum: "analog" "enum" "bitset" The kind of the register. Possible values are:
|
unit | string (configModbusClientMapNameRegItemUnit) For register of the
|
offset | number (configModbusClientMapNameRegItemOffset) An offset value that is used to convert the Modbus register value to a value in the specified physical unit. Specifically, when the Modbus value of the register is reg, then corresponding physical value phys is calculated as:
where |
scale | number (configModbusClientMapNameRegItemScale) A scale value that is used to convert the Modbus register value to a value in the specified physical unit. Specifically, when the Modbus value of the register is reg, then corresponding physical value phys is calculated as:
where |
access | string (configModbusClientMapNameRegItemAccess) Enum: "ro" "rw" The access-mode of the register. It must be one of:
|
[- {
- "name": "irradiance",
- "addr": 65535,
- "type": "u32",
- "encoding": "ABCD",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}
]
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to empty array.
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
max-depth | |
filter |
{- "result": {
- "name": "irradiance",
- "addr": 65535,
- "type": "u32",
- "encoding": "ABCD",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
name | string (configModbusClientMapNameRegItemName) The name of the register. The user can choose this name freely so long as each register within a map has a unique name. |
addr | integer (configModbusClientMapNameRegItemAddr) [ 0 .. 65535 ] The Modbus address of the register. |
type | string (configModbusClientMapNameRegItemType) Enum: "bit" "s16" "u16" "s32" "u32" "s32l" "u32l" "s64" "u64" "float16" "float16l" "float" "floatl" "double" The type of the register value. This may be one of the following:
|
encoding | string (configModbusClientMapNameRegItemEncoding) The byte-order used when encoding or decoding numeric values
to/from Modbus packets. This consists of a string of up eight
characters, each of which must be a letter in the range from The encoding is ignored for non-numeric or word-swapped types
(i.e., it is used only for |
kind | string (configModbusClientMapNameRegItemKind) Enum: "analog" "enum" "bitset" The kind of the register. Possible values are:
|
unit | string (configModbusClientMapNameRegItemUnit) For register of the
|
offset | number (configModbusClientMapNameRegItemOffset) An offset value that is used to convert the Modbus register value to a value in the specified physical unit. Specifically, when the Modbus value of the register is reg, then corresponding physical value phys is calculated as:
where |
scale | number (configModbusClientMapNameRegItemScale) A scale value that is used to convert the Modbus register value to a value in the specified physical unit. Specifically, when the Modbus value of the register is reg, then corresponding physical value phys is calculated as:
where |
access | string (configModbusClientMapNameRegItemAccess) Enum: "ro" "rw" The access-mode of the register. It must be one of:
|
{- "name": "irradiance",
- "addr": 65535,
- "type": "u32",
- "encoding": "ABCD",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
name | string (configModbusClientMapNameRegItemName) The name of the register. The user can choose this name freely so long as each register within a map has a unique name. |
addr | integer (configModbusClientMapNameRegItemAddr) [ 0 .. 65535 ] The Modbus address of the register. |
type | string (configModbusClientMapNameRegItemType) Enum: "bit" "s16" "u16" "s32" "u32" "s32l" "u32l" "s64" "u64" "float16" "float16l" "float" "floatl" "double" The type of the register value. This may be one of the following:
|
encoding | string (configModbusClientMapNameRegItemEncoding) The byte-order used when encoding or decoding numeric values
to/from Modbus packets. This consists of a string of up eight
characters, each of which must be a letter in the range from The encoding is ignored for non-numeric or word-swapped types
(i.e., it is used only for |
kind | string (configModbusClientMapNameRegItemKind) Enum: "analog" "enum" "bitset" The kind of the register. Possible values are:
|
unit | string (configModbusClientMapNameRegItemUnit) For register of the
|
offset | number (configModbusClientMapNameRegItemOffset) An offset value that is used to convert the Modbus register value to a value in the specified physical unit. Specifically, when the Modbus value of the register is reg, then corresponding physical value phys is calculated as:
where |
scale | number (configModbusClientMapNameRegItemScale) A scale value that is used to convert the Modbus register value to a value in the specified physical unit. Specifically, when the Modbus value of the register is reg, then corresponding physical value phys is calculated as:
where |
access | string (configModbusClientMapNameRegItemAccess) Enum: "ro" "rw" The access-mode of the register. It must be one of:
|
{- "name": "irradiance",
- "addr": 65535,
- "type": "u32",
- "encoding": "ABCD",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Delete this register definition.
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The name of the register. The user can choose this name freely so long as each register within a map has a unique name.
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
{- "result": "irradiance",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
The name of the register. The user can choose this name freely so long as each register within a map has a unique name.
"irradiance"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
The name of the register. The user can choose this name freely so long as each register within a map has a unique name.
"irradiance"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to empty string.
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
{- "result": 65535,
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
The Modbus address of the register.
65535
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
The Modbus address of the register.
65535
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to 0.
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The type of the register value. This may be one of the following:
bit
: One-bit value (a coil, in Modbus terminology).s16
: Signed 16-bit integer.u16
: Unsigned 16-bit integer.s32
: Signed 32-bit integer.u32
: Unsigned 32-bit integer.s32l
: Signed 32-bit integer, word-swapped.u32l
: Unsigned 32-bit integer, word-swapped.s64
: Signed 64-bit integer.u64
: Unsigned 64-bit integer.float16
: IEEE-754 half-precision float.float16l
: IEEE-754 half-precision floating point,
little-endian (byte-swapped).float
: IEEE-754 single-precision float.floatl
: IEEE-754 single-precision float, word-swapped.double
: IEEE-754 double-precision float.name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
{- "result": "u32",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
The type of the register value. This may be one of the following:
bit
: One-bit value (a coil, in Modbus terminology).s16
: Signed 16-bit integer.u16
: Unsigned 16-bit integer.s32
: Signed 32-bit integer.u32
: Unsigned 32-bit integer.s32l
: Signed 32-bit integer, word-swapped.u32l
: Unsigned 32-bit integer, word-swapped.s64
: Signed 64-bit integer.u64
: Unsigned 64-bit integer.float16
: IEEE-754 half-precision float.float16l
: IEEE-754 half-precision floating point,
little-endian (byte-swapped).float
: IEEE-754 single-precision float.floatl
: IEEE-754 single-precision float, word-swapped.double
: IEEE-754 double-precision float."u32"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
The type of the register value. This may be one of the following:
bit
: One-bit value (a coil, in Modbus terminology).s16
: Signed 16-bit integer.u16
: Unsigned 16-bit integer.s32
: Signed 32-bit integer.u32
: Unsigned 32-bit integer.s32l
: Signed 32-bit integer, word-swapped.u32l
: Unsigned 32-bit integer, word-swapped.s64
: Signed 64-bit integer.u64
: Unsigned 64-bit integer.float16
: IEEE-754 half-precision float.float16l
: IEEE-754 half-precision floating point,
little-endian (byte-swapped).float
: IEEE-754 single-precision float.floatl
: IEEE-754 single-precision float, word-swapped.double
: IEEE-754 double-precision float."u32"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to u16
.
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
A
through H
or the letter X
. The letter A
represents the most
significant byte in the value. Higher letters represent bytes of
decreasing significance. For example, the string AB
indicates
that a 16-bit value is encoded with the most sigificant byte
first, followed by the least significant byte (i.e., the
big-endian encoding used by default for Modbus). Conversely, the
string BA
would encode the same value in little-endian, with the
least-sigificant byte first, followed by the most significant
byte. The letter X
can be used for bytes whose values should be
ignored (i.e., treated as 0). For example, the string BCDX
would encode a 24-bit value in the first three bytes of a Modbus
packet, with the fourth byte set to 0.
The encoding is ignored for non-numeric or word-swapped types
(i.e., it is used only for s16
, u16
, s32
, u32
, s64
,
u64
, float16
, float
, and double
).
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
{- "result": "ABCD",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
The byte-order used when encoding or decoding numeric values
to/from Modbus packets. This consists of a string of up eight
characters, each of which must be a letter in the range from A
through H
or the letter X
. The letter A
represents the most
significant byte in the value. Higher letters represent bytes of
decreasing significance. For example, the string AB
indicates
that a 16-bit value is encoded with the most sigificant byte
first, followed by the least significant byte (i.e., the
big-endian encoding used by default for Modbus). Conversely, the
string BA
would encode the same value in little-endian, with the
least-sigificant byte first, followed by the most significant
byte. The letter X
can be used for bytes whose values should be
ignored (i.e., treated as 0). For example, the string BCDX
would encode a 24-bit value in the first three bytes of a Modbus
packet, with the fourth byte set to 0.
The encoding is ignored for non-numeric or word-swapped types
(i.e., it is used only for s16
, u16
, s32
, u32
, s64
,
u64
, float16
, float
, and double
).
"ABCD"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
The byte-order used when encoding or decoding numeric values
to/from Modbus packets. This consists of a string of up eight
characters, each of which must be a letter in the range from A
through H
or the letter X
. The letter A
represents the most
significant byte in the value. Higher letters represent bytes of
decreasing significance. For example, the string AB
indicates
that a 16-bit value is encoded with the most sigificant byte
first, followed by the least significant byte (i.e., the
big-endian encoding used by default for Modbus). Conversely, the
string BA
would encode the same value in little-endian, with the
least-sigificant byte first, followed by the most significant
byte. The letter X
can be used for bytes whose values should be
ignored (i.e., treated as 0). For example, the string BCDX
would encode a 24-bit value in the first three bytes of a Modbus
packet, with the fourth byte set to 0.
The encoding is ignored for non-numeric or word-swapped types
(i.e., it is used only for s16
, u16
, s32
, u32
, s64
,
u64
, float16
, float
, and double
).
"ABCD"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The kind of the register. Possible values are:
analog
: The value is continuous (the average of two values is
meaningful).
enum
: The value is discrete (the average of two values is not
meaningful). An example for this would be a numeric error code.
bitset
: Each bit in the value is a discrete on/off value.
An example for this would be a set of error flags.
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
{- "result": "analog",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
The kind of the register. Possible values are:
analog
: The value is continuous (the average of two values is
meaningful).
enum
: The value is discrete (the average of two values is not
meaningful). An example for this would be a numeric error code.
bitset
: Each bit in the value is a discrete on/off value.
An example for this would be a set of error flags.
"analog"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
The kind of the register. Possible values are:
analog
: The value is continuous (the average of two values is
meaningful).
enum
: The value is discrete (the average of two values is not
meaningful). An example for this would be a numeric error code.
bitset
: Each bit in the value is a discrete on/off value.
An example for this would be a set of error flags.
"analog"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to analog
.
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
For register of the analog
kind, this defines the physical unit of
the register value. This must be one of the following:
#3
: Unit-less number with 3 decimal digits of precision.%
: Percentage.A
: Electric current in amperes.Ah
: Electric charge in ampere-hours.As
: Electric charge in ampere-seconds.C
: Temperature in degree celsius.Degrees
: Angle in degrees.Hz
: Frequency in hertz.Ohm
: Resistance in ohm.Pa
: Pressure in pascals.Pct
: Percentage.RH
: Relative humidity.Tmd
: Time in days.Tmh
: Time in hours.Tms
: Time in seconds.VA
: Apparent power in volt-amperes.VAh
: Apparent energy in volt-ampere-hours.V
: Electric potential in volts.W/m2
: Irradiance in watts-per-square-meter.W/m^2
: Irradiance in watts-per-square-meter.W
: Power in watts.Wh
: Energy in watt-hours.degC
: Temperature in degree celsius.deg
: Angle in degrees.g
: Mass in grams.hPa
: Pressure in hecto-pascals.h
: Time in hours.kAh
: Electric charge in kilo-ampere-hours.kO
: Resistance in kilo-ohms.kPa
: Pressure in kilo-pascals.kVAh
: Apparent energy in kilo-volt-ampere-hours.kW
: Power in kilo-watts.kWh
: Energy in kilo-watt-hours.kg
: Mass in kilo-grams.kvarh
: Reactive energy in kilo-volt-ampere-hours.m/s
: Speed in meters-per-second.m3/s
: Volume flow in cubic-meters-per-second.m3
: Volume in cubic-meters.mA
: Electric current in milli-amperes.mAh
: Electric charge in milli-ampere-hours.mSecs
: Time in milli-seconds.mV
: Electric potential in milli-volts.mV
: Electric potential in milli-volts.m^3/s
: Volume flow in cubic-meters-per-second.m^3
: Volume in cubic-meters.meters
: Distance in meters.mm
: Distance in milli-meters.mps
: Speed in meters-per-second.ms
: Time in milli-seconds.ohms
: Resistance in ohm.ppm
: Parts-per-million.s
: Time in seconds.secs
: Time in seconds.var
: Reactive power in volt-ampere.varh
: Reactive energy in volt-ampere-hours.°C
: Temperature in degree celsius.name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
{- "result": "W",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
For register of the analog
kind, this defines the physical unit of
the register value. This must be one of the following:
#3
: Unit-less number with 3 decimal digits of precision.%
: Percentage.A
: Electric current in amperes.Ah
: Electric charge in ampere-hours.As
: Electric charge in ampere-seconds.C
: Temperature in degree celsius.Degrees
: Angle in degrees.Hz
: Frequency in hertz.Ohm
: Resistance in ohm.Pa
: Pressure in pascals.Pct
: Percentage.RH
: Relative humidity.Tmd
: Time in days.Tmh
: Time in hours.Tms
: Time in seconds.VA
: Apparent power in volt-amperes.VAh
: Apparent energy in volt-ampere-hours.V
: Electric potential in volts.W/m2
: Irradiance in watts-per-square-meter.W/m^2
: Irradiance in watts-per-square-meter.W
: Power in watts.Wh
: Energy in watt-hours.degC
: Temperature in degree celsius.deg
: Angle in degrees.g
: Mass in grams.hPa
: Pressure in hecto-pascals.h
: Time in hours.kAh
: Electric charge in kilo-ampere-hours.kO
: Resistance in kilo-ohms.kPa
: Pressure in kilo-pascals.kVAh
: Apparent energy in kilo-volt-ampere-hours.kW
: Power in kilo-watts.kWh
: Energy in kilo-watt-hours.kg
: Mass in kilo-grams.kvarh
: Reactive energy in kilo-volt-ampere-hours.m/s
: Speed in meters-per-second.m3/s
: Volume flow in cubic-meters-per-second.m3
: Volume in cubic-meters.mA
: Electric current in milli-amperes.mAh
: Electric charge in milli-ampere-hours.mSecs
: Time in milli-seconds.mV
: Electric potential in milli-volts.mV
: Electric potential in milli-volts.m^3/s
: Volume flow in cubic-meters-per-second.m^3
: Volume in cubic-meters.meters
: Distance in meters.mm
: Distance in milli-meters.mps
: Speed in meters-per-second.ms
: Time in milli-seconds.ohms
: Resistance in ohm.ppm
: Parts-per-million.s
: Time in seconds.secs
: Time in seconds.var
: Reactive power in volt-ampere.varh
: Reactive energy in volt-ampere-hours.°C
: Temperature in degree celsius."W"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
For register of the analog
kind, this defines the physical unit of
the register value. This must be one of the following:
#3
: Unit-less number with 3 decimal digits of precision.%
: Percentage.A
: Electric current in amperes.Ah
: Electric charge in ampere-hours.As
: Electric charge in ampere-seconds.C
: Temperature in degree celsius.Degrees
: Angle in degrees.Hz
: Frequency in hertz.Ohm
: Resistance in ohm.Pa
: Pressure in pascals.Pct
: Percentage.RH
: Relative humidity.Tmd
: Time in days.Tmh
: Time in hours.Tms
: Time in seconds.VA
: Apparent power in volt-amperes.VAh
: Apparent energy in volt-ampere-hours.V
: Electric potential in volts.W/m2
: Irradiance in watts-per-square-meter.W/m^2
: Irradiance in watts-per-square-meter.W
: Power in watts.Wh
: Energy in watt-hours.degC
: Temperature in degree celsius.deg
: Angle in degrees.g
: Mass in grams.hPa
: Pressure in hecto-pascals.h
: Time in hours.kAh
: Electric charge in kilo-ampere-hours.kO
: Resistance in kilo-ohms.kPa
: Pressure in kilo-pascals.kVAh
: Apparent energy in kilo-volt-ampere-hours.kW
: Power in kilo-watts.kWh
: Energy in kilo-watt-hours.kg
: Mass in kilo-grams.kvarh
: Reactive energy in kilo-volt-ampere-hours.m/s
: Speed in meters-per-second.m3/s
: Volume flow in cubic-meters-per-second.m3
: Volume in cubic-meters.mA
: Electric current in milli-amperes.mAh
: Electric charge in milli-ampere-hours.mSecs
: Time in milli-seconds.mV
: Electric potential in milli-volts.mV
: Electric potential in milli-volts.m^3/s
: Volume flow in cubic-meters-per-second.m^3
: Volume in cubic-meters.meters
: Distance in meters.mm
: Distance in milli-meters.mps
: Speed in meters-per-second.ms
: Time in milli-seconds.ohms
: Resistance in ohm.ppm
: Parts-per-million.s
: Time in seconds.secs
: Time in seconds.var
: Reactive power in volt-ampere.varh
: Reactive energy in volt-ampere-hours.°C
: Temperature in degree celsius."W"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to empty string.
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
An offset value that is used to convert the Modbus register value to a value in the specified physical unit. Specifically, when the Modbus value of the register is reg, then corresponding physical value phys is calculated as:
phys = (reg +
offset
) *scale
where offset
is the value defined here and scale
is
the value defined for member scale
.
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
{- "result": 0,
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
An offset value that is used to convert the Modbus register value to a value in the specified physical unit. Specifically, when the Modbus value of the register is reg, then corresponding physical value phys is calculated as:
phys = (reg +
offset
) *scale
where offset
is the value defined here and scale
is
the value defined for member scale
.
0
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
An offset value that is used to convert the Modbus register value to a value in the specified physical unit. Specifically, when the Modbus value of the register is reg, then corresponding physical value phys is calculated as:
phys = (reg +
offset
) *scale
where offset
is the value defined here and scale
is
the value defined for member scale
.
0
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to 0.
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
A scale value that is used to convert the Modbus register value to a value in the specified physical unit. Specifically, when the Modbus value of the register is reg, then corresponding physical value phys is calculated as:
phys = (reg +
offset
) *scale
where scale
is the value defined here and offset
is
the value defined for member offset
.
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
{- "result": 0.1,
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
A scale value that is used to convert the Modbus register value to a value in the specified physical unit. Specifically, when the Modbus value of the register is reg, then corresponding physical value phys is calculated as:
phys = (reg +
offset
) *scale
where scale
is the value defined here and offset
is
the value defined for member offset
.
0.1
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
A scale value that is used to convert the Modbus register value to a value in the specified physical unit. Specifically, when the Modbus value of the register is reg, then corresponding physical value phys is calculated as:
phys = (reg +
offset
) *scale
where scale
is the value defined here and offset
is
the value defined for member offset
.
0.1
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to 1.
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The access-mode of the register. It must be one of:
ro
: read-onlyrw
: read-writename required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
{- "result": "ro",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
The access-mode of the register. It must be one of:
ro
: read-onlyrw
: read-write"ro"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
The access-mode of the register. It must be one of:
ro
: read-onlyrw
: read-write"ro"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to rw
.
name required | string Example: my_modbus_map The name of a user Modbus map (editable). |
idx required | string The index of a Modbus map register. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Modbus server configuration. This configures the server-side of the meter. That is, it defines how the meter provides its own data to other Modbus devices.
enable | Array of strings (configModbusServerEnable) Items Enum: "rtu" "tcp" The list of protocols (if any) that are enabled in the Modbus server. An empty list indicates that the Modbus server is disabled. Valid protocol names are:
|
id | integer (configModbusServerId) [ 1 .. 247 ] The address of the meter on the Modbus/RTU network. Every Modbus device must have a unique address. The default unit id is 1. Note Address 0 is the broadcast address and addresses 248..255 are reserved for future use. |
object (configModbusServerRtu) The RTU protocol configuration. | |
object (configModbusServerTcp) The TCP protocol configuration. |
{- "enable": [
- "rtu"
], - "id": 1,
- "rtu": {
- "port": "USB2:9600/8o2"
}, - "tcp": {
- "port": 502
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
enable | Array of strings (configModbusServerEnable) Items Enum: "rtu" "tcp" The list of protocols (if any) that are enabled in the Modbus server. An empty list indicates that the Modbus server is disabled. Valid protocol names are:
|
id | integer (configModbusServerId) [ 1 .. 247 ] The address of the meter on the Modbus/RTU network. Every Modbus device must have a unique address. The default unit id is 1. Note Address 0 is the broadcast address and addresses 248..255 are reserved for future use. |
object (configModbusServerRtu) The RTU protocol configuration. | |
object (configModbusServerTcp) The TCP protocol configuration. |
{- "enable": [
- "rtu"
], - "id": 1,
- "rtu": {
- "port": "USB2:9600/8o2"
}, - "tcp": {
- "port": 502
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The list of protocols (if any) that are enabled in the Modbus server. An empty list indicates that the Modbus server is disabled.
Valid protocol names are:
rtu
: The
Modbus/RTU
protocol.
tcp
: The
Modbus/TCP
protocol.
The name of a protocol that is enabled.
[- "rtu"
]
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The name of a protocol that is enabled.
[- "rtu"
]
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of an enabled Modbus protocol. |
The name of a protocol that is enabled.
"rtu"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of an enabled Modbus protocol. |
The name of a protocol that is enabled.
"rtu"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Disable this protocol.
idx required | integer >= 0 The index of an enabled Modbus protocol. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The address of the meter on the Modbus/RTU network. Every Modbus device must have a unique address. The default unit id is 1.
Note Address 0 is the broadcast address and addresses 248..255 are reserved for future use.
The address of the meter on the Modbus/RTU network. Every Modbus device must have a unique address. The default unit id is 1.
Note Address 0 is the broadcast address and addresses 248..255 are reserved for future use.
1
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The address of the meter on the Modbus/RTU network. Every Modbus device must have a unique address. The default unit id is 1.
Note Address 0 is the broadcast address and addresses 248..255 are reserved for future use.
1
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
port | string (configModbusServerRtuPort) The serial-port to use for the RTU protocol. |
{- "port": "USB2:9600/8o2"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
port | string (configModbusServerRtuPort) The serial-port to use for the RTU protocol. |
{- "port": "USB2:9600/8o2"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The serial-port to use for the RTU protocol.
The serial-port to use for the RTU protocol.
"USB2:9600/8o2"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The serial-port to use for the RTU protocol.
"USB2:9600/8o2"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
port | integer (configModbusServerTcpPort) [ 0 .. 65535 ] The IP port of the Modbus server. The default value is 502. |
{- "port": 502
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
port | integer (configModbusServerTcpPort) [ 0 .. 65535 ] The IP port of the Modbus server. The default value is 502. |
{- "port": 502
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The IP port of the Modbus server. The default value is 502.
502
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The IP port of the Modbus server. The default value is 502.
502
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The network configuration.
The current state of the network is available at /sys/net.
{- "result": {
- "ethernet": {
- "watchdog": true
}, - "goproxy": {
- "enable": true,
- "server": "proxy.egauge.io"
}, - "homeplug": {
- "region": "CE"
}, - "hostname": "eGauge42",
- "http": {
- "cgi-bin": "user-required",
- "client": {
- "insecure": "false"
}
}, - "ipv4": {
- "dhcp": true,
- "address": "192.168.1.42",
- "broadcast": "192.168.1.255",
- "netmask": "255.255.255.0",
- "network": "192.168.1.0",
- "gateway": "192.168.1.1"
}, - "nameserver": {
- "server": [
- "1.1.1.1",
- "8.8.8.8",
- "2606:4700:4700::1111"
]
}, - "ntp": {
- "server": [
- "192.168.1.1",
- "north-america.pool.ntp.org",
- "2610:20:6f15:15::27"
]
}, - "option": {
- "secure_only": false
}, - "proxy": {
- "enable": true,
- "server": "d.egauge.net"
}, - "ptp": {
- "client_only": true,
- "interface": {
- "eth0": {
- "transport": "UDPv4",
- "udp_ttl": 1
}
}
}
}, - "error": "Error message (present if an error occurred)."
}
object (configNetEthernet) The Ethernet configuration of the meter. | |
object (configNetGoproxy) The Go proxy configuration of the meter. | |
object (configNetHomeplug) HomePlug configuration. This is used only by devices with built-in HomePlug power-line communication (egauge2, EG3x10 and EG41xx). | |
hostname | string (configNetHostname) The hostname of the meter. Must consist of ASCII letters, digits, and dashes only. |
object (configNetHttp) Web (HTTP) related configurations. Modification requests ( | |
object (configNetIpv4) The Internet Protocol v4 (IPv4) configuration. | |
object (configNetNameserver) The name server (DNS) configuration. | |
object (configNetNtp) The Network Time Protocol (NTP) configuration. | |
object (configNetOption) Options that have a system-wide effect on the network services. | |
object (configNetProxy) The proxy configuration of the meter. | |
object (configNetPtp) The Precision Time Protocol (PTP) configuration. |
{- "ethernet": {
- "watchdog": true
}, - "goproxy": {
- "enable": true,
- "server": "proxy.egauge.io"
}, - "homeplug": {
- "region": "CE"
}, - "hostname": "eGauge42",
- "http": {
- "cgi-bin": "user-required",
- "client": {
- "insecure": "false"
}
}, - "ipv4": {
- "dhcp": true,
- "address": "192.168.1.42",
- "broadcast": "192.168.1.255",
- "netmask": "255.255.255.0",
- "network": "192.168.1.0",
- "gateway": "192.168.1.1"
}, - "nameserver": {
- "server": [
- "1.1.1.1",
- "8.8.8.8",
- "2606:4700:4700::1111"
]
}, - "ntp": {
- "server": [
- "192.168.1.1",
- "north-america.pool.ntp.org",
- "2610:20:6f15:15::27"
]
}, - "option": {
- "secure_only": false
}, - "proxy": {
- "enable": true,
- "server": "d.egauge.net"
}, - "ptp": {
- "client_only": true,
- "interface": {
- "eth0": {
- "transport": "UDPv4",
- "udp_ttl": 1
}
}
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
object (configNetEthernet) The Ethernet configuration of the meter. | |
object (configNetGoproxy) The Go proxy configuration of the meter. | |
object (configNetHomeplug) HomePlug configuration. This is used only by devices with built-in HomePlug power-line communication (egauge2, EG3x10 and EG41xx). | |
hostname | string (configNetHostname) The hostname of the meter. Must consist of ASCII letters, digits, and dashes only. |
object (configNetHttp) Web (HTTP) related configurations. Modification requests ( | |
object (configNetIpv4) The Internet Protocol v4 (IPv4) configuration. | |
object (configNetNameserver) The name server (DNS) configuration. | |
object (configNetNtp) The Network Time Protocol (NTP) configuration. | |
object (configNetOption) Options that have a system-wide effect on the network services. | |
object (configNetProxy) The proxy configuration of the meter. | |
object (configNetPtp) The Precision Time Protocol (PTP) configuration. |
{- "ethernet": {
- "watchdog": true
}, - "goproxy": {
- "enable": true,
- "server": "proxy.egauge.io"
}, - "homeplug": {
- "region": "CE"
}, - "hostname": "eGauge42",
- "http": {
- "cgi-bin": "user-required",
- "client": {
- "insecure": "false"
}
}, - "ipv4": {
- "dhcp": true,
- "address": "192.168.1.42",
- "broadcast": "192.168.1.255",
- "netmask": "255.255.255.0",
- "network": "192.168.1.0",
- "gateway": "192.168.1.1"
}, - "nameserver": {
- "server": [
- "1.1.1.1",
- "8.8.8.8",
- "2606:4700:4700::1111"
]
}, - "ntp": {
- "server": [
- "192.168.1.1",
- "north-america.pool.ntp.org",
- "2610:20:6f15:15::27"
]
}, - "option": {
- "secure_only": false
}, - "proxy": {
- "enable": true,
- "server": "d.egauge.net"
}, - "ptp": {
- "client_only": true,
- "interface": {
- "eth0": {
- "transport": "UDPv4",
- "udp_ttl": 1
}
}
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
watchdog | boolean (configNetEthernetWatchdog) Whether or not the Ethernet watchdog is enabled. If enabled, the watchdog will reset the Ethernet's PHY chip and/or reload the Ethernet driver if it appears that the Ethernet link was lost. This should normally be set to |
{- "watchdog": true
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
watchdog | boolean (configNetEthernetWatchdog) Whether or not the Ethernet watchdog is enabled. If enabled, the watchdog will reset the Ethernet's PHY chip and/or reload the Ethernet driver if it appears that the Ethernet link was lost. This should normally be set to |
{- "watchdog": true
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Whether or not the Ethernet watchdog is enabled. If enabled, the watchdog will reset the Ethernet's PHY chip and/or reload the Ethernet driver if it appears that the Ethernet link was lost.
This should normally be set to true
.
Whether or not the Ethernet watchdog is enabled. If enabled, the watchdog will reset the Ethernet's PHY chip and/or reload the Ethernet driver if it appears that the Ethernet link was lost.
This should normally be set to true
.
true
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Whether or not the Ethernet watchdog is enabled. If enabled, the watchdog will reset the Ethernet's PHY chip and/or reload the Ethernet driver if it appears that the Ethernet link was lost.
This should normally be set to true
.
true
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
enable | boolean (configNetGoproxyEnable) If |
server | string (configNetGoproxyServer) The hostname of the Go proxy server. |
{- "enable": true,
- "server": "proxy.egauge.io"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
enable | boolean (configNetGoproxyEnable) If |
server | string (configNetGoproxyServer) The hostname of the Go proxy server. |
{- "enable": true,
- "server": "proxy.egauge.io"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
If true
, the meter will connect to the Go proxy server.
true
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
If true
, the meter will connect to the Go proxy server.
true
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The hostname of the Go proxy server.
"proxy.egauge.io"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The hostname of the Go proxy server.
"proxy.egauge.io"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
HomePlug configuration. This is used only by devices with built-in HomePlug power-line communication (egauge2, EG3x10 and EG41xx).
region | string (configNetHomeplugRegion) Enum: "CE" "NA" The jurisdiction the meter is operating under. The possible values are:
This resource controls the frequency bands used by the HomePlug communications interface that is built into some meters. For those meters, this resource must be set to the correct geographic region to ensure compliance with local laws. |
{- "region": "CE"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
region | string (configNetHomeplugRegion) Enum: "CE" "NA" The jurisdiction the meter is operating under. The possible values are:
This resource controls the frequency bands used by the HomePlug communications interface that is built into some meters. For those meters, this resource must be set to the correct geographic region to ensure compliance with local laws. |
{- "region": "CE"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The jurisdiction the meter is operating under. The possible values are:
CE
: European Union region.NA
: North American region.This resource controls the frequency bands used by the HomePlug communications interface that is built into some meters. For those meters, this resource must be set to the correct geographic region to ensure compliance with local laws.
The jurisdiction the meter is operating under. The possible values are:
CE
: European Union region.NA
: North American region.This resource controls the frequency bands used by the HomePlug communications interface that is built into some meters. For those meters, this resource must be set to the correct geographic region to ensure compliance with local laws.
"CE"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The jurisdiction the meter is operating under. The possible values are:
CE
: European Union region.NA
: North American region.This resource controls the frequency bands used by the HomePlug communications interface that is built into some meters. For those meters, this resource must be set to the correct geographic region to ensure compliance with local laws.
"CE"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The hostname of the meter. Must consist of ASCII letters, digits, and dashes only.
The hostname of the meter. Must consist of ASCII letters, digits, and dashes only.
"eGauge42"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The hostname of the meter. Must consist of ASCII letters, digits, and dashes only.
"eGauge42"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Web (HTTP) related configurations.
Modification requests (PUT
, POST
, and DELETE
) to this
resource are not executed
transactionally.
object (configNetHttpClient) Configuration for meter-initiated HTTP connections. | |
certificate | string (configNetHttpCertificate) The certificate used by the web server to identify itself over HTTPS connections. This resource is write-only. The string is in PEM format and must contain both a private key as well as the matching certificate chain. |
cgi-bin | string (configNetHttpCgiBin) Enum: "disable" "user-optional" "user-required" Controls access to CGI-BIN programs. The following values are supported:
|
{- "cgi-bin": "user-required",
- "client": {
- "insecure": "false"
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
object (configNetHttpClient) Configuration for meter-initiated HTTP connections. | |
certificate | string (configNetHttpCertificate) The certificate used by the web server to identify itself over HTTPS connections. This resource is write-only. The string is in PEM format and must contain both a private key as well as the matching certificate chain. |
cgi-bin | string (configNetHttpCgiBin) Enum: "disable" "user-optional" "user-required" Controls access to CGI-BIN programs. The following values are supported:
|
{- "cgi-bin": "user-required",
- "client": {
- "insecure": "false"
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The certificate used by the web server to identify itself over HTTPS connections.
This resource is write-only.
The string is in PEM format and must contain both a private key as well as the matching certificate chain.
Set the HTTP certificate to the one passed in the request body.
This resource is not updated transactionally.
The certificate used by the web server to identify itself over HTTPS connections.
This resource is write-only.
The string is in PEM format and must contain both a private key as well as the matching certificate chain.
"string"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Set the HTTP certificate to the one passed in the request body.
This resource is not updated transactionally.
The certificate used by the web server to identify itself over HTTPS connections.
This resource is write-only.
The string is in PEM format and must contain both a private key as well as the matching certificate chain.
"string"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to a factory-installed self-signed certificate.
This resource is not updated transactionally.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
insecure | boolean (configNetHttpClientInsecure) If |
{- "insecure": false
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
insecure | boolean (configNetHttpClientInsecure) If |
{- "insecure": false
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
If true
, meter-initiated secure HTTPS connections will accept
servers whose certificate cannot be validated by the meter. This
should normally be set to false
.
If true
, meter-initiated secure HTTPS connections will accept
servers whose certificate cannot be validated by the meter. This
should normally be set to false
.
false
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
If true
, meter-initiated secure HTTPS connections will accept
servers whose certificate cannot be validated by the meter. This
should normally be set to false
.
false
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Controls access to CGI-BIN programs. The following values are supported:
disable
: Completely disable access to CGI-BIN programs.
Warning This will render the classic user-interface of the
meter inoperable.
user-required
: Allow authenticated users to access CGI-BIN programs.
user-optional
: Allow even unauthenticated users to access
CGI-BIN programs that are not considered security critical.
Set CGI-BIN support according to the value passed in the request body.
This resource is not updated transactionally.
Controls access to CGI-BIN programs. The following values are supported:
disable
: Completely disable access to CGI-BIN programs.
Warning This will render the classic user-interface of the
meter inoperable.
user-required
: Allow authenticated users to access CGI-BIN programs.
user-optional
: Allow even unauthenticated users to access
CGI-BIN programs that are not considered security critical.
"disable"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Set CGI-BIN support according to the value passed in the request body.
This resource is not updated transactionally.
Controls access to CGI-BIN programs. The following values are supported:
disable
: Completely disable access to CGI-BIN programs.
Warning This will render the classic user-interface of the
meter inoperable.
user-required
: Allow authenticated users to access CGI-BIN programs.
user-optional
: Allow even unauthenticated users to access
CGI-BIN programs that are not considered security critical.
"disable"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to disable
.
This resource is not updated transactionally.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The Internet Protocol v4 (IPv4) configuration.
{- "result": {
- "dhcp": true,
- "address": "192.168.1.42",
- "broadcast": "192.168.1.255",
- "netmask": "255.255.255.0",
- "network": "192.168.1.0",
- "gateway": "192.168.1.1"
}, - "error": "Error message (present if an error occurred)."
}
dhcp | boolean (configNetIpv4Dhcp) Whether or not to use DHCP
to automatically provision the IPv4 address. If |
address | string (configNetIpv4Address) An IPv4 address in dotted decimal notation. |
broadcast | string (configNetIpv4Broadcast) An IPv4 broadcast address in dotted decimal notation. |
netmask | string (configNetIpv4Netmask) The address of the IPv4 gateway in dotted decimal notation. |
network | string (configNetIpv4Network) The IPv4 network mask in dotted decimal notation. |
gateway | string (configNetIpv4Gateway) The IPv4 network number in dotted decimal notation. |
{- "dhcp": true,
- "address": "192.168.1.42",
- "broadcast": "192.168.1.255",
- "netmask": "255.255.255.0",
- "network": "192.168.1.0",
- "gateway": "192.168.1.1"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
dhcp | boolean (configNetIpv4Dhcp) Whether or not to use DHCP
to automatically provision the IPv4 address. If |
address | string (configNetIpv4Address) An IPv4 address in dotted decimal notation. |
broadcast | string (configNetIpv4Broadcast) An IPv4 broadcast address in dotted decimal notation. |
netmask | string (configNetIpv4Netmask) The address of the IPv4 gateway in dotted decimal notation. |
network | string (configNetIpv4Network) The IPv4 network mask in dotted decimal notation. |
gateway | string (configNetIpv4Gateway) The IPv4 network number in dotted decimal notation. |
{- "dhcp": true,
- "address": "192.168.1.42",
- "broadcast": "192.168.1.255",
- "netmask": "255.255.255.0",
- "network": "192.168.1.0",
- "gateway": "192.168.1.1"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Whether or not to use DHCP
to automatically provision the IPv4 address. If true
, DHCP is
enabled. If false
, the manually configured IPv4 settings are
used.
Whether or not to use DHCP
to automatically provision the IPv4 address. If true
, DHCP is
enabled. If false
, the manually configured IPv4 settings are
used.
true
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Whether or not to use DHCP
to automatically provision the IPv4 address. If true
, DHCP is
enabled. If false
, the manually configured IPv4 settings are
used.
true
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
An IPv4 address in dotted decimal notation.
"192.168.1.42"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
An IPv4 address in dotted decimal notation.
"192.168.1.42"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
An IPv4 broadcast address in dotted decimal notation.
"192.168.1.255"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
An IPv4 broadcast address in dotted decimal notation.
"192.168.1.255"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The address of the IPv4 gateway in dotted decimal notation.
"255.255.255.0"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The address of the IPv4 gateway in dotted decimal notation.
"255.255.255.0"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The IPv4 network mask in dotted decimal notation.
"192.168.1.0"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The IPv4 network mask in dotted decimal notation.
"192.168.1.0"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The IPv4 network number in dotted decimal notation.
"192.168.1.1"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The IPv4 network number in dotted decimal notation.
"192.168.1.1"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The name server (DNS) configuration.
server | Array of strings (configNetNameserverServer) The IP addresses to use as name servers. If multiple name servers are specified, they are queried in the order in which they appear here. |
{- "server": [
- "1.1.1.1",
- "8.8.8.8",
- "2606:4700:4700::1111"
]
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
server | Array of strings (configNetNameserverServer) The IP addresses to use as name servers. If multiple name servers are specified, they are queried in the order in which they appear here. |
{- "server": [
- "1.1.1.1",
- "8.8.8.8",
- "2606:4700:4700::1111"
]
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The IP addresses to use as name servers. If multiple name servers are specified, they are queried in the order in which they appear here.
The IPv4 or IPv6 address a DNS server.
[- "1.1.1.1",
- "8.8.8.8",
- "2606:4700:4700::1111"
]
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The IPv4 or IPv6 address a DNS server.
[- "1.1.1.1",
- "8.8.8.8",
- "2606:4700:4700::1111"
]
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a DNS server. |
The IPv4 or IPv6 address a DNS server.
"1.1.1.1"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a DNS server. |
The IPv4 or IPv6 address a DNS server.
"1.1.1.1"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The Network Time Protocol (NTP) configuration.
server | Array of strings (configNetNtpServer) The NTP servers to use. |
{- "server": [
- "192.168.1.1",
- "north-america.pool.ntp.org",
- "2610:20:6f15:15::27"
]
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
server | Array of strings (configNetNtpServer) The NTP servers to use. |
{- "server": [
- "192.168.1.1",
- "north-america.pool.ntp.org",
- "2610:20:6f15:15::27"
]
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The hostname or an IPv4 or IPv6 address of an NTP server.
[- "192.168.1.1",
- "north-america.pool.ntp.org",
- "2610:20:6f15:15::27"
]
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The hostname or an IPv4 or IPv6 address of an NTP server.
[- "192.168.1.1",
- "north-america.pool.ntp.org",
- "2610:20:6f15:15::27"
]
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of an NTP server. |
The hostname or an IPv4 or IPv6 address of an NTP server.
"north-america.pool.ntp.org"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of an NTP server. |
The hostname or an IPv4 or IPv6 address of an NTP server.
"north-america.pool.ntp.org"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
secure_only | boolean (configNetOptionSecureOnly) If
This resource is not updated transactionally and after changing its value, the web server will be unavailable temporarily. |
{- "secure_only": false
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
secure_only | boolean (configNetOptionSecureOnly) If
This resource is not updated transactionally and after changing its value, the web server will be unavailable temporarily. |
{- "secure_only": false
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
true
, network services which do not encrypt data are
disabled. At present, turning on this option disables the
following services:
The web-server's plain HTTP service (port 80).
The service that provides the meter data via
link-type udp
. Thus, it other
meters will not be able to read this meters data via this
link type anymore.
This resource is not updated transactionally and after changing its value, the web server will be unavailable temporarily.
If true
, network services which do not encrypt data are
disabled. At present, turning on this option disables the
following services:
The web-server's plain HTTP service (port 80).
The service that provides the meter data via
link-type udp
. Thus, it other
meters will not be able to read this meters data via this
link type anymore.
This resource is not updated transactionally and after changing its value, the web server will be unavailable temporarily.
false
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
If true
, network services which do not encrypt data are
disabled. At present, turning on this option disables the
following services:
The web-server's plain HTTP service (port 80).
The service that provides the meter data via
link-type udp
. Thus, it other
meters will not be able to read this meters data via this
link type anymore.
This resource is not updated transactionally and after changing its value, the web server will be unavailable temporarily.
false
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
enable | boolean (configNetProxyEnable) If |
server | string (configNetProxyServer) The hostname of the proxy server. |
{- "enable": true,
- "server": "d.egauge.net"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
enable | boolean (configNetProxyEnable) If |
server | string (configNetProxyServer) The hostname of the proxy server. |
{- "enable": true,
- "server": "d.egauge.net"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
If true
, the meter will connect to the proxy server.
true
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
If true
, the meter will connect to the proxy server.
true
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The hostname of the proxy server.
"d.egauge.net"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The hostname of the proxy server.
"d.egauge.net"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The Precision Time Protocol (PTP) configuration. NTP should normally be disabled when using this protocol. This can be achieved by deleting resource /config/net/ntp/server.
Only model EG4xxx or newer meters support this resource.
The following properties of the PTP service are currently fixed:
client_only | boolean (configNetPtpClientOnly) If |
object (configNetPtpInterface) The network interface configurations for PTP. If empty, PTP is disabled. |
{- "client_only": true,
- "interface": {
- "eth0": {
- "transport": "UDPv4",
- "udp_ttl": 1
}
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
client_only | boolean (configNetPtpClientOnly) If |
object (configNetPtpInterface) The network interface configurations for PTP. If empty, PTP is disabled. |
{- "client_only": true,
- "interface": {
- "eth0": {
- "transport": "UDPv4",
- "udp_ttl": 1
}
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
If true
, the meter will only act as a client. Otherwise, the
meter will also act as a server if the PTP algorithm selects it as
the best clock.
If true
, the meter will only act as a client. Otherwise, the
meter will also act as a server if the PTP algorithm selects it as
the best clock.
true
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
If true
, the meter will only act as a client. Otherwise, the
meter will also act as a server if the PTP algorithm selects it as
the best clock.
true
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
additional property | object (configNetPtpInterfaceIf) The configuration to use for the named interface. |
{- "eth0": {
- "transport": "UDPv4",
- "udp_ttl": 1
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
additional property | object (configNetPtpInterfaceIf) The configuration to use for the named interface. |
{- "eth0": {
- "transport": "UDPv4",
- "udp_ttl": 1
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
if required | string Example: eth0 The name of a network interface to use for PTP. |
max-depth | |
filter |
{- "result": {
- "transport": "L2",
- "udp_ttl": 1
}, - "error": "Error message (present if an error occurred)."
}
if required | string Example: eth0 The name of a network interface to use for PTP. |
transport | string (configNetPtpInterfaceIfTransport) Enum: "L2" "UDPv4" "UDPv6" The network transport to use for the interface. Possible values are:
|
udp_ttl | integer (configNetPtpInterfaceIfUdpTtl) [ 1 .. 255 ] The Time-to-live (TTL) value for IPv4 multicast messages and the
hop limit for IPv6 multicast messages. This value is ignored
unless |
{- "transport": "L2",
- "udp_ttl": 1
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
if required | string Example: eth0 The name of a network interface to use for PTP. |
transport | string (configNetPtpInterfaceIfTransport) Enum: "L2" "UDPv4" "UDPv6" The network transport to use for the interface. Possible values are:
|
udp_ttl | integer (configNetPtpInterfaceIfUdpTtl) [ 1 .. 255 ] The Time-to-live (TTL) value for IPv4 multicast messages and the
hop limit for IPv6 multicast messages. This value is ignored
unless |
{- "transport": "L2",
- "udp_ttl": 1
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Remove this interface.
if required | string Example: eth0 The name of a network interface to use for PTP. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The network transport to use for the interface. Possible values are:
UDPv4
: UDP over IPv4.UDPv6
: UDP over IPv6.L2
: Layer-2 transport (e.g., Ethernet).if required | string Example: eth0 The name of a network interface to use for PTP. |
The network transport to use for the interface. Possible values are:
UDPv4
: UDP over IPv4.UDPv6
: UDP over IPv6.L2
: Layer-2 transport (e.g., Ethernet)."L2"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
if required | string Example: eth0 The name of a network interface to use for PTP. |
The network transport to use for the interface. Possible values are:
UDPv4
: UDP over IPv4.UDPv6
: UDP over IPv6.L2
: Layer-2 transport (e.g., Ethernet)."L2"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to UDPv4
.
if required | string Example: eth0 The name of a network interface to use for PTP. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The Time-to-live (TTL) value for IPv4 multicast messages and the
hop limit for IPv6 multicast messages. This value is ignored
unless transport
is either UDPv4
or UDPv6
. The default
is 1, which restricts the messages to the same subnet.
if required | string Example: eth0 The name of a network interface to use for PTP. |
The Time-to-live (TTL) value for IPv4 multicast messages and the
hop limit for IPv6 multicast messages. This value is ignored
unless transport
is either UDPv4
or UDPv6
. The default
is 1, which restricts the messages to the same subnet.
1
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
if required | string Example: eth0 The name of a network interface to use for PTP. |
The Time-to-live (TTL) value for IPv4 multicast messages and the
hop limit for IPv6 multicast messages. This value is ignored
unless transport
is either UDPv4
or UDPv6
. The default
is 1, which restricts the messages to the same subnet.
1
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to 1.
if required | string Example: eth0 The name of a network interface to use for PTP. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The push service configuration. This service is used to share the
meter data with a remote web server. The data is sent via an HTTP
POST
request.
interval | integer (configPushInterval) >= 1 The interval in seconds between push updates. A value of 60, for example, would cause the push service to attempt to send data to the remote web server once a minute. |
options | string (configPushOptions) The options controlling how data is pushed to the remote web
server. Multiple options must be separated by commas ( This resource is available only if /config/push/service is an empty string. Available options are:
By default, data is pushed with minute granularity (at most one row of data per minute). |
password | string (configPushPassword) The password to be provided to the remote web server for
authentication purposes. The password is submitted to the remote
web server as part of a
Basic HTTP
This resource is available only if /config/push/web/service is an empty string. This resource is write-only. |
service | string (configPushService) The name of a push service provider to shared data with. An empty string is returned if no service provider is being used. |
uri | string (configPushUri) The URI of the web server to share data with. This resource is available only if /config/push/service is an empty string. |
user | string (configPushUser) The user name to provide to the web server for authentication
purposes. If this string is not empty, the user name and the
password are both sent to the web server as part of a
Basic HTTP
This resource is available only if /config/push/web/service is an empty string. |
{- "interval": 60,
- "options": "json,gzip,epoch,sec,skip=59",
- "service": "",
- "user": "jsmith"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
interval | integer (configPushInterval) >= 1 The interval in seconds between push updates. A value of 60, for example, would cause the push service to attempt to send data to the remote web server once a minute. |
options | string (configPushOptions) The options controlling how data is pushed to the remote web
server. Multiple options must be separated by commas ( This resource is available only if /config/push/service is an empty string. Available options are:
By default, data is pushed with minute granularity (at most one row of data per minute). |
password | string (configPushPassword) The password to be provided to the remote web server for
authentication purposes. The password is submitted to the remote
web server as part of a
Basic HTTP
This resource is available only if /config/push/web/service is an empty string. This resource is write-only. |
service | string (configPushService) The name of a push service provider to shared data with. An empty string is returned if no service provider is being used. |
uri | string (configPushUri) The URI of the web server to share data with. This resource is available only if /config/push/service is an empty string. |
user | string (configPushUser) The user name to provide to the web server for authentication
purposes. If this string is not empty, the user name and the
password are both sent to the web server as part of a
Basic HTTP
This resource is available only if /config/push/web/service is an empty string. |
{- "interval": 60,
- "options": "json,gzip,epoch,sec,skip=59",
- "service": "",
- "user": "jsmith"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The interval in seconds between push updates. A value of 60, for example, would cause the push service to attempt to send data to the remote web server once a minute.
The interval in seconds between push updates. A value of 60, for example, would cause the push service to attempt to send data to the remote web server once a minute.
60
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The interval in seconds between push updates. A value of 60, for example, would cause the push service to attempt to send data to the remote web server once a minute.
60
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The options controlling how data is pushed to the remote web
server. Multiple options must be separated by commas (,
).
This resource is available only if /config/push/service is an empty string.
Available options are:
day
: Data will be pushed with day granularity (at most one
row of data per day).
deflate
: Use the deflate algorithm to compress the push
data. This adds HTTP header Content-Encoding: deflate
to
the POST
request.
epoch
: Report the register values relative to the
epoch. Without this option, absolute
values are sent which start at zero at the time the meter
database was created.
gzip
: Use the gzip algorithm to compress the push data.
This adds HTTP header Content-Encoding: gzip
to the POST
request.
json
: Push data in JSON format instead of XML. The JSON
format is the same as the one returned by the
/register service, except that the top-level
ts
section and the idx
members in the registers
section
are omitted since they are not meaningful for push data.
hour
: Data will be pushed with hour granularity (at most one
row of data per hour).
max=n
: Include at most n
rows in a single POST
request.
This defaults to 900 and must be in the range from 1 to 9000.
If smaller than the data update-frequency
(1/update_interval), a
single POST
request may contain as many rows as are needed
to cover one second.
msec
: Data will be pushed with millisecond granularity (at
most one row of data per millisecond).
old_first
: Push the oldest data row first. By default, the
youngest data row is pushed first.
sec
: Data will be pushed with second granularity (at most
one row of data per second).
secure
: If this option is present, secure connections to the
remote web server are allowed only if the server possesses a
certificate that the meter can verify as authentic. Without
this option, the server's certificate is not verified. This
option is ignored if
/config/net/http/client/insecure
is true
.
skip=n
: Push only every (n+1)
-th data row. For example,
with hour granularity and skip=2, data rows would be spaced
apart by (at least) 3 hours. They may be spaced apart more
depending on the rows that are available in the database.
totals
: Push not just the physical registers but also the
virtual registers.
By default, data is pushed with minute granularity (at most one row of data per minute).
The options controlling how data is pushed to the remote web
server. Multiple options must be separated by commas (,
).
This resource is available only if /config/push/service is an empty string.
Available options are:
day
: Data will be pushed with day granularity (at most one
row of data per day).
deflate
: Use the deflate algorithm to compress the push
data. This adds HTTP header Content-Encoding: deflate
to
the POST
request.
epoch
: Report the register values relative to the
epoch. Without this option, absolute
values are sent which start at zero at the time the meter
database was created.
gzip
: Use the gzip algorithm to compress the push data.
This adds HTTP header Content-Encoding: gzip
to the POST
request.
json
: Push data in JSON format instead of XML. The JSON
format is the same as the one returned by the
/register service, except that the top-level
ts
section and the idx
members in the registers
section
are omitted since they are not meaningful for push data.
hour
: Data will be pushed with hour granularity (at most one
row of data per hour).
max=n
: Include at most n
rows in a single POST
request.
This defaults to 900 and must be in the range from 1 to 9000.
If smaller than the data update-frequency
(1/update_interval), a
single POST
request may contain as many rows as are needed
to cover one second.
msec
: Data will be pushed with millisecond granularity (at
most one row of data per millisecond).
old_first
: Push the oldest data row first. By default, the
youngest data row is pushed first.
sec
: Data will be pushed with second granularity (at most
one row of data per second).
secure
: If this option is present, secure connections to the
remote web server are allowed only if the server possesses a
certificate that the meter can verify as authentic. Without
this option, the server's certificate is not verified. This
option is ignored if
/config/net/http/client/insecure
is true
.
skip=n
: Push only every (n+1)
-th data row. For example,
with hour granularity and skip=2, data rows would be spaced
apart by (at least) 3 hours. They may be spaced apart more
depending on the rows that are available in the database.
totals
: Push not just the physical registers but also the
virtual registers.
By default, data is pushed with minute granularity (at most one row of data per minute).
"json,gzip,epoch,sec,skip=59"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The options controlling how data is pushed to the remote web
server. Multiple options must be separated by commas (,
).
This resource is available only if /config/push/service is an empty string.
Available options are:
day
: Data will be pushed with day granularity (at most one
row of data per day).
deflate
: Use the deflate algorithm to compress the push
data. This adds HTTP header Content-Encoding: deflate
to
the POST
request.
epoch
: Report the register values relative to the
epoch. Without this option, absolute
values are sent which start at zero at the time the meter
database was created.
gzip
: Use the gzip algorithm to compress the push data.
This adds HTTP header Content-Encoding: gzip
to the POST
request.
json
: Push data in JSON format instead of XML. The JSON
format is the same as the one returned by the
/register service, except that the top-level
ts
section and the idx
members in the registers
section
are omitted since they are not meaningful for push data.
hour
: Data will be pushed with hour granularity (at most one
row of data per hour).
max=n
: Include at most n
rows in a single POST
request.
This defaults to 900 and must be in the range from 1 to 9000.
If smaller than the data update-frequency
(1/update_interval), a
single POST
request may contain as many rows as are needed
to cover one second.
msec
: Data will be pushed with millisecond granularity (at
most one row of data per millisecond).
old_first
: Push the oldest data row first. By default, the
youngest data row is pushed first.
sec
: Data will be pushed with second granularity (at most
one row of data per second).
secure
: If this option is present, secure connections to the
remote web server are allowed only if the server possesses a
certificate that the meter can verify as authentic. Without
this option, the server's certificate is not verified. This
option is ignored if
/config/net/http/client/insecure
is true
.
skip=n
: Push only every (n+1)
-th data row. For example,
with hour granularity and skip=2, data rows would be spaced
apart by (at least) 3 hours. They may be spaced apart more
depending on the rows that are available in the database.
totals
: Push not just the physical registers but also the
virtual registers.
By default, data is pushed with minute granularity (at most one row of data per minute).
"json,gzip,epoch,sec,skip=59"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The password to be provided to the remote web server for
authentication purposes. The password is submitted to the remote
web server as part of a
Basic HTTP
Authorization
header. For this reason, a password should only
be specified when using a secure connection (https
scheme).
This resource is available only if /config/push/web/service is an empty string.
This resource is write-only.
The password to be provided to the remote web server for
authentication purposes. The password is submitted to the remote
web server as part of a
Basic HTTP
Authorization
header. For this reason, a password should only
be specified when using a secure connection (https
scheme).
This resource is available only if /config/push/web/service is an empty string.
This resource is write-only.
"secret!"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The password to be provided to the remote web server for
authentication purposes. The password is submitted to the remote
web server as part of a
Basic HTTP
Authorization
header. For this reason, a password should only
be specified when using a secure connection (https
scheme).
This resource is available only if /config/push/web/service is an empty string.
This resource is write-only.
"secret!"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The name of a push service provider to shared data with. An empty string is returned if no service provider is being used.
To set the resource to a non-empty value please use the service
activation command since that ensures
the push provider knows to expect data from this meter. The
body of the activation request should contain member service
set to the string push
and provider
set to name of the
desired push service provider.
The name of a push service provider to shared data with. An empty string is returned if no service provider is being used.
"string"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
To set the resource to a non-empty value please use the service
activation command since that ensures
the push provider knows to expect data from this meter. The
body of the activation request should contain member service
set to the string push
and provider
set to name of the
desired push service provider.
The name of a push service provider to shared data with. An empty string is returned if no service provider is being used.
"string"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The URI of the web server to share data with. This resource is available only if /config/push/service is an empty string.
{- "error": "Error message (present if an error occurred)."
}
The URI of the web server to share data with. This resource is available only if /config/push/service is an empty string.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The URI of the web server to share data with. This resource is available only if /config/push/service is an empty string.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The user name to provide to the web server for authentication
purposes. If this string is not empty, the user name and the
password are both sent to the web server as part of a
Basic HTTP
Authorization
header.
This resource is available only if /config/push/web/service is an empty string.
The user name to provide to the web server for authentication
purposes. If this string is not empty, the user name and the
password are both sent to the web server as part of a
Basic HTTP
Authorization
header.
This resource is available only if /config/push/web/service is an empty string.
"jsmith"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The user name to provide to the web server for authentication
purposes. If this string is not empty, the user name and the
password are both sent to the web server as part of a
Basic HTTP
Authorization
header.
This resource is available only if /config/push/web/service is an empty string.
"jsmith"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
{- "result": {
- "physical": {
- "grid": {
- "dev": "local",
- "did": 0,
- "type": "P",
- "value": "S16*L1+S17*L2"
}, - "grid*": {
- "dev": "local",
- "did": 8,
- "type": "S",
- "value": "grid"
}, - "solar": {
- "dev": "local",
- "did": 1,
- "type": "P",
- "value": "S3*L1+-S3*L2"
}, - "temp": {
- "dev": "SMANet",
- "did": 12,
- "type": "T",
- "value": "13590.TmpAmb_C"
}
}, - "virtual": {
- "use": {
- "value": [
- {
- "op": "+",
- "register": "grid"
}, - {
- "op": "+",
- "register": "solar"
}
]
}, - "gen": {
- "value": [
- {
- "op": "+",
- "register": "solar"
}
]
}
}
}, - "error": "Error message (present if an error occurred)."
}
object (configRegisterPhysical) The physical register configuration of the meter. | |
object (configRegisterVirtual) The virtual register configuration of the meter. Virtual registers are calculated from physical register values and do not take up space in the database. As such there is no a priori limit on the number of virtual registers that can be configured on a meter. |
{- "physical": {
- "grid": {
- "dev": "local",
- "did": 0,
- "type": "P",
- "value": "S16*L1+S17*L2"
}, - "grid*": {
- "dev": "local",
- "did": 8,
- "type": "S",
- "value": "grid"
}, - "solar": {
- "dev": "local",
- "did": 1,
- "type": "P",
- "value": "S3*L1+-S3*L2"
}, - "temp": {
- "dev": "SMANet",
- "did": 12,
- "type": "T",
- "value": "13590.TmpAmb_C"
}
}, - "virtual": {
- "use": {
- "value": [
- {
- "op": "+",
- "register": "grid"
}, - {
- "op": "+",
- "register": "solar"
}
]
}, - "gen": {
- "value": [
- {
- "op": "+",
- "register": "solar"
}
]
}
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
object (configRegisterPhysical) The physical register configuration of the meter. | |
object (configRegisterVirtual) The virtual register configuration of the meter. Virtual registers are calculated from physical register values and do not take up space in the database. As such there is no a priori limit on the number of virtual registers that can be configured on a meter. |
{- "physical": {
- "grid": {
- "dev": "local",
- "did": 0,
- "type": "P",
- "value": "S16*L1+S17*L2"
}, - "grid*": {
- "dev": "local",
- "did": 8,
- "type": "S",
- "value": "grid"
}, - "solar": {
- "dev": "local",
- "did": 1,
- "type": "P",
- "value": "S3*L1+-S3*L2"
}, - "temp": {
- "dev": "SMANet",
- "did": 12,
- "type": "T",
- "value": "13590.TmpAmb_C"
}
}, - "virtual": {
- "use": {
- "value": [
- {
- "op": "+",
- "register": "grid"
}, - {
- "op": "+",
- "register": "solar"
}
]
}, - "gen": {
- "value": [
- {
- "op": "+",
- "register": "solar"
}
]
}
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The physical register configuration of the meter.
A register is a named measurement whose values are recorded in a database at discrete points in time (the database rows). There is an upper limit on the number of physical registers that can be supported by the meter. Depending on meter model and database configuration, typically, 16 to 64 physical registers are available. The actual limit is available at /sys/db/max-registers.
{- "result": {
- "grid": {
- "dev": "local",
- "did": 0,
- "type": "P",
- "value": "S16*L1+S17*L2"
}, - "grid*": {
- "dev": "local",
- "did": 8,
- "type": "S",
- "value": "grid"
}, - "solar": {
- "dev": "local",
- "did": 1,
- "type": "P",
- "value": "S3*L1+-S3*L2"
}, - "temp": {
- "dev": "SMANet",
- "did": 12,
- "type": "T",
- "value": "13590.TmpAmb_C"
}
}, - "error": "Error message (present if an error occurred)."
}
additional property | object (configRegisterPhysicalReg) The configuration of the named physical register. |
{- "grid": {
- "dev": "local",
- "did": 0,
- "type": "P",
- "value": "S16*L1+S17*L2"
}, - "grid*": {
- "dev": "local",
- "did": 8,
- "type": "S",
- "value": "grid"
}, - "solar": {
- "dev": "local",
- "did": 1,
- "type": "P",
- "value": "S3*L1+-S3*L2"
}, - "temp": {
- "dev": "SMANet",
- "did": 12,
- "type": "T",
- "value": "13590.TmpAmb_C"
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
additional property | object (configRegisterPhysicalReg) The configuration of the named physical register. |
{- "grid": {
- "dev": "local",
- "did": 0,
- "type": "P",
- "value": "S16*L1+S17*L2"
}, - "grid*": {
- "dev": "local",
- "did": 8,
- "type": "S",
- "value": "grid"
}, - "solar": {
- "dev": "local",
- "did": 1,
- "type": "P",
- "value": "S3*L1+-S3*L2"
}, - "temp": {
- "dev": "SMANet",
- "did": 12,
- "type": "T",
- "value": "13590.TmpAmb_C"
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
reg required | string The name of a register. |
max-depth | |
filter |
{- "result": {
- "dev": "local",
- "did": 0,
- "type": "P",
- "value": "S16*L1+S17*L2"
}, - "error": "Error message (present if an error occurred)."
}
reg required | string The name of a register. |
dev | string (configRegisterPhysicalRegDev) The name of the device that is the source of the register values.
The name |
did | integer (configRegisterPhysicalRegDid) >= 0 The column number in which the database stores the register value. Each physical register has a unique column number. If a register is renamed, this number remains the same. On the other hand, if a register is deleted and then another one is added back, the new one may get assigned the column number of the old, deleted register. Each physical register must have a unique value. Invalid values automatically get remapped to an unused index. |
type | string (configRegisterPhysicalRegType) The type code of the register. |
value | string (configRegisterPhysicalRegValue) Defines the how the register value is obtained or calculated. For
register where
For registers where |
{- "dev": "local",
- "did": 0,
- "type": "P",
- "value": "S16*L1+S17*L2"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
reg required | string The name of a register. |
dev | string (configRegisterPhysicalRegDev) The name of the device that is the source of the register values.
The name |
did | integer (configRegisterPhysicalRegDid) >= 0 The column number in which the database stores the register value. Each physical register has a unique column number. If a register is renamed, this number remains the same. On the other hand, if a register is deleted and then another one is added back, the new one may get assigned the column number of the old, deleted register. Each physical register must have a unique value. Invalid values automatically get remapped to an unused index. |
type | string (configRegisterPhysicalRegType) The type code of the register. |
value | string (configRegisterPhysicalRegValue) Defines the how the register value is obtained or calculated. For
register where
For registers where |
{- "dev": "local",
- "did": 0,
- "type": "P",
- "value": "S16*L1+S17*L2"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
reg required | string The name of a register. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The name of the device that is the source of the register values.
The name local
indicates that the meter itself measures or
calculates the value. Any other value is a reference to the
remote device of the same name defined at
/config/remote.
reg required | string The name of a register. |
{- "result": "local",
- "error": "Error message (present if an error occurred)."
}
reg required | string The name of a register. |
The name of the device that is the source of the register values.
The name local
indicates that the meter itself measures or
calculates the value. Any other value is a reference to the
remote device of the same name defined at
/config/remote.
"local"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
reg required | string The name of a register. |
The name of the device that is the source of the register values.
The name local
indicates that the meter itself measures or
calculates the value. Any other value is a reference to the
remote device of the same name defined at
/config/remote.
"local"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to local
.
reg required | string The name of a register. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The column number in which the database stores the register value. Each physical register has a unique column number. If a register is renamed, this number remains the same. On the other hand, if a register is deleted and then another one is added back, the new one may get assigned the column number of the old, deleted register.
Each physical register must have a unique value. Invalid values automatically get remapped to an unused index.
reg required | string The name of a register. |
{- "result": 0,
- "error": "Error message (present if an error occurred)."
}
reg required | string The name of a register. |
The column number in which the database stores the register value. Each physical register has a unique column number. If a register is renamed, this number remains the same. On the other hand, if a register is deleted and then another one is added back, the new one may get assigned the column number of the old, deleted register.
Each physical register must have a unique value. Invalid values automatically get remapped to an unused index.
0
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
reg required | string The name of a register. |
The column number in which the database stores the register value. Each physical register has a unique column number. If a register is renamed, this number remains the same. On the other hand, if a register is deleted and then another one is added back, the new one may get assigned the column number of the old, deleted register.
Each physical register must have a unique value. Invalid values automatically get remapped to an unused index.
0
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to 0.
reg required | string The name of a register. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The type code of the register.
reg required | string The name of a register. |
{- "result": "P",
- "error": "Error message (present if an error occurred)."
}
reg required | string The name of a register. |
The type code of the register.
"P"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
reg required | string The name of a register. |
The type code of the register.
"P"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to empty string.
reg required | string The name of a register. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Defines the how the register value is obtained or calculated. For
register where dev
is local
, this is one of:
A local sensor name: L1
-L3
, Ldc
, or
S1
-S30
.
A power formula written as a sum of products of sensors. For
example, S1*L1+S2*L2
would indicate that the register value
is calculated as the real power measured by current sensor
S1
and line-voltage L1
plus the real power measured by
current sensor S2
and line-voltage L2
. Note that even
though the real power calculation is indicated by an asterisk,
it is actually calculated by averaging the product of the
instantaneous current and voltage samples, not by multiplying
the RMS voltages of S1
and L1
. The first factor of each
real power calculation may also be negated. For example,
-S1*L2
would yield the negative of the real power calculated
by S1*L2
.
An equal sign (=
) followed by an
eScript expression. The register
value is obtained by evaluating the eScript expression once
per update interval.
Non-finite numbers (e.g., not-a-number, or infinities) are
silently converted to 0 before recording the register value.
For registers where dev
is not local
, so-called remote
registers, the value is interpreted in a way that is specific to
the particular remote device in use. Commonly, the value is some
sort of register name or identifier. For example, for Modbus
remote devices, the value is a register name defined by the
Modbus map of the remote device.
reg required | string The name of a register. |
{- "result": "S16*L1+S17*L2",
- "error": "Error message (present if an error occurred)."
}
reg required | string The name of a register. |
Defines the how the register value is obtained or calculated. For
register where dev
is local
, this is one of:
A local sensor name: L1
-L3
, Ldc
, or
S1
-S30
.
A power formula written as a sum of products of sensors. For
example, S1*L1+S2*L2
would indicate that the register value
is calculated as the real power measured by current sensor
S1
and line-voltage L1
plus the real power measured by
current sensor S2
and line-voltage L2
. Note that even
though the real power calculation is indicated by an asterisk,
it is actually calculated by averaging the product of the
instantaneous current and voltage samples, not by multiplying
the RMS voltages of S1
and L1
. The first factor of each
real power calculation may also be negated. For example,
-S1*L2
would yield the negative of the real power calculated
by S1*L2
.
An equal sign (=
) followed by an
eScript expression. The register
value is obtained by evaluating the eScript expression once
per update interval.
Non-finite numbers (e.g., not-a-number, or infinities) are
silently converted to 0 before recording the register value.
For registers where dev
is not local
, so-called remote
registers, the value is interpreted in a way that is specific to
the particular remote device in use. Commonly, the value is some
sort of register name or identifier. For example, for Modbus
remote devices, the value is a register name defined by the
Modbus map of the remote device.
"S16*L1+S17*L2"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
reg required | string The name of a register. |
Defines the how the register value is obtained or calculated. For
register where dev
is local
, this is one of:
A local sensor name: L1
-L3
, Ldc
, or
S1
-S30
.
A power formula written as a sum of products of sensors. For
example, S1*L1+S2*L2
would indicate that the register value
is calculated as the real power measured by current sensor
S1
and line-voltage L1
plus the real power measured by
current sensor S2
and line-voltage L2
. Note that even
though the real power calculation is indicated by an asterisk,
it is actually calculated by averaging the product of the
instantaneous current and voltage samples, not by multiplying
the RMS voltages of S1
and L1
. The first factor of each
real power calculation may also be negated. For example,
-S1*L2
would yield the negative of the real power calculated
by S1*L2
.
An equal sign (=
) followed by an
eScript expression. The register
value is obtained by evaluating the eScript expression once
per update interval.
Non-finite numbers (e.g., not-a-number, or infinities) are
silently converted to 0 before recording the register value.
For registers where dev
is not local
, so-called remote
registers, the value is interpreted in a way that is specific to
the particular remote device in use. Commonly, the value is some
sort of register name or identifier. For example, for Modbus
remote devices, the value is a register name defined by the
Modbus map of the remote device.
"S16*L1+S17*L2"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to empty string.
reg required | string The name of a register. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The virtual register configuration of the meter.
Virtual registers are calculated from physical register values and do not take up space in the database. As such there is no a priori limit on the number of virtual registers that can be configured on a meter.
{- "result": {
- "use": {
- "value": [
- {
- "op": "+",
- "register": "grid"
}, - {
- "op": "+",
- "register": "solar"
}
]
}, - "gen": {
- "value": [
- {
- "op": "+",
- "register": "solar"
}
]
}
}, - "error": "Error message (present if an error occurred)."
}
additional property | object (configRegisterVirtualReg) The virtual register configuration. Several virtual register names are well-known and provide special semantics:
|
{- "use": {
- "value": [
- {
- "op": "+",
- "register": "grid"
}, - {
- "op": "+",
- "register": "solar"
}
]
}, - "gen": {
- "value": [
- {
- "op": "+",
- "register": "solar"
}
]
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
additional property | object (configRegisterVirtualReg) The virtual register configuration. Several virtual register names are well-known and provide special semantics:
|
{- "use": {
- "value": [
- {
- "op": "+",
- "register": "grid"
}, - {
- "op": "+",
- "register": "solar"
}
]
}, - "gen": {
- "value": [
- {
- "op": "+",
- "register": "solar"
}
]
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The virtual register configuration.
Several virtual register names are well-known and provide special semantics:
use
: Intended to represent total power consumption at a
site. It is generally presented with the name Usage
in
English and the equivalent translation in other languages
(subject to availability).
gen
: Intended to represent total power generation at a site,
e.g., from local solar or wind power generation facilities.
It is generally presented with the name Generation
in
English and the equivalent translation in other languages
(subject to availability).
bat
: Intended to represent total power coming from on-site
batteries (if positive) or power going to on-site batteries
for charging (if negative). It is generally presented with
the name Battery
in English and the equivalent translation
in other languages (subject to availability).
bat_el
: Intended to represent the amount of energy left in
on-site batteries. The value of this register should be equal
to the sum of each battery's state of charge times the
battery's capacity (in joules). It is generally presented
with the name Battery left
in English and the equivalent
translation in other languages (subject to availability).
reg required | string The name of a virtual register. May not be empty, contain
commas ( |
max-depth | |
filter |
{- "result": {
- "value": [
- {
- "op": "+",
- "register": "grid"
}, - {
- "op": "+",
- "register": "solar"
}
]
}, - "error": "Error message (present if an error occurred)."
}
reg required | string The name of a virtual register. May not be empty, contain
commas ( |
Array of objects (configRegisterVirtualRegValue) The formula to calculate the value of this virtual register. It consists of a list of physical register names whose values are to be added or subtracted. |
{- "value": [
- {
- "op": "+",
- "register": "grid"
}, - {
- "op": "+",
- "register": "solar"
}
]
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
reg required | string The name of a virtual register. May not be empty, contain
commas ( |
Array of objects (configRegisterVirtualRegValue) The formula to calculate the value of this virtual register. It consists of a list of physical register names whose values are to be added or subtracted. |
{- "value": [
- {
- "op": "+",
- "register": "grid"
}, - {
- "op": "+",
- "register": "solar"
}
]
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Remove this virtual register.
reg required | string The name of a virtual register. May not be empty, contain
commas ( |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The formula to calculate the value of this virtual register. It consists of a list of physical register names whose values are to be added or subtracted.
reg required | string The name of a virtual register. May not be empty, contain
commas ( |
max-depth | |
filter |
{- "result": [
- {
- "op": "+",
- "register": "grid"
}, - {
- "op": "+",
- "register": "solar"
}
], - "error": "Error message (present if an error occurred)."
}
reg required | string The name of a virtual register. May not be empty, contain
commas ( |
op | string (configRegisterVirtualRegValueItemOp) Enum: "+" "-" "+max0" "-max0" "+min0" "-min0" The operation that calculates the value of this addend. Possible values are:
|
register | string (configRegisterVirtualRegValueItemRegister) The name of the physical register to use in calculating the value of this addend. |
[- {
- "op": "+",
- "register": "grid"
}, - {
- "op": "+",
- "register": "solar"
}
]
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
reg required | string The name of a virtual register. May not be empty, contain
commas ( |
op | string (configRegisterVirtualRegValueItemOp) Enum: "+" "-" "+max0" "-max0" "+min0" "-min0" The operation that calculates the value of this addend. Possible values are:
|
register | string (configRegisterVirtualRegValueItemRegister) The name of the physical register to use in calculating the value of this addend. |
[- {
- "op": "+",
- "register": "grid"
}, - {
- "op": "+",
- "register": "solar"
}
]
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to empty array.
reg required | string The name of a virtual register. May not be empty, contain
commas ( |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
reg required | string The name of a virtual register. May not be empty, contain
commas ( |
idx required | integer >= 0 The index of a virtual register addend. |
max-depth | |
filter |
{- "result": {
- "op": "+",
- "register": "grid"
}, - "error": "Error message (present if an error occurred)."
}
reg required | string The name of a virtual register. May not be empty, contain
commas ( |
idx required | integer >= 0 The index of a virtual register addend. |
op | string (configRegisterVirtualRegValueItemOp) Enum: "+" "-" "+max0" "-max0" "+min0" "-min0" The operation that calculates the value of this addend. Possible values are:
|
register | string (configRegisterVirtualRegValueItemRegister) The name of the physical register to use in calculating the value of this addend. |
{- "op": "+",
- "register": "grid"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
reg required | string The name of a virtual register. May not be empty, contain
commas ( |
idx required | integer >= 0 The index of a virtual register addend. |
op | string (configRegisterVirtualRegValueItemOp) Enum: "+" "-" "+max0" "-max0" "+min0" "-min0" The operation that calculates the value of this addend. Possible values are:
|
register | string (configRegisterVirtualRegValueItemRegister) The name of the physical register to use in calculating the value of this addend. |
{- "op": "+",
- "register": "grid"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
reg required | string The name of a virtual register. May not be empty, contain
commas ( |
idx required | integer >= 0 The index of a virtual register addend. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The operation that calculates the value of this addend.
Possible values are:
+
: The physical register value is to be added.
-
: The physical register value is to be subtracted.
+max0
, -max0
, +min0
, -min0
:
Deprecated. These operators do
not work correctly and remain only to preserve compatibility
with existing, old, device configurations. Attempting to write
these operators with a PUT
or POST
request will result in an
error. They can only be returned as a result of a GET
request.
The intent of these operators was to add (+max0
, +min0
) or
subtract (-max0
, -min0
) the maximum of the physical register
value and 0 (+max0
, -max0
) or the minimum of the register value
and 0 (+min0
, -min0
).
reg required | string The name of a virtual register. May not be empty, contain
commas ( |
idx required | integer >= 0 The index of a virtual register addend. |
{- "result": "+",
- "error": "Error message (present if an error occurred)."
}
reg required | string The name of a virtual register. May not be empty, contain
commas ( |
idx required | integer >= 0 The index of a virtual register addend. |
The operation that calculates the value of this addend.
Possible values are:
+
: The physical register value is to be added.
-
: The physical register value is to be subtracted.
+max0
, -max0
, +min0
, -min0
:
Deprecated. These operators do
not work correctly and remain only to preserve compatibility
with existing, old, device configurations. Attempting to write
these operators with a PUT
or POST
request will result in an
error. They can only be returned as a result of a GET
request.
The intent of these operators was to add (+max0
, +min0
) or
subtract (-max0
, -min0
) the maximum of the physical register
value and 0 (+max0
, -max0
) or the minimum of the register value
and 0 (+min0
, -min0
).
"+"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
reg required | string The name of a virtual register. May not be empty, contain
commas ( |
idx required | integer >= 0 The index of a virtual register addend. |
The operation that calculates the value of this addend.
Possible values are:
+
: The physical register value is to be added.
-
: The physical register value is to be subtracted.
+max0
, -max0
, +min0
, -min0
:
Deprecated. These operators do
not work correctly and remain only to preserve compatibility
with existing, old, device configurations. Attempting to write
these operators with a PUT
or POST
request will result in an
error. They can only be returned as a result of a GET
request.
The intent of these operators was to add (+max0
, +min0
) or
subtract (-max0
, -min0
) the maximum of the physical register
value and 0 (+max0
, -max0
) or the minimum of the register value
and 0 (+min0
, -min0
).
"+"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to +
.
reg required | string The name of a virtual register. May not be empty, contain
commas ( |
idx required | integer >= 0 The index of a virtual register addend. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The name of the physical register to use in calculating the value of this addend.
reg required | string The name of a virtual register. May not be empty, contain
commas ( |
idx required | integer >= 0 The index of a virtual register addend. |
{- "result": "grid",
- "error": "Error message (present if an error occurred)."
}
reg required | string The name of a virtual register. May not be empty, contain
commas ( |
idx required | integer >= 0 The index of a virtual register addend. |
The name of the physical register to use in calculating the value of this addend.
"grid"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
reg required | string The name of a virtual register. May not be empty, contain
commas ( |
idx required | integer >= 0 The index of a virtual register addend. |
The name of the physical register to use in calculating the value of this addend.
"grid"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to empty string.
reg required | string The name of a virtual register. May not be empty, contain
commas ( |
idx required | integer >= 0 The index of a virtual register addend. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
max-depth | |
filter |
{- "result": {
- "PRM3": {
- "address": "modbus://sunspec.1@USB2",
- "link_type": "slowd"
}, - "panel2": {
- "address": "panel2.local",
- "link_type": "udp"
}
}, - "error": "Error message (present if an error occurred)."
}
additional property | object (configRemoteName) The configuration of a remote device. |
{- "PRM3": {
- "address": "modbus://sunspec.1@USB2",
- "link_type": "slowd"
}, - "panel2": {
- "address": "panel2.local",
- "link_type": "udp"
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
additional property | object (configRemoteName) The configuration of a remote device. |
{- "PRM3": {
- "address": "modbus://sunspec.1@USB2",
- "link_type": "slowd"
}, - "panel2": {
- "address": "panel2.local",
- "link_type": "udp"
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: PRM3 The name of a remote device. It must consist of printable
characters only. The name |
max-depth | |
filter |
{- "result": {
- "address": "modbus://sunspec.1@USB2",
- "link_type": "slowd"
}, - "error": "Error message (present if an error occurred)."
}
name required | string Example: PRM3 The name of a remote device. It must consist of printable
characters only. The name |
address | string (configRemoteNameAddress) The address of the remote device. The meaning of this value depends on the link-type. |
link_type | string (configRemoteNameLinkType) The link-type of the remote device. |
{- "address": "modbus://sunspec.1@USB2",
- "link_type": "slowd"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: PRM3 The name of a remote device. It must consist of printable
characters only. The name |
address | string (configRemoteNameAddress) The address of the remote device. The meaning of this value depends on the link-type. |
link_type | string (configRemoteNameLinkType) The link-type of the remote device. |
{- "address": "modbus://sunspec.1@USB2",
- "link_type": "slowd"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: PRM3 The name of a remote device. It must consist of printable
characters only. The name |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: PRM3 The name of a remote device. It must consist of printable
characters only. The name |
{- "result": "modbus://sunspec.1@USB2",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: PRM3 The name of a remote device. It must consist of printable
characters only. The name |
The address of the remote device. The meaning of this value depends on the link-type.
"modbus://sunspec.1@USB2"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: PRM3 The name of a remote device. It must consist of printable
characters only. The name |
The address of the remote device. The meaning of this value depends on the link-type.
"modbus://sunspec.1@USB2"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: PRM3 The name of a remote device. It must consist of printable
characters only. The name |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: PRM3 The name of a remote device. It must consist of printable
characters only. The name |
{- "result": "slowd",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: PRM3 The name of a remote device. It must consist of printable
characters only. The name |
The link-type of the remote device.
"slowd"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: PRM3 The name of a remote device. It must consist of printable
characters only. The name |
The link-type of the remote device.
"slowd"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
tcp
.
name required | string Example: PRM3 The name of a remote device. It must consist of printable
characters only. The name |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
zone | string (configTimeZone) The timezone the meter is located in. The string is interpreted as a Unix TZ string. |
{- "zone": "LST7LDT6,M3.2.0/02:00,M11.1.0/02:00"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
zone | string (configTimeZone) The timezone the meter is located in. The string is interpreted as a Unix TZ string. |
{- "zone": "LST7LDT6,M3.2.0/02:00,M11.1.0/02:00"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The timezone the meter is located in. The string is interpreted as a Unix TZ string.
The timezone the meter is located in. The string is interpreted as a Unix TZ string.
"LST7LDT6,M3.2.0/02:00,M11.1.0/02:00"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The timezone the meter is located in. The string is interpreted as a Unix TZ string.
"LST7LDT6,M3.2.0/02:00,M11.1.0/02:00"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The user accounts.
Each user account has a name, a set of privileges, and the credentials (password) required to log into the account.
additional property | object (configUserName) A user configuration (account). |
{- "jsmith": {
- "priv": [
- "unlimited_save",
- "view_settings"
]
}, - "guest": {
- "priv": [
- "view_settings"
]
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
additional property | object (configUserName) A user configuration (account). |
{- "jsmith": {
- "priv": [
- "unlimited_save",
- "view_settings"
]
}, - "guest": {
- "priv": [
- "view_settings"
]
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string The name of a user. Must consist of alpha-numeric characters or
underscores ( |
max-depth | |
filter |
{- "result": "jsmith",
- "error": "Error message (present if an error occurred)."
}
name required | string The name of a user. Must consist of alpha-numeric characters or
underscores ( |
priv | Array of strings (configUserNamePriv) The list of privileges the user possesses. |
hash | string (configUserNameHash) The hash of the user's password. Writing an empty hash string disables the account. This resource is write-only. |
"jsmith"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string The name of a user. Must consist of alpha-numeric characters or
underscores ( |
priv | Array of strings (configUserNamePriv) The list of privileges the user possesses. |
hash | string (configUserNameHash) The hash of the user's password. Writing an empty hash string disables the account. This resource is write-only. |
"jsmith"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Delete this user account.
name required | string The name of a user. Must consist of alpha-numeric characters or
underscores ( |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The list of privileges the user possesses.
name required | string The name of a user. Must consist of alpha-numeric characters or
underscores ( |
max-depth | |
filter |
{- "result": [
- "unlimited_save",
- "view_settings"
], - "error": "Error message (present if an error occurred)."
}
name required | string The name of a user. Must consist of alpha-numeric characters or
underscores ( |
A privilege the user possesses.
[- "unlimited_save",
- "view_settings"
]
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string The name of a user. Must consist of alpha-numeric characters or
underscores ( |
A privilege the user possesses.
[- "unlimited_save",
- "view_settings"
]
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to empty array.
name required | string The name of a user. Must consist of alpha-numeric characters or
underscores ( |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
A privilege the user possesses.
name required | string The name of a user. Must consist of alpha-numeric characters or
underscores ( |
idx required | integer >= 0 The index of a privilege. |
{- "result": "string",
- "error": "Error message (present if an error occurred)."
}
name required | string The name of a user. Must consist of alpha-numeric characters or
underscores ( |
idx required | integer >= 0 The index of a privilege. |
A privilege the user possesses.
"string"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string The name of a user. Must consist of alpha-numeric characters or
underscores ( |
idx required | integer >= 0 The index of a privilege. |
A privilege the user possesses.
"string"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Remove this privilege.
name required | string The name of a user. Must consist of alpha-numeric characters or
underscores ( |
idx required | integer >= 0 The index of a privilege. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The hash of the user's password. Writing an empty hash string disables the account.
This resource is write-only.
name required | string The name of a user. Must consist of alpha-numeric characters or
underscores ( |
The hash of the user's password. Writing an empty hash string disables the account.
This resource is write-only.
"251910de04f5eab86859939167d4fded"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string The name of a user. Must consist of alpha-numeric characters or
underscores ( |
The hash of the user's password. Writing an empty hash string disables the account.
This resource is write-only.
"251910de04f5eab86859939167d4fded"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Delete this user account.
name required | string The name of a user. Must consist of alpha-numeric characters or
underscores ( |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Any authenticated user can read meter variables but only users who have the privilege to save settings can create or update them.
Variable names must be at least one character long and may consist
of lower- and upper-case ASCII letters, digits, dashes (-
),
underscores (_
), and percent signs (%
). Note that when using
a variable name as part of a URL path, any percent sign must be
encoded as %25 (25 is the hexadecimal value of the ASCII code of
%
).
For backwards-compatibility, a variable name may also contain a
single dot (.
) if it does not appear as the first or last
character in the name. When a dot is present, the string before
the dot is called the paragraph name.
Variable values may contain any UTF-8 points except ASCII control characters.
Meter variables are organized into sections. Each section has a name and contains zero or more variables. Typically, groups of related meter variables are stored together in a single section. Variables can be accessed individually or by section.
For example, the global
section contains variables that apply to
the meter in general, such as billing information or the currency
symbol to use for monetary values. Other sections are specific to
particular applications (in the widest sense of the word). For
example, the health
section contains variables that define the
behavior of the meter's health checker service.
Section names must be at at least 1 and at most 63 bytes long and
may consist of lower- and upper-case ASCII letters, digits, dashes
(-
), underscores (_
), and percent signs (%
).
What distinguishes meter variables from normal configuration
settings is that the former are generally not used by the meter
firmware. In other words, meter variables are used primarily by
users of WebAPI. There are a few exceptions, however, for the
global
section:
billing.interval
: The meter firmware interprets this as the
length of the demand interval in minutes (see description of
/register query parameter
demand
).
billing.start_day
: The meter firmware interprets this as the
day of the month on which the utility company reads the
utility meter. The assumption is that the meter is read at
noon on that day. The value must be a decimal integer string
in the range from 1-31. If the billing day number is greater
than the number of days in a particular month, it is assumed
that utility meter is read on the last day of that month.
The meter-firmware uses this, for example, to implement the
sob
time point.
billing.tariff_uri
: If not an empty string, this is
interpreted as the URL from which to fetch a Lua
script that calculates energy cost.
The meter will periodically poll this URL and download any
available updates to the script.
default.currency_symbol
: This is interpreted as the symbol
to use for currency values. This may be a single Unicode
symbol such as $
(Dollar) or €
(Euro), or it may be a
multi character string, such as CHF
for Swiss Franc. The
meter firmware uses the value of this variable when outputting
the unit of monetary values.
max-depth | |
filter |
{- "result": {
- "global": {
- "billing.start_day": "6",
- "billing.interval": "15"
}, - "health": {
- "last_check": "1682200804"
}
}, - "error": "Error message (present if an error occurred)."
}
additional property | object (configVarSection) The meter variables in the named section. |
{- "global": {
- "billing.start_day": "6",
- "billing.interval": "15"
}, - "health": {
- "last_check": "1682200804"
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
additional property | object (configVarSection) The meter variables in the named section. |
{- "global": {
- "billing.start_day": "6",
- "billing.interval": "15"
}, - "health": {
- "last_check": "1682200804"
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
section required | string^[a-zA-Z0-9_%-]+$ Example: global The name of the section to access. |
max-depth | |
filter |
{- "result": {
- "billing.start_day": "6",
- "billing.interval": "15"
}, - "error": "Error message (present if an error occurred)."
}
section required | string^[a-zA-Z0-9_%-]+$ Example: global The name of the section to access. |
var* additional property | string (configVarSectionVar) The value of the named meter variable. Complex values can be stored, e.g., by JSON-encoding them. |
{- "billing.start_day": "6",
- "billing.interval": "15"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
section required | string^[a-zA-Z0-9_%-]+$ Example: global The name of the section to access. |
var* additional property | string (configVarSectionVar) The value of the named meter variable. Complex values can be stored, e.g., by JSON-encoding them. |
{- "billing.start_day": "6",
- "billing.interval": "15"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
section required | string^[a-zA-Z0-9_%-]+$ Example: global The name of the section to access. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
section required | string^[a-zA-Z0-9_%-]+$ Example: global The name of the section to access. |
var required | string^[a-zA-Z0-9_%.-]+$ Example: billing.start_day The name of a variable. |
{- "result": "6",
- "error": "Error message (present if an error occurred)."
}
section required | string^[a-zA-Z0-9_%-]+$ Example: global The name of the section to access. |
var required | string^[a-zA-Z0-9_%.-]+$ Example: billing.start_day The name of a variable. |
The value of the named meter variable. Complex values can be stored, e.g., by JSON-encoding them.
"6"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
section required | string^[a-zA-Z0-9_%-]+$ Example: global The name of the section to access. |
var required | string^[a-zA-Z0-9_%.-]+$ Example: billing.start_day The name of a variable. |
The value of the named meter variable. Complex values can be stored, e.g., by JSON-encoding them.
"6"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
section required | string^[a-zA-Z0-9_%-]+$ Example: global The name of the section to access. |
var required | string^[a-zA-Z0-9_%.-]+$ Example: billing.start_day The name of a variable. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
This service provides access to the CTid® facility built into the EG4xxx series meters. Specifically, it enables:
retrieving the CTid® information from a sensor,
flashing the (optional) locator LED on the sensor, and
deleting the stored CTid® information associated with a sensor port.
Note that while scanning or flashing a sensor, normal measurement of local sensors is suspended. It is therefore recommended to use this service primarily during device setup.
All methods other than GET
required a user with the save
right.
A Python program illustrating the use of this service can be found
here.
This program takes advantage of class
egauge.webapi.device.CTidInfo
to handle the details of encoding
the HTTP requests and decoding the responses.
Read the existing (previously scanned) CTid® info of all sensor ports.
{- "info": [
- {
- "ts": "1678384222",
- "tid": 2,
- "port": 1,
- "polarity": "+",
- "version": 4,
- "mfgid": 0,
- "model": "EV1000",
- "sn": 80,
- "k": 3,
- "rsrc": 160,
- "rload": 10000000,
- "params": {
- "scale": 2071.98706,
- "offset": 0,
- "delay": 116.27,
- "unit": 0
}
}, - {
- "ts": "1668455577",
- "tid": 2008264382,
- "port": 2,
- "polarity": "+",
- "version": 2,
- "mfgid": 0,
- "model": "ERA",
- "sn": 2,
- "k": 2,
- "rsvd": 0,
- "mfgdata": 0,
- "rsrc": 176,
- "rload": 10000000,
- "params": {
- "size": 106,
- "i": 2775,
- "v": 0.33333,
- "a": 0.45,
- "tv": 0,
- "ta": 0,
- "cal": {
- "1.5": {
- "v": 0,
- "a": 0
}, - "5.0": {
- "v": 0,
- "a": 0
}, - "15.0": {
- "v": 0,
- "a": 0
}, - "50.0": {
- "v": 0,
- "a": 0
}
}
}
}
]
}
Write CTid® info of the sensor ports specified in the request body to the meter. This does not update the CTid® info on the sensors themselves.
This method is supported mainly for testing purposes. However, it could also be used to fix faulty or inaccurate sensor information. The written information will persist only until the sensor ports are scanned again, so this would only be a temporary fix.
Array of objects (CTidInfoObject) non-empty |
{- "info": [
- {
- "ts": "1668455577",
- "tid": 2008264382,
- "port": 2,
- "polarity": "+",
- "version": 2,
- "mfgid": 0,
- "model": "ERA",
- "sn": 2,
- "k": 2,
- "rsrc": 176,
- "rload": 10000000,
- "params": {
- "size": 106,
- "i": 2775,
- "v": 0.33333,
- "a": 0.45,
- "tv": 0,
- "ta": 0,
- "cal": {
- "1.5": {
- "v": 0,
- "a": 0
}, - "5.0": {
- "v": 0,
- "a": 0
}, - "15.0": {
- "v": 0,
- "a": 0
}, - "50.0": {
- "v": 0,
- "a": 0
}
}
}
}
]
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Delete the CTid® info of all sensor ports from the meter.
This also terminates any pending scan
or flash
operations.
The CTid® info stored in the sensor is not affected by this operation.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Read the CTid® info of a sensor port or get the status of an operation that is in progress.
Without a query parameter, this returns the CTid® info object of the most recent scan. If the port has not been scanned or the scan failed, an empty object is returned instead.
If the tid
query parameter is specified, it must be the
transaction id of a CTid® operation that was previously
initiated on this port. A status object is returned if the
operation identified by tid
is still in progress. Otherwise,
the request is handled as if tid
had not been specified.
port required | integer >= 1 The port number to apply this request to. |
tid | integer >= 0 The transaction id of the CTid® operation to return information on. |
{- "ts": "1668455577",
- "tid": 2008264382,
- "port": 2,
- "polarity": "+",
- "version": 2,
- "mfgid": 0,
- "model": "ERA",
- "sn": 2,
- "k": 2,
- "rsrc": 176,
- "rload": 10000000,
- "params": {
- "size": 106,
- "i": 2775,
- "v": 0.33333,
- "a": 0.45,
- "tv": 0,
- "ta": 0,
- "cal": {
- "1.5": {
- "v": 0,
- "a": 0
}, - "5.0": {
- "v": 0,
- "a": 0
}, - "15.0": {
- "v": 0,
- "a": 0
}, - "50.0": {
- "v": 0,
- "a": 0
}
}
}
}
Initiate the operation specified in the request body. EG4xxx series meters are limited to performing one CTid® operation at a time. If this request is received while another operation is pending, an error is returned.
port required | integer >= 1 The port number to apply this request to. |
op required | string Enum: "flash" "scan" The operation to be initiated:
|
polarity required | string Enum: "+" "-" The voltage polarity with which to initiate the
operation. A plus sign ( For operation For operation |
tid required | integer [ 0 .. 4294967295 ] The transaction id to use for the operation. This
should be a randomly-chosen integer that uniquely
identifies the operation to be initiated. The
client can later check on the status of the
operation by passing this number as the |
{- "op": "flash",
- "polarity": "+",
- "tid": 4294967295
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Write CTid® info of the sensor port. This replaces any existing CTid® info on the meter with the one passed in the request body. It does not update the CTid® info on the sensor itself.
This method is supported mainly for testing purposes. However, it could also be used to fix faulty or inaccurate sensor information. The written information will persist only until the sensor port is scanned again, so this would only be a temporary fix.
port required | integer >= 1 The port number to apply this request to. |
error | string (ErrorString) A message describing the first error that occurred. This member is present only if an error occurred. |
k | integer >= 0 The type of the sensor (kind). |
mfgid required | integer >= 0 The numeric identifier of the manufacturer of the sensor. |
model required | string The model name of the sensor. |
object Sensor-type dependent parameters. | |
polarity | string Enum: "+" "-" The polarity of the voltage that was used to read this info. |
port required | integer >= 1 The port number this information is associated with. |
rload | number The load resistance that was applied when characterizing the other parameters of this sensor. |
rsrc | number The output resistance of the sensor. |
sn required | integer [ 0 .. 16777215 ] The serial number of the sensor. |
tid required | integer >= 0 Transaction ID of the scan that initiated the reading of this information. |
ts required | string (ForeverStamp) The Unix timestamp of when the information was scanned. |
version | integer >= 0 The CTid protocol version that the sensor implements. |
{- "ts": "1668455577",
- "tid": 2008264382,
- "port": 2,
- "polarity": "+",
- "version": 2,
- "mfgid": 0,
- "model": "ERA",
- "sn": 2,
- "k": 2,
- "rsrc": 176,
- "rload": 10000000,
- "params": {
- "size": 106,
- "i": 2775,
- "v": 0.33333,
- "a": 0.45,
- "tv": 0,
- "ta": 0,
- "cal": {
- "1.5": {
- "v": 0,
- "a": 0
}, - "5.0": {
- "v": 0,
- "a": 0
}, - "15.0": {
- "v": 0,
- "a": 0
}, - "50.0": {
- "v": 0,
- "a": 0
}
}
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Delete the CTid® info associated with the port from the meter.
This also terminates any pending scan
or flash
operations.
The CTid® info stored in the sensor is not affected by this operation.
port required | integer >= 1 The port number to apply this request to. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Immediately stop any pending scan
or flash
operation.
Generally, this should be used only after successfully
initiating a flash
operation as scan
operations will stop
automatically after a few seconds.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
This service provides a means to control devices. The devices being controlled are usually attached to the meter through a cable or wirelessly and are, in that sense, remote.
Only model EG4xxx or newer meters support this service.
This resource is used to issue control calls and to check on the status of a previously issued calls.
Issue a control call to a device identified by a set of device attributes.
object (DeviceAttributesWithIndexObject) The device attributes that identify the device on which to initiate the control action. In addition to the usual device attributes, For example, if there are three devices supporting
the | |
method | string The name of the control action to issue on the
device. This may be either a bare method name, such
as |
args | Array of any <json> [ items <json > ] The list of arguments to pass to the method. This list must have values that are compatible with the arguments expected by the method. |
{- "attrs": {
- "mfg": "egauge",
- "model": "prm3",
- "sn": "00000006"
}, - "method": "relay.close_mask",
- "args": [
- 1
]
}
{- "result": {
- "tid": 4294967360
}
}
Get the result of a control call on return an error message, e.g., if the result is not yet available.
tid required | integer <int54> >= 0 Example: 4294967360 The transaction id of the call. |
{- "error": "EAGAIN: Call is pending."
}
Provides information about devices that can accept control calls. Each device is described by a set of name/value pairs called device attributes.
Get information about some or all available control devices.
object Example: attrs={"interface":"relay"} If present, return only devices matching the specified
attributes. Note that special characters in the query
parameter need to URI-encoded to form a valid URL. For
example, As a special case, attribute This parameter also supports the |
{- "result": [
- {
- "path": [
- "net.egauge.slowd",
- "USB1",
- "1"
], - "name": "prm3",
- "mfg": "eGauge",
- "model": "PRM3",
- "sn": "00000007",
- "prot": "Modbus",
- "link": "serial",
- "quality": "0",
- "interface": [
- "relay",
- "modbus"
]
}
]
}
{- "result": {
- "modbus": {
- "method": [
- {
- "name": "read_coils",
- "in": "qq",
- "in_names": [
- "addr",
- "count"
], - "out": "ay",
- "doc": "Read <arg>count</arg> number of coils starting with the coil at address <arg>addr</arg>. The return value is a Modbus reply packet which may contain an exception status or the requested coil values."
}
]
}, - "relay": {
- "method": [
- {
- "name": "close",
- "in": "u",
- "in_names": [
- "n"
], - "out": "",
- "doc": "Close the relay with index <arg>n</arg>."
}, - {
- "name": "open",
- "in": "u",
- "in_names": [
- "n"
], - "out": "",
- "doc": "Open the relay with index <arg>n</arg>."
}
]
}
}, - "error": "Error message (present if an error occurred)."
}
if required | string Example: relay The name of an interface. Valid interface names must start with a letter and consist entirely of letters, digits, or underscores. |
max-depth | |
filter |
{- "result": {
- "method": [
- {
- "name": "close",
- "in": "u",
- "in_names": [
- "n"
], - "out": "",
- "doc": "Close the relay with index <arg>n</arg>."
}, - {
- "name": "open",
- "in": "u",
- "in_names": [
- "n"
], - "out": "",
- "doc": "Open the relay with index <arg>n</arg>."
}
]
}, - "error": "Error message (present if an error occurred)."
}
The array of methods provided by this interface. The methods are listed in no particular order.
if required | string Example: relay The name of an interface. Valid interface names must start with a letter and consist entirely of letters, digits, or underscores. |
max-depth | |
filter |
{- "result": [
- {
- "name": "close",
- "in": "u",
- "in_names": [
- "n"
], - "out": "",
- "doc": "Close the relay with index <arg>n</arg>."
}, - {
- "name": "open",
- "in": "u",
- "in_names": [
- "n"
], - "out": "",
- "doc": "Open the relay with index <arg>n</arg>."
}
], - "error": "Error message (present if an error occurred)."
}
if required | string Example: relay The name of an interface. Valid interface names must start with a letter and consist entirely of letters, digits, or underscores. |
idx required | integer >= 0 The index of a method. |
max-depth | |
filter |
{- "result": {
- "name": "close",
- "in": "u",
- "in_names": [
- "n"
], - "out": "",
- "doc": "Close the relay with index <arg>n</arg>."
}, - "error": "Error message (present if an error occurred)."
}
The name of the method. The name starts with a letter and consists entirely of letters, digits, or underscores.
if required | string Example: relay The name of an interface. Valid interface names must start with a letter and consist entirely of letters, digits, or underscores. |
idx required | integer >= 0 The index of a method. |
{- "result": "close",
- "error": "Error message (present if an error occurred)."
}
The DBus type signature of the input arguments to the method. An empty string indicates that the method accepts no input arguments.
if required | string Example: relay The name of an interface. Valid interface names must start with a letter and consist entirely of letters, digits, or underscores. |
idx required | integer >= 0 The index of a method. |
{- "result": "u",
- "error": "Error message (present if an error occurred)."
}
The names of the input arguments passed to the method. Each
argument name is meant to indicate the purpose of the respective
argument but, other than that, it is arbitrary. The documentation
string given by member doc
may also refer to these names.
The doc
member documentation for details.
if required | string Example: relay The name of an interface. Valid interface names must start with a letter and consist entirely of letters, digits, or underscores. |
idx required | integer >= 0 The index of a method. |
max-depth | |
filter |
{- "result": [
- "n"
], - "error": "Error message (present if an error occurred)."
}
if required | string Example: relay The name of an interface. Valid interface names must start with a letter and consist entirely of letters, digits, or underscores. |
idx required | integer >= 0 The index of a method. |
argidx required | integer >= 0 The index of a method argument. |
{- "result": "n",
- "error": "Error message (present if an error occurred)."
}
The DBus type signature of the return value of the method. An empty string indicates that the method returns no value.
if required | string Example: relay The name of an interface. Valid interface names must start with a letter and consist entirely of letters, digits, or underscores. |
idx required | integer >= 0 The index of a method. |
{- "result": "",
- "error": "Error message (present if an error occurred)."
}
Description of the purpose and operation of the method. Within
this string, references to input argument names are enclosed
within <arg>
and </arg>
tags to facilitate highlighting of
argument names.
if required | string Example: relay The name of an interface. Valid interface names must start with a letter and consist entirely of letters, digits, or underscores. |
idx required | integer >= 0 The index of a method. |
{- "result": "Close the relay with index <arg>n</arg>.",
- "error": "Error message (present if an error occurred)."
}
This service provides access to the values directly measured or derived from the sensors attached to the meter. Values obtained from other, remote, devices are not accessible through this service. Similarly, only the most recent (current) values are available. Use the /register service for accessing values stored in the database of the meter.
Derived values are called energy and apparent energy and are calculated from a pair of sensors. Specifically, energy values are calculated by numerically integrating over time the product of two sensor values. Similarly, apparent energy is calculated as the product of the normal (RMS) values of a pair of sensors. For example, if one sensor value measures an electrical current and the other a voltage, these calculate the real electric energy and apparent electric energy of the measured current/voltage pair, respectively.
This service guarantees to return an atomic snapshot of the measurements as of the time indicated by the timestamp in the response. Various query parameters can be used to select the exact data that is to be returned.
In particular, query parameters values
, energy
, apparent
, or
stats
can be used to select which sections to include in
the response. If none of these are specified, only the values
section is returned by default.
Query parameters rate
, cumul
, or type
can be used to select
the metrics to return for each sensor. If none of these are
specified, the rate
and type
metrics are returned by default.
Within the rate and cumulative metrics, query parameters normal
,
mean
, or freq
select what measurements to return. If none of
these are specified, all measurements are returned by default.
Finally, the env
, l
, and s
query parameters can be used to
select which sensors to include in the response. If none of these
are specified, all sensors are included in the response by
default.
A Python program illustrating the use of this service can be found
here.
This program takes advantage of class egauge.webapi.device.Local
to handle the details of encoding the HTTP requests and decoding
the responses.
values | boolean If present, the sensor values are returned in member |
energy | boolean If present, the calculated (real) energy values are returned
in member |
apparent | boolean If present, the calculate apparent energy values are returned
in member |
stats | boolean If present, statistics about the internal operation of the
meter are returned in member |
rate | boolean If present, the rate metrics of each sensor are included in
the response (members |
cumul | boolean If present, the cumulative metrics of each sensor are included
in the response (members |
type | boolean If present, the type code (physical
unit) of each sensor is included in the response (members
|
normal | boolean If present, the normal value of each sensor is included in the response. For most sensor types, this is the RMS value of the sensor signal but for some, this may be the average value (e.g., for temperature sensors) or a count (e.g., for pulse sensors). |
mean | boolean If present, the mean (average) value of each sensor is included in the response. |
freq | boolean If present, the frequency (in hertz) of each sensor signal is included in the response. It is calculated as the number of times the signal crosses zero per second. For some sensor types (e.g., temperature sensors), frequency is not calculated and the returned value is always zero. |
env | Array of strings Items Enum: "ALL" "Hpcb" "Tpcb" If present, this parameter specifies a comma-separated list of built-in environmental sensors whose measurements should be included in the response. The list may contain the following strings (case-insensitive):
Note Environmental sensors have only rate metrics, no cumulative metrics, and only have a normal value, no mean or frequency. |
l | Array of strings If present, this parameter specifies a comma-separated list of voltages whose metrics should be included in the response. The following voltage names may be specified (case-insensitve):
It is also possible to specify a range of voltages by using a
colon to separate the first and the last voltage to be
included in the range. For example, |
s | Array of strings If present, this parameter specifies a comma-separated list of sensors whose metrics should be included in the response. The following sensor names may be specified (case-insensitve):
|
{- "ts": "1579893622.000132",
- "values": {
- "L1": {
- "rate": {
- "n": 125.01754,
- "f": 60.0079803
}
}, - "L3-L1": {
- "rate": {
- "n": 0.631658375,
- "f": 59.9902229
}
}, - "S15": {
- "rate": {
- "n": 0.554819047,
- "f": 0
}
}, - "S5": {
- "rate": {
- "n": 3.87214255,
- "f": 0
}
}
}, - "energy": {
- "S1*L1": {
- "rate": -145.436066
}, - "S15*(L3-L1)": {
- "rate": -0.000681963167
}, - "-S5*L1": {
- "rate": -0.846870422
}
}
}
Provides access to various logs. Since logs may contain sensitive
information, this service is available only to users with the
save
privilege (see
/auth/rights).
Get the alert log. It has a fixed maximum length and consists of a sequence of prioritized and time-stamped entries. When the log fills up, older entries are replaced. Currently up to 50 alert log entries are supported.
after | number Example: after=1685739455.0433328 Restricts the method to apply only to those alerts whose
|
acked | boolean Restrict the method to apply only to those alerts whose
acknowledgment status matches the value of this query parameter
( |
ids | Array of integers[ items >= 0 ] Restricts the method to apply only to those alerts whose id is listed in the value of this query parameter. |
min_prio | integer [ 0 .. 7 ] Restrict the method to apply only to those alerts whose priority is at least as high as the value of this query parameter. |
{- "drops": 0,
- "log": [
- {
- "id": 1804289524,
- "acked": false,
- "prio": 6,
- "count": 1,
- "first": "1684952450.123",
- "last": "1684952450.123",
- "name": "Device up and running",
- "detail": "software reset"
}, - {
- "id": 1804289527,
- "acked": true,
- "prio": 3,
- "count": 15,
- "first": "1684952489.205",
- "last": "1685739471.800",
- "name": "Proxy-connection established",
- "detail": "",
- "reported": "1685739472.250"
}
], - "error": "Error message (present if an error occurred)."
}
Acknowledge all or some alerts.
after | number Example: after=1685739455.0433328 Restricts the method to apply only to those alerts whose
|
acked | boolean Restrict the method to apply only to those alerts whose
acknowledgment status matches the value of this query parameter
( |
ids | Array of integers[ items >= 0 ] Restricts the method to apply only to those alerts whose id is listed in the value of this query parameter. |
min_prio | integer [ 0 .. 7 ] Restrict the method to apply only to those alerts whose priority is at least as high as the value of this query parameter. |
"ack"
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Delete all or some alerts.
after | number Example: after=1685739455.0433328 Restricts the method to apply only to those alerts whose
|
acked | boolean Restrict the method to apply only to those alerts whose
acknowledgment status matches the value of this query parameter
( |
ids | Array of integers[ items >= 0 ] Restricts the method to apply only to those alerts whose id is listed in the value of this query parameter. |
min_prio | integer [ 0 .. 7 ] Restrict the method to apply only to those alerts whose priority is at least as high as the value of this query parameter. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Get the kernel log. It has a fixed size and consists of a sequence of prioritized and time-stamped entries. When the log fills up, older entries are replaced.
after | number Example: after=6.9801816 Limits the output to messages with a timestamp that is newer than the value specified by this parameter. The value must be a decimal number and may include a fractional part. The number is interpreted as seconds since the epoch. For most logs, the epoch is the Unix epoch (i.e., seconds since the start of Jan 1, 1970 UTC). However, for the kernel log, the epoch is the time the meter was powered up (booted). |
{- "log": [
- {
- "prio": 6,
- "ts": "6.9801816",
- "msg": " 6.980181] ehci-atmel: EHCI Atmel driver"
}, - {
- "prio": 3,
- "ts": "6.9886136",
- "msg": " 6.988613] atmel-ehci 500000.ehci: EHCI Host Controller"
}
], - "error": "Error message (present if an error occurred)."
}
Get a Lua log. Each log has a fixed size and consists of a sequence of time-stamped entries. When the log fills up, older entries are replaced.
name required | string Enum: "alertd" "ctrld" "teamd" The name of a Lua log. This may be one of:
|
after | number Example: after=6.9801816 Limits the output to messages with a timestamp that is newer than the value specified by this parameter. The value must be a decimal number and may include a fractional part. The number is interpreted as seconds since the epoch. For most logs, the epoch is the Unix epoch (i.e., seconds since the start of Jan 1, 1970 UTC). However, for the kernel log, the epoch is the time the meter was powered up (booted). |
{- "log": [
- {
- "ts": "1677872469.109779248",
- "msg": "Register cost script failed: Lua error: unknown register Grid."
}, - {
- "ts": "1677872470.100956573",
- "msg": "Tariff season: Winter"
}
]
}
Get the system log. It has a fixed size and consists of a sequence of messages. When the log fills up, older messages are replaced. The size of this log can be configured with /config/log/system/size.
{- "log": [
- {
- "msg": "Aug 31 22:11:08 devname syslog.info syslogd started: BusyBox v1.26.2"
}, - {
- "msg": "Aug 31 22:11:08 devname daemon.err statusd[427]: failed"
}
]
}
{- "result": {
- "var": {
- "sob_Grid-RD": {
- "value": "1677697200",
- "desc": "Start of the current billing interval."
}, - "kwh_sob_Grid-RD": {
- "value": "0",
- "desc": "Accumulated kWh for billing period."
}
}
}
}
object (luaVar) The persistent Lua variables. Such variables are non-volatile.
That is, their value is preserved across script restarts and
reboots (power-cycles). Persistent variables can be created and
manipulated with the built-in Lua module
|
{- "var": {
- "name1": {
- "result": {
- "value": "1677697200",
- "desc": "Start of the current billing interval."
}
}, - "name2": {
- "result": {
- "value": "1677697200",
- "desc": "Start of the current billing interval."
}
}
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
object (luaVar) The persistent Lua variables. Such variables are non-volatile.
That is, their value is preserved across script restarts and
reboots (power-cycles). Persistent variables can be created and
manipulated with the built-in Lua module
|
{- "var": {
- "name1": {
- "result": {
- "value": "1677697200",
- "desc": "Start of the current billing interval."
}
}, - "name2": {
- "result": {
- "value": "1677697200",
- "desc": "Start of the current billing interval."
}
}
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The persistent Lua variables. Such variables are non-volatile.
That is, their value is preserved across script restarts and
reboots (power-cycles). Persistent variables can be created and
manipulated with the built-in Lua module
persistent
.
{- "result": {
- "sob_Grid-RD": {
- "value": "1677697200",
- "desc": "Start of the current billing interval."
}, - "kwh_sob_Grid-RD": {
- "value": "0",
- "desc": "Accumulated kWh for billing period."
}
}
}
additional property | object (luaVarName) A persistent Lua variable. |
{- "name1": {
- "result": {
- "value": "1677697200",
- "desc": "Start of the current billing interval."
}
}, - "name2": {
- "result": {
- "value": "1677697200",
- "desc": "Start of the current billing interval."
}
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
additional property | object (luaVarName) A persistent Lua variable. |
{- "name1": {
- "result": {
- "value": "1677697200",
- "desc": "Start of the current billing interval."
}
}, - "name2": {
- "result": {
- "value": "1677697200",
- "desc": "Start of the current billing interval."
}
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string The name of a persistent Lua variable. |
max-depth | |
filter |
{- "result": {
- "result": {
- "value": "1677697200",
- "desc": "Start of the current billing interval."
}
}, - "error": "Error message (present if an error occurred)."
}
name required | string The name of a persistent Lua variable. |
value | string (luaVarNameValue) The current value of this persistent variable as a JSON-encoded string. While it is possible to write this value via the WebAPI, Lua scripts generally will also be updating the value as part of their execution, so any change in value may be temporary and whether or not a WebAPI write is detected by the scripts depends on the scripts themselves. |
desc | string (luaVarNameDesc) A brief, user-friendly description of the purpose of this persistent variable. This description is set when the persistent variable is created and is in the language chosen by the author of the Lua script that is created the variable. The string is, therefore, not localized to the user's environment. |
{- "result": {
- "value": "1677697200",
- "desc": "Start of the current billing interval."
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string The name of a persistent Lua variable. |
value | string (luaVarNameValue) The current value of this persistent variable as a JSON-encoded string. While it is possible to write this value via the WebAPI, Lua scripts generally will also be updating the value as part of their execution, so any change in value may be temporary and whether or not a WebAPI write is detected by the scripts depends on the scripts themselves. |
desc | string (luaVarNameDesc) A brief, user-friendly description of the purpose of this persistent variable. This description is set when the persistent variable is created and is in the language chosen by the author of the Lua script that is created the variable. The string is, therefore, not localized to the user's environment. |
{- "result": {
- "value": "1677697200",
- "desc": "Start of the current billing interval."
}
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
Reset to default. See the descriptions of the individual endpoints for their default values. Commonly, arrays and strings are cleared to empty, numbers are cleared to 0, and booleans are cleared to false
.
name required | string The name of a persistent Lua variable. |
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
A brief, user-friendly description of the purpose of this persistent variable. This description is set when the persistent variable is created and is in the language chosen by the author of the Lua script that is created the variable. The string is, therefore, not localized to the user's environment.
name required | string The name of a persistent Lua variable. |
{- "result": {
- "result": "Start of the current billing interval."
}, - "error": "Error message (present if an error occurred)."
}
name required | string The name of a persistent Lua variable. |
A brief, user-friendly description of the purpose of this persistent variable. This description is set when the persistent variable is created and is in the language chosen by the author of the Lua script that is created the variable. The string is, therefore, not localized to the user's environment.
{- "result": "Start of the current billing interval."
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string The name of a persistent Lua variable. |
A brief, user-friendly description of the purpose of this persistent variable. This description is set when the persistent variable is created and is in the language chosen by the author of the Lua script that is created the variable. The string is, therefore, not localized to the user's environment.
{- "result": "Start of the current billing interval."
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
The current value of this persistent variable as a JSON-encoded string.
While it is possible to write this value via the WebAPI, Lua scripts generally will also be updating the value as part of their execution, so any change in value may be temporary and whether or not a WebAPI write is detected by the scripts depends on the scripts themselves.
name required | string The name of a persistent Lua variable. |
The current value of this persistent variable as a JSON-encoded string.
While it is possible to write this value via the WebAPI, Lua scripts generally will also be updating the value as part of their execution, so any change in value may be temporary and whether or not a WebAPI write is detected by the scripts depends on the scripts themselves.
{- "result": "1677697200"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
name required | string The name of a persistent Lua variable. |
The current value of this persistent variable as a JSON-encoded string.
While it is possible to write this value via the WebAPI, Lua scripts generally will also be updating the value as part of their execution, so any change in value may be temporary and whether or not a WebAPI write is detected by the scripts depends on the scripts themselves.
{- "result": "1677697200"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
This service provides information about various third-party providers such as alert service providers, push data service providers, tariff information providers, and so on. Since the information depends on third-party sites, a working Internet connection is generally required in order for this service to work properly.
Get a list of available alert service providers.
Reporting alerts to a service provider requires executing the service activation command on the meter. That command then uses the service activation protocol to set up the provider to ensure it is able and willing to accept the alerts.
{
}
Get a list of available push service providers.
Sharing data with a push service provider requires executing the service activation command on the meter. That command then uses the service activation protocol to set up the provider to ensure it is able and willing to accept the data.
{- "reply": {
- "providers": [
]
}
}
Get a list of tariffs of a provider.
idx required | integer >= 0 The index of the tariff provider (utility) whose tariff list
to return. The index is assigned in order in which the
services appear in |
{- "tariffs": [
- "Residential General",
- "Medical Exemption",
- "Residential Demand",
- "C Commercial"
]
}
This service provides access to both current and past register values of the meter. A register can be thought of as a named column in a database that tracks the value of a measurement over time.
The database consists of rows of register values. Each row has a timestamp indicating the time at which the measurements were taken. The maximum numbers of the rows in the database is fixed and the rows are managed in a round-robin style. Typically, meters can hold up to the most recent 60 years of rows in the database. Older data is automatically dropped.
Older data is stored with a coarser granularity than younger data. A typical database might store the most recent one year of data with 1 minute between rows, the next 9 years with 15 minutes between rows, and the next 50 years with 24-hours between rows. The actual database configuration of a meter can be found in /sys/db.
This most simple use of this service is to fetch the current time
of the meter. This is accomplished with GET /register?reg=none
:
{"ts": "1678475544.123"}
Member ts
returns the time as decimal string. It is a Unix
timestamp that, converted to a
human-readable format, corresponds to March 10, 2023, 19:12:24 and
123ms in the UTC timezone. If the meter is connected to the
Internet, its time should usually be accurate (see
/config/net/ntp and
/config/net/ptp). However, it is advisable
for a client to check the time and confirm its reasonably close to
actual time as discrepancies could cause confusing and erroneous
results.
Without the reg=none
query parameter, the service also returns
information about the available registers. GET /register
might
return a result looks like this:
{
"ts": "1678475548.000",
"registers": [
{ "name": "V1", "type": "V", "idx": 3, "did": 31 },
{ "name": "grid, "type": "P", "idx": 7, "did": 6 },
{ "name": "temp, "type": "T", "idx": 8, "did": 7 },
{ "name": "mask", "type": "#", "idx": 14, "did": 34 }
]
}
Member registers
contains information about the registers
configured on the meter. The response shows that each register
has a name
, a type
which defines
the physical unit of that register, and several other attributes
which will be explained in more detail later. In our example,
there are registers called V1
, measuring a voltage, grid
measuring power, temp
measuring a temperature, and mask
which records a set of on/off flags.
If we want to find out the current temperature, we can use the
register index given by member idx
of the temp
register to
ask for its current rate. GET /register?reg=8&rate
might
return:
{
"ts": "1678475551.932",
"registers": [
{"name": "temp, "type": "T", "idx": 8, "did": 7, "rate": 13.5629997}
]
}
If we look up type T
in the type code
table, we find that the rate unit is
°C, so the response indicates that the current temperature is
about 13.6 °C or 56.4 °F.
We might also be interested in knowing the average temperature
over the last 24 hours. For that, we need to request the
recorded values for the current time (now
) and 24 hours or
86,400 seconds ago (now-86400
). This can be accomplished
with GET /register?reg=8&time=now,now-86400
:
{
"ts": "1678477555.345",
"registers": {"name": "temp", "type": "T", "idx": 8, "did": 7},
"ranges": [
{ "ts": "1678477555.154", "delta": 1, "rows": [["7494425049"]]},
{ "ts": "1678391100", "delta": 60, "rows": [["7033149079"]]}]
}
The first item returned in the ranges
array is for the current
time, the second for 24 hours ago. Subtracting the two
timestamps, we see that 86,455.154 seconds elapsed between them.
The reason this isn't exactly 86,400 seconds is that the
database records values at a certain granularity and it so
happened that the older row was recorded at a minute boundary.
If we subtract the decimal strings reported in the rows
arrays, we can see that the recorded temperature value increased
from 7,033,149,079 to 7,494,425,049 during that time — an
increase of 461,275,970. That's a big number, but what does it
mean? If we look up type code T
in the type
code table again, we see that the
temperature quantum is 0.001 and the description there also
explains how values are accumulated over time. Thus, if we
multiply the increase in value by the quantum and then divide
by the elapsed time in seconds, we get:
average temp = (461,275,970 · 0.001)°Cs / 86,455.154s = 5.335°C
That is, the average temperature over the past 24 hours was about 5.3 °C or 42 °F.
A Python program illustrating the use of this service can be found
here.
This program takes advantage of class
egauge.webapi.device.Register
to handle the details of encoding
the HTTP requests and decoding the responses. The class also takes
care of:
Converting rates, accumulated and average values to physical quantity objects that have a value and a unit. These objects also can convert to different units, so if you'd like to output energy as british thermal units (Btu) or power as horsepower (hp), you can.
Evaluating virtual registers. The class automatically fetches the formulas of virtual register and then calculates them based on the physical register values as needed.
delta | boolean Example: delta=true If present, return the first row of data as usual and each subsequent row as the amount of change since the previous row. This delta-encoding usually reduces the size of the response significantly. With Note that the value of this parameter is ignored and may even be empty. |
demand | string Example: demand=roll|900 This parameter may only be specified when output format JSON
(the default) or CSV is selected ( There are two principal methods for subdividing a time period into demand intervals. With the set demand interval method, the longer time period is subdivided into contiguous, non-overlapping demand intervals. For example, with 15 minute demand intervals, an hour would be subdivided into four demand intervals: from minute 0 through 14, 15 through 29, 30 through 44, and, finally 45 through 59. In contrast, with the rolling demand interval method, the larger time period is subdivided into overlapping demand intervals. After each demand calculation, the demand interval is shifted to the right by one minute. With rolling demand, the first demand interval would span minute 46 from the previous hour up to and including minute 0 of the current hour. The next interval would span minute 47 from the previous hour up to minute 1 of the current hour, and so on until the last interval would span minute 45 up to and including minute 59 of the current hour. The value of the
For example, query option When |
filename | string Example: filename=data.csv For |
format | string Enum: "backup" "csv" "json" Example: format=csv Selects the format of the response. This must be one of:
|
max-rows | number >= 1 |
if | string Example: if=epoch==1675276020 Only return data if the specified condition is |
rate | boolean Example: rate=true If present, return the Note that the value of this parameter is ignored and may even be empty. |
raw | boolean Example: raw=true If present, return accumulated values of registers as raw cumulative values which start at zero when the meter database was created. By default, the values are returned relative to the meter epoch, which means register values are zero at the time of the epoch. Note that the value of this parameter is ignored and may even be empty. |
reg | string Example: reg=all-0:7 Select a range of registers to be included in the result. A range can be one of:
If the value of this parameter starts with a plus sign ( It is also possible to specify combine Virtual registers are output only if they are selected in the
set of registers to be returned and query parameter
|
time | string Example: time=now-900:60:now,epoch A comma-separated list of time ranges. Only data for rows that fall within the specified time ranges are returned. Each time-range is processed independently and in the order specified. That is, if overlapping time-ranges are specified, the same rows may be output multiple times. |
ts | string Example: ts=UTC;%y/%m/%d %I:%M This query parameter controls how timestamps are handled
during this If non-empty, The Note that the format-string typically will need to be
percent-encoded. In particular, each |
view | string Example: view==environmentals Select registers to be included in the result by the view name specified as the value of this parameter. The view name must be prefixed by one of characters:
|
virtual | string Enum: "value" "formula" Example: virtual=formula This parameter specifies that virtual register should be returned in the response and also selects how to return them. The value of the parameter must be one of:
|
noHTTP | boolean Deprecated If present, requests that the response is to be returned without the normal HTTP headers. Only the body of the response will be returned. Note that the value of this parameter is ignored and may even be empty. |
{- "ts": "1678330813.000129799",
- "registers": [
- {
- "name": "use",
- "type": "P",
- "idx": 0,
- "formula": "+\"Grid\"+\"Solar\""
}, - {
- "name": "Grid",
- "type": "P",
- "idx": 17,
- "did": 0,
- "rate": 1798
}, - {
- "name": "Solar",
- "type": "P",
- "idx": 20,
- "did": 1,
- "rate": -4
}
], - "ranges": [
- {
- "ts": "1678298313.000129799",
- "delta": 1,
- "rows": [
- [
- "117607805899",
- "268487638108"
], - [
- "-224",
- "-480"
], - [
- "-218",
- "-481"
]
]
}, - {
- "ts": "1678298040",
- "delta": 60,
- "rows": [
- [
- "905",
- "-3533"
], - [
- "7663",
- "-34573"
], - [
- "12036",
- "-35703"
], - [
- "8418",
- "-36612"
], - [
- "6408",
- "-37505"
]
]
}
]
}
Note This service is deprecated and will be removed in the future. Please use /config/var instead.
This service provides the ability to store arbitrary name/value pairs on the meter. This is called server-side storage.
The service implements a hierarchical name-space, with hierarchy
levels separated by slash characters (/
). The top-level is
called a section, intermediate levels are called paragraphs, and
leaves are called variables. For example, the path
global/default/currency_code
refers to variable currency_code
in section global
, paragraph default
.
Variables may also be stored at the section level. The last
character of a URL determines whether the URL refers to a
section-level variable or a paragraph. If the URL ends with a
slash character (/
), it refers to a paragraph, otherwise, it refers
to a section-level variable.
Names may contain lower- and upper-case ASCII letters, digits,
dashes (-
), underscores (_
), and percent signs (%
).
Variable values may contain any UTF-8 codes except ASCII control codes (codes less than 0x20). Some variables may be defined as storing JSON-encoded values. For those, the value is limited to characters permissible by the JSON grammar.
What distinguishes server-storage variables from configuration settings is that the former are generally not used by the meter firmware. In other words, server-storage variables are used primarily by users of the WebAPI. There are a few exceptions however:
global/billing/start_day
: The meter firmware interprets this
as the day of the month on which the utility company reads the
utility meter. The assumption is that the meter is read at
noon on that day. The value must be a decimal integer string
in the range from 1-31. If the billing day number is greater
than the number of days in a particular month, it is assumed
that utility meter is read on the last day of that month.
The meter-firmware uses this, for example, to implement the
sob
time point.
global/billing/tariff_uri
: If not an empty string, this is
interpreted as the URL from which to fetch a Lua
script that calculates energy
cost. The meter will periodically poll this URL and download
any available updates to the script.
global/default/currency_symbol
: This is interpreted as the
symbol to use for currency values. This may be a single
Unicode symbol such as $
(Dollar) or €
(Euro), or it may
be a multi character string, such as CHF
for Swiss Franc.
The meter firmware uses the value of this variable when
outputting the unit of monetary values.
section required | string Example: global Name of the server-storage section. |
{- "name": "global/",
- "content": {
- "billing/start_day": "6",
- "billing/contract_demand": "10",
- "billing/bill_contracted_demand": "false",
- "billing/schedule": "R%20Residential%20General",
- "billing/surcharges": "0%2E07",
- "billing/taxes": "8%2E2",
- "billing/tariff_uri": "https%3A%2F%2Fapi%2Eegauge%2Enet%2Fv1%2Ftariffs%2F2%2Elua",
- "billing/provider": "Xcel%20Colorado"
}
}
Update or delete a server-storage section according to the contents of the request body.
section required | string Example: global Name of the server-storage section. |
^[-a-zA-Z%_/]*$ pattern property | string or null The new value of the variable. A Interpretation of this value is left to the applications that use it. By convention, this is often a URL-encoded string or a JSON-encoded value. |
{- "test/delete_me": null,
- "prefs/color": "cyan"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
section required | string Example: dash Name of the server-storage section. |
variable required | string Example: dashCfg-default Name of the section variable. |
{- "name": "dash/dashCfg-default",
- "content": {
- "": "{\"name\":\"default\",\"changed\":false,\"dashlets\":[{\"tag\":\"flow\",\"id\":1,\"cfg\":{\"nodes\":[{\"pos\":[0,0],\"icon\":\"house\",\"reg\":\"use\"},{\"pos\":[0,1],\"icon\":\"solar\",\"reg\":\"gen\"},{\"pos\":[1,0],\"icon\":\"battery\",\"reg\":\"bat\"},{\"pos\":[0,-1],\"icon\":\"grid\",\"reg\":\"Grid\",\"costsMoney\":true}]}}],\"layouts\":[{\"designWidth\":0,\"designHeight\":0,\"pages\":[{\"locs\":[{\"id\":1,\"x\":0,\"y\":0,\"w\":10,\"h\":10}]}]}]}"
}
}
Update or delete a section variable according to the contents of the request body.
section required | string Example: dash Name of the server-storage section. |
variable required | string Example: dashCfg-default Name of the section variable. |
string or null The new value of the variable. A Interpretation of this value is left to the applications that use it. By convention, this is often a URL-encoded string or a JSON-encoded value. |
{- "": "{\"name\":\"default\",\"changed\":false,\"dashlets\":[{\"tag\":\"flow\",\"id\":1,\"cfg\":{\"nodes\":[{\"pos\":[0,0],\"icon\":\"house\",\"reg\":\"use\"},{\"pos\":[0,1],\"icon\":\"solar\",\"reg\":\"gen\"},{\"pos\":[1,0],\"icon\":\"battery\",\"reg\":\"bat\"},{\"pos\":[0,-1],\"icon\":\"grid\",\"reg\":\"Grid\",\"costsMoney\":true}]}}],\"layouts\":[{\"designWidth\":0,\"designHeight\":0,\"pages\":[{\"locs\":[{\"id\":1,\"x\":0,\"y\":0,\"w\":10,\"h\":10}]}]}]}"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
section required | string Example: global Name of the server-storage section. |
paragraph required | string Example: billing Name of the paragraph. |
{- "name": "global/billing/",
- "content": {
- "start_day": "6",
- "contract_demand": "10",
- "bill_contracted_demand": "false",
- "schedule": "R%20Residential%20General",
- "surcharges": "0%2E07",
- "taxes": "8%2E2",
- "tariff_uri": "https%3A%2F%2Fapi%2Eegauge%2Enet%2Fv1%2Ftariffs%2F2%2Elua",
- "provider": "Xcel%20Colorado"
}
}
Update or delete a paragraph according to the contents of the request body.
section required | string Example: global Name of the server-storage section. |
paragraph required | string Example: billing Name of the paragraph. |
^[-a-zA-Z%_/]*$ pattern property | string or null The new value of the variable. A Interpretation of this value is left to the applications that use it. By convention, this is often a URL-encoded string or a JSON-encoded value. |
{- "start_day": "7",
- "taxes": null
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
section required | string Example: global Name of the server-storage section. |
paragraph required | string Example: billing Name of the paragraph. |
variable required | string Example: start_day Name of the variable. |
{- "name": "global/billing/start_day",
- "content": {
- "": "6"
}
}
Update or delete a variable according to the contents of the request body.
section required | string Example: global Name of the server-storage section. |
paragraph required | string Example: billing Name of the paragraph. |
variable required | string Example: start_day Name of the variable. |
^[-a-zA-Z%_/]*$ pattern property | string or null The new value of the variable. A Interpretation of this value is left to the applications that use it. By convention, this is often a URL-encoded string or a JSON-encoded value. |
{- "": "7"
}
{- "status": "OK",
- "error": "Error message (present if an error occurred)."
}
System information. Everything here is read-only.
Accessing this service requires the view_settings privilege.
{- "result": {
- "alert": [
- {
- "id": "badid",
- "reason": "Unknown alert"
}, - {
- "id": "pxyup",
- "reason": "Proxy-connection established"
}, - {
- "id": "pxydn",
- "reason": "Proxy-connection lost"
}, - {
- "id": "cfgchg",
- "reason": "Device-configuration changed"
}
], - "boot": {
- "reason": "software reset",
- "time": "1677287880.350",
- "backup_power_ok": true
}, - "branch": "beta",
- "db": {
- "max-registers": 64,
- "level": [
- {
- "head": "1726686333",
- "interval": 1000,
- "row-count": 32768,
- "volatile": true
}, - {
- "head": "1726686300",
- "interval": 60000,
- "row-count": 527040,
- "volatile": false
}, - {
- "head": "1726686000",
- "interval": 900000,
- "row-count": 350640,
- "volatile": false
}, - {
- "head": null,
- "interval": 86400000,
- "row-count": 21914,
- "volatile": false
}
]
}, - "dev": {
- "serial": [
- {
- "devpath": "USB2.1",
- "manufacturer": "eGauge",
- "product": "usb485",
- "sn": "DN02MI0P",
- "version": "2.00"
}
]
}, - "func": {
- "basic": {
- "max": {
- "arg": [
- {
- "name": "x",
- "type": "#"
}, - {
- "name": "y",
- "type": "#"
}
], - "help": "Returns the greater value of <arg>x</arg> and <arg>y</arg>.",
- "min-args": 2
}, - "sin": {
- "arg": [
- {
- "name": "x",
- "type": "#"
}
], - "help": "Returns sine of <arg>x</arg>, where <arg>x</arg> is an angle in degrees.",
- "min-args": 1
}
}, - "alert": {
- "dayavg": {
- "arg": [
- {
- "name": "reg",
- "type": "string"
}
], - "help": "Calculates the 24-hour average value for register <arg>reg</arg>.",
- "min-args": 1
}, - "cumul": {
- "arg": [
- {
- "name": "reg",
- "type": "string"
}, - {
- "name": "time",
- "type": "#"
}
], - "help": "Returns the cumulative value of register named <arg>reg</arg> at time <arg>time</arg>. If <arg>time</arg> is not specified, the current time is used.",
- "min-args": 1
}
}
}, - "modbus": {
- "client": {
- "map": {
- "sys_dev": {
- "option": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "reg": [
- {
- "name": "irradiance",
- "addr": 0,
- "type": "u32",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - {
- "name": "temp",
- "addr": 1,
- "type": "s32",
- "kind": "analog",
- "unit": "degC",
- "offset": 0,
- "scale": 0.01,
- "access": "ro"
}
]
}
}
}
}, - "model": "string",
- "net": {
- "homeplug": {
- "bridge": [
- {
- "mac": "32:b7:c2:96:c3:78",
- "speed": {
- "rx": 8934500,
- "tx": 9000000
}, - "type": "hpav",
- "vendor": "TP-Link"
}
]
}, - "ipv4": {
- "dhcp": true,
- "address": "192.168.1.42",
- "broadcast": "192.168.1.255",
- "netmask": "255.255.255.0",
- "network": "192.168.1.0",
- "gateway": "192.168.1.1"
}, - "link": [
- {
- "id": 1,
- "name": "lo",
- "state": "unknown",
- "addr": "00:00:00:00:00:00",
- "broadcast": "00:00:00:00:00:00"
}, - {
- "id": 2,
- "name": "sit0",
- "state": "down",
- "addr": "0.0.0.0",
- "broadcast": "0.0.0.0"
}, - {
- "id": 3,
- "name": "eth0",
- "state": "up",
- "addr": "45:ab:cd:03:76:fe",
- "broadcast": "ff:ff:ff:ff:ff:ff"
}, - {
- "id": 4,
- "name": "wlan0",
- "state": "dormant",
- "addr": "32:ab:cd:03:76:fc",
- "broadcast": "ff:ff:ff:ff:ff:ff"
}
], - "ntp": {
- "server": [
- {
- "address": "192.168.1.1",
- "name": null,
- "state": "SYNC",
- "weight": 1,
- "trust_level": 10,
- "stratum": 3,
- "next_poll": 615,
- "poll_interval": 1545,
- "offset": 0.228,
- "delay": 0.79,
- "jitter": 0.106
}, - {
- "address": "66.228.58.20",
- "name": "north-america.pool.ntp.org",
- "state": "PEER",
- "weight": 1,
- "trust_level": 10,
- "stratum": 3,
- "next_poll": 499,
- "poll_interval": 1480,
- "offset": -0.601,
- "delay": 39.609,
- "jitter": 2.258
}
]
}, - "wlan": {
- "ap": [
- {
- "bssid": "d8:08:a5:ae:4c:e1",
- "device": "wlan0",
- "flags": "[WPA2-PSK-CCMP][ESS]",
- "frequency": 2452,
- "signal_level": -18,
- "ssid": "wireless"
}, - {
- "bssid": "24:c1:e3:c7:2a:88",
- "device": "wlan0",
- "flags": "[WPA2-PSK-CCMP][WPS][ESS]",
- "frequency": 2412,
- "signal_level": -62,
- "ssid": "testwlan"
}
], - "net": [
- {
- "network_id": 0,
- "bssid": "any",
- "flags": "[DISABLED]",
- "ssid": "other"
}, - {
- "network_id": 1,
- "bssid": "any",
- "flags": "[CURRENT]",
- "ssid": "wireless"
}, - {
- "network_id": 2,
- "bssid": "any",
- "flags": "[DISABLED]",
- "ssid": "兔年 😁"
}
]
}
}, - "push": {
- "next": {
- "attempt": "1682658559.0"
}, - "last": {
- "attempt": "1682658499.0",
- "count": 900,
- "status": 200,
- "success": "1682658499.1",
- "ts": "1682658480.0"
}
}, - "reboot": true,
- "slowd": {
- "conns": [
- {
- "addr": "USB1",
- "fd": 9,
- "next_tick": 619,
- "readable": false,
- "refcnt": 2,
- "writable": true,
- "event_mask": 8193,
- "serial": {
- "baud": 19200,
- "parity": "n",
- "size": 5,
- "stop": 1
}, - "stats": {
- "bad": 13,
- "good": 3245,
- "timedout": 1,
- "rx": 34598,
- "tx": 23498
}, - "ifaces": [
- {
- "auto_attached": true,
- "name": "string",
- "next_tick": 145,
- "refcnt": 2,
- "scheme": "alphatechnics",
- "details": {
- "age": 2,
- "state": 5,
- "channels": [
- {
- "name": null,
- "unit": null,
- "sub_id": null,
- "ts": null,
- "val": null
}
]
}
}
]
}
]
}, - "sn": "G10400",
- "status": { },
- "team": {
- "lag": 0.195,
- "fft": {
- "last_update": "1708030925.1"
}, - "reg": {
- "Grid": {
- "available": true,
- "last": {
- "update": "1708042434",
- "val": "1190154529"
}, - "excess": "0"
}, - "SolarSPR": {
- "available": true,
- "last": {
- "update": "1708042434",
- "val": "12510606428"
}, - "excess": "0"
}
}
}, - "time": "1679104389.095469",
- "uptime": 1232588.28,
- "version": {
- "firmware": "4.5alpha1",
- "hardware": "3EA",
- "kernel": "5.15.95+ #47 Thu Feb 23 15:15:34 MST 2023"
}
}, - "error": "Error message (present if an error occurred)."
}
{- "result": [
- {
- "id": "badid",
- "reason": "Unknown alert"
}, - {
- "id": "pxyup",
- "reason": "Proxy-connection established"
}, - {
- "id": "pxydn",
- "reason": "Proxy-connection lost"
}, - {
- "id": "cfgchg",
- "reason": "Device-configuration changed"
}
], - "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a system alert. |
max-depth | |
filter |
{- "result": {
- "id": "pxyup",
- "reason": "Proxy-connection established"
}, - "error": "Error message (present if an error occurred)."
}
A short id that uniquely identifies this system alert. The id consists entirely of alpha-numeric characters.
A brief explanation of the system condition that triggers is system alert. The string is localized according to the selected language-code or is in English if a translation is unavailable.
This is true
if the battery/supercap backup power supply of the
meter was able to maintain power to the board until it was powered
up again. If false
, the supply failed and some subsystems of
the meter (e.g., the real-time clock) may have been cleared to
their reset state.
The reason for the most recent CPU reset. The strings vary depending on the hardware platform. For EG4xxx model devices, the possible values are:
general reset
: CPU was powered on when the backup battery
was depleted.
wakeup
: CPU was powered on when backup battery still had
sufficient charge left.
watchdog reset
: The CPU's watchdog timer triggered the reset.
software reset
: Firmware requested a reboot.
user reset
: Not applicable.
unknown reset
: Not applicable.
The time of the last user-initiated reboot. It is a decimal Unix
timestamp string or null
if
unavailable. Unanticipated reboots, e.g., due to power failure or
watchdog-timeouts do not update this resource.
null
is returned if no default branch has been
selected.
{- "result": {
- "max-registers": 64,
- "level": [
- {
- "head": "1726686333",
- "interval": 1000,
- "row-count": 32768,
- "volatile": true
}, - {
- "head": "1726686300",
- "interval": 60000,
- "row-count": 527040,
- "volatile": false
}, - {
- "head": "1726686000",
- "interval": 900000,
- "row-count": 350640,
- "volatile": false
}, - {
- "head": null,
- "interval": 86400000,
- "row-count": 21914,
- "volatile": false
}
]
}, - "error": "Error message (present if an error occurred)."
}
The maximum number of registers (columns) that can be stored in the meter's database.
{- "result": [
- {
- "head": "1726686333",
- "interval": 1000,
- "row-count": 32768,
- "volatile": true
}, - {
- "head": "1726686300",
- "interval": 60000,
- "row-count": 527040,
- "volatile": false
}, - {
- "head": "1726686000",
- "interval": 900000,
- "row-count": 350640,
- "volatile": false
}, - {
- "head": null,
- "interval": 86400000,
- "row-count": 21914,
- "volatile": false
}
], - "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a db level. |
max-depth | |
filter |
{- "result": {
- "head": "1726675935",
- "interval": 1000,
- "row-count": 32768,
- "volatile": true
}, - "error": "Error message (present if an error occurred)."
}
null
, no row
is currently available at this database level.
The time interval in milliseconds between database rows at this level. For example, a value of 1000 would indicate that the level contains second-by-second data rows.
The number of rows available at this storage level. Each database level is cyclical so a level with n rows and an interval of t milliseconds can retain the most recent n_·_t milliseconds worth of data.
This is true
if this level of the database storage is volatile.
The data in volatile levels is lost each time the meter is powered
up (rebooted).
{- "result": {
- "serial": [
- {
- "devpath": "USB2.1",
- "manufacturer": "eGauge",
- "product": "usb485",
- "sn": "DN02MI0P",
- "version": "2.00"
}
]
}, - "error": "Error message (present if an error occurred)."
}
{- "result": [
- {
- "devpath": "USB2.1",
- "manufacturer": "eGauge",
- "product": "usb485",
- "sn": "DN02MI0P",
- "version": "2.00"
}
], - "error": "Error message (present if an error occurred)."
}
seridx required | integer >= 0 The index of a serial port device. |
max-depth | |
filter |
{- "result": {
- "devpath": "USB2.1",
- "manufacturer": "eGauge",
- "product": "usb485",
- "sn": "DN02MI0P",
- "version": 2
}, - "error": "Error message (present if an error occurred)."
}
The device path of the serial port that uniquely identifies the port it is attached to.
Documents the eScript functions built into the meter.
{- "result": {
- "basic": {
- "max": {
- "arg": [
- {
- "name": "x",
- "type": "#"
}, - {
- "name": "y",
- "type": "#"
}
], - "help": "Returns the greater value of <arg>x</arg> and <arg>y</arg>.",
- "min-args": 2
}, - "sin": {
- "arg": [
- {
- "name": "x",
- "type": "#"
}
], - "help": "Returns sine of <arg>x</arg>, where <arg>x</arg> is an angle in degrees.",
- "min-args": 1
}
}, - "alert": {
- "dayavg": {
- "arg": [
- {
- "name": "reg",
- "type": "string"
}
], - "help": "Calculates the 24-hour average value for register <arg>reg</arg>.",
- "min-args": 1
}, - "cumul": {
- "arg": [
- {
- "name": "reg",
- "type": "string"
}, - {
- "name": "time",
- "type": "#"
}
], - "help": "Returns the cumulative value of register named <arg>reg</arg> at time <arg>time</arg>. If <arg>time</arg> is not specified, the current time is used.",
- "min-args": 1
}
}
}, - "error": "Error message (present if an error occurred)."
}
Documents the basic eScript functions. Basic functions are available any place eScript expressions may appear.
{- "result": {
- "max": {
- "arg": [
- {
- "name": "x",
- "type": "#"
}, - {
- "name": "y",
- "type": "#"
}
], - "help": "Returns the greater value of <arg>x</arg> and <arg>y</arg>.",
- "min-args": 2
}, - "sin": {
- "arg": [
- {
- "name": "x",
- "type": "#"
}
], - "help": "Returns sine of <arg>x</arg>, where <arg>x</arg> is an angle in degrees.",
- "min-args": 1
}
}, - "error": "Error message (present if an error occurred)."
}
The name of the eScript function.
Function names start with a letter and consist entirely of alpha-numeric
characters or underscores (_
).
name required | string The name of an eScript basic function. |
max-depth | |
filter |
{- "result": [
- {
- "name": "x",
- "type": "#"
}, - {
- "name": "y",
- "type": "#"
}
], - "error": "Error message (present if an error occurred)."
}
Description of the argument expected at index {idx} of the argument list.
name required | string The name of an eScript basic function. |
idx required | integer >= 0 The name index of a function argument. |
max-depth | |
filter |
{- "result": {
- "name": "x",
- "type": "#"
}, - "error": "Error message (present if an error occurred)."
}
The formal name of the argument. The name starts with a letter
and consist entirely of alpha-numeric characters or underscores
(_
). The name usually suggests the purpose of the
argument. It may also be referenced within the help string
(member help
). Other than that, the name has no significance.
name required | string The name of an eScript basic function. |
idx required | integer >= 0 The name index of a function argument. |
{- "result": "x",
- "error": "Error message (present if an error occurred)."
}
A type code indicating the type of the
argument. The special value string
indicates that the value
must be a string.
name required | string The name of an eScript basic function. |
idx required | integer >= 0 The name index of a function argument. |
{- "result": "#",
- "error": "Error message (present if an error occurred)."
}
The help string (documentation) for this function. In this
string, references to argument names are enclosed in arg
tags
using an XML-like syntax. For example, a reference to an argument
with name count
would appear as <arg>count</arg>
in this
string. This can be used to highlight argument names in the
document string, for example.
name required | string The name of an eScript basic function. |
{- "result": "Returns the greater value of <arg>x</arg> and <arg>y</arg>.",
- "error": "Error message (present if an error occurred)."
}
The minimum number of arguments that need to be passed when
calling this function. If zero, all arguments are optional. This
value is never larger than the length of the array given for
member arg
.
Documents the alert eScript functions. These functions are available only for eScript expressions evaluated as part of alert conditions.
{- "result": {
- "dayavg": {
- "arg": [
- {
- "name": "reg",
- "type": "string"
}
], - "help": "Calculates the 24-hour average value for register <arg>reg</arg>.",
- "min-args": 1
}, - "cumul": {
- "arg": [
- {
- "name": "reg",
- "type": "string"
}, - {
- "name": "time",
- "type": "#"
}
], - "help": "Returns the cumulative value of register named <arg>reg</arg> at time <arg>time</arg>. If <arg>time</arg> is not specified, the current time is used.",
- "min-args": 1
}
}, - "error": "Error message (present if an error occurred)."
}
The name of the eScript function.
Function names start with a letter and consist entirely of alpha-numeric
characters or underscores (_
).
name required | string The name of an eScript alert function. |
max-depth | |
filter |
{- "result": [
- {
- "name": "reg",
- "type": "string"
}
], - "error": "Error message (present if an error occurred)."
}
Description of the argument expected at index {idx} of the argument list.
name required | string The name of an eScript alert function. |
idx required | integer >= 0 The name index of a function argument. |
max-depth | |
filter |
{- "result": {
- "name": "reg",
- "type": "string"
}, - "error": "Error message (present if an error occurred)."
}
The formal name of the argument. The name starts with a letter
and consist entirely of alpha-numeric characters or underscores
(_
). The name usually suggests the purpose of the
argument. It may also be referenced within the help string
(member help
). Other than that, the name has no significance.
name required | string The name of an eScript alert function. |
idx required | integer >= 0 The name index of a function argument. |
{- "result": "reg",
- "error": "Error message (present if an error occurred)."
}
A type code indicating the type of the
argument. The special value string
indicates that the value
must be a string.
name required | string The name of an eScript alert function. |
idx required | integer >= 0 The name index of a function argument. |
{- "result": "string",
- "error": "Error message (present if an error occurred)."
}
The help string (documentation) for this function. In this
string, references to argument names are enclosed in arg
tags
using an XML-like syntax. For example, a reference to an argument
with name count
would appear as <arg>count</arg>
in this
string. This can be used to highlight argument names in the
document string, for example.
name required | string The name of an eScript alert function. |
{- "result": "Calculates the 24-hour average value for register <arg>reg</arg>.",
- "error": "Error message (present if an error occurred)."
}
The minimum number of arguments that need to be passed when
calling this function. If zero, all arguments are optional. This
value is never larger than the length of the array given for
member arg
.
{- "result": {
- "client": {
- "map": {
- "sys_dev": {
- "option": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "reg": [
- {
- "name": "irradiance",
- "addr": 0,
- "type": "u32",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - {
- "name": "temp",
- "addr": 1,
- "type": "s32",
- "kind": "analog",
- "unit": "degC",
- "offset": 0,
- "scale": 0.01,
- "access": "ro"
}
]
}
}
}
}, - "error": "Error message (present if an error occurred)."
}
{- "result": {
- "map": {
- "sys_dev": {
- "option": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "reg": [
- {
- "name": "irradiance",
- "addr": 0,
- "type": "u32",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - {
- "name": "temp",
- "addr": 1,
- "type": "s32",
- "kind": "analog",
- "unit": "degC",
- "offset": 0,
- "scale": 0.01,
- "access": "ro"
}
]
}
}
}, - "error": "Error message (present if an error occurred)."
}
System-defined (built-in) Modbus address maps. The user-defined maps are available at /config/modbus/client/map. If a user-defined map with the same name as a system map exists, it will shadow (mask) the system map with the same name.
{- "result": {
- "sys_dev": {
- "option": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "reg": [
- {
- "name": "irradiance",
- "addr": 0,
- "type": "u32",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - {
- "name": "temp",
- "addr": 1,
- "type": "s32",
- "kind": "analog",
- "unit": "degC",
- "offset": 0,
- "scale": 0.01,
- "access": "ro"
}
]
}
}, - "error": "Error message (present if an error occurred)."
}
Modbus map consisting of a list of register definitions and a set of options.
name required | string Example: egauge_prm3 The name of a system Modbus map (read-only). |
max-depth | |
filter |
{- "result": {
- "option": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "reg": [
- {
- "name": "irradiance",
- "addr": 0,
- "type": "u32",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - {
- "name": "temp",
- "addr": 1,
- "type": "s32",
- "kind": "analog",
- "unit": "degC",
- "offset": 0,
- "scale": 0.01,
- "access": "ro"
}
]
}, - "error": "Error message (present if an error occurred)."
}
A set of options. The meter currently supports the following options:
default-modbus-addr
: The Modbus unit-number to use by
default. This must be a decimal string. For example: 1
.
default-serial-params
: The default serial parameters to use
when the remote device is connected via a serial port
(Modbus/RTU). This must be a string. For example: 9600/8n1
for 9600 baud, 8 databits, no parity, 1 stop bit.
default-tcp-port
: The default TCP port number to use when
the remote device is connected via Modbus/TCP. This must be a
decimal string. For example: 6001
.
name required | string Example: egauge_prm3 The name of a system Modbus map (read-only). |
max-depth | |
filter |
{- "result": {
- "default-modbus-addr": "2",
- "default-serial-params": "9600/8n1"
}, - "error": "Error message (present if an error occurred)."
}
name required | string Example: egauge_prm3 The name of a system Modbus map (read-only). |
opt required | string The name of a Modbus map option. |
{- "result": "9600/8n1",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: egauge_prm3 The name of a system Modbus map (read-only). |
max-depth | |
filter |
{- "result": [
- {
- "name": "irradiance",
- "addr": 65535,
- "type": "u32",
- "encoding": "ABCD",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}
], - "error": "Error message (present if an error occurred)."
}
name required | string Example: egauge_prm3 The name of a system Modbus map (read-only). |
idx required | string The index of a Modbus map register. |
max-depth | |
filter |
{- "result": {
- "name": "irradiance",
- "addr": 65535,
- "type": "u32",
- "encoding": "ABCD",
- "kind": "analog",
- "unit": "W",
- "offset": 0,
- "scale": 0.1,
- "access": "ro"
}, - "error": "Error message (present if an error occurred)."
}
The name of the register. The user can choose this name freely so long as each register within a map has a unique name.
name required | string Example: egauge_prm3 The name of a system Modbus map (read-only). |
idx required | string The index of a Modbus map register. |
{- "result": "irradiance",
- "error": "Error message (present if an error occurred)."
}
name required | string Example: egauge_prm3 The name of a system Modbus map (read-only). |
idx required | string The index of a Modbus map register. |
{- "result": 65535,
- "error": "Error message (present if an error occurred)."
}
The type of the register value. This may be one of the following:
bit
: One-bit value (a coil, in Modbus terminology).s16
: Signed 16-bit integer.u16
: Unsigned 16-bit integer.s32
: Signed 32-bit integer.u32
: Unsigned 32-bit integer.s32l
: Signed 32-bit integer, word-swapped.u32l
: Unsigned 32-bit integer, word-swapped.s64
: Signed 64-bit integer.u64
: Unsigned 64-bit integer.float16
: IEEE-754 half-precision float.float16l
: IEEE-754 half-precision floating point,
little-endian (byte-swapped).float
: IEEE-754 single-precision float.floatl
: IEEE-754 single-precision float, word-swapped.double
: IEEE-754 double-precision float.name required | string Example: egauge_prm3 The name of a system Modbus map (read-only). |
idx required | string The index of a Modbus map register. |
{- "result": "u32",
- "error": "Error message (present if an error occurred)."
}
A
through H
or the letter X
. The letter A
represents the most
significant byte in the value. Higher letters represent bytes of
decreasing significance. For example, the string AB
indicates
that a 16-bit value is encoded with the most sigificant byte
first, followed by the least significant byte (i.e., the
big-endian encoding used by default for Modbus). Conversely, the
string BA
would encode the same value in little-endian, with the
least-sigificant byte first, followed by the most significant
byte. The letter X
can be used for bytes whose values should be
ignored (i.e., treated as 0). For example, the string BCDX
would encode a 24-bit value in the first three bytes of a Modbus
packet, with the fourth byte set to 0.
The encoding is ignored for non-numeric or word-swapped types
(i.e., it is used only for s16
, u16
, s32
, u32
, s64
,
u64
, float16
, float
, and double
).
name required | string Example: egauge_prm3 The name of a system Modbus map (read-only). |
idx required | string The index of a Modbus map register. |
{- "result": "ABCD",
- "error": "Error message (present if an error occurred)."
}
The kind of the register. Possible values are:
analog
: The value is continuous (the average of two values is
meaningful).
enum
: The value is discrete (the average of two values is not
meaningful). An example for this would be a numeric error code.
bitset
: Each bit in the value is a discrete on/off value.
An example for this would be a set of error flags.
name required | string Example: egauge_prm3 The name of a system Modbus map (read-only). |
idx required | string The index of a Modbus map register. |
{- "result": "analog",
- "error": "Error message (present if an error occurred)."
}
For register of the analog
kind, this defines the physical unit of
the register value. This must be one of the following:
#3
: Unit-less number with 3 decimal digits of precision.%
: Percentage.A
: Electric current in amperes.Ah
: Electric charge in ampere-hours.As
: Electric charge in ampere-seconds.C
: Temperature in degree celsius.Degrees
: Angle in degrees.Hz
: Frequency in hertz.Ohm
: Resistance in ohm.Pa
: Pressure in pascals.Pct
: Percentage.RH
: Relative humidity.Tmd
: Time in days.Tmh
: Time in hours.Tms
: Time in seconds.VA
: Apparent power in volt-amperes.VAh
: Apparent energy in volt-ampere-hours.V
: Electric potential in volts.W/m2
: Irradiance in watts-per-square-meter.W/m^2
: Irradiance in watts-per-square-meter.W
: Power in watts.Wh
: Energy in watt-hours.degC
: Temperature in degree celsius.deg
: Angle in degrees.g
: Mass in grams.hPa
: Pressure in hecto-pascals.h
: Time in hours.kAh
: Electric charge in kilo-ampere-hours.kO
: Resistance in kilo-ohms.kPa
: Pressure in kilo-pascals.kVAh
: Apparent energy in kilo-volt-ampere-hours.kW
: Power in kilo-watts.kWh
: Energy in kilo-watt-hours.kg
: Mass in kilo-grams.kvarh
: Reactive energy in kilo-volt-ampere-hours.m/s
: Speed in meters-per-second.m3/s
: Volume flow in cubic-meters-per-second.m3
: Volume in cubic-meters.mA
: Electric current in milli-amperes.mAh
: Electric charge in milli-ampere-hours.mSecs
: Time in milli-seconds.mV
: Electric potential in milli-volts.mV
: Electric potential in milli-volts.m^3/s
: Volume flow in cubic-meters-per-second.m^3
: Volume in cubic-meters.meters
: Distance in meters.mm
: Distance in milli-meters.mps
: Speed in meters-per-second.ms
: Time in milli-seconds.ohms
: Resistance in ohm.ppm
: Parts-per-million.s
: Time in seconds.secs
: Time in seconds.var
: Reactive power in volt-ampere.varh
: Reactive energy in volt-ampere-hours.°C
: Temperature in degree celsius.name required | string Example: egauge_prm3 The name of a system Modbus map (read-only). |
idx required | string The index of a Modbus map register. |
{- "result": "W",
- "error": "Error message (present if an error occurred)."
}
An offset value that is used to convert the Modbus register value to a value in the specified physical unit. Specifically, when the Modbus value of the register is reg, then corresponding physical value phys is calculated as:
phys = (reg +
offset
) *scale
where offset
is the value defined here and scale
is
the value defined for member scale
.
name required | string Example: egauge_prm3 The name of a system Modbus map (read-only). |
idx required | string The index of a Modbus map register. |
{- "result": 0,
- "error": "Error message (present if an error occurred)."
}
A scale value that is used to convert the Modbus register value to a value in the specified physical unit. Specifically, when the Modbus value of the register is reg, then corresponding physical value phys is calculated as:
phys = (reg +
offset
) *scale
where scale
is the value defined here and offset
is
the value defined for member offset
.
name required | string Example: egauge_prm3 The name of a system Modbus map (read-only). |
idx required | string The index of a Modbus map register. |
{- "result": 0.1,
- "error": "Error message (present if an error occurred)."
}
The access-mode of the register. It must be one of:
ro
: read-onlyrw
: read-writename required | string Example: egauge_prm3 The name of a system Modbus map (read-only). |
idx required | string The index of a Modbus map register. |
{- "result": "ro",
- "error": "Error message (present if an error occurred)."
}
The network settings that are in use by the meter. This may or may not be the same as the configuration established in /config/net.
{- "result": {
- "homeplug": {
- "bridge": [
- {
- "mac": "32:b7:c2:96:c3:78",
- "speed": {
- "rx": 8934500,
- "tx": 9000000
}, - "type": "hpav",
- "vendor": "TP-Link"
}
]
}, - "ipv4": {
- "dhcp": true,
- "address": "192.168.1.42",
- "broadcast": "192.168.1.255",
- "netmask": "255.255.255.0",
- "network": "192.168.1.0",
- "gateway": "192.168.1.1"
}, - "link": [
- {
- "id": 1,
- "name": "lo",
- "state": "unknown",
- "addr": "00:00:00:00:00:00",
- "broadcast": "00:00:00:00:00:00"
}, - {
- "id": 2,
- "name": "sit0",
- "state": "down",
- "addr": "0.0.0.0",
- "broadcast": "0.0.0.0"
}, - {
- "id": 3,
- "name": "eth0",
- "state": "up",
- "addr": "45:ab:cd:03:76:fe",
- "broadcast": "ff:ff:ff:ff:ff:ff"
}, - {
- "id": 4,
- "name": "wlan0",
- "state": "dormant",
- "addr": "32:ab:cd:03:76:fc",
- "broadcast": "ff:ff:ff:ff:ff:ff"
}
], - "ntp": {
- "server": [
- {
- "address": "192.168.1.1",
- "name": null,
- "state": "SYNC",
- "weight": 1,
- "trust_level": 10,
- "stratum": 3,
- "next_poll": 615,
- "poll_interval": 1545,
- "offset": 0.228,
- "delay": 0.79,
- "jitter": 0.106
}, - {
- "address": "66.228.58.20",
- "name": "north-america.pool.ntp.org",
- "state": "PEER",
- "weight": 1,
- "trust_level": 10,
- "stratum": 3,
- "next_poll": 499,
- "poll_interval": 1480,
- "offset": -0.601,
- "delay": 39.609,
- "jitter": 2.258
}
]
}, - "wlan": {
- "ap": [
- {
- "bssid": "d8:08:a5:ae:4c:e1",
- "device": "wlan0",
- "flags": "[WPA2-PSK-CCMP][ESS]",
- "frequency": 2452,
- "signal_level": -18,
- "ssid": "wireless"
}, - {
- "bssid": "24:c1:e3:c7:2a:88",
- "device": "wlan0",
- "flags": "[WPA2-PSK-CCMP][WPS][ESS]",
- "frequency": 2412,
- "signal_level": -62,
- "ssid": "testwlan"
}
], - "net": [
- {
- "network_id": 0,
- "bssid": "any",
- "flags": "[DISABLED]",
- "ssid": "other"
}, - {
- "network_id": 1,
- "bssid": "any",
- "flags": "[CURRENT]",
- "ssid": "wireless"
}, - {
- "network_id": 2,
- "bssid": "any",
- "flags": "[DISABLED]",
- "ssid": "兔年 😁"
}
]
}
}, - "error": "Error message (present if an error occurred)."
}
{- "result": {
- "bridge": [
- {
- "mac": "32:b7:c2:96:c3:78",
- "speed": {
- "rx": 8934500,
- "tx": 9000000
}, - "type": "hpav",
- "vendor": "TP-Link"
}
]
}, - "error": "Error message (present if an error occurred)."
}
{- "result": [
- {
- "mac": "32:b7:c2:96:c3:78",
- "speed": {
- "rx": 8934500,
- "tx": 9000000
}, - "type": "hpav",
- "vendor": "TP-Link"
}
], - "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a HomePlug bridge device. |
max-depth | |
filter |
{- "result": {
- "mac": "32:b7:c2:96:c3:78",
- "speed": {
- "rx": 8934500,
- "tx": 9000000
}, - "type": "hpav",
- "vendor": "TP-Link"
}, - "error": "Error message (present if an error occurred)."
}
Information about the current estimated speed at which communication occurs to this bridge device.
idx required | integer >= 0 The index of a HomePlug bridge device. |
max-depth | |
filter |
{- "result": {
- "rx": 8934500,
- "tx": 9000000
}, - "error": "Error message (present if an error occurred)."
}
The current estimated speed at which the meter can receive data from this bridge device. This is reported as bits/second.
The current estimated speed at which the meter can send data to this bridge device. This is reported as bits/second. On egauge2 devices, this member is unavailable.
The HomePlug chipset used by the bridge device. This member is available only if the chipset could be identified.
The name of the manufacturer of this HomePlug bridge device. This member is available only if the chipset could be identified.
The Internet Protocol v4 (IPv4) configuration.
{- "result": {
- "dhcp": true,
- "address": "192.168.1.42",
- "broadcast": "192.168.1.255",
- "netmask": "255.255.255.0",
- "network": "192.168.1.0",
- "gateway": "192.168.1.1"
}, - "error": "Error message (present if an error occurred)."
}
Whether or not to use DHCP
to automatically provision the IPv4 address. If true
, DHCP is
enabled. If false
, the manually configured IPv4 settings are
used.
max-depth | |
filter |
{- "result": [
- {
- "id": 1,
- "name": "lo",
- "state": "unknown",
- "addr": "00:00:00:00:00:00",
- "broadcast": "00:00:00:00:00:00"
}, - {
- "id": 2,
- "name": "sit0",
- "state": "down",
- "addr": "0.0.0.0",
- "broadcast": "0.0.0.0"
}, - {
- "id": 3,
- "name": "eth0",
- "state": "up",
- "addr": "45:ab:cd:03:76:fe",
- "broadcast": "ff:ff:ff:ff:ff:ff"
}, - {
- "id": 4,
- "name": "wlan0",
- "state": "dormant",
- "addr": "32:ab:cd:03:76:fc",
- "broadcast": "ff:ff:ff:ff:ff:ff"
}
], - "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a link. |
max-depth | |
filter |
{- "result": {
- "active": true,
- "addr": "32:ab:cd:03:76:fc",
- "broadcast": "ff:ff:ff:ff:ff:ff",
- "id": 1,
- "name": "wlan0",
- "state": "up",
- "stat": {
- "rx": {
- "bytes": 0,
- "packets": 0,
- "errors": 0,
- "dropped": 0
}, - "tx": {
- "bytes": 0,
- "packets": 0,
- "errors": 0,
- "dropped": 0
}
}
}, - "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a link. |
max-depth | |
filter |
{- "result": {
- "rx": {
- "bytes": 0,
- "packets": 0,
- "errors": 0,
- "dropped": 0
}, - "tx": {
- "bytes": 0,
- "packets": 0,
- "errors": 0,
- "dropped": 0
}
}, - "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a link. |
max-depth | |
filter |
{- "result": {
- "bytes": 0,
- "packets": 0,
- "errors": 0,
- "dropped": 0
}, - "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a link. |
max-depth | |
filter |
{- "result": {
- "bytes": 0,
- "packets": 0,
- "errors": 0,
- "dropped": 0
}, - "error": "Error message (present if an error occurred)."
}
Network Time Protocol (NTP) status.
{- "result": {
- "server": [
- {
- "address": "192.168.1.1",
- "name": null,
- "state": "SYNC",
- "weight": 1,
- "trust_level": 10,
- "stratum": 3,
- "next_poll": 615,
- "poll_interval": 1545,
- "offset": 0.228,
- "delay": 0.79,
- "jitter": 0.106
}, - {
- "address": "66.228.58.20",
- "name": "north-america.pool.ntp.org",
- "state": "PEER",
- "weight": 1,
- "trust_level": 10,
- "stratum": 3,
- "next_poll": 499,
- "poll_interval": 1480,
- "offset": -0.601,
- "delay": 39.609,
- "jitter": 2.258
}
]
}, - "error": "Error message (present if an error occurred)."
}
Status of each configured NTP server.
{- "result": [
- {
- "address": "192.168.1.1",
- "name": null,
- "state": "SYNC",
- "weight": 1,
- "trust_level": 10,
- "stratum": 3,
- "next_poll": 615,
- "poll_interval": 1545,
- "offset": 0.228,
- "delay": 0.79,
- "jitter": 0.106
}, - {
- "address": "66.228.58.20",
- "name": "north-america.pool.ntp.org",
- "state": "PEER",
- "weight": 1,
- "trust_level": 10,
- "stratum": 3,
- "next_poll": 499,
- "poll_interval": 1480,
- "offset": -0.601,
- "delay": 39.609,
- "jitter": 2.258
}
], - "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of an NTP server. |
max-depth | |
filter |
{- "result": {
- "address": "192.168.1.1",
- "name": null,
- "state": "SYNC",
- "weight": 1,
- "trust_level": 10,
- "stratum": 3,
- "next_poll": 615,
- "poll_interval": 1545,
- "offset": -0.601,
- "delay": 0.79,
- "jitter": 0.106
}, - "error": "Error message (present if an error occurred)."
}
The network address of the configured NTP server. This is
typically a string-representation of the server's IP address,
which may be either an IP v4 or v6 address. If the address is
unknown, this is null
.
The estimated time it takes for a network packet from the meter to reach this NTP server (or vice versa). The unit is milliseconds. This is available only if the meter considers this server a peer.
The estimated jitter (variation) for the time it takes for a network packet from the meter to reach this NTP server (or vice versa). The unit is milliseconds. This is available only if the meter considers this server a peer.
The hostname of the configured NTP server. If the name is
unknown, this is null
. This normally happens when the NTP
server is configured as an IP address.
The time that needs to elapse before the meter contacts this server again. The unit is seconds.
The estimated difference between the meter's time and this NTP server's time. The unit is milliseconds. This is available only if the meter considers this server a peer.
The interval of time between successive contacts from the meter to this server. The unit is seconds.
The meter's view of the current state of this NTP server. It may have one of the following values:
INVAL
: The server is invalid, e.g., because the hostname
could not be resolved to a network address or because the remote
server is not responding.
TRACK
: The server is being tracked and, if everything
continues to work fine, it will enter the PEER
state shortly.
PEER
: The server is a peer and could be used as a time source.
SYNC
: The server is a peer and the meter's time is
synchronized with this server.
The meter's estimate of the time accuracy provided by this server. Smaller numbers mean higher accuracy. A stratum 0 server is the most accurate (atomic clock or GPS clock). This is available only if the meter considers this server a peer.
The meter's estimate of how trustworthy this server's time is. Higher numbers indicate a higher level of trustworthiness.
The meter's estimate of the weight that should be given to this NTP server's time.
{- "result": {
- "ap": [
- {
- "bssid": "d8:08:a5:ae:4c:e1",
- "device": "wlan0",
- "flags": "[WPA2-PSK-CCMP][ESS]",
- "frequency": 2452,
- "signal_level": -18,
- "ssid": "wireless"
}, - {
- "bssid": "24:c1:e3:c7:2a:88",
- "device": "wlan0",
- "flags": "[WPA2-PSK-CCMP][WPS][ESS]",
- "frequency": 2412,
- "signal_level": -62,
- "ssid": "testwlan"
}
], - "net": [
- {
- "network_id": 0,
- "bssid": "any",
- "flags": "[DISABLED]",
- "ssid": "other"
}, - {
- "network_id": 1,
- "bssid": "any",
- "flags": "[CURRENT]",
- "ssid": "wireless"
}, - {
- "network_id": 2,
- "bssid": "any",
- "flags": "[DISABLED]",
- "ssid": "兔年 😁"
}
]
}, - "error": "Error message (present if an error occurred)."
}
{- "result": [
- {
- "bssid": "d8:08:a5:ae:4c:e1",
- "device": "wlan0",
- "flags": "[WPA2-PSK-CCMP][ESS]",
- "frequency": 2452,
- "signal_level": -18,
- "ssid": "wireless"
}, - {
- "bssid": "24:c1:e3:c7:2a:88",
- "device": "wlan0",
- "flags": "[WPA2-PSK-CCMP][WPS][ESS]",
- "frequency": 2412,
- "signal_level": -62,
- "ssid": "testwlan"
}
], - "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a WLAN access point. |
max-depth | |
filter |
{- "result": {
- "bssid": "d8:08:a5:ae:4c:e1",
- "device": "wlan0",
- "flags": "[WPA2-PSK-CCMP][ESS]",
- "frequency": 2452,
- "signal_level": -18,
- "ssid": "wireless"
}, - "error": "Error message (present if an error occurred)."
}
The BSSID (basic service set identifier) of this access point.
This is a MAC address formatted as six two-digit hex numbers,
separated by colons (:
).
The name of the wireless device through which this access point was found.
A set of flags enclosed in square brackets. Each flag gives some information about the capabilities of this access point.
The following flags are currently defined:
DMG
: Indicates the access-point supports 802.11ad
directional multi-gigabit (DMG).
EBSS
: The access-point supports extended wireless networks.
FILS
: The access-point supports 802.11ai fast initial link setup.
FST
: The access-point supports fast session transfers.
HS20
: The access-point supports Hot Spot 2.0 (Wi-Fi
Certified Passpoint).
IBSS
: The access-point supports independent basic service
set (ad-hoc) wireless networks.
MESH
: The access-point uses a mesh network.
OSEN
: The access-point supports Server-only authenticated
layer 2 Encryption Network.
OWE-TRANS
: See Opportunistic Wireless Extension.
OWE-TRANS-OPEN
: See Opportunistic Wireless Extension.
P2P
: The access-point supports point-to-point (WiFi Direct)
wireless networks.
PBSS
: Indicates the access-point supports personal basic
service set wireless networks.
RSN
: Indicates the access-point supports Robust Security
Network (RSN).
UTF-8
: The SSID is UTF-8 encoded.
WEP
: The access-point supports Wired Equivalent Privacy (WEP).
WPA
: The access-point supports Wi-Fi Protected Access (WPA).
WPA2
: The access-point supports Wi-Fi Protected Access (WPA)
version 2.
WPS
: The access-point supports Wi-Fi Protected Setup (WPS).
Encryption-related flags may be followed by various sub-flags that
are separated by a +
character. For example,
WPA2-PSK-CCMP+TKIP
indicates that WPA2-PSK-CCMP is supported
with the TKIP protocol.
The signal-strength (in dB) with which the meter is receiving this access point. This is typically a negative number with larger (less negative) numbers indicating higher signal strength.
{- "result": [
- {
- "network_id": 0,
- "bssid": "any",
- "flags": "[DISABLED]",
- "ssid": "other"
}, - {
- "network_id": 1,
- "bssid": "any",
- "flags": "[CURRENT]",
- "ssid": "wireless"
}, - {
- "network_id": 2,
- "bssid": "any",
- "flags": "[DISABLED]",
- "ssid": "兔年 😁"
}
], - "error": "Error message (present if an error occurred)."
}
idx required | integer >= 0 The index of a WLAN network. |
max-depth | |
filter |
{- "result": {
- "network_id": 1,
- "bssid": "any",
- "flags": "[CURRENT]",
- "ssid": "wireless"
}, - "error": "Error message (present if an error occurred)."
}
The BSSID (basic service set identifier) of the access point to
use for this network. This is a MAC address formatted as six
two-digit hex numbers separated by colons (:
). If unset, this
is any
instead.
A set of flags which are enclosed in square brackets. The following flags are currently defined:
CURRENT
: Indicates that this network is currently being
used.
DISABLED
: The network is disabled from being used.
TEMP-DISABLED
: The network is temporarily disabled from
being used.
P2P-PERSISTENT
: Indicates a point-to-point (WiFi Direct)
connection. This is not used by the meter.
The status of the push (data sharing) service. See /config/push.
{- "result": {
- "next": {
- "attempt": "1682658559.0"
}, - "last": {
- "attempt": "1682658499.0",
- "count": 900,
- "status": 200,
- "success": "1682658499.1",
- "ts": "1682658480.0"
}
}, - "error": "Error message (present if an error occurred)."
}
The next time the meter will send push data to the server. The time is expressed as a decimal Unix timestamp string. If unavailable, this is an empty string.
{- "result": {
- "attempt": "1682658499.0",
- "count": 900,
- "status": 200,
- "success": "1682658499.1",
- "ts": "1682658480.0"
}, - "error": "Error message (present if an error occurred)."
}
The last time the meter sent (or attempted to send) push data to the server. The time is expressed as a decimal Unix timestamp string. If unavailable, this is an empty string.
The number of register data rows that were sent to the server during the last push. If unavailable, this is zero.
The HTTP status returned by the server at the end of the last push. If unavailable, this is zero.
The most recent time push data was successfully sent to the server. The time is expressed as a decimal Unix timestamp string. If unavailable, this is an empty string.
The time of the last register data row sent to the server. The time is expressed as a decimal Unix timestamp string. If unavailable, this is an empty string.
This is true
if the meter needs to be rebooted, e.g., due to a
configuration change. If so, a reboot
command should be issued at the
next opportune moment.
{- "result": {
- "conns": [
- {
- "addr": "USB1",
- "fd": 9,
- "next_tick": 619,
- "readable": false,
- "refcnt": 2,
- "writable": true,
- "event_mask": 8193,
- "serial": {
- "baud": 19200,
- "parity": "n",
- "size": 5,
- "stop": 1
}, - "stats": {
- "bad": 13,
- "good": 3245,
- "timedout": 1,
- "rx": 34598,
- "tx": 23498
}, - "ifaces": [
- {
- "auto_attached": true,
- "name": "string",
- "next_tick": 145,
- "refcnt": 2,
- "scheme": "alphatechnics",
- "details": {
- "age": 2,
- "state": 5,
- "channels": [
- {
- "name": "temp0",
- "unit": "°C",
- "sub_id": 7,
- "ts": "1677523091.000900435",
- "val": 120.356
}
]
}
}
]
}
]
}, - "error": "Error message (present if an error occurred)."
}
The serial number of the meter. Even though it is called
serial-number, this string may contain letters, dashes (-
) and
underscores (_
) as well.
The status of long-running operations. For security reasons, this resource always returns an empty object. That is, only applications that know the token of a long-running operation can inquire on its status.
token required | string The token returned when a long-running operation was started. |
max-depth | |
filter |
{- "result": {
- "args": [
- "4.5alpha1",
- "4.5alpha1"
], - "done": true,
- "error": "NOT_NEWER",
- "ts": "1679103764.278772467"
}, - "error": "Error message (present if an error occurred)."
}
A list of strings that provide additional information to the
error
or info
tag.
token required | string The token returned when a long-running operation was started. |
max-depth | |
filter |
{- "result": [
- "4.5alpha1",
- "4.5alpha1"
], - "error": "Error message (present if an error occurred)."
}
A string that provides additional information to the error
or
info
tag.
token required | string The token returned when a long-running operation was started. |
idx required | integer >= 0 The index of a status argument. |
{- "result": "4.5alpha1",
- "error": "Error message (present if an error occurred)."
}
This is true
if the operation has completed or false
if it is
still in progress.
If set, indicates that an error occurred. The meaning of this
value depends on the operation being performed. Generally, it is
a short tag. For example, OOM
to indicate "out of
memory". Before presenting the tag to a user, it must be
translated to a human-readable string. The strings in member
args
provide additional info about why the error occurred.
If set, indicates the action the long-running operation is
currently performing. The meaning of this value depends on the
operation being performed. Generally, the string is a short tag.
For example, RESTORE
to indicate that data is being restored to
the database. Before presenting the tag to a user, it must be
translated to a human-readable string. The strings in member
args
provide additional info about the action being performed.
A progress indicator that reports the portion of the operation (or action) that has been completed so far. The value is in the range from 0 to 1, where 0 means that the operation has just started and 1 means the operation is 100% complete.
The result of the slow operation. Not all operations provide a result and while the operation is ongoing, the result may be changing over time. Once the operation is done, the result is stable and won't change anymore.
The time when this status was created. It is a decimal Unix timestamp string.
The team status. This describes the current status of all registers whether locally measured or obtained from a remote device.
{- "result": {
- "lag": 0.195,
- "fft": {
- "last_update": "1708030925.1"
}, - "reg": {
- "Grid": {
- "available": true,
- "last": {
- "update": "1708042434",
- "val": "1190154529"
}, - "excess": "0"
}, - "SolarSPR": {
- "available": true,
- "last": {
- "update": "1708042434",
- "val": "12510606428"
}, - "excess": "0"
}
}
}, - "error": "Error message (present if an error occurred)."
}
The number of seconds the register values are lagging behind real time. If all remote devices are online and responsive, lag should typically be less than 500 milliseconds.
The Unix timestamp of when the FFT
calculations were updated most recently. If null
, it indicates
that no FFT calculations are being performed. If not null
, the
timestamp typically lags behind the current time by a couple of
seconds because FFTs cannot be calculated in real time.
{- "result": {
- "Grid": {
- "available": true,
- "last": {
- "update": "1708042434",
- "val": "1190154529"
}, - "excess": "0"
}, - "SolarSPR": {
- "available": true,
- "last": {
- "update": "1708042434",
- "val": "12510606428"
}, - "excess": "0"
}
}, - "error": "Error message (present if an error occurred)."
}
name required | string The register name. |
max-depth | |
filter |
{- "result": {
- "available": true,
- "last": {
- "update": "1708042434",
- "val": "-9767738213"
}, - "excess": "0"
}, - "error": "Error message (present if an error occurred)."
}
True if the register has an up-to-date value. If false, it typically means that the (remote) device measuring its value is not reachable at the moment.
The pending amount of excess for this register. For locally measured registers and discrete registers, this is always zero. For remote registers, this becomes non-zero if the rate of change to be recorded is outside of the actual rate plus/minus 10%. This is being done to prevent recording big spikes when a remote device is offline for some time and then comes back online. Instead of recording a big jump, an excess is recorded which will then be played back over time by inflating (or deflating) the recorded rate by up to +/-10% of the actual rate until the excess has been drained. The excess of all registers can be reset to zero with the clear command.
name required | string The register name. |
max-depth | |
filter |
{- "result": {
- "update": "1708042434",
- "val": "-9767738213"
}, - "error": "Error message (present if an error occurred)."
}
The decimal Unix timestamp of when this register was last updated.
The current value of the register as signed 64-bit integer converted to a decimal string. Except for discrete registers, this is an accumulated value (see Section Type Codes for details).
The current meter time as a decimal Unix timestamp string.
Items marked deprecated should not be used going forward as they will be removed in a future firmware release.
Most device attributes are simple name/value pairs with both the
name and the value consisting of strings. Two exceptions are the
path
and interface
attributes:
path
: The value of this attribute is a list of strings. The
list provides a unique path to the device. If present, it
must be the first attribute. This is the only attribute which
provides a guaranteed unique identifier for the device. The
flip-side is that the path is not necessary stable. For
example, if a USB device is moved from one port to another,
the path would change. Thus, depending on the needs of the
application, it may be more appropriate to identify a device
through other means, such as the manufacturer, model, and
serial-number, which, together, might provide a unique
identifier for the device that remains stable regardless of
how the device is connected to the meter.
interface
: The value of this attribute is also a list of
strings. Each entry is the name of an interface that is
supported by the device. A description of each interface can
be obtained from /ctrl/interface.
The meaning of other attributes is given below:
link
: The physical link used by the device. If present, the
value must be one of:
Ethernet
: The device is connected via Ethernet.
USB
: The device is connected via USB.
serial
: The device is connected via a serial link such as
RS485, RS232, or similar.
mfg
: The name of the manufacturer of the device (e.g.,
eGauge
).
model
: The model name of the device (e.g., PRM3
).
name
: If present, a user-selected name of the device.
prot
: The communication protocol used by the device. If
present, it must be one of:
CoAP
: The device uses the Constrained Application
Protocol.
CtrlByWeb
: The device uses the ControlByWeb XML protocol.
Modbus
: The device uses the
Modbus protocol.
RTCoA
: The device uses the Radio Thermostat Co of America
protocol.
SCPI
: The device uses the
SCPI
protocol (pronounced "skippy".
SMANet
: The device uses the SMAnet protocol used by older PV
inverters manufactured by SMA.
quality
: Devices that can potentially be reached through
multiple paths may set this attribute to indicate the
communication-quality of a particular path. The value of this
attribute must be a decimal string. Paths that provide better
communication-quality in some sense (e.g., higher speed or
smaller loss-rate) should have a higher value. When mapping a
set of attributes to a set of paths, the paths will be ordered
by decreasing quality value such that higher quality paths
will appear before lower quality ones.
sn
: The serial "number" of the device. Even though called a
number, the value may also contain non-digit characters (e.g.,
0Y0035
).
eScript is a simple scripting language which supports basic arithmetic operations (addition, subtraction, multiplication, and division) of double-precision floating point numbers. The operations follow normal precedence rules. Parentheses can be used to force evaluation in a particular order. A C-like ternary operator is also supported for conditional evaluation. Specifically:
c ? e1 : e2
evaluates to e1
if c
is non-zero and to e2
otherwise.
The latest instantaneous value of a meter register can be obtained
with the $
operator which must be followed by a register name in
quotes. For example:
$"Grid"
would evaluate to the instantaneous value of register Grid
.
eScript also supports various functions such as sin()
to
calculate the sine of an angle or THD()
to calculate
total-harmonic distortion in a signal. A list of functions is
available at /sys/func.
An eScript expression which starts with a colon (:
) is
interpreted as a Lua expression.
Filter-specs can be used to return only certain members of an object or certain elements of an array.
For example, {foo,bar}
would limit the output of an object to the
members with names foo
and bar
. Similarly, [0,3:5]
would
limit the output of an array to the elements with indices 0, 3, 4,
and 5.
If a member or array filter is empty, all members/elements of that
object/array are returned. This is handy when filtering deeper
levels of a response. For example [{addr}]
would return only
member addr
from all the objects in the returned array.
For a more complex example, the filter-spec {reg[7:8{addr}]}
would, for each object in the response, only return the reg
member
and, within each reg
array, only elements with indices 7 or 8
would be returned. Within the objects of those elements, only the
addr
member would be returned.
Note that braces and square brackets normally need to be
percent-encoded before using them in a URL (e.g., %7B
for {
).
The formal syntax of a filter-spec (FSPEC) is given by the EBNF syntax below. No whitespace is allowed between symbols.
FSPEC = [OBJECT_FILTER | ARRAY_FILTER] .
OBJECT_FILTER = "{" MEMBER_FILTER {"," MEMBER_FILTER)} "}" .
ARRAY_FILTER = "["INDEX_FILTER {"," INDEX_FILTER)} "]" .
MEMBER_FILTER = [NAME | "(" NAME {"," NAME} ")"] FSPEC .
INDEX_FILTER = [RANGE | "(" RANGE {"," RANGE} ")"] FSPEC .
RANGE = UINT [ ":" UINT ] .
UINT = DIGIT { DIGIT } .
DIGIT = "0".."9".
NAME = ALPHA | DIGIT | "-" | "." | "_" | "~" | PCT_ENC .
ALPHA = "a".."z" | "A".."Z" .
PCT_ENC = "%" HEX HEX .
HEX = DIGIT | "a".."f" | "A".."F" .
EMPTY = .
In words: a filter-spec can restrict the members returned from an
object by listing zero or more member names, separated by commas, in
curly braces. Only listed member names will be returned. As a
special case, the empty object filter {}
returns all members. A
member name can be followed by a nested filter-spec to further
filter the value the member with that name. A common nested
filter-spec can also be applied to several comma-separated member
names by enclosing them in parentheses and writing the common
filter-spec after the closing parenthesis.
Similarly, a filter-spec can restrict the elements returned from an
array by listing zero or more indices, separated by commas, in
square brackets. Only listed indices will be returned. As a
special case, the empty array filter []
returns all elements in an
array. An index can be a single unsigned integer or a range of
indices written as a starting index, a colon, and an ending index.
For example, range 10:20
would corresponds to indices 10 through
20. An index can be followed by a nested filter-spec to further
filter the value of the element with that index. A common nested
filter-spec can also be applied to several comma-separated indices
by enclosing them in parentheses and writing the common filter-spec
after the closing parenthesis.
The link type of a remote device determines the communication protocol that is used to talk to the device and the format of the address string. Supported link-types are:
ailux
: This link type can be used to read data from heat
pump controllers manufactured by Alpha
Innotec. The address must be
the hostname or IP address of the heat pump controller. The
data is fetched from TCP port 8088 of the controller.
coap
: This link type can be used to read data from devices
that support the
CoAP
protocol. The address must be the hostname or IP address of
the device. The data is fetched from UDP port 5683.
ctrlbyweb
: This link type can be used to read data from
devices manufactured by
ControlByWeb. The address
must be the hostname or IP address of the device. An optional
port number may be specified after a colon (:
). By default,
port 80 is used. The data is fetched from the device with the
HTTP protocol.
modbus
: This link type can be used to read data from a
Modbus/TCP
device. The address must have the format
map.unit@host:port|options
:
map
: The name of the Modbus address map to use for the
device (see
/sys/modbus/client/map and
/config/modbus/client/map).
If the Modbus device supports the SunSpec
standard, this can be sunspec
instead. With SunSpec, the meter can automatically detect
the available Modbus registers.
unit
: The Modbus unit number of the device (defaults to 255).
host
: The hostname or IP address of the device.
port
: The port number to use. Defaults to the value of
map option default-tcp-port
, or port 502 if the option
is not present.
options
: spiky
. This has the same
effect as the spiky
option for link-type tcp
(see
below).
An example address is sunspec.1@192.168.1.34
which would
refer to a SunSpec-compatible device with unit number 1 and
IP address 192.168.1.34
.
po
: This link type can be used to read data from Aurora
solar inverters manufactured by Power One. The inverter's
serial port must be connected to an RS485-to-Ethernet adapter
such as the Chiyu
BF-430.
The default RS485 serial parameters used by the inverter are:
19200 baud, 1 stop bit, no parity. The address must have the
format devnum@addr:port
, where devnum
is the inverter's
serial address in the range from 2 to 254, addr
is the host
or IP address of the RS485-to-Ethernet adapter, and port
is the port number of the adapter.
rtcoa
: This link type can be used to read data from
thermostats manufactured by Radio Thermostat Company of
America. The address must
be the hostname or IP address of the thermostat. An optional
port number may be specified after a colon (:
). By default,
port 80 is used. The data is fetched from the device with the
HTTP protocol.
slowd
: This link type can be used to read data from various
devices connected over a serial port. The address must have
the format proto://devaddr|options
, where proto
is the
name of the communication protocol, devaddr
is a
device-address in a format that depends on the protocol, and
options
is an optional, comma-separated list of options to
use for the link (supported since firmware v4.7). If no
options are specified, the |
character can be left out as
well. The only option currently supported is spiky
. It has
the same effect as the spiky
option for link-type tcp
(see
below). The available protocols are:
alphatechnics
: Implements a proprietary protocol for
reading AlphaTechnics
5000
series precision thermometers. These devices have a USB
port which emulates a serial interface, so they can be
plugged directly into EG4xxx meters.
The serial port parameters default to 57600 baud, no
parity, and one stop bit. devaddr
must be a
serial-port name and optional
serial parameters.
An example address is alphatechnics://USB2
which would
connect to the thermometer plugged into the meter's USB2
port.
modbus
: Implements the
Modbus/RTU
protocol which can connect two or more devices over
RS485. devaddr
must have the format
modbus://map.unit@serdev
where:
map
: The name of the Modbus address map to use for
the device (see
/sys/modbus/client/map
and
/config/modbus/client/map).
If the Modbus device supports the SunSpec
standard, this can be sunspec
instead. With SunSpec, the meter can automatically
detect the available Modbus registers.
unit
: The Modbus unit number of the device. This
defaults to the value of map option
default-modbus-addr
or 0 if the option is not
present.
serdev
: The serial port
and optional serial parameters of the meter which is
wired to the RS485 bus. The serial parameters default
to the values given by map option
default-serial-params
or 19200 baud, no parity and 1
stop bit if the option is not present. Alternatively,
serdev
may also have the format host:port
where
host
is the hostname or IP address of an
RS485-to-Ethernet adapter and port
is an optional TCP
port number.
An example address is modbus://sunspec.1@USB1
which
would refer to a SunSpec-compatible device with unit
number 1, connected to the meter via serial port USB1
.
po
: Implements the protocol used by older Power One
Aurora inverters. These inverters are no longer being
manufactured and Power One has been acquired by
ABB.
The inverters are connected via RS485. The serial
communication parameters are 19200 baud, 1 stop-bit, and
no parity. devaddr
must have the format num@addr
where num
is the inverter's serial address in the range
from 2 to 254 and addr
is the name of the meter's
serial-port that is wired to the RS485 bus.
Alternatively, addr
may also be the hostname or IP
address of an RS485-to-Ethernet adapter that the bus is
wired to.
scpi
: Implements the
SCPI
(skippy) protocol. devaddr
must be a
serial-port name and optional
serial parameters or a hostname or IP-address of
serial-to-Ethernet adapter to which the SCPI-compatible
device is connected.
The registers available to be read are automatically
detected based on the result of SCPI command *IDN?
(Identify). Currently, only eGauge
PRM3 relay
modules are recognized.
sma
: Implements the SMA Data Communication protocol
which is used by older inverters and weather stations
manufactured by SMA. These devices
are connected via RS485. The serial communication
parameters are 1200 baud, 1 stop-bit, and no parity. The
protocol automatically detects connected devices and the
available registers. However, since the bus operates at
only 1200 baud, detection can take several minutes.
devaddr
must be the name of the meter's serial-port that
is wired to the RS485 bus. It may also be the hostname or
IP address of an RS485-to-Ethernet adapter that the bus is
wired to.
sony
: Implements a proprietary protocol for reading
certain Sony battery charge controllers (BMUs) over RS232.
Specifically, specification P5-9 027, version 2 is
supported. The serial port parameters are fixed to 19200
baud, even parity, and one stop bit.
devaddr
must have the format sony://num@addr
where:
num
: Is the number of the battery charge controller
to read from. It must be in the range from 0 to 15.
addr
: Must be the hostname or IP address of the
RS232-to-Ethernet adapter which the charge controller
is connected to.
An example address is sony://1@192.168.1.34:10001
which
would connect to battery charge controller 1 which is
wired to the RS232-to-Ethernet adapter at IP address
192.168.1.34, port 10001.
tcp
: This link type can be used to read the data from
another eGauge meter over the TCP protocol. The address must
be a hostname or IP address which may optionally followed by a
vertical bar character (|
) and a comma-separated list of
options. The available options are:
async
: This option must be used if two or more eGauge
meters read each other's data. This causes a cyclic
dependency which, without this option, would result in
timeouts and the inability to read the remote meter's
data. To break the cycle, it is sufficient for one of the
meters in the cycle to turn on this option. The downside
of turning on this option is that remote data will be
recorded at the time it is received by the local meter,
rather than the time when it was measured by the remote
meter, as would normally be the case.
sync
: This is enables the default synchronous read mode
where remote data is recorded with the time that it was
measured at by the remote meter.
spiky
: This option affects how data is recorded after
the remote meter is unavailable for a period of time. By
default, the local meter will smooth out any jumps
(spikes) in the data that are due to the remote meter not
being reachable. Turning on this option disables the
smoothing and instead records jumps as they occur.
Normally, smoothing is preferable. However, if a remote
meter is frequently unreachable (10% or more of the time),
the local meter will fall behind the remote meter data
more and more and, in such a case, turning on this option
would be advisable.
The remote data is fetched via HTTP protocol (TCP port 80). It is not possible to specify authentication credentials.
An example address is eGauge1234.local|sync,spiky
. This
would connect to the remote meter with hostname
eGauge1234.local
using the sync
and spiky
options.
tempalert
: This link type can be used to read data from
temperature sensors manufactured by Temperature Alert (no
longer in business). The address must be the hostname or IP
address of the sensor. The data is fetched from port 80 of
the device with the HTTP protocol.
udp
: This link type can be used to read the data from
another eGauge meter over a proprietary UDP protocol. As
such, it provides the same functionality as tcp
, but since
it runs over UDP, it is a lighter-weight, more efficient
protocol. The data is read from UDP port 59046. The address
syntax and available options are the same as for link type
tcp
.
The max-depth
parameter can be specified to limit
the depth to which a response object or array is output. When the
depth-limit is reached, only a list of member names is returned for
objects and only the length is returned for arrays.
For example, if the full result object were:
{"obj": {"a": ..., "b": ...}, "arr": [1, 2, 3, 4]}
then this restricted to max-depth=2
would return:
{"obj": ["a", "b"], "arr": 4}
That is, the value of obj
was replaced by the list of the
object's member names and the value of array arr
was replaced by
its length.
When a modification request to a resource is not executed transactionally, it means that it may be possible to observe the modification of that resource before or after modifications to the other resources being updated within the same request. It is also possible for the modification to take effect even though the overall request may end up failing with an error.
Passwords are never written directly to this API. Instead, only
hashes are written which are derived from the user name, realm,
and password. Specifically, the hash is calculated as the
MD5 sum over the string
obtained when concatenating the user name, the realm, and the
password while using colons as field-separators. For example, the
hash of user name jane
, realm domain
, and password secret
,
would be:
MD5("jane:domain:secret") = 251910de04f5eab86859939167d4fded
Physical register names may not be empty, contain control
characters, dots (.
), or commas (,
). They may also not
consist entirely of digits.
Register names of locally calculated registers (registers with
dev
set to local
)
attach special meaning to the last character (suffix):
+
: Allowed only for power-registers (type
code P
). Only positive power will be
accumulated.
-
: Allowed only for power-registers (type
code P
). Only negative measured
power will be accumulated.
|
: Allowed only for power-registers (type
code P
). The absolute value of the
measured power will be accumulated.
*
: Allowed only and required for apparent-power registers
(type code S
).
These suffixes are not allowed for registers whose value is calculated by an eScript expression.
If the name of a locally calculated power register does not end with one of the above suffixes, the measured net real power is accumulated. Net real power may be positive or negative, depending on the direction of the power flow.
A serial port may be specified either as a device name or as a USB
path. A device name must have the format /dev/ttyUSBn
, where
n
is a non-negative integer. A USB path must have the format
USBpath
where path
is a sequence of one or more non-negative
integers, separated by dots (.
). Resource
/sys/dev/serial returns a list of serial
ports detected by the meter.
A serial port string may optionally also specify serial
parameters. The parameters must follow the device name and have
the format :b/8ps
where b
is the baud rate (positive integer),
8
is the number of bits per character (must be 8), p
is the
parity (n
for none, e
for even, o
for odd), and s
is the
number of stop bits (1 or 2).
WebAPI provides an automatic mechanism to setup communication between a meter and a service provider (web server). The resulting communication path can be used, for example, to send register data ("push data") or alerts to the service provider.
The setup mechanism is called service activation and is initiated by posting a request to end-point /cmd/activate. The command, in turn, executes the follow steps:
Meter sends an activation request to a URL defined by the service provider. This URL is called the control URL.
The service provider may respond with an error, a challenge, or a service URL. If an error is returned, service activation has failed and an error response is returned. If a challenge is returned, execution resumes with step 3 below. If a service URL is returned, execution resumes with step 4.
Given a challenge response, the meter decrypts the challenge using a private key and sends the result to the service provider. The service provider checks if the result is valid and, if so, responds with a service URL. Otherwise, it responds with an error and service activation has failed.
The meter extracts the service URL from the service provider's response and starts sending data to that URL. With this, service activation has completed successfully.
Once activated, the meter will send data to the service URL as needed (e.g., periodically for push data or when an alert occurs for the alert service). This stops if a post to the service URL returns HTTP status code 418 (I'm a teapot) or if the meter gets reconfigured to deactivate the service.
The details of the above steps are described below.
The activation request the meter sends to the control URL is a
POST
request with a JSON-body containing the following members:
name
(required): The hostname
of the meter.
sn
(required): The serial-number of the
meter.
opts
: If present, this is an array of strings specifying the
service options that are understood by the meter for the service
being activated. If not present, the service provider must
assume that the meter does not understand any service options.
Additional members may be present in the posted object. If so, the service provider must ignore any members whose meaning it does not understand.
A typical activation request body is shown below (formatted for readability):
{
"name": "Test1234",
"sn": "G13456789",
"opts": ["gzip", "json", "secure"]
}
A service provider may choose to return a challenge response to ascertain that the activation request was actually sent by the meter identified in the request. If the service provider does not require authentication, it can skip to directly returning a service URL response (see below).
A challenge response consists of a JSON-object with the following members:
nnc
(required): The server nonce. This must be a string
consisting entirely of lowercase hexadecimal digits (0-9, or
a-f). The server creates this nonce by:
generating a sequence of cryptographically random bytes,
encrypting the sequence with the meter's public key, and, finally,
converting the encrypted sequence to a hexadecimal string.
rid
(required): A non-negative integer that uniquely identifies
this service activation request.
Additional members may be present in the returned object. If so, the meter will ignore any members whose meaning it does not understand.
Once the meter receives a challenge response, it:
rnd
,creates a cryptographically strong random hexadecimal string
which we'll call cnnc
(client nonce),
calculates the MD5 hash of the string obtained by
concatenating rnd
, a colon (:
), and cnnc
.
sends a post request to the control URL whose body is a JSON object with the following members:
cnnc
(required): The client nonce.
hash
(required): The calculated MD5 hash as a hexadecimal
string.
rid
(required): A copy of the rid
member as received in
the challenge response.
When the service provider receives the post request, it can check
whether the meter is authentic by calculating the MD5 sum of the
concatenation of the server's random hexadecimal string rnd
, a
colon, and the client nonce and confirming that it matches the
value of hash
in the posted JSON object. If there is a
mismatch, service activation has failed and the provider returns
an error response.
A typical challenge response is shown below (formatted for
readability and nnc
shortened with an ellipsis):
{
"nnc": "76e75...9fbc",
"rid": 4102166033
}
In return to this challenge, the meter would then send a post request to the control URL with a body that might look like this:
{
"cnnc": "565ce9541eddec103347b5174704e188",
"hash": "ce5e308c27da651964de14f65bd8b059",
"rid": 4102166033
}
If the authentication is successful, the service provider responds with a service URL response.
Upon successful service activation, the provider returns a response body containing a JSON object with the following members:
url
(required): The service URL to which the service's data
should be sent.
options
: The service options to use. This must be a string
containing a comma-separated list of option names. Certain
options may require a value. For those, the option name must be
followed immediately by an equal sign (=
) and the option value
(no whitespace is allowed).
pw
: If specified, the password to use when sending the post
request to the service URL.
user
: If specified, the username to use when sending the
post request to the service URL. The username and password are
sent using an HTTP basic authentication
header. For
security reasons, this should only be used over secure (https
)
connections.
Additional members may be present in the returned object. If so, the meter will ignore any members whose meaning it does not understand.
{
"url": "https://provider.com/alert/post/a08b44098",
"options": "json,gzip,min_prio=7"
}
If service activation fails, HTTP status 200 must be returned with
a response body which contains member error
. The value of
error
must be a string explaining why service activation failed.
The string is typically in the locale of the service provider.
The returned JSON object may contain additional members which the meter must ignore.
A time expression defines a single point in time. An absolute time expression is a number, a time-point name, or a function call. A number is interpreted as a Unix timestamp. Time-point names are described here. A function call consists of a name, immediately followed by a time expression in parentheses. The following supported function names and their meaning are as follows:
soy(t)
: Returns the timestamp of the start of the year in
which t
falls.
soq(t)
: Returns the timestamp of the start of the quarter in
which t
falls.
sob(t)
: Returns the timestamp of the start of the billing
cycle in which t
falls. Server-storage
variable global.billing.start_day
establishes the day of the
month a new billing period starts. If that day is greater than
the number of days in the current month, the last day of that
month is taken as the start of the billing period. The new
billing cycle is assumed to start at 12pm on the billing day
(meter-local time).
som(t)
: Returns the timestamp of the start of the month in
which time t
falls.
sow(t)
: Returns the timestamp of the start of the week in
which t
falls. Monday is considered to be the start of
the week.
sod(t)
: Returns the timestamp of the start of the day in
which t
falls.
soh(t)
: Returns the timestamp of the start of the hour in
which t
falls.
soQ(t)
: Returns the timestamp of the start of the quarter
hour in which t
falls.
soM(t)
: Returns the timestamp of the start of the minute in
which t
falls.
sos(t)
: Returns the timestamp of the start of the second in
which t
falls.
An absolute time expression may be followed by one or more offsets that are added to or subtracted from the value of the absolute time expression. Each offset starts with a plus or minus sign, an integer number, and an optional unit. Without a unit, the specified number may contain a fractional part and indicates the number of seconds to be added/subtracted. Otherwise, the unit may be one of:
y
: yearsq
: quartersb
: billing-cyclesm
: monthsw
: weeksd
: daysh
: hoursQ
: quarter-hoursM
: minutesFor an offset with a unit, the specified number of time periods
are added to/subtracted from the timestamp. For example,
som(now)+1d-1h
would return the start of the last hour of the
first day of the current month as som(now)
returns the start of
the current month, +1d
would add one day to that, and -1h
would subtract 1 hour from the result.
Due to irregularities in the Gregorian calendar, normal rules of
addition do not apply and the order in which the offsets are
applied is significant. When adding/subtracting months or
billing-cycles, the operations ensures that the final date is
valid. For example, adding 1m
to January 31st would yield the
last day of February, which would be either February 28th or 29th,
depending on whether or not the year is a leap-year.
The full syntax for a time expression is given in EBNF syntax below:
TIME = ABSOLUTE {("+" | "-")OFFSET} .
ABSOLUTE = UNIX_TS | POINT_NAME | FCALL .
UNIX_TS = ["+"|"-"] SECONDS .
FCALL = FNAME "(" TIME ")" .
FNAME = "soy" | "soq" | "sob" | "som" | "sow" | "sod" | "soh" | "soQ" | "soM" .
POINT_NAME = "now" | "epoch" | FNAME .
OFFSET = (UNSIGNED_INTEGER UNIT) | SECONDS.
UNIT = "y" | "q" | "b" | "m" | "w" | "d" | "h" | "Q" | "M".
SECONDS = UNSIGNED_INTEGER ["." UNSIGNED_INTEGER] .
A time point name that consists of a function name which is not
immediately followed by a left parenthesis is interpreted as if
the function of the same name had been called on the current time
(now
). For example, sod
is equivalent to sod(now)
.
Time-point names provide a way to refer to both absolute points in time as well as times relative to the current time. Specifically:
now
: The most recent time for which the meter has collected
data.
epoch
: The time at which the meter started recording data.
That is, the oldest time for which the database will return
data. This time is user configurable via
/config/db/epoch.
soy
: Short for soy(now)
.
soq
: Short for soq(now)
.
sob
: Short for sob(now)
.
som
: Short for som(now)
.
sow
: Short for sow(now)
.
sod
: Short for sod(now)
.
soh
: Short for soh(now)
.
soQ
: Short for soQ(now)
.
soM
: Short for soM(now)
.
A time range is an ordered series of Unix
timestamps which are spaced out at a
certain interval between two points in time. Time ranges are
written as three decimal numbers, separated by colons:
start:step:stop
, where start
is the oldest timestamp, step
is the interval between timestamps, and stop
is the youngest
timestamp. For example, 100:1:103
would correspond to the
timestamp series [100, 101, 102, 103]
. If step
and the
subsequent colon are left out, the interval defaults to one
second. If step
is an empty string, the range consists of only
the start and end timestamps. For example, 100::103
would
correspond to [100, 103]
. If the time range consists of only a
single number, it is interpreted as a singleton consisting of only
the specified time.
The timestamps are generated from youngest
to oldest
. Thus, if
the oldest timestamp is not an integer-multiple of step
apart
from youngest
, then the oldest timestamp will not be in the
series of generated timestamps.
In general, start
and stop
can be not just Unix timestamps
but arbitrary time expressions.
Similarly, the time step may also be expressed as an integer count
followed by a unit character. The available units are the same as
for offsets in time expressions. For example, 1d
would step
through the time range one day at a time, taking daylight savings
into account (assuming the correct
timezone is set on the meter).
As a complete example, the time range som:1d:sod
would generate
the timestamps that correspond to midnight each day of the current
month to date. sod
is the start (midnight) of today and from
there, the timestamps step back one day at a time until som
, the
start of the month is reached.
When a time range is used to select rows from the database, the
resulting timestamps may not align with the timestamps of the rows
stored in the database. When this happens, the meter will, by
default, round down the specified timestamp to that of the nearest
older row. However, if the starting or ending timestamp starts
with a plus sign (+
), the meter will instead round the timestamp
up to that of the nearest younger row.
The full syntax for a time range is given in EBNF syntax below:
TIME_RANGE = [FROM ":" [[STEP] ":"]]TO .
FROM = TIME_WITH_ROUNDING .
TO = TIME_WITH_ROUNDING .
STEP = OFFSET .
TIME_WITH_ROUNDING = ["+"]TIME .
See section Time Expressions for definitions of OFFSET and TIME.
Each register records values in a physical unit indicated by a type code. Apart from the physical unit, the type code also defines the quantum with which a value is recorded in the database.
To understand the role of the quantum, you need to know that the
database stores all values as signed 64-bit integer numbers. For
all type codes except d
(discrete numbers), the meter
accumulates values before storing them in the database. Let us
see how this is done for a sensor that measures a voltage. If we
look up type code V
in the table below, we see that the quantum
q for a voltage is 0.001. Now, suppose the voltage v of a
sensor was measured to be 120V on average over a measurement
interval dt of one second and that the previous accumulated
value of that sensor was c0. The meter would then calculate the
new accumulated value c1 as:
c1 = c0 + round(v / quantum)·dt
or
c1 = c0 + round(120V / 0.001)·1s = c0 + 120000 V·s
This new accumulated value is then stored in the database. In other words, for every second where the average voltage is 120V, the value stored in the database would increase by 120000. This also shows that the accumulated values stored in the database have a unit that is the rate unit multiplied by seconds. For volts, that turns into volt-seconds. Similarly, power in watts would be recorded as watt-seconds (or joules), and speed in meters-per-second would be recorded as meters.
Note that an accumulated value may eventually overflow if the measured rate has predominantly the same sign for a very long period of time. If that were to happen, the value would wrap around from a large positive value to a large negative value or vice versa. The quanta have been selected such that under normal circumstances, wrap-arounds will not occur within the lifetime of a meter. Nevertheless, when calculating how much an accumulated value changed between two points in time, we recommend calculating that difference modulo 263 since that will give the correct result provided at most one wrap-around occurred between the two points in time.
Discrete numbers (type code d
) are unit-less and are used to
record discrete states (such as error states or bitsets). Such
quantities cannot be averaged and hence they are not accumulated.
Instead, they are stored directly as signed 64-bit integers in the
database.
Type code | Physical quantity | Rate unit | Quantum |
---|---|---|---|
# |
Whole number | 1 | |
#3 |
Number with 3 decimal places | 0.001 | |
% |
Percentage | % | 0.001 |
$ |
Monetary accrual rate | ${currency}/s | 2-29 |
a |
Angle | ° | 0.001 |
aq |
Air quality index (0=good, 500=bad) | s | 0.001 |
d |
Discrete number | 1 | |
Ee |
Irradiance | W/m2 | 1 |
F |
Frequency | Hz | 0.001 |
h |
Relative humidity | % | 0.001 |
I |
Electrical current | A | 0.001 |
m |
Mass | g | 0.001 |
P |
Power | W | 1 |
Pa |
Pressure | Pa | 1 |
ppm |
Parts per million | ppm | 0.001 |
var |
Reactive power | var | 1 |
Q |
Mass flow | g/s | 1 |
Qe |
Electric charge | Ah | 0.001 |
Qv |
Volumetric flow | m3/s | 10-9 |
R |
Electric resistance | Ω | 1 |
S |
Apparent power | VA | 1 |
T |
Temperature | °C | 0.001 |
THD |
Total harmonic distortion | % | 0.001 |
V |
Voltage | V | 0.001 |
v |
Speed | m/s | 0.001 |
Note For the monetary unit, ${currency}
should be replaced
by the the currency symbol applicable to the region the meter is
installed in. The builtin user interface of the meter uses the
value of server-storage variable
global.default.currency_symbol
for this purpose or, if
undefined, a dollar sign ($
).
A Unix timestamp is a number that counts the seconds since the start of January 1, 1970 UTC.
Users may have the one or more of the following privileges:
unlimited_save
: The user may change (save) the meter
configuration.
local_save
: The user may change (save) the meter
configuration but only when connected over a local network
connection. LAN-connections are considered local if the user's
browser is on the same subnet as the meter. Bluetooth
connections are always considered local. All other connections
(e.g., via proxy server) are considered not local.
view_settings
: The user may view the meter configuration.
Without this privilege, the user only has access to
configuration settings that are directly related to the user.
ctrl
: The user may issue control operations such as putting
a device in a particular operational state (e.g., opening or
closing a relay or setting the temperature on a thermostat).
restricted_view
: The user only has restricted access to the
meter data. Specifically, the user may only view registers in
the view that matches the user
name.
While access to the device is generally governed by these privileges, there are two exceptions:
* Users without `view_settings` privilege may still read their
own user configuration (but not that of any other user).
* Users without `save` privilege (`unlimited_save` or
`local_save`) may still change their own password.
Views are used to group related registers. For example, if a single meter measures multiple apartments, a separate view could be defined for each apartment. A user-interface can then offer to display all measurements for a particular apartment by selecting the desired apartment's view name. Similarly, users can be setup so that they may access only a particular view. That way, views can be used to ensure, for example, that each apartment tenant can only view their own data.
In this API, view names are defined as part of a register name.
Specifically, the view name is written as prefix of the register
name, followed by a dot. For example, the string apt1.cooktop
defines register cooktop
as being part of view apt1
.
The values of virtual registers are calculated based on the values
of physical registers. The formulas for these calculations are
limited to addition and subtraction. When expressed as a JSON
string, virtual register formulas are written as a sequence of
register names which are prefixed either by a plus sign (+
) to
indicate addition or by a minus sign (-
) to indicate
subtraction. The register names are enclosed in double-quotes.
Within a register name, a double-quote character can be included
by prefixing it with a backslash character: \"
. Likewise, to
include a literal backslash character in the name, it must be
doubled up and written as \\
.
As an example, the formula:
+"Panel \"A\""+"Solar+"-"EV"
would calculate the virtual register value by adding the values of
registers Panel "A"
and Solar+
and then subtracting the value
of register EV
.
Note
Old meters may still use deprecated operators in virtual register
formulas. The syntax for these operators is op(reg,n)
where
op
is either MIN
or MAX
(case-sensitive), reg
is a
register name, and n
is an integer constant (usually 0). These
operators are deprecated because they only work correctly when the
formula is applied to rates, not when applied to accumulated
register values. When applied to rates, these operators should
work as follows:
MAX(reg,n)
: Returns the value of register reg
if it is
greater than n
or n
otherwise.
MIN(reg,n)
: Returns the value of register reg
if it is
less than n
or n
otherwise.