eGauge WebAPI (latest)

Download OpenAPI specification:Download

eGauge Meter API

Introduction

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.

Legal Disclaimer

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.

Getting Started

With Python

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.

/auth

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.

Obtain token

There are two ways for supplying credentials to obtain a token:

  1. With a Digest object in the request body, a token is obtained without transmitting the password.

  2. 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.

Authorizations:
ApiKey
Request Body schema: application/json
One of
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:

ha1 = MD5(usr:rlm:pwd)
hash = MD5(ha1:nnc:cnnc)

Responses

Request samples

Content type
application/json
Example
{
  • "rlm": "eGauge Administration",
  • "usr": "owner",
  • "nnc": "eyJ0eXAi...w5GCvM",
  • "cnnc": "565ce9541eddec103347b5174704e188",
  • "hash": "ce5e308c27da651964de14f65bd8b059"
}

Response samples

Content type
application/json
{
  • "jwt": "eyJ0eXAi...aQvQxY",
  • "error": "Error message (present if an error occurred)."
}

Revoke token

Revoke the JWT supplied as the bearer token in the Authorization header.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Validate token

This resource returns a 401 response unless the request contains an Authorized header with a valid JWT token. This can be used to check the validity of a JWT token and, if invalid, obtain the realm and server nonce required to refresh the token.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Get token rights

Return the list of rights associated with the token.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "usr": "owner",
  • "rights": [
    ]
}

/capture

The capture service allows collecting waveform data for configured input channels.

Basic Usage

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.

Python Example

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.

Capture waveform data

Authorizations:
ApiKey
query Parameters
C
integer >= 0

The channel number to use as the trigger.

M
string
Enum: "any" "rise" "fall" "gt" "lt"

The trigger mode to use. any triggers immediately, rise triggers when a rising edge crosses the trigger level, fall triggers when a falling edge crosses the trigger level, gt triggers when the trigger channel's sample value is greater than the trigger level, and lt triggers when it is less than the trigger level.

L
number

The trigger level.

R
boolean

If present, this query parameter cancels a pending capture and resets the state to available. If a value for query parameter n is also specified, only the matching capture is canceled. Otherwise, any pending capture is canceled.

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.

Responses

Response samples

Content type
application/json
Example
{
  • "channels": {
    },
  • "error": "Error message (present if an error occurred)."
}

/cmd

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).

Activate a service

Requires firmware ≥ v4.6.Activate a service with an external provider (web server).

This request returns a token which can then be used to monitor the status of the operation. See /sys/status/token/result for details.

Authorizations:
ApiKey
Request Body schema: application/json
service
required
string
Enum: "alert" "push"

The type of service to activate. This can be alert for the alert reporting service or push for the data-sharing service.

provider
required
string

The name of the service provider with which to activate the service.

Responses

Request samples

Content type
application/json
{
  • "service": "alert",
  • "provider": "Cloudly's Alert Service"
}

Response samples

Content type
application/json
{
  • "token": "473c31462e62848b5352314dfc608669",
  • "error": "Error message (present if an error occurred)."
}

Cancel pending operation

Requires firmware ≥ v4.6.Cancel the long-running operation identified by its token.

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "token": "473c31462e62848b5352314dfc608669"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Clear data

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.

Authorizations:
ApiKey
Request Body schema: application/json
string
Enum: "excess" "web_cache"

Responses

Request samples

Content type
application/json
"excess"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Manipulate database

This command supports 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.

Authorizations:
ApiKey
Request Body schema: application/json
action
required
string
Enum: "restore" "zero" "split"

The action to perform. The possible values are:

  • restore: Restores data from a backup file to the device database.
  • zero: Zeroes out one or more registers in the device database.
  • split: Split the positive changes of a net register into a separate positive-only register.
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 restore. It contains the binary backup data to be restored, encoded in base64. A device may reject a restore request if this member is larger than 2 MiB. It may therefore be necessary to split up a large backup file into multiple smaller chunks that are then restored one after the other.

more_chunks
boolean

This is used only for restore operations. It indicates whether a the backup data has been split up into multiple chunks and the current chunk is to be follow by the next older, adjacent chunk. Setting this flag is not required, but doing so can greatly speed up a restore operation. On the other hand, setting this flag to true without following it up with the next older adjacent chunk can leave the database in a corrupted state, with large spikes at the beginning of the current chunk.

Responses

Request samples

Content type
application/json
{
  • "action": "restore",
  • "from": "1677523091.000900435",
  • "to": "1677523091.000900435",
  • "regs": [
    ],
  • "data": "string",
  • "more_chunks": true
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Restore factory settings

Restore the factory settings and reboot the meter.

Warning All existing data and settings will be lost.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Manage HomePlug

Requires firmware ≥ v4.6.Manage one or more HomePlug devices.

Authorizations:
ApiKey
Request Body schema: application/json
action
required
string
Value: "setpwd"

The action to perform. The only action currently supported is setpwd. It establishes a new encryption password on the meter's HomePlug bridge and one or more remote bridges.

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 xx:xx:xx:xx:xx:xx where x is a hexadecimal digit), followed by a slash character (/), followed by the bridge's device encryption key (DEK). The latter can be found printed on the label of the bridge.

Responses

Request samples

Content type
application/json
{
  • "action": "setpwd",
  • "password": "HomePlugAV",
  • "targets": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Reboot the meter

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Set date and time

Optionally set the date/time of the meter and restart the NTP and/or the PTP services, if configured.

Authorizations:
ApiKey
Request Body schema: application/json
One of
string (ForeverStamp)

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.

Responses

Request samples

Content type
application/json
Example
"1677523091.000900435"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Test sending email

Requires firmware ≥ v4.6.Test sending an email using the mail configuration specified in the body of this request.

This request returns a token which can then be used to monitor the status of the operation. See /sys/status/token/result for details.

Authorizations:
ApiKey
Request Body schema: application/json
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).

Responses

Request samples

Content type
application/json
{
  • "address": "user@domain.com",
  • "smarthost": "smtp.domain.com",
  • "mailuser": "username",
  • "mailpass": "secret-pw",
  • "fromaddr": "nobody@eGauge123456"
}

Response samples

Content type
application/json
{
  • "token": "473c31462e62848b5352314dfc608669",
  • "error": "Error message (present if an error occurred)."
}

Test remote device

Requires firmware ≥ v4.6.Try connecting to a remote device and, if successful, return the set of registers available on the device.

This request returns a token which can then be used to monitor the status of the operation. See /sys/status/token/result for details.

Authorizations:
ApiKey
Request Body schema: application/json
address
required
string

The address of the remote device. The format of this string depends on the value of linktype.

linktype
required
string

The link type to use to connect to the remote device.

Responses

Request samples

Content type
application/json
{
  • "address": "modbus://sunspec.1@USB2",
  • "linktype": "slowd"
}

Response samples

Content type
application/json
{
  • "token": "473c31462e62848b5352314dfc608669",
  • "error": "Error message (present if an error occurred)."
}

Update the meter

Update the meter firmware or kernel.

Authorizations:
ApiKey
Request Body schema: application/json
action
required
string
Enum: "list" "install"

The action to perform. The value list requests that the latest available version should be returned as a version object response.

The value install requests that the kernel or firmware should be updated. In this case, a token is returned. With that, the progress of the installation can be monitor at /sys/status/token.

target
required
string
Enum: "fw" "kernel"

The target of the action. A value of fw indicates that the meter firmware is the target of the action, a value of kernel indicates that the kernel is the target.

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 true, the firmware/kernel is installed even if the version to be installed does not appear to be newer than the currently installed version.

version
string

The version to install.

Note Downgrading to an older firmware or kernel may have unpredictable effects and may damage the meter.

Responses

Request samples

Content type
application/json
{
  • "action": "list",
  • "target": "fw",
  • "branch": "string",
  • "force": true,
  • "version": 4.5
}

Response samples

Content type
application/json
Example
{
  • "version": 4.4,
  • "minimum": "4.1.2",
  • "error": "Error message (present if an error occurred)."
}

Manage WLAN (WiFi) connection

Manage WLAN (Wi-Fi) connection. See /sys/net/wlan to get the currently detected and configured WLAN networks.

Authorizations:
ApiKey
Request Body schema: application/json
action
required
string
Enum: "add" "select" "forget"

The action to perform. It must be one of:

  • add: Add a WLAN network by specifying its SSID, whether or not it is a hidden network, and, optionally, its passphrase or passkey. If adding the network succeeds, it is also selected as the currently active one.
  • select: Select a network as the currently active one.
  • forget: Forget the information associated with a network.
hex
boolean

Must be set to true if member key is a hexadecimal key rather than a passphrase.

hidden
boolean

Must be set to true if the network to be added is hidden (i.e., its SSID is not being broadcast).

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.

Responses

Request samples

Content type
application/json
{
  • "action": "add",
  • "hex": true,
  • "hidden": true,
  • "id": 0,
  • "key": "secrets-secrets",
  • "ssid": "string"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config

The meter configuration service.

The endpoints under /config provide common method semantics and atomicity guarantees as described below.

HTTP Method Semantics

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:

Semantics for Object Values

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.

Semantics for Array Values

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).

Semantics for String and Number Values

PUT and POST replace the value. DELETE removes the value if that is possible and otherwise resets it to the default value.

Atomicity

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.

Get /config

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config

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.

Authorizations:
ApiKey
Request Body schema: application/json
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 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.

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 POST request.

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.

Responses

Request samples

Content type
application/json
{
  • "bacnet": {
    },
  • "db": {
    },
  • "display": {
    },
  • "language_code": "en_GB",
  • "local": {
    },
  • "location": {
    },
  • "log": {
    },
  • "lua": {
    },
  • "modbus": {
    },
  • "net": {
    },
  • "push": {},
  • "remote": {
    },
  • "register": {
    },
  • "time": {
    },
  • "user": {
    },
  • "var": {
    },
  • "alert": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config

Authorizations:
ApiKey
Request Body schema: application/json
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 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.

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 POST request.

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.

Responses

Request samples

Content type
application/json
{
  • "bacnet": {
    },
  • "db": {
    },
  • "display": {
    },
  • "language_code": "en_GB",
  • "local": {
    },
  • "location": {
    },
  • "log": {
    },
  • "lua": {
    },
  • "modbus": {
    },
  • "net": {
    },
  • "push": {},
  • "remote": {
    },
  • "register": {
    },
  • "time": {
    },
  • "user": {
    },
  • "var": {
    },
  • "alert": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert

The alert configuration of the meter.

Get /config/alert

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "custom": [
    ],
  • "reporter": {
    },
  • "sys-prio": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "custom": [
    ],
  • "reporter": {
    },
  • "sys-prio": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/custom

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.

Get /config/alert/custom

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/custom

Authorizations:
ApiKey
Request Body schema: application/json
Array
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:

  • %% 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.
frequency
string (configAlertCustomItemFrequency)
Enum: "sec" "min" "hr" "dy" "wk" "mon" "an"

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.
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: lhs op rhs. lhs and rhs are arbitrary expressions and op must be a comparison operator.

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/custom

Authorizations:
ApiKey
Request Body schema: application/json
Array
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:

  • %% 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.
frequency
string (configAlertCustomItemFrequency)
Enum: "sec" "min" "hr" "dy" "wk" "mon" "an"

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.
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: lhs op rhs. lhs and rhs are arbitrary expressions and op must be a comparison operator.

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/custom

Reset to empty array.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/custom/{idx}

The custom alert.

Get /config/alert/custom/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/custom/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Request Body schema: application/json
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:

  • %% 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.
frequency
string (configAlertCustomItemFrequency)
Enum: "sec" "min" "hr" "dy" "wk" "mon" "an"

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.
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: lhs op rhs. lhs and rhs are arbitrary expressions and op must be a comparison operator.

Responses

Request samples

Content type
application/json
{
  • "name": "temperature alert",
  • "detail": "It is hot in here: %l C!",
  • "frequency": "sec",
  • "priority": 7,
  • "cond": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/custom/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Request Body schema: application/json
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:

  • %% 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.
frequency
string (configAlertCustomItemFrequency)
Enum: "sec" "min" "hr" "dy" "wk" "mon" "an"

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.
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: lhs op rhs. lhs and rhs are arbitrary expressions and op must be a comparison operator.

Responses

Request samples

Content type
application/json
{
  • "name": "temperature alert",
  • "detail": "It is hot in here: %l C!",
  • "frequency": "sec",
  • "priority": 7,
  • "cond": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/custom/{idx}

Delete this custom alert.

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/custom/{idx}/cond

The boolean condition consists of three parts: lhs op rhs. lhs and rhs are arbitrary expressions and op must be a comparison operator.

Get /config/alert/custom/{idx}/cond

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/custom/{idx}/cond

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Request Body schema: application/json
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 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.
rhs
string (configAlertCustomItemCondRhs)

An eScript expression that returns the value that to use on the right hand side of the comparison.

Responses

Request samples

Content type
application/json
{
  • "lhs": "temp_internal()",
  • "op": "<",
  • "rhs": "30"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/custom/{idx}/cond

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Request Body schema: application/json
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 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.
rhs
string (configAlertCustomItemCondRhs)

An eScript expression that returns the value that to use on the right hand side of the comparison.

Responses

Request samples

Content type
application/json
{
  • "lhs": "temp_internal()",
  • "op": "<",
  • "rhs": "30"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/custom/{idx}/cond

Reset to default condition which is always false.

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/custom/{idx}/cond/lhs

An eScript expression that returns the value to use on the left hand side of the comparison.

Get /config/alert/custom/{idx}/cond/lhs

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Responses

Response samples

Content type
application/json
{
  • "result": "temp_internal()",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/custom/{idx}/cond/lhs

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Request Body schema: application/json
string (configAlertCustomItemCondLhs)

An eScript expression that returns the value to use on the left hand side of the comparison.

Responses

Request samples

Content type
application/json
"temp_internal()"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/custom/{idx}/cond/lhs

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Request Body schema: application/json
string (configAlertCustomItemCondLhs)

An eScript expression that returns the value to use on the left hand side of the comparison.

Responses

Request samples

Content type
application/json
"temp_internal()"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/custom/{idx}/cond/lhs

Reset to empty string.

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/custom/{idx}/cond/op

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.

Get /config/alert/custom/{idx}/cond/op

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Responses

Response samples

Content type
application/json
{
  • "result": "<",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/custom/{idx}/cond/op

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Request Body schema: application/json
string (configAlertCustomItemCondOp)
Enum: "<" "<=" "=" "!=" ">=" ">"

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.

Responses

Request samples

Content type
application/json
"<"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/custom/{idx}/cond/op

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Request Body schema: application/json
string (configAlertCustomItemCondOp)
Enum: "<" "<=" "=" "!=" ">=" ">"

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.

Responses

Request samples

Content type
application/json
"<"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/custom/{idx}/cond/op

Reset to <.

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/custom/{idx}/cond/rhs

An eScript expression that returns the value that to use on the right hand side of the comparison.

Get /config/alert/custom/{idx}/cond/rhs

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Responses

Response samples

Content type
application/json
{
  • "result": "30",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/custom/{idx}/cond/rhs

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Request Body schema: application/json
string (configAlertCustomItemCondRhs)

An eScript expression that returns the value that to use on the right hand side of the comparison.

Responses

Request samples

Content type
application/json
"30"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/custom/{idx}/cond/rhs

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Request Body schema: application/json
string (configAlertCustomItemCondRhs)

An eScript expression that returns the value that to use on the right hand side of the comparison.

Responses

Request samples

Content type
application/json
"30"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/custom/{idx}/cond/rhs

Reset to empty string.

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/custom/{idx}/detail

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.

Get /config/alert/custom/{idx}/detail

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Responses

Response samples

Content type
application/json
{
  • "result": "It is hot in here: %l C!",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/custom/{idx}/detail

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Request Body schema: application/json
string (configAlertCustomItemDetail)

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.

Responses

Request samples

Content type
application/json
"It is hot in here: %l C!"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/custom/{idx}/detail

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Request Body schema: application/json
string (configAlertCustomItemDetail)

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.

Responses

Request samples

Content type
application/json
"It is hot in here: %l C!"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/custom/{idx}/detail

Reset to empty string.

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/custom/{idx}/frequency

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.

Get /config/alert/custom/{idx}/frequency

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Responses

Response samples

Content type
application/json
{
  • "result": "sec",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/custom/{idx}/frequency

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Request Body schema: application/json
string (configAlertCustomItemFrequency)
Enum: "sec" "min" "hr" "dy" "wk" "mon" "an"

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.

Responses

Request samples

Content type
application/json
"sec"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/custom/{idx}/frequency

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Request Body schema: application/json
string (configAlertCustomItemFrequency)
Enum: "sec" "min" "hr" "dy" "wk" "mon" "an"

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.

Responses

Request samples

Content type
application/json
"sec"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/custom/{idx}/frequency

Reset to sec.

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/custom/{idx}/name

The user-selected name of this custom alert.

Get /config/alert/custom/{idx}/name

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Responses

Response samples

Content type
application/json
{
  • "result": "temperature alert",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/custom/{idx}/name

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Request Body schema: application/json
string (configAlertCustomItemName)

The user-selected name of this custom alert.

Responses

Request samples

Content type
application/json
"temperature alert"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/custom/{idx}/name

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Request Body schema: application/json
string (configAlertCustomItemName)

The user-selected name of this custom alert.

Responses

Request samples

Content type
application/json
"temperature alert"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/custom/{idx}/name

Reset to empty string.

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/custom/{idx}/priority

The priority of this custom alert. Zero is the lowest, seven the highest priority.

Get /config/alert/custom/{idx}/priority

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Responses

Response samples

Content type
application/json
{
  • "result": 7,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/custom/{idx}/priority

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Request Body schema: application/json
integer (configAlertCustomItemPriority) [ 0 .. 7 ]

The priority of this custom alert. Zero is the lowest, seven the highest priority.

Responses

Request samples

Content type
application/json
7

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/custom/{idx}/priority

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Request Body schema: application/json
integer (configAlertCustomItemPriority) [ 0 .. 7 ]

The priority of this custom alert. Zero is the lowest, seven the highest priority.

Responses

Request samples

Content type
application/json
7

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/custom/{idx}/priority

Reset to 0.

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a custom alert.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/reporter

The alert reporting configuration. Alerts may be reported via a web server or via an email server.

Get /config/alert/reporter

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/reporter

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "web": {
    },
  • "mail": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/reporter

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "web": {
    },
  • "mail": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/reporter

Reset to default (reporting disabled).

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/reporter/mail

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.

Get /config/alert/reporter/mail

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/reporter/mail

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "server": "smtp.mail.com",
  • "user": "egaugealert@mail.com",
  • "password": "string",
  • "from-address": "eGauge1345",
  • "to": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/reporter/mail

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "server": "smtp.mail.com",
  • "user": "egaugealert@mail.com",
  • "password": "string",
  • "from-address": "eGauge1345",
  • "to": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/reporter/mail

Reset to default (email reporting disabled).

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/reporter/mail/server

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.

Get /config/alert/reporter/mail/server

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "smtp.mail.com",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/reporter/mail/server

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
"smtp.mail.com"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/reporter/mail/server

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
"smtp.mail.com"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/reporter/mail/server

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/reporter/mail/user

The user name to provide to the email server for authentication purposes.

Get /config/alert/reporter/mail/user

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "egaugealert@mail.com",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/reporter/mail/user

Authorizations:
ApiKey
Request Body schema: application/json
string (configAlertReporterMailUser)

The user name to provide to the email server for authentication purposes.

Responses

Request samples

Content type
application/json
"egaugealert@mail.com"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/reporter/mail/user

Authorizations:
ApiKey
Request Body schema: application/json
string (configAlertReporterMailUser)

The user name to provide to the email server for authentication purposes.

Responses

Request samples

Content type
application/json
"egaugealert@mail.com"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/reporter/mail/user

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/reporter/mail/password

The password to provide to the email server for authentication purposes.

This resource is write-only.

Replace /config/alert/reporter/mail/password

Authorizations:
ApiKey
Request Body schema: application/json
string (configAlertReporterMailPassword)

The password to provide to the email server for authentication purposes.

This resource is write-only.

Responses

Request samples

Content type
application/json
"string"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/reporter/mail/password

Authorizations:
ApiKey
Request Body schema: application/json
string (configAlertReporterMailPassword)

The password to provide to the email server for authentication purposes.

This resource is write-only.

Responses

Request samples

Content type
application/json
"string"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/reporter/mail/password

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/reporter/mail/from-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.

Get /config/alert/reporter/mail/from-address

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "eGauge1345",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/reporter/mail/from-address

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
"eGauge1345"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/reporter/mail/from-address

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
"eGauge1345"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/reporter/mail/from-address

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/reporter/mail/to

The email destinations to send the alerts to.

Get /config/alert/reporter/mail/to

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/reporter/mail/to

Authorizations:
ApiKey
Request Body schema: application/json
Array
format
string (configAlertReporterMailToItemFormat)

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.

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.

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/reporter/mail/to

Authorizations:
ApiKey
Request Body schema: application/json
Array
format
string (configAlertReporterMailToItemFormat)

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.

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.

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/reporter/mail/to

Reset to empty array.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/reporter/mail/to/{idx}

An email destination to send the alerts to.

Get /config/alert/reporter/mail/to/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer [ 0 .. 3 ]

The index of an alert destination.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/reporter/mail/to/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer [ 0 .. 3 ]

The index of an alert destination.

Request Body schema: application/json
format
string (configAlertReporterMailToItemFormat)

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.

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.

Responses

Request samples

Content type
application/json
{
  • "format": "string",
  • "min-priority": 3,
  • "address": "user@site.com"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/reporter/mail/to/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer [ 0 .. 3 ]

The index of an alert destination.

Request Body schema: application/json
format
string (configAlertReporterMailToItemFormat)

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.

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.

Responses

Request samples

Content type
application/json
{
  • "format": "string",
  • "min-priority": 3,
  • "address": "user@site.com"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/reporter/mail/to/{idx}

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.

Authorizations:
ApiKey
path Parameters
idx
required
integer [ 0 .. 3 ]

The index of an alert destination.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/reporter/mail/to/{idx}/address

The destination email address to send the alert to.

Get /config/alert/reporter/mail/to/{idx}/address

Authorizations:
ApiKey
path Parameters
idx
required
integer [ 0 .. 3 ]

The index of an alert destination.

Responses

Response samples

Content type
application/json
{
  • "result": "user@site.com",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/reporter/mail/to/{idx}/address

Authorizations:
ApiKey
path Parameters
idx
required
integer [ 0 .. 3 ]

The index of an alert destination.

Request Body schema: application/json
string (configAlertReporterMailToItemAddress)

The destination email address to send the alert to.

Responses

Request samples

Content type
application/json
"user@site.com"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/reporter/mail/to/{idx}/address

Authorizations:
ApiKey
path Parameters
idx
required
integer [ 0 .. 3 ]

The index of an alert destination.

Request Body schema: application/json
string (configAlertReporterMailToItemAddress)

The destination email address to send the alert to.

Responses

Request samples

Content type
application/json
"user@site.com"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/reporter/mail/to/{idx}/address

Reset to empty string.

Authorizations:
ApiKey
path Parameters
idx
required
integer [ 0 .. 3 ]

The index of an alert destination.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/reporter/mail/to/{idx}/format

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.

Get /config/alert/reporter/mail/to/{idx}/format

Authorizations:
ApiKey
path Parameters
idx
required
integer [ 0 .. 3 ]

The index of an alert destination.

Responses

Response samples

Content type
application/json
{
  • "result": "string",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/reporter/mail/to/{idx}/format

Authorizations:
ApiKey
path Parameters
idx
required
integer [ 0 .. 3 ]

The index of an alert destination.

Request Body schema: application/json
string (configAlertReporterMailToItemFormat)

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.

Responses

Request samples

Content type
application/json
"string"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/reporter/mail/to/{idx}/format

Authorizations:
ApiKey
path Parameters
idx
required
integer [ 0 .. 3 ]

The index of an alert destination.

Request Body schema: application/json
string (configAlertReporterMailToItemFormat)

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.

Responses

Request samples

Content type
application/json
"string"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/reporter/mail/to/{idx}/format

Delete this mail destination.

Authorizations:
ApiKey
path Parameters
idx
required
integer [ 0 .. 3 ]

The index of an alert destination.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/reporter/mail/to/{idx}/min-priority

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.

Get /config/alert/reporter/mail/to/{idx}/min-priority

Authorizations:
ApiKey
path Parameters
idx
required
integer [ 0 .. 3 ]

The index of an alert destination.

Responses

Response samples

Content type
application/json
{
  • "result": 3,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/reporter/mail/to/{idx}/min-priority

Authorizations:
ApiKey
path Parameters
idx
required
integer [ 0 .. 3 ]

The index of an alert destination.

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
3

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/reporter/mail/to/{idx}/min-priority

Authorizations:
ApiKey
path Parameters
idx
required
integer [ 0 .. 3 ]

The index of an alert destination.

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
3

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/reporter/mail/to/{idx}/min-priority

Reset to 0.

Authorizations:
ApiKey
path Parameters
idx
required
integer [ 0 .. 3 ]

The index of an alert destination.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/reporter/web

The configuration for reporting alerts via web server.

Get /config/alert/reporter/web

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/reporter/web

Authorizations:
ApiKey
Request Body schema: application/json
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 service set to the string alert and provider set to name of the desired service provider.

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:

  • 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.

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

Responses

Request samples

Content type
application/json
{
  • "min-priority": 7,
  • "service": "",
  • "options": "gzip,secure",
  • "user": "jsmith",
  • "password": "secret!"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/reporter/web

Authorizations:
ApiKey
Request Body schema: application/json
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 service set to the string alert and provider set to name of the desired service provider.

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:

  • 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.

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

Responses

Request samples

Content type
application/json
{
  • "min-priority": 7,
  • "service": "",
  • "options": "gzip,secure",
  • "user": "jsmith",
  • "password": "secret!"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/reporter/web

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/reporter/web/min-priority

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.

Get /config/alert/reporter/web/min-priority

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": 7,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/reporter/web/min-priority

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
7

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/reporter/web/min-priority

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
7

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/reporter/web/min-priority

Reset to 0.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/reporter/web/options

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.

Get /config/alert/reporter/web/options

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "gzip,secure",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/reporter/web/options

Authorizations:
ApiKey
Request Body schema: application/json
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:

  • 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.

Responses

Request samples

Content type
application/json
"gzip,secure"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/reporter/web/options

Authorizations:
ApiKey
Request Body schema: application/json
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:

  • 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.

Responses

Request samples

Content type
application/json
"gzip,secure"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/reporter/web/options

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/reporter/web/password

The password to be provided to the web server for authentication purposes.

This resource is write-only

Replace /config/alert/reporter/web/password

Authorizations:
ApiKey
Request Body schema: application/json
string (configAlertReporterWebPassword)

The password to be provided to the web server for authentication purposes.

This resource is write-only

Responses

Request samples

Content type
application/json
"secret!"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/reporter/web/password

Authorizations:
ApiKey
Request Body schema: application/json
string (configAlertReporterWebPassword)

The password to be provided to the web server for authentication purposes.

This resource is write-only

Responses

Request samples

Content type
application/json
"secret!"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/reporter/web/password

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/reporter/web/service

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.

Get /config/alert/reporter/web/service

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/reporter/web/service

Authorizations:
ApiKey
Request Body schema: application/json
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 service set to the string alert and provider set to name of the desired service provider.

Responses

Request samples

Content type
application/json
""

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/reporter/web/service

Authorizations:
ApiKey
Request Body schema: application/json
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 service set to the string alert and provider set to name of the desired service provider.

Responses

Request samples

Content type
application/json
""

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/reporter/web/service

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/reporter/web/uri

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.

Get /config/alert/reporter/web/uri

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{}

Replace /config/alert/reporter/web/uri

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/reporter/web/uri

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/reporter/web/uri

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/reporter/web/user

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.

Get /config/alert/reporter/web/user

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "jsmith",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/reporter/web/user

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
"jsmith"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/reporter/web/user

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
"jsmith"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/reporter/web/user

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/sys-prio

The priority of each system-generated alert. /sys/alert provides a description of these alerts.

Get /config/alert/sys-prio

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/sys-prio

Authorizations:
ApiKey
Request Body schema: application/json
Array
integer (configAlertSysPrioItem) [ 0 .. 7 ]

The priority of this system alert.

Responses

Request samples

Content type
application/json
[
  • 0,
  • 0,
  • 7,
  • 0,
  • 7,
  • 4,
  • 0,
  • 0,
  • 1,
  • 6,
  • 0,
  • 0,
  • 0,
  • 5,
  • 0,
  • 0,
  • 0,
  • 0,
  • 0,
  • 0
]

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/sys-prio

Authorizations:
ApiKey
Request Body schema: application/json
Array
integer (configAlertSysPrioItem) [ 0 .. 7 ]

The priority of this system alert.

Responses

Request samples

Content type
application/json
[
  • 0,
  • 0,
  • 7,
  • 0,
  • 7,
  • 4,
  • 0,
  • 0,
  • 1,
  • 6,
  • 0,
  • 0,
  • 0,
  • 5,
  • 0,
  • 0,
  • 0,
  • 0,
  • 0,
  • 0
]

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/sys-prio

Reset system alert priorities to 0.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/alert/sys-prio/{idx}

The priority of this system alert.

Get /config/alert/sys-prio/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a system alert.

Responses

Response samples

Content type
application/json
{
  • "result": 7,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/alert/sys-prio/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a system alert.

Request Body schema: application/json
integer (configAlertSysPrioItem) [ 0 .. 7 ]

The priority of this system alert.

Responses

Request samples

Content type
application/json
7

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/alert/sys-prio/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a system alert.

Request Body schema: application/json
integer (configAlertSysPrioItem) [ 0 .. 7 ]

The priority of this system alert.

Responses

Request samples

Content type
application/json
7

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/alert/sys-prio/{idx}

Reset to 0.

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a system alert.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/bacnet

The BACnet configuration.

Get /config/bacnet

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/bacnet

Authorizations:
ApiKey
Request Body schema: application/json
object (configBacnetServer)

The BACnet server configuration.

Responses

Request samples

Content type
application/json
{
  • "server": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/bacnet

Authorizations:
ApiKey
Request Body schema: application/json
object (configBacnetServer)

The BACnet server configuration.

Responses

Request samples

Content type
application/json
{
  • "server": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/bacnet

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/bacnet/server

The BACnet server configuration.

Get /config/bacnet/server

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/bacnet/server

Authorizations:
ApiKey
Request Body schema: application/json
object (configBacnetServerBip)

The BACnet over IPv4 configuration.

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 mstp protocol is enabled.

Responses

Request samples

Content type
application/json
{
  • "bip": {
    },
  • "enable": [
    ],
  • "epoch-relative": true,
  • "id": 4194303,
  • "mstp": 1
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/bacnet/server

Authorizations:
ApiKey
Request Body schema: application/json
object (configBacnetServerBip)

The BACnet over IPv4 configuration.

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 mstp protocol is enabled.

Responses

Request samples

Content type
application/json
{
  • "bip": {
    },
  • "enable": [
    ],
  • "epoch-relative": true,
  • "id": 4194303,
  • "mstp": 1
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/bacnet/server

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/bacnet/server/bip

The BACnet over IPv4 configuration.

Get /config/bacnet/server/bip

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/bacnet/server/bip

Authorizations:
ApiKey
Request Body schema: application/json
port
integer (configBacnetServerBipPort) [ 0 .. 65535 ]

The IPv4 port number used by the server when bip is enabled in /config/bacnet/server/enable. The default value is 0xBAC0 (47808).

Responses

Request samples

Content type
application/json
{
  • "port": 47808
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/bacnet/server/bip

Authorizations:
ApiKey
Request Body schema: application/json
port
integer (configBacnetServerBipPort) [ 0 .. 65535 ]

The IPv4 port number used by the server when bip is enabled in /config/bacnet/server/enable. The default value is 0xBAC0 (47808).

Responses

Request samples

Content type
application/json
{
  • "port": 47808
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/bacnet/server/bip

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/bacnet/server/bip/port

The IPv4 port number used by the server when bip is enabled in /config/bacnet/server/enable. The default value is 0xBAC0 (47808).

Get /config/bacnet/server/bip/port

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": 47808,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/bacnet/server/bip/port

Authorizations:
ApiKey
Request Body schema: application/json
integer (configBacnetServerBipPort) [ 0 .. 65535 ]

The IPv4 port number used by the server when bip is enabled in /config/bacnet/server/enable. The default value is 0xBAC0 (47808).

Responses

Request samples

Content type
application/json
47808

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/bacnet/server/bip/port

Authorizations:
ApiKey
Request Body schema: application/json
integer (configBacnetServerBipPort) [ 0 .. 65535 ]

The IPv4 port number used by the server when bip is enabled in /config/bacnet/server/enable. The default value is 0xBAC0 (47808).

Responses

Request samples

Content type
application/json
47808

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/bacnet/server/bip/port

Reset to 47808 (BAC0 in hex).

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/bacnet/server/enable

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.

Get /config/bacnet/server/enable

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

Replace /config/bacnet/server/enable

Authorizations:
ApiKey
Request Body schema: application/json
Array
string (configBacnetServerEnableItem)
Enum: "ethernet" "bip" "mstp"

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).

Responses

Request samples

Content type
application/json
[
  • "ethernet"
]

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/bacnet/server/enable

Authorizations:
ApiKey
Request Body schema: application/json
Array
string (configBacnetServerEnableItem)
Enum: "ethernet" "bip" "mstp"

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).

Responses

Request samples

Content type
application/json
[
  • "ethernet"
]

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/bacnet/server/enable

Disable the BACnet server.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/bacnet/server/enable/{idx}

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).

Get /config/bacnet/server/enable/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer [ 0 .. 0 ]

The index of an enabled BACnet protocol.

Responses

Response samples

Content type
application/json
{
  • "result": "ethernet",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/bacnet/server/enable/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer [ 0 .. 0 ]

The index of an enabled BACnet protocol.

Request Body schema: application/json
string (configBacnetServerEnableItem)
Enum: "ethernet" "bip" "mstp"

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).

Responses

Request samples

Content type
application/json
"ethernet"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/bacnet/server/enable/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer [ 0 .. 0 ]

The index of an enabled BACnet protocol.

Request Body schema: application/json
string (configBacnetServerEnableItem)
Enum: "ethernet" "bip" "mstp"

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).

Responses

Request samples

Content type
application/json
"ethernet"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/bacnet/server/enable/{idx}

Disable this protocol.

Authorizations:
ApiKey
path Parameters
idx
required
integer [ 0 .. 0 ]

The index of an enabled BACnet protocol.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/bacnet/server/epoch-relative

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.

Get /config/bacnet/server/epoch-relative

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": true,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/bacnet/server/epoch-relative

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
true

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/bacnet/server/epoch-relative

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
true

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/bacnet/server/epoch-relative

Reset to true.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/bacnet/server/id

The object id of the BACnet server.

Get /config/bacnet/server/id

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": 4194303,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/bacnet/server/id

Authorizations:
ApiKey
Request Body schema: application/json
integer (configBacnetServerId) [ 0 .. 4194303 ]

The object id of the BACnet server.

Responses

Request samples

Content type
application/json
4194303

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/bacnet/server/id

Authorizations:
ApiKey
Request Body schema: application/json
integer (configBacnetServerId) [ 0 .. 4194303 ]

The object id of the BACnet server.

Responses

Request samples

Content type
application/json
4194303

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/bacnet/server/id

Reset to 1.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/bacnet/server/mstp

The BACnet over MS/TP configuration. This is used only if the mstp protocol is enabled.

Get /config/bacnet/server/mstp

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": 1,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/bacnet/server/mstp

Authorizations:
ApiKey
Request Body schema: application/json
[ 0 .. 127 ]
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.

Responses

Request samples

Content type
application/json
1

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/bacnet/server/mstp

Authorizations:
ApiKey
Request Body schema: application/json
[ 0 .. 127 ]
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.

Responses

Request samples

Content type
application/json
1

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/bacnet/server/mstp

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/bacnet/server/mstp/mac

The MS/TP address of the meter's BACnet server.

Get /config/bacnet/server/mstp/mac

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": 127,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/bacnet/server/mstp/mac

Authorizations:
ApiKey
Request Body schema: application/json
integer (configBacnetServerMstpMac) [ 0 .. 127 ]

The MS/TP address of the meter's BACnet server.

Responses

Request samples

Content type
application/json
127

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/bacnet/server/mstp/mac

Authorizations:
ApiKey
Request Body schema: application/json
integer (configBacnetServerMstpMac) [ 0 .. 127 ]

The MS/TP address of the meter's BACnet server.

Responses

Request samples

Content type
application/json
127

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/bacnet/server/mstp/mac

Reset to 0.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/bacnet/server/mstp/max-mac

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.

Get /config/bacnet/server/mstp/max-mac

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": 0,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/bacnet/server/mstp/max-mac

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
0
0

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/bacnet/server/mstp/max-mac

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
0
0

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/bacnet/server/mstp/max-mac

Reset to 0.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/bacnet/server/mstp/port

The serial-port to use for the MS/TP protocol.

Get /config/bacnet/server/mstp/port

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "USB1:19200/8n1",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/bacnet/server/mstp/port

Authorizations:
ApiKey
Request Body schema: application/json
string (configBacnetServerMstpPort)

The serial-port to use for the MS/TP protocol.

Responses

Request samples

Content type
application/json
"USB1:19200/8n1"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/bacnet/server/mstp/port

Authorizations:
ApiKey
Request Body schema: application/json
string (configBacnetServerMstpPort)

The serial-port to use for the MS/TP protocol.

Responses

Request samples

Content type
application/json
"USB1:19200/8n1"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/bacnet/server/mstp/port

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/db

The database configuration.

Get /config/db

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/db

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "epoch": "1675276020"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/db

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "epoch": "1675276020"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/db

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/db/epoch

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.

Get /config/db/epoch

Get the meter epoch.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "1194937200"
}

Replace /config/db/epoch

Update the epoch with the value passed in the request body.

This resource is not updated transactionally.

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
"1675276020"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/db/epoch

Update the epoch with the value passed in the request body.

This resource is not updated transactionally.

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
"1675276020"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/db/epoch

Reset the database epoch to the current time of the meter.

This resource is not updated transactionally.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/display

The display (LCD) configuration of the meter.

Get /config/display

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/display

Authorizations:
ApiKey
Request Body schema: application/json
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:

  • 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.

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.

Responses

Request samples

Content type
application/json
{
  • "backlight": {
    },
  • "contrast": 65,
  • "fontset": "normal",
  • "screen": {
    },
  • "orientation": 90
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/display

Authorizations:
ApiKey
Request Body schema: application/json
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:

  • 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.

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.

Responses

Request samples

Content type
application/json
{
  • "backlight": {
    },
  • "contrast": 65,
  • "fontset": "normal",
  • "screen": {
    },
  • "orientation": 90
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/display

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/display/backlight

The backlight configuration of the display.

Get /config/display/backlight

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/display/backlight

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "brightness": 255,
  • "duration": 60
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/display/backlight

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "brightness": 255,
  • "duration": 60
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/display/backlight

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/display/backlight/brightness

The brightness of the backlight. Zero is darkest (backlight off), 255 is the brightest.

Get /config/display/backlight/brightness

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": 255,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/display/backlight/brightness

Authorizations:
ApiKey
Request Body schema: application/json
integer (configDisplayBacklightBrightness) [ 0 .. 255 ]

The brightness of the backlight. Zero is darkest (backlight off), 255 is the brightest.

Responses

Request samples

Content type
application/json
255

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/display/backlight/brightness

Authorizations:
ApiKey
Request Body schema: application/json
integer (configDisplayBacklightBrightness) [ 0 .. 255 ]

The brightness of the backlight. Zero is darkest (backlight off), 255 is the brightest.

Responses

Request samples

Content type
application/json
255

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/display/backlight/brightness

Reset to 0.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/display/backlight/duration

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.

Get /config/display/backlight/duration

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": 60,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/display/backlight/duration

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
60

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/display/backlight/duration

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
60

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/display/backlight/duration

Reset to 0.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/display/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.

Get /config/display/contrast

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": 65,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/display/contrast

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
65

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/display/contrast

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
65

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/display/contrast

Reset to 0.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/display/fontset

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.

Get /config/display/fontset

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "normal",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/display/fontset

Authorizations:
ApiKey
Request Body schema: application/json
string (configDisplayFontset)
Enum: "small" "normal" "large"

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.

Responses

Request samples

Content type
application/json
"normal"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/display/fontset

Authorizations:
ApiKey
Request Body schema: application/json
string (configDisplayFontset)
Enum: "small" "normal" "large"

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.

Responses

Request samples

Content type
application/json
"normal"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/display/fontset

Reset to normal.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/display/orientation

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.

Get /config/display/orientation

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": 90,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/display/orientation

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
90

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/display/orientation

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
90

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/display/orientation

Reset to 0.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/display/screen

Screen configurations. At this time, only the registers screen is configurable.

Get /config/display/screen

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/display/screen

Authorizations:
ApiKey
Request Body schema: application/json
object (configDisplayScreenRegisters)

The register screen configuration.

Responses

Request samples

Content type
application/json
{
  • "use": "ic",
  • "gen": "ic",
  • "Grid": "ic",
  • "Solar": "ic",
  • "temp": "i",
  • ".default": ""
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/display/screen

Authorizations:
ApiKey
Request Body schema: application/json
object (configDisplayScreenRegisters)

The register screen configuration.

Responses

Request samples

Content type
application/json
{
  • "use": "ic",
  • "gen": "ic",
  • "Grid": "ic",
  • "Solar": "ic",
  • "temp": "i",
  • ".default": ""
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/display/screen

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/display/screen/registers

The configuration of the registers screen - a screen that cycles through a list of registers, displaying their values.

Get /config/display/screen/registers

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/display/screen/registers

Authorizations:
ApiKey
Request Body schema: application/json
name*
additional property
string (configDisplayScreenRegistersName)

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.

Responses

Request samples

Content type
application/json
{
  • "name1": "ic",
  • "name2": "ic"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/display/screen/registers

Authorizations:
ApiKey
Request Body schema: application/json
name*
additional property
string (configDisplayScreenRegistersName)

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.

Responses

Request samples

Content type
application/json
{
  • "name1": "ic",
  • "name2": "ic"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/display/screen/registers

Reset to empty (no registers displayed).

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/display/screen/registers/{name}

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.

Get /config/display/screen/registers/{name}

Authorizations:
ApiKey
path Parameters
name
required
string
Example: Solar

The name of a register or the special keyword .default.

Responses

Response samples

Content type
application/json
{
  • "result": "ic",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/display/screen/registers/{name}

Authorizations:
ApiKey
path Parameters
name
required
string
Example: Solar

The name of a register or the special keyword .default.

Request Body schema: application/json
string (configDisplayScreenRegistersName)

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.

Responses

Request samples

Content type
application/json
"ic"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/display/screen/registers/{name}

Authorizations:
ApiKey
path Parameters
name
required
string
Example: Solar

The name of a register or the special keyword .default.

Request Body schema: application/json
string (configDisplayScreenRegistersName)

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.

Responses

Request samples

Content type
application/json
"ic"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/display/screen/registers/{name}

Remove this register from the screen.

Authorizations:
ApiKey
path Parameters
name
required
string
Example: Solar

The name of a register or the special keyword .default.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/language_code

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.

Get /config/language_code

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "en_GB",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/language_code

Authorizations:
ApiKey
Request Body schema: application/json
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 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.

Responses

Request samples

Content type
application/json
"en_GB"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/language_code

Authorizations:
ApiKey
Request Body schema: application/json
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 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.

Responses

Request samples

Content type
application/json
"en_GB"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/language_code

Reset to default language code en.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/local

The configuration of directly attached sensors.

Get /config/local

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/local

Authorizations:
ApiKey
Request Body schema: application/json
object (configLocalSensor)

The sensor configurations.

gain
string (configLocalGain)
Enum: "normal" "high"

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.

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.

Responses

Request samples

Content type
application/json
{
  • "sensor": {
    },
  • "gain": "normal",
  • "update-interval": 500
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/local

Authorizations:
ApiKey
Request Body schema: application/json
object (configLocalSensor)

The sensor configurations.

gain
string (configLocalGain)
Enum: "normal" "high"

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.

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.

Responses

Request samples

Content type
application/json
{
  • "sensor": {
    },
  • "gain": "normal",
  • "update-interval": 500
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/local

Reset configuration to the default (all sensors off).

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/local/gain

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.

Get /config/local/gain

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "normal",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/local/gain

Authorizations:
ApiKey
Request Body schema: application/json
string (configLocalGain)
Enum: "normal" "high"

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.

Responses

Request samples

Content type
application/json
"normal"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/local/gain

Authorizations:
ApiKey
Request Body schema: application/json
string (configLocalGain)
Enum: "normal" "high"

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.

Responses

Request samples

Content type
application/json
"normal"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/local/gain

Reset gain to normal.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/local/sensor

The sensor configurations.

Get /config/local/sensor

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/local/sensor

Authorizations:
ApiKey
Request Body schema: application/json
additional property
object (configLocalSensorName)

The sensor configuration.

Responses

Request samples

Content type
application/json
{
  • "L1": {
    },
  • "S1": {
    },
  • "S2": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/local/sensor

Authorizations:
ApiKey
Request Body schema: application/json
additional property
object (configLocalSensorName)

The sensor configuration.

Responses

Request samples

Content type
application/json
{
  • "L1": {
    },
  • "S1": {
    },
  • "S2": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/local/sensor

Reset configuration to all sensors off.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/local/sensor/{name}

The sensor configuration.

Get /config/local/sensor/{name}

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/local/sensor/{name}

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Request Body schema: application/json
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 is CTid.

model
string (configLocalSensorNameModel)

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.

phase
string (configLocalSensorNamePhase)

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.

Responses

Request samples

Content type
application/json
{
  • "channel": {
    },
  • "error": 0,
  • "model": "ML-SCT-019-0100",
  • "phase": "2.59@3:2.34@6:2.06@15:1.89@100"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/local/sensor/{name}

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Request Body schema: application/json
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 is CTid.

model
string (configLocalSensorNameModel)

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.

phase
string (configLocalSensorNamePhase)

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.

Responses

Request samples

Content type
application/json
{
  • "channel": {
    },
  • "error": 0,
  • "model": "ML-SCT-019-0100",
  • "phase": "2.59@3:2.34@6:2.06@15:1.89@100"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/local/sensor/{name}

Reset configuration to off.

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/local/sensor/{name}/channel

The A/D converter channel configuration of the named sensor.

Get /config/local/sensor/{name}/channel

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/local/sensor/{name}/channel

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Request Body schema: application/json
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:

  • integrate: The sample values are integrated over time.

  • normal: The sensor is operating in normal mode.

  • off: The sensor is not in use.

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).

Responses

Request samples

Content type
application/json
{
  • "bias": 0,
  • "mode": "normal",
  • "scale": -206.66
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/local/sensor/{name}/channel

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Request Body schema: application/json
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:

  • integrate: The sample values are integrated over time.

  • normal: The sensor is operating in normal mode.

  • off: The sensor is not in use.

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).

Responses

Request samples

Content type
application/json
{
  • "bias": 0,
  • "mode": "normal",
  • "scale": -206.66
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/local/sensor/{name}/channel

Reset channel to default configuration.

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/local/sensor/{name}/channel/bias

The bias value (offset) to be added when converting an A/D converter sample to a physical quantity.

Get /config/local/sensor/{name}/channel/bias

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Responses

Response samples

Content type
application/json
{
  • "result": 0,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/local/sensor/{name}/channel/bias

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Request Body schema: application/json
number (configLocalSensorNameChannelBias)

The bias value (offset) to be added when converting an A/D converter sample to a physical quantity.

Responses

Request samples

Content type
application/json
0
0

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/local/sensor/{name}/channel/bias

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Request Body schema: application/json
number (configLocalSensorNameChannelBias)

The bias value (offset) to be added when converting an A/D converter sample to a physical quantity.

Responses

Request samples

Content type
application/json
0
0

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/local/sensor/{name}/channel/bias

Reset to 0.

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/local/sensor/{name}/channel/mode

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.

Get /config/local/sensor/{name}/channel/mode

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Responses

Response samples

Content type
application/json
{
  • "result": "normal",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/local/sensor/{name}/channel/mode

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Request Body schema: application/json
string (configLocalSensorNameChannelMode)
Enum: "off" "normal" "integrate"

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.

Responses

Request samples

Content type
application/json
"normal"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/local/sensor/{name}/channel/mode

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Request Body schema: application/json
string (configLocalSensorNameChannelMode)
Enum: "off" "normal" "integrate"

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.

Responses

Request samples

Content type
application/json
"normal"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/local/sensor/{name}/channel/mode

Reset to off.

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/local/sensor/{name}/channel/scale

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).

Get /config/local/sensor/{name}/channel/scale

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Responses

Response samples

Content type
application/json
{
  • "result": -206.66,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/local/sensor/{name}/channel/scale

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Request Body schema: application/json
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).

Responses

Request samples

Content type
application/json
-206.66

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/local/sensor/{name}/channel/scale

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Request Body schema: application/json
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).

Responses

Request samples

Content type
application/json
-206.66

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/local/sensor/{name}/channel/scale

Reset to 0.

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/local/sensor/{name}/error

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.

Get /config/local/sensor/{name}/error

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Responses

Response samples

Content type
application/json
{
  • "result": 0,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/local/sensor/{name}/error

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Request Body schema: application/json
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 is CTid.

Responses

Request samples

Content type
application/json
0
0

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/local/sensor/{name}/error

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Request Body schema: application/json
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 is CTid.

Responses

Request samples

Content type
application/json
0
0

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/local/sensor/{name}/error

Reset to 0.

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/local/sensor/{name}/model

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.

Get /config/local/sensor/{name}/model

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Responses

Response samples

Content type
application/json
{
  • "result": "ML-SCT-019-0100",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/local/sensor/{name}/model

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Request Body schema: application/json
string (configLocalSensorNameModel)

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.

Responses

Request samples

Content type
application/json
"ML-SCT-019-0100"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/local/sensor/{name}/model

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Request Body schema: application/json
string (configLocalSensorNameModel)

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.

Responses

Request samples

Content type
application/json
"ML-SCT-019-0100"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/local/sensor/{name}/model

Reset to empty string.

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/local/sensor/{name}/phase

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.

Get /config/local/sensor/{name}/phase

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Responses

Response samples

Content type
application/json
{
  • "result": "2.59@3:2.34@6:2.06@15:1.89@100",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/local/sensor/{name}/phase

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Request Body schema: application/json
string (configLocalSensorNamePhase)

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.

Responses

Request samples

Content type
application/json
"2.59@3:2.34@6:2.06@15:1.89@100"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/local/sensor/{name}/phase

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Request Body schema: application/json
string (configLocalSensorNamePhase)

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.

Responses

Request samples

Content type
application/json
"2.59@3:2.34@6:2.06@15:1.89@100"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/local/sensor/{name}/phase

Reset to empty string.

Authorizations:
ApiKey
path Parameters
name
required
string
Example: S1

The name of a sensor (L1-L3, Ldc, or S1-S30).

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/local/update-interval

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.

Get /config/local/update-interval

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": 500,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/local/update-interval

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
500

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/local/update-interval

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
500

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/local/update-interval

Reset to 1000 milliseconds.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/location

The geographic location of the meter.

Get /config/location

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/location

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "latitude": 36.035,
  • "longitude": -115.46639
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/location

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "latitude": 36.035,
  • "longitude": -115.46639
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/location

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/location/latitude

The latitude of the meter's location in degrees. Positive values are north of the equator, negative values south of it.

Get /config/location/latitude

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": 36.035,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/location/latitude

Authorizations:
ApiKey
Request Body schema: application/json
number (configLocationLatitude)

The latitude of the meter's location in degrees. Positive values are north of the equator, negative values south of it.

Responses

Request samples

Content type
application/json
36.035

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/location/latitude

Authorizations:
ApiKey
Request Body schema: application/json
number (configLocationLatitude)

The latitude of the meter's location in degrees. Positive values are north of the equator, negative values south of it.

Responses

Request samples

Content type
application/json
36.035

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/location/latitude

Reset to 0.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/location/longitude

The longitude of the meter's location in degrees. Positive values are east of the prime meridian, negative values are west of it.

Get /config/location/longitude

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": -115.46639,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/location/longitude

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
-115.46639

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/location/longitude

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
-115.46639

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/location/longitude

Reset to 0.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/log

The log configuration.

Get /config/log

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/log

Authorizations:
ApiKey
Request Body schema: application/json
object (configLogSystem)

The system log configuration.

Responses

Request samples

Content type
application/json
{
  • "system": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/log

Authorizations:
ApiKey
Request Body schema: application/json
object (configLogSystem)

The system log configuration.

Responses

Request samples

Content type
application/json
{
  • "system": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/log

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/log/system

The system log configuration.

Get /config/log/system

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/log/system

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "size": 131072
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/log/system

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "size": 131072
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/log/system

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/log/system/size

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.

Get /config/log/system/size

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": 131072,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/log/system/size

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
131072

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/log/system/size

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
131072

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/log/system/size

Reset to 0.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/lua

Lua scripting configuration.

Get /config/lua

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/lua

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "script": {
    },
  • "ctrld": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/lua

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "script": {
    },
  • "ctrld": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/lua

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/lua/script

Lua scripts.

Get /config/lua/script

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/lua/script

Authorizations:
ApiKey
Request Body schema: application/json
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 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.

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.

Responses

Request samples

Content type
application/json
{
  • "alertd": "print(\"this is the alert script\");",
  • "tariff": "print(\"this is the tariff script\");",
  • "teamd": "print(\"this is the formulas script\");"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/lua/script

Authorizations:
ApiKey
Request Body schema: application/json
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 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.

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.

Responses

Request samples

Content type
application/json
{
  • "alertd": "print(\"this is the alert script\");",
  • "tariff": "print(\"this is the tariff script\");",
  • "teamd": "print(\"this is the formulas script\");"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/lua/script

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/lua/script/alertd

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.

Get /config/lua/script/alertd

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "print(\"this is the alert script\");",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/lua/script/alertd

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
"print(\"this is the alert script\");"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/lua/script/alertd

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
"print(\"this is the alert script\");"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/lua/script/alertd

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/lua/script/tariff

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.

Get /config/lua/script/tariff

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "print(\"this is the tariff script\");",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/lua/script/tariff

Authorizations:
ApiKey
Request Body schema: application/json
string (configLuaScriptTariff)

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.

Responses

Request samples

Content type
application/json
"print(\"this is the tariff script\");"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/lua/script/tariff

Authorizations:
ApiKey
Request Body schema: application/json
string (configLuaScriptTariff)

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.

Responses

Request samples

Content type
application/json
"print(\"this is the tariff script\");"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/lua/script/tariff

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/lua/script/teamd

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.

Get /config/lua/script/teamd

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "print(\"this is the formulas script\");",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/lua/script/teamd

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
"print(\"this is the formulas script\");"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/lua/script/teamd

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
"print(\"this is the formulas script\");"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/lua/script/teamd

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/lua/ctrld

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.

Get /config/lua/ctrld

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/lua/ctrld

Authorizations:
ApiKey
Request Body schema: application/json
script*
additional property
string (configLuaCtrldScript)

The control script.

Responses

Request samples

Content type
application/json
{
  • "test": "print(\"this is control script test\");"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/lua/ctrld

Authorizations:
ApiKey
Request Body schema: application/json
script*
additional property
string (configLuaCtrldScript)

The control script.

Responses

Request samples

Content type
application/json
{
  • "test": "print(\"this is control script test\");"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/lua/ctrld

Delete all control scripts.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/lua/ctrld/{script}

The control script.

Get /config/lua/ctrld/{script}

Authorizations:
ApiKey
path Parameters
script
required
string

The name of a Lua script.

Responses

Response samples

Content type
application/json
{
  • "result": "print(\"this is control script test\");",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/lua/ctrld/{script}

Authorizations:
ApiKey
path Parameters
script
required
string

The name of a Lua script.

Request Body schema: application/json
string (configLuaCtrldScript)

The control script.

Responses

Request samples

Content type
application/json
"print(\"this is control script test\");"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/lua/ctrld/{script}

Authorizations:
ApiKey
path Parameters
script
required
string

The name of a Lua script.

Request Body schema: application/json
string (configLuaCtrldScript)

The control script.

Responses

Request samples

Content type
application/json
"print(\"this is control script test\");"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/lua/ctrld/{script}

Delete the script.

Authorizations:
ApiKey
path Parameters
script
required
string

The name of a Lua script.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus

Modbus-related configurations.

Get /config/modbus

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "client": {
    },
  • "server": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "client": {
    },
  • "server": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/client

Modbus client configuration. This is used by the meter to communicate with other Modbus devices.

Get /config/modbus/client

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/client

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "map": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/client

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "map": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/client

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/client/map

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.

Get /config/modbus/client/map

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/client/map

Authorizations:
ApiKey
Request Body schema: application/json
additional property
object (configModbusClientMapName)

Modbus map consisting of a list of register definitions and a set of options.

Responses

Request samples

Content type
application/json
{
  • "user_dev": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/client/map

Authorizations:
ApiKey
Request Body schema: application/json
additional property
object (configModbusClientMapName)

Modbus map consisting of a list of register definitions and a set of options.

Responses

Request samples

Content type
application/json
{
  • "user_dev": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/client/map

Delete all user maps.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/client/map/{name}

Modbus map consisting of a list of register definitions and a set of options.

Get /config/modbus/client/map/{name}

Authorizations:
ApiKey
path Parameters
name
required
string
Example: my_modbus_map

The name of a user Modbus map (editable).

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/client/map/{name}

Authorizations:
ApiKey
path Parameters
name
required
string
Example: my_modbus_map

The name of a user Modbus map (editable).

Request Body schema: application/json
object (configModbusClientMapNameOption)

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.

Array of objects (configModbusClientMapNameReg)

A list of Modbus register definitions.

Responses

Request samples

Content type
application/json
{
  • "option": {
    },
  • "reg": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/client/map/{name}

Authorizations:
ApiKey
path Parameters
name
required
string
Example: my_modbus_map

The name of a user Modbus map (editable).

Request Body schema: application/json
object (configModbusClientMapNameOption)

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.

Array of objects (configModbusClientMapNameReg)

A list of Modbus register definitions.

Responses

Request samples

Content type
application/json
{
  • "option": {
    },
  • "reg": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/client/map/{name}

Delete this map.

Authorizations:
ApiKey
path Parameters
name
required
string
Example: my_modbus_map

The name of a user Modbus map (editable).

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/client/map/{name}/option

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.

Get /config/modbus/client/map/{name}/option

Authorizations:
ApiKey
path Parameters
name
required
string
Example: my_modbus_map

The name of a user Modbus map (editable).

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/client/map/{name}/option

Authorizations:
ApiKey
path Parameters
name
required
string
Example: my_modbus_map

The name of a user Modbus map (editable).

Request Body schema: application/json
opt*
additional property
string (configModbusClientMapNameOptionOpt)

The value of the Modbus map option.

Responses

Request samples

Content type
application/json
{
  • "default-modbus-addr": "2",
  • "default-serial-params": "9600/8n1"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/client/map/{name}/option

Authorizations:
ApiKey
path Parameters
name
required
string
Example: my_modbus_map

The name of a user Modbus map (editable).

Request Body schema: application/json
opt*
additional property
string (configModbusClientMapNameOptionOpt)

The value of the Modbus map option.

Responses

Request samples

Content type
application/json
{
  • "default-modbus-addr": "2",
  • "default-serial-params": "9600/8n1"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/client/map/{name}/option

Delete all options.

Authorizations:
ApiKey
path Parameters
name
required
string
Example: my_modbus_map

The name of a user Modbus map (editable).

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/client/map/{name}/option/{opt}

The value of the Modbus map option.

Get /config/modbus/client/map/{name}/option/{opt}

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "9600/8n1",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/client/map/{name}/option/{opt}

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
string (configModbusClientMapNameOptionOpt)

The value of the Modbus map option.

Responses

Request samples

Content type
application/json
"9600/8n1"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/client/map/{name}/option/{opt}

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
string (configModbusClientMapNameOptionOpt)

The value of the Modbus map option.

Responses

Request samples

Content type
application/json
"9600/8n1"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/client/map/{name}/option/{opt}

Delete this option.

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/client/map/{name}/reg

A list of Modbus register definitions.

Get /config/modbus/client/map/{name}/reg

Authorizations:
ApiKey
path Parameters
name
required
string
Example: my_modbus_map

The name of a user Modbus map (editable).

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/client/map/{name}/reg

Authorizations:
ApiKey
path Parameters
name
required
string
Example: my_modbus_map

The name of a user Modbus map (editable).

Request Body schema: application/json
Array
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:

  • 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.
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 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).

kind
string (configModbusClientMapNameRegItemKind)
Enum: "analog" "enum" "bitset"

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.

unit
string (configModbusClientMapNameRegItemUnit)

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.
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:

phys = (reg + offset) * scale

where offset is the value defined here and scale is the value defined for member scale.

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:

phys = (reg + offset) * scale

where scale is the value defined here and offset is the value defined for member offset.

access
string (configModbusClientMapNameRegItemAccess)
Enum: "ro" "rw"

The access-mode of the register. It must be one of:

  • ro: read-only
  • rw: read-write

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/client/map/{name}/reg

Authorizations:
ApiKey
path Parameters
name
required
string
Example: my_modbus_map

The name of a user Modbus map (editable).

Request Body schema: application/json
Array
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:

  • 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.
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 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).

kind
string (configModbusClientMapNameRegItemKind)
Enum: "analog" "enum" "bitset"

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.

unit
string (configModbusClientMapNameRegItemUnit)

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.
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:

phys = (reg + offset) * scale

where offset is the value defined here and scale is the value defined for member scale.

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:

phys = (reg + offset) * scale

where scale is the value defined here and offset is the value defined for member offset.

access
string (configModbusClientMapNameRegItemAccess)
Enum: "ro" "rw"

The access-mode of the register. It must be one of:

  • ro: read-only
  • rw: read-write

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/client/map/{name}/reg

Reset to empty array.

Authorizations:
ApiKey
path Parameters
name
required
string
Example: my_modbus_map

The name of a user Modbus map (editable).

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/client/map/{name}/reg/{idx}

A Modbus register definition.

Get /config/modbus/client/map/{name}/reg/{idx}

Authorizations:
ApiKey
path Parameters
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.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/client/map/{name}/reg/{idx}

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
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:

  • 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.
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 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).

kind
string (configModbusClientMapNameRegItemKind)
Enum: "analog" "enum" "bitset"

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.

unit
string (configModbusClientMapNameRegItemUnit)

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.
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:

phys = (reg + offset) * scale

where offset is the value defined here and scale is the value defined for member scale.

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:

phys = (reg + offset) * scale

where scale is the value defined here and offset is the value defined for member offset.

access
string (configModbusClientMapNameRegItemAccess)
Enum: "ro" "rw"

The access-mode of the register. It must be one of:

  • ro: read-only
  • rw: read-write

Responses

Request samples

Content type
application/json
{
  • "name": "irradiance",
  • "addr": 65535,
  • "type": "u32",
  • "encoding": "ABCD",
  • "kind": "analog",
  • "unit": "W",
  • "offset": 0,
  • "scale": 0.1,
  • "access": "ro"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/client/map/{name}/reg/{idx}

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
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:

  • 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.
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 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).

kind
string (configModbusClientMapNameRegItemKind)
Enum: "analog" "enum" "bitset"

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.

unit
string (configModbusClientMapNameRegItemUnit)

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.
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:

phys = (reg + offset) * scale

where offset is the value defined here and scale is the value defined for member scale.

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:

phys = (reg + offset) * scale

where scale is the value defined here and offset is the value defined for member offset.

access
string (configModbusClientMapNameRegItemAccess)
Enum: "ro" "rw"

The access-mode of the register. It must be one of:

  • ro: read-only
  • rw: read-write

Responses

Request samples

Content type
application/json
{
  • "name": "irradiance",
  • "addr": 65535,
  • "type": "u32",
  • "encoding": "ABCD",
  • "kind": "analog",
  • "unit": "W",
  • "offset": 0,
  • "scale": 0.1,
  • "access": "ro"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/client/map/{name}/reg/{idx}

Delete this register definition.

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/client/map/{name}/reg/{idx}/name

The name of the register. The user can choose this name freely so long as each register within a map has a unique name.

Get /config/modbus/client/map/{name}/reg/{idx}/name

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "irradiance",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/client/map/{name}/reg/{idx}/name

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
"irradiance"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/client/map/{name}/reg/{idx}/name

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
"irradiance"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/client/map/{name}/reg/{idx}/name

Reset to empty string.

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/client/map/{name}/reg/{idx}/addr

The Modbus address of the register.

Get /config/modbus/client/map/{name}/reg/{idx}/addr

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": 65535,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/client/map/{name}/reg/{idx}/addr

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
integer (configModbusClientMapNameRegItemAddr) [ 0 .. 65535 ]

The Modbus address of the register.

Responses

Request samples

Content type
application/json
65535

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/client/map/{name}/reg/{idx}/addr

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
integer (configModbusClientMapNameRegItemAddr) [ 0 .. 65535 ]

The Modbus address of the register.

Responses

Request samples

Content type
application/json
65535

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/client/map/{name}/reg/{idx}/addr

Reset to 0.

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/client/map/{name}/reg/{idx}/type

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.

Get /config/modbus/client/map/{name}/reg/{idx}/type

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "u32",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/client/map/{name}/reg/{idx}/type

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
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:

  • 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.

Responses

Request samples

Content type
application/json
"u32"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/client/map/{name}/reg/{idx}/type

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
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:

  • 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.

Responses

Request samples

Content type
application/json
"u32"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/client/map/{name}/reg/{idx}/type

Reset to u16.

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/client/map/{name}/reg/{idx}/encoding

Requires firmware ≥ v4.7.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).

Get /config/modbus/client/map/{name}/reg/{idx}/encoding

Requires firmware ≥ v4.7.

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "ABCD",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/client/map/{name}/reg/{idx}/encoding

Requires firmware ≥ v4.7.

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
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 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).

Responses

Request samples

Content type
application/json
"ABCD"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/client/map/{name}/reg/{idx}/encoding

Requires firmware ≥ v4.7.

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
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 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).

Responses

Request samples

Content type
application/json
"ABCD"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/client/map/{name}/reg/{idx}/encoding

Requires firmware ≥ v4.7.Reset to the empty string, i.e., the default big-endian encoding used by Modbus.

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/client/map/{name}/reg/{idx}/kind

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.

Get /config/modbus/client/map/{name}/reg/{idx}/kind

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "analog",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/client/map/{name}/reg/{idx}/kind

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
string (configModbusClientMapNameRegItemKind)
Enum: "analog" "enum" "bitset"

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.

Responses

Request samples

Content type
application/json
"analog"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/client/map/{name}/reg/{idx}/kind

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
string (configModbusClientMapNameRegItemKind)
Enum: "analog" "enum" "bitset"

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.

Responses

Request samples

Content type
application/json
"analog"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/client/map/{name}/reg/{idx}/kind

Reset to analog.

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/client/map/{name}/reg/{idx}/unit

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.

Get /config/modbus/client/map/{name}/reg/{idx}/unit

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "W",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/client/map/{name}/reg/{idx}/unit

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
string (configModbusClientMapNameRegItemUnit)

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.

Responses

Request samples

Content type
application/json
"W"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/client/map/{name}/reg/{idx}/unit

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
string (configModbusClientMapNameRegItemUnit)

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.

Responses

Request samples

Content type
application/json
"W"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/client/map/{name}/reg/{idx}/unit

Reset to empty string.

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/client/map/{name}/reg/{idx}/offset

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.

Get /config/modbus/client/map/{name}/reg/{idx}/offset

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": 0,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/client/map/{name}/reg/{idx}/offset

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
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:

phys = (reg + offset) * scale

where offset is the value defined here and scale is the value defined for member scale.

Responses

Request samples

Content type
application/json
0
0

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/client/map/{name}/reg/{idx}/offset

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
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:

phys = (reg + offset) * scale

where offset is the value defined here and scale is the value defined for member scale.

Responses

Request samples

Content type
application/json
0
0

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/client/map/{name}/reg/{idx}/offset

Reset to 0.

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/client/map/{name}/reg/{idx}/scale

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.

Get /config/modbus/client/map/{name}/reg/{idx}/scale

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": 0.1,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/client/map/{name}/reg/{idx}/scale

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
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:

phys = (reg + offset) * scale

where scale is the value defined here and offset is the value defined for member offset.

Responses

Request samples

Content type
application/json
0.1

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/client/map/{name}/reg/{idx}/scale

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
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:

phys = (reg + offset) * scale

where scale is the value defined here and offset is the value defined for member offset.

Responses

Request samples

Content type
application/json
0.1

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/client/map/{name}/reg/{idx}/scale

Reset to 1.

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/client/map/{name}/reg/{idx}/access

The access-mode of the register. It must be one of:

  • ro: read-only
  • rw: read-write

Get /config/modbus/client/map/{name}/reg/{idx}/access

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "ro",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/client/map/{name}/reg/{idx}/access

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
string (configModbusClientMapNameRegItemAccess)
Enum: "ro" "rw"

The access-mode of the register. It must be one of:

  • ro: read-only
  • rw: read-write

Responses

Request samples

Content type
application/json
"ro"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/client/map/{name}/reg/{idx}/access

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
string (configModbusClientMapNameRegItemAccess)
Enum: "ro" "rw"

The access-mode of the register. It must be one of:

  • ro: read-only
  • rw: read-write

Responses

Request samples

Content type
application/json
"ro"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/client/map/{name}/reg/{idx}/access

Reset to rw.

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/server

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.

Get /config/modbus/server

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/server

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "enable": [
    ],
  • "id": 1,
  • "rtu": {
    },
  • "tcp": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/server

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "enable": [
    ],
  • "id": 1,
  • "rtu": {
    },
  • "tcp": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/server

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/server/enable

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:

Get /config/modbus/server/enable

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/server/enable

Authorizations:
ApiKey
Request Body schema: application/json
Array
string (configModbusServerEnableItem)
Enum: "rtu" "tcp"

The name of a protocol that is enabled.

Responses

Request samples

Content type
application/json
[
  • "rtu"
]

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/server/enable

Authorizations:
ApiKey
Request Body schema: application/json
Array
string (configModbusServerEnableItem)
Enum: "rtu" "tcp"

The name of a protocol that is enabled.

Responses

Request samples

Content type
application/json
[
  • "rtu"
]

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/server/enable

Reset to empty array.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/server/enable/{idx}

The name of a protocol that is enabled.

Get /config/modbus/server/enable/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of an enabled Modbus protocol.

Responses

Response samples

Content type
application/json
{
  • "result": "rtu",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/server/enable/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of an enabled Modbus protocol.

Request Body schema: application/json
string (configModbusServerEnableItem)
Enum: "rtu" "tcp"

The name of a protocol that is enabled.

Responses

Request samples

Content type
application/json
"rtu"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/server/enable/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of an enabled Modbus protocol.

Request Body schema: application/json
string (configModbusServerEnableItem)
Enum: "rtu" "tcp"

The name of a protocol that is enabled.

Responses

Request samples

Content type
application/json
"rtu"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/server/enable/{idx}

Disable this protocol.

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of an enabled Modbus protocol.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/server/id

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.

Get /config/modbus/server/id

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": 1,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/server/id

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
1

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/server/id

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
1

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/server/id

Reset to 1.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/server/rtu

The RTU protocol configuration.

Get /config/modbus/server/rtu

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/server/rtu

Authorizations:
ApiKey
Request Body schema: application/json
port
string (configModbusServerRtuPort)

The serial-port to use for the RTU protocol.

Responses

Request samples

Content type
application/json
{
  • "port": "USB2:9600/8o2"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/server/rtu

Authorizations:
ApiKey
Request Body schema: application/json
port
string (configModbusServerRtuPort)

The serial-port to use for the RTU protocol.

Responses

Request samples

Content type
application/json
{
  • "port": "USB2:9600/8o2"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/server/rtu

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/server/rtu/port

The serial-port to use for the RTU protocol.

Get /config/modbus/server/rtu/port

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "USB2:9600/8o2",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/server/rtu/port

Authorizations:
ApiKey
Request Body schema: application/json
string (configModbusServerRtuPort)

The serial-port to use for the RTU protocol.

Responses

Request samples

Content type
application/json
"USB2:9600/8o2"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/server/rtu/port

Authorizations:
ApiKey
Request Body schema: application/json
string (configModbusServerRtuPort)

The serial-port to use for the RTU protocol.

Responses

Request samples

Content type
application/json
"USB2:9600/8o2"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/server/rtu/port

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/server/tcp

The TCP protocol configuration.

Get /config/modbus/server/tcp

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/server/tcp

Authorizations:
ApiKey
Request Body schema: application/json
port
integer (configModbusServerTcpPort) [ 0 .. 65535 ]

The IP port of the Modbus server. The default value is 502.

Responses

Request samples

Content type
application/json
{
  • "port": 502
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/server/tcp

Authorizations:
ApiKey
Request Body schema: application/json
port
integer (configModbusServerTcpPort) [ 0 .. 65535 ]

The IP port of the Modbus server. The default value is 502.

Responses

Request samples

Content type
application/json
{
  • "port": 502
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/server/tcp

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/modbus/server/tcp/port

The IP port of the Modbus server. The default value is 502.

Get /config/modbus/server/tcp/port

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": 502,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/modbus/server/tcp/port

Authorizations:
ApiKey
Request Body schema: application/json
integer (configModbusServerTcpPort) [ 0 .. 65535 ]

The IP port of the Modbus server. The default value is 502.

Responses

Request samples

Content type
application/json
502

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/modbus/server/tcp/port

Authorizations:
ApiKey
Request Body schema: application/json
integer (configModbusServerTcpPort) [ 0 .. 65535 ]

The IP port of the Modbus server. The default value is 502.

Responses

Request samples

Content type
application/json
502

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/modbus/server/tcp/port

Reset to 502.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net

The network configuration.

The current state of the network is available at /sys/net.

Get /config/net

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net

Authorizations:
ApiKey
Request Body schema: application/json
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 (PUT, POST, and DELETE) to this resource are not executed transactionally.

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.

Responses

Request samples

Content type
application/json
{
  • "ethernet": {
    },
  • "goproxy": {
    },
  • "homeplug": {
    },
  • "hostname": "eGauge42",
  • "http": {
    },
  • "ipv4": {
    },
  • "nameserver": {
    },
  • "ntp": {
    },
  • "option": {
    },
  • "proxy": {
    },
  • "ptp": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net

Authorizations:
ApiKey
Request Body schema: application/json
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 (PUT, POST, and DELETE) to this resource are not executed transactionally.

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.

Responses

Request samples

Content type
application/json
{
  • "ethernet": {
    },
  • "goproxy": {
    },
  • "homeplug": {
    },
  • "hostname": "eGauge42",
  • "http": {
    },
  • "ipv4": {
    },
  • "nameserver": {
    },
  • "ntp": {
    },
  • "option": {
    },
  • "proxy": {
    },
  • "ptp": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/ethernet

The Ethernet configuration of the meter.

Get /config/net/ethernet

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/ethernet

Authorizations:
ApiKey
Request Body schema: application/json
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 true.

Responses

Request samples

Content type
application/json
{
  • "watchdog": true
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/ethernet

Authorizations:
ApiKey
Request Body schema: application/json
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 true.

Responses

Request samples

Content type
application/json
{
  • "watchdog": true
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/ethernet

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/ethernet/watchdog

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.

Get /config/net/ethernet/watchdog

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": true,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/ethernet/watchdog

Authorizations:
ApiKey
Request Body schema: application/json
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 true.

Responses

Request samples

Content type
application/json
true

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/ethernet/watchdog

Authorizations:
ApiKey
Request Body schema: application/json
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 true.

Responses

Request samples

Content type
application/json
true

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/ethernet/watchdog

Reset to true.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/goproxy

The Go proxy configuration of the meter.

Get /config/net/goproxy

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/goproxy

Authorizations:
ApiKey
Request Body schema: application/json
enable
boolean (configNetGoproxyEnable)

If true, the meter will connect to the Go proxy server.

server
string (configNetGoproxyServer)

The hostname of the Go proxy server.

Responses

Request samples

Content type
application/json
{
  • "enable": true,
  • "server": "proxy.egauge.io"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/goproxy

Authorizations:
ApiKey
Request Body schema: application/json
enable
boolean (configNetGoproxyEnable)

If true, the meter will connect to the Go proxy server.

server
string (configNetGoproxyServer)

The hostname of the Go proxy server.

Responses

Request samples

Content type
application/json
{
  • "enable": true,
  • "server": "proxy.egauge.io"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/goproxy

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/goproxy/enable

If true, the meter will connect to the Go proxy server.

Get /config/net/goproxy/enable

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": true,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/goproxy/enable

Authorizations:
ApiKey
Request Body schema: application/json
boolean (configNetGoproxyEnable)

If true, the meter will connect to the Go proxy server.

Responses

Request samples

Content type
application/json
true

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/goproxy/enable

Authorizations:
ApiKey
Request Body schema: application/json
boolean (configNetGoproxyEnable)

If true, the meter will connect to the Go proxy server.

Responses

Request samples

Content type
application/json
true

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/goproxy/enable

Reset to false.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/goproxy/server

The hostname of the Go proxy server.

Get /config/net/goproxy/server

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "proxy.egauge.io",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/goproxy/server

Authorizations:
ApiKey
Request Body schema: application/json
string (configNetGoproxyServer)

The hostname of the Go proxy server.

Responses

Request samples

Content type
application/json
"proxy.egauge.io"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/goproxy/server

Authorizations:
ApiKey
Request Body schema: application/json
string (configNetGoproxyServer)

The hostname of the Go proxy server.

Responses

Request samples

Content type
application/json
"proxy.egauge.io"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/goproxy/server

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/homeplug

HomePlug configuration. This is used only by devices with built-in HomePlug power-line communication (egauge2, EG3x10 and EG41xx).

Get /config/net/homeplug

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/homeplug

Authorizations:
ApiKey
Request Body schema: application/json
region
string (configNetHomeplugRegion)
Enum: "CE" "NA"

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.

Responses

Request samples

Content type
application/json
{
  • "region": "CE"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/homeplug

Authorizations:
ApiKey
Request Body schema: application/json
region
string (configNetHomeplugRegion)
Enum: "CE" "NA"

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.

Responses

Request samples

Content type
application/json
{
  • "region": "CE"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/homeplug

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/homeplug/region

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.

Get /config/net/homeplug/region

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "CE",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/homeplug/region

Authorizations:
ApiKey
Request Body schema: application/json
string (configNetHomeplugRegion)
Enum: "CE" "NA"

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.

Responses

Request samples

Content type
application/json
"CE"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/homeplug/region

Authorizations:
ApiKey
Request Body schema: application/json
string (configNetHomeplugRegion)
Enum: "CE" "NA"

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.

Responses

Request samples

Content type
application/json
"CE"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/homeplug/region

Reset to NA.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/hostname

The hostname of the meter. Must consist of ASCII letters, digits, and dashes only.

Get /config/net/hostname

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "eGauge42",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/hostname

Authorizations:
ApiKey
Request Body schema: application/json
string (configNetHostname)

The hostname of the meter. Must consist of ASCII letters, digits, and dashes only.

Responses

Request samples

Content type
application/json
"eGauge42"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/hostname

Authorizations:
ApiKey
Request Body schema: application/json
string (configNetHostname)

The hostname of the meter. Must consist of ASCII letters, digits, and dashes only.

Responses

Request samples

Content type
application/json
"eGauge42"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/hostname

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/http

Web (HTTP) related configurations.

Modification requests (PUT, POST, and DELETE) to this resource are not executed transactionally.

Get /config/net/http

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/http

Authorizations:
ApiKey
Request Body schema: application/json
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:

  • 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.

Responses

Request samples

Content type
application/json
{
  • "cgi-bin": "user-required",
  • "client": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/http

Authorizations:
ApiKey
Request Body schema: application/json
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:

  • 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.

Responses

Request samples

Content type
application/json
{
  • "cgi-bin": "user-required",
  • "client": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/http

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/http/certificate

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.

Replace /config/net/http/certificate

Set the HTTP certificate to the one passed in the request body.

This resource is not updated transactionally.

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
"string"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/http/certificate

Set the HTTP certificate to the one passed in the request body.

This resource is not updated transactionally.

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
"string"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/http/certificate

Reset to a factory-installed self-signed certificate.

This resource is not updated transactionally.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/http/client

Configuration for meter-initiated HTTP connections.

Get /config/net/http/client

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/http/client

Authorizations:
ApiKey
Request Body schema: application/json
insecure
boolean (configNetHttpClientInsecure)

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.

Responses

Request samples

Content type
application/json
{
  • "insecure": false
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/http/client

Authorizations:
ApiKey
Request Body schema: application/json
insecure
boolean (configNetHttpClientInsecure)

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.

Responses

Request samples

Content type
application/json
{
  • "insecure": false
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/http/client

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/http/client/insecure

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.

Get /config/net/http/client/insecure

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": false,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/http/client/insecure

Authorizations:
ApiKey
Request Body schema: application/json
boolean (configNetHttpClientInsecure)

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.

Responses

Request samples

Content type
application/json
false

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/http/client/insecure

Authorizations:
ApiKey
Request Body schema: application/json
boolean (configNetHttpClientInsecure)

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.

Responses

Request samples

Content type
application/json
false

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/http/client/insecure

Reset to false.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/http/cgi-bin

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.

Get /config/net/http/cgi-bin

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "disable",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/http/cgi-bin

Set CGI-BIN support according to the value passed in the request body.

This resource is not updated transactionally.

Authorizations:
ApiKey
Request Body schema: application/json
string (configNetHttpCgiBin)
Enum: "disable" "user-optional" "user-required"

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.

Responses

Request samples

Content type
application/json
"disable"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/http/cgi-bin

Set CGI-BIN support according to the value passed in the request body.

This resource is not updated transactionally.

Authorizations:
ApiKey
Request Body schema: application/json
string (configNetHttpCgiBin)
Enum: "disable" "user-optional" "user-required"

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.

Responses

Request samples

Content type
application/json
"disable"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/http/cgi-bin

Reset to disable.

This resource is not updated transactionally.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/ipv4

The Internet Protocol v4 (IPv4) configuration.

Get /config/net/ipv4

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/ipv4

Authorizations:
ApiKey
Request Body schema: application/json
dhcp
boolean (configNetIpv4Dhcp)

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.

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.

Responses

Request samples

Content type
application/json
{
  • "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"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/ipv4

Authorizations:
ApiKey
Request Body schema: application/json
dhcp
boolean (configNetIpv4Dhcp)

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.

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.

Responses

Request samples

Content type
application/json
{
  • "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"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/ipv4

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/ipv4/dhcp

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.

Get /config/net/ipv4/dhcp

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": true,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/ipv4/dhcp

Authorizations:
ApiKey
Request Body schema: application/json
boolean (configNetIpv4Dhcp)

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.

Responses

Request samples

Content type
application/json
true

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/ipv4/dhcp

Authorizations:
ApiKey
Request Body schema: application/json
boolean (configNetIpv4Dhcp)

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.

Responses

Request samples

Content type
application/json
true

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/ipv4/dhcp

Reset to true.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/ipv4/address

An IPv4 address in dotted decimal notation.

Get /config/net/ipv4/address

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "192.168.1.42",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/ipv4/address

Authorizations:
ApiKey
Request Body schema: application/json
string (configNetIpv4Address)

An IPv4 address in dotted decimal notation.

Responses

Request samples

Content type
application/json
"192.168.1.42"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/ipv4/address

Authorizations:
ApiKey
Request Body schema: application/json
string (configNetIpv4Address)

An IPv4 address in dotted decimal notation.

Responses

Request samples

Content type
application/json
"192.168.1.42"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/ipv4/address

Reset to 0.0.0.0.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/ipv4/broadcast

An IPv4 broadcast address in dotted decimal notation.

Get /config/net/ipv4/broadcast

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "192.168.1.255",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/ipv4/broadcast

Authorizations:
ApiKey
Request Body schema: application/json
string (configNetIpv4Broadcast)

An IPv4 broadcast address in dotted decimal notation.

Responses

Request samples

Content type
application/json
"192.168.1.255"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/ipv4/broadcast

Authorizations:
ApiKey
Request Body schema: application/json
string (configNetIpv4Broadcast)

An IPv4 broadcast address in dotted decimal notation.

Responses

Request samples

Content type
application/json
"192.168.1.255"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/ipv4/broadcast

Reset to 0.0.0.0.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/ipv4/netmask

The address of the IPv4 gateway in dotted decimal notation.

Get /config/net/ipv4/netmask

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "255.255.255.0",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/ipv4/netmask

Authorizations:
ApiKey
Request Body schema: application/json
string (configNetIpv4Netmask)

The address of the IPv4 gateway in dotted decimal notation.

Responses

Request samples

Content type
application/json
"255.255.255.0"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/ipv4/netmask

Authorizations:
ApiKey
Request Body schema: application/json
string (configNetIpv4Netmask)

The address of the IPv4 gateway in dotted decimal notation.

Responses

Request samples

Content type
application/json
"255.255.255.0"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/ipv4/netmask

Reset to 0.0.0.0.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/ipv4/network

The IPv4 network mask in dotted decimal notation.

Get /config/net/ipv4/network

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "192.168.1.0",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/ipv4/network

Authorizations:
ApiKey
Request Body schema: application/json
string (configNetIpv4Network)

The IPv4 network mask in dotted decimal notation.

Responses

Request samples

Content type
application/json
"192.168.1.0"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/ipv4/network

Authorizations:
ApiKey
Request Body schema: application/json
string (configNetIpv4Network)

The IPv4 network mask in dotted decimal notation.

Responses

Request samples

Content type
application/json
"192.168.1.0"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/ipv4/network

Reset to 0.0.0.0.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/ipv4/gateway

The IPv4 network number in dotted decimal notation.

Get /config/net/ipv4/gateway

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "192.168.1.1",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/ipv4/gateway

Authorizations:
ApiKey
Request Body schema: application/json
string (configNetIpv4Gateway)

The IPv4 network number in dotted decimal notation.

Responses

Request samples

Content type
application/json
"192.168.1.1"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/ipv4/gateway

Authorizations:
ApiKey
Request Body schema: application/json
string (configNetIpv4Gateway)

The IPv4 network number in dotted decimal notation.

Responses

Request samples

Content type
application/json
"192.168.1.1"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/ipv4/gateway

Reset to 0.0.0.0.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/nameserver

The name server (DNS) configuration.

Get /config/net/nameserver

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/nameserver

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "server": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/nameserver

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "server": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/nameserver

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/nameserver/server

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.

Get /config/net/nameserver/server

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/nameserver/server

Authorizations:
ApiKey
Request Body schema: application/json
Array
string (configNetNameserverServerItem)

The IPv4 or IPv6 address a DNS server.

Responses

Request samples

Content type
application/json
[
  • "1.1.1.1",
  • "8.8.8.8",
  • "2606:4700:4700::1111"
]

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/nameserver/server

Authorizations:
ApiKey
Request Body schema: application/json
Array
string (configNetNameserverServerItem)

The IPv4 or IPv6 address a DNS server.

Responses

Request samples

Content type
application/json
[
  • "1.1.1.1",
  • "8.8.8.8",
  • "2606:4700:4700::1111"
]

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/nameserver/server

Reset to empty array.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/nameserver/server/{idx}

The IPv4 or IPv6 address a DNS server.

Get /config/net/nameserver/server/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a DNS server.

Responses

Response samples

Content type
application/json
{
  • "result": "1.1.1.1",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/nameserver/server/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a DNS server.

Request Body schema: application/json
string (configNetNameserverServerItem)

The IPv4 or IPv6 address a DNS server.

Responses

Request samples

Content type
application/json
"1.1.1.1"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/nameserver/server/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a DNS server.

Request Body schema: application/json
string (configNetNameserverServerItem)

The IPv4 or IPv6 address a DNS server.

Responses

Request samples

Content type
application/json
"1.1.1.1"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/nameserver/server/{idx}

Remove this name server.

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a DNS server.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/ntp

The Network Time Protocol (NTP) configuration.

Get /config/net/ntp

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/ntp

Authorizations:
ApiKey
Request Body schema: application/json
server
Array of strings (configNetNtpServer)

The NTP servers to use.

Responses

Request samples

Content type
application/json
{
  • "server": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/ntp

Authorizations:
ApiKey
Request Body schema: application/json
server
Array of strings (configNetNtpServer)

The NTP servers to use.

Responses

Request samples

Content type
application/json
{
  • "server": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/ntp

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/ntp/server

The NTP servers to use.

Get /config/net/ntp/server

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/ntp/server

Authorizations:
ApiKey
Request Body schema: application/json
Array
string (configNetNtpServerItem)

The hostname or an IPv4 or IPv6 address of an NTP server.

Responses

Request samples

Content type
application/json
[
  • "192.168.1.1",
  • "north-america.pool.ntp.org",
  • "2610:20:6f15:15::27"
]

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/ntp/server

Authorizations:
ApiKey
Request Body schema: application/json
Array
string (configNetNtpServerItem)

The hostname or an IPv4 or IPv6 address of an NTP server.

Responses

Request samples

Content type
application/json
[
  • "192.168.1.1",
  • "north-america.pool.ntp.org",
  • "2610:20:6f15:15::27"
]

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/ntp/server

Reset to empty array.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/ntp/server/{idx}

The hostname or an IPv4 or IPv6 address of an NTP server.

Get /config/net/ntp/server/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of an NTP server.

Responses

Response samples

Content type
application/json
{
  • "result": "north-america.pool.ntp.org",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/ntp/server/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of an NTP server.

Request Body schema: application/json
string (configNetNtpServerItem)

The hostname or an IPv4 or IPv6 address of an NTP server.

Responses

Request samples

Content type
application/json
"north-america.pool.ntp.org"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/ntp/server/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of an NTP server.

Request Body schema: application/json
string (configNetNtpServerItem)

The hostname or an IPv4 or IPv6 address of an NTP server.

Responses

Request samples

Content type
application/json
"north-america.pool.ntp.org"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/ntp/server/{idx}

Remove this NTP server.

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of an NTP server.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/option

Options that have a system-wide effect on the network services.

Get /config/net/option

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/option

Authorizations:
ApiKey
Request Body schema: application/json
secure_only
boolean (configNetOptionSecureOnly)

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.

Responses

Request samples

Content type
application/json
{
  • "secure_only": false
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/option

Authorizations:
ApiKey
Request Body schema: application/json
secure_only
boolean (configNetOptionSecureOnly)

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.

Responses

Request samples

Content type
application/json
{
  • "secure_only": false
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/option

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/option/secure_only

Requires firmware ≥ v4.6.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.

Get /config/net/option/secure_only

Requires firmware ≥ v4.6.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": false,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/option/secure_only

Requires firmware ≥ v4.6.

Authorizations:
ApiKey
Request Body schema: application/json
boolean (configNetOptionSecureOnly)

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.

Responses

Request samples

Content type
application/json
false

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/option/secure_only

Requires firmware ≥ v4.6.

Authorizations:
ApiKey
Request Body schema: application/json
boolean (configNetOptionSecureOnly)

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.

Responses

Request samples

Content type
application/json
false

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/option/secure_only

Requires firmware ≥ v4.6.Reset to false.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/proxy

The proxy configuration of the meter.

Get /config/net/proxy

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/proxy

Authorizations:
ApiKey
Request Body schema: application/json
enable
boolean (configNetProxyEnable)

If true, the meter will connect to the proxy server.

server
string (configNetProxyServer)

The hostname of the proxy server.

Responses

Request samples

Content type
application/json
{
  • "enable": true,
  • "server": "d.egauge.net"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/proxy

Authorizations:
ApiKey
Request Body schema: application/json
enable
boolean (configNetProxyEnable)

If true, the meter will connect to the proxy server.

server
string (configNetProxyServer)

The hostname of the proxy server.

Responses

Request samples

Content type
application/json
{
  • "enable": true,
  • "server": "d.egauge.net"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/proxy

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/proxy/enable

If true, the meter will connect to the proxy server.

Get /config/net/proxy/enable

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": true,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/proxy/enable

Authorizations:
ApiKey
Request Body schema: application/json
boolean (configNetProxyEnable)

If true, the meter will connect to the proxy server.

Responses

Request samples

Content type
application/json
true

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/proxy/enable

Authorizations:
ApiKey
Request Body schema: application/json
boolean (configNetProxyEnable)

If true, the meter will connect to the proxy server.

Responses

Request samples

Content type
application/json
true

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/proxy/enable

Reset to false.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/proxy/server

The hostname of the proxy server.

Get /config/net/proxy/server

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "d.egauge.net",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/proxy/server

Authorizations:
ApiKey
Request Body schema: application/json
string (configNetProxyServer)

The hostname of the proxy server.

Responses

Request samples

Content type
application/json
"d.egauge.net"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/proxy/server

Authorizations:
ApiKey
Request Body schema: application/json
string (configNetProxyServer)

The hostname of the proxy server.

Responses

Request samples

Content type
application/json
"d.egauge.net"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/proxy/server

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/ptp

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:

  • Update method: Two Step
  • Delay Mechanism: End to End
  • Domain Number: 0
  • Priority 1: 128
  • Priority 2: 128
  • Transmission Method: Multicast
  • Log Announce Interval: 1 (2 seconds)
  • Log Sync Interval: 0 (1 second)
  • Log Min Delay Request Interval: 0 (1 second)
  • Log Min PDelay Request Interval: 0 (1 second)
  • PTP Destination MAC: 01:1B:19:00:00:00
  • PTP Destination MAC: 01:80:C2:00:00:0E
  • Transport Specific Field: 0

Get /config/net/ptp

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/ptp

Authorizations:
ApiKey
Request Body schema: application/json
client_only
boolean (configNetPtpClientOnly)

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.

object (configNetPtpInterface)

The network interface configurations for PTP. If empty, PTP is disabled.

Responses

Request samples

Content type
application/json
{
  • "client_only": true,
  • "interface": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/ptp

Authorizations:
ApiKey
Request Body schema: application/json
client_only
boolean (configNetPtpClientOnly)

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.

object (configNetPtpInterface)

The network interface configurations for PTP. If empty, PTP is disabled.

Responses

Request samples

Content type
application/json
{
  • "client_only": true,
  • "interface": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/ptp

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/ptp/client_only

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.

Get /config/net/ptp/client_only

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": true,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/ptp/client_only

Authorizations:
ApiKey
Request Body schema: application/json
boolean (configNetPtpClientOnly)

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.

Responses

Request samples

Content type
application/json
true

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/ptp/client_only

Authorizations:
ApiKey
Request Body schema: application/json
boolean (configNetPtpClientOnly)

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.

Responses

Request samples

Content type
application/json
true

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/ptp/client_only

Reset to false.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/ptp/interface

The network interface configurations for PTP. If empty, PTP is disabled.

Get /config/net/ptp/interface

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/ptp/interface

Authorizations:
ApiKey
Request Body schema: application/json
additional property
object (configNetPtpInterfaceIf)

The configuration to use for the named interface.

Responses

Request samples

Content type
application/json
{
  • "eth0": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/ptp/interface

Authorizations:
ApiKey
Request Body schema: application/json
additional property
object (configNetPtpInterfaceIf)

The configuration to use for the named interface.

Responses

Request samples

Content type
application/json
{
  • "eth0": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/ptp/interface

Reset to empty (PTP disabled).

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/ptp/interface/{if}

The configuration to use for the named interface.

Get /config/net/ptp/interface/{if}

Authorizations:
ApiKey
path Parameters
if
required
string
Example: eth0

The name of a network interface to use for PTP.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/ptp/interface/{if}

Authorizations:
ApiKey
path Parameters
if
required
string
Example: eth0

The name of a network interface to use for PTP.

Request Body schema: application/json
transport
string (configNetPtpInterfaceIfTransport)
Enum: "L2" "UDPv4" "UDPv6"

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).
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 is either UDPv4 or UDPv6. The default is 1, which restricts the messages to the same subnet.

Responses

Request samples

Content type
application/json
{
  • "transport": "L2",
  • "udp_ttl": 1
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/ptp/interface/{if}

Authorizations:
ApiKey
path Parameters
if
required
string
Example: eth0

The name of a network interface to use for PTP.

Request Body schema: application/json
transport
string (configNetPtpInterfaceIfTransport)
Enum: "L2" "UDPv4" "UDPv6"

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).
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 is either UDPv4 or UDPv6. The default is 1, which restricts the messages to the same subnet.

Responses

Request samples

Content type
application/json
{
  • "transport": "L2",
  • "udp_ttl": 1
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/ptp/interface/{if}

Remove this interface.

Authorizations:
ApiKey
path Parameters
if
required
string
Example: eth0

The name of a network interface to use for PTP.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/ptp/interface/{if}/transport

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).

Get /config/net/ptp/interface/{if}/transport

Authorizations:
ApiKey
path Parameters
if
required
string
Example: eth0

The name of a network interface to use for PTP.

Responses

Response samples

Content type
application/json
{
  • "result": "L2",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/ptp/interface/{if}/transport

Authorizations:
ApiKey
path Parameters
if
required
string
Example: eth0

The name of a network interface to use for PTP.

Request Body schema: application/json
string (configNetPtpInterfaceIfTransport)
Enum: "L2" "UDPv4" "UDPv6"

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).

Responses

Request samples

Content type
application/json
"L2"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/ptp/interface/{if}/transport

Authorizations:
ApiKey
path Parameters
if
required
string
Example: eth0

The name of a network interface to use for PTP.

Request Body schema: application/json
string (configNetPtpInterfaceIfTransport)
Enum: "L2" "UDPv4" "UDPv6"

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).

Responses

Request samples

Content type
application/json
"L2"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/ptp/interface/{if}/transport

Reset to UDPv4.

Authorizations:
ApiKey
path Parameters
if
required
string
Example: eth0

The name of a network interface to use for PTP.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/net/ptp/interface/{if}/udp_ttl

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.

Get /config/net/ptp/interface/{if}/udp_ttl

Authorizations:
ApiKey
path Parameters
if
required
string
Example: eth0

The name of a network interface to use for PTP.

Responses

Response samples

Content type
application/json
{
  • "result": 1,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/net/ptp/interface/{if}/udp_ttl

Authorizations:
ApiKey
path Parameters
if
required
string
Example: eth0

The name of a network interface to use for PTP.

Request Body schema: application/json
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 is either UDPv4 or UDPv6. The default is 1, which restricts the messages to the same subnet.

Responses

Request samples

Content type
application/json
1

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/net/ptp/interface/{if}/udp_ttl

Authorizations:
ApiKey
path Parameters
if
required
string
Example: eth0

The name of a network interface to use for PTP.

Request Body schema: application/json
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 is either UDPv4 or UDPv6. The default is 1, which restricts the messages to the same subnet.

Responses

Request samples

Content type
application/json
1

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/net/ptp/interface/{if}/udp_ttl

Reset to 1.

Authorizations:
ApiKey
path Parameters
if
required
string
Example: eth0

The name of a network interface to use for PTP.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/push

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.

Get /config/push

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {},
  • "error": "Error message (present if an error occurred)."
}

Replace /config/push

Authorizations:
ApiKey
Request Body schema: application/json
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:

  • 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).

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 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.

service
string (configPushService)

The name of a push service provider to shared data with.

To set this 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.

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 Authorization header.

This resource is available only if /config/push/web/service is an empty string.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/push

Authorizations:
ApiKey
Request Body schema: application/json
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:

  • 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).

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 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.

service
string (configPushService)

The name of a push service provider to shared data with.

To set this 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.

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 Authorization header.

This resource is available only if /config/push/web/service is an empty string.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/push

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/push/interval

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.

Get /config/push/interval

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": 60,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/push/interval

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
60

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/push/interval

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
60

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/push/interval

Reset to 60.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/push/options

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).

Get /config/push/options

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "json,gzip,epoch,sec,skip=59",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/push/options

Authorizations:
ApiKey
Request Body schema: application/json
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:

  • 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).

Responses

Request samples

Content type
application/json
"json,gzip,epoch,sec,skip=59"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/push/options

Authorizations:
ApiKey
Request Body schema: application/json
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:

  • 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).

Responses

Request samples

Content type
application/json
"json,gzip,epoch,sec,skip=59"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/push/options

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/push/password

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.

Replace /config/push/password

Authorizations:
ApiKey
Request Body schema: application/json
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 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.

Responses

Request samples

Content type
application/json
"secret!"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/push/password

Authorizations:
ApiKey
Request Body schema: application/json
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 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.

Responses

Request samples

Content type
application/json
"secret!"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/push/password

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/push/service

The name of a push service provider to shared data with.

To set this 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.

Get /config/push/service

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "string",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/push/service

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/push/uri

The URI of the web server to share data with. This resource is available only if /config/push/service is an empty string.

Get /config/push/uri

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{}

Replace /config/push/uri

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/push/uri

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/push/uri

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/push/user

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.

Get /config/push/user

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "jsmith",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/push/user

Authorizations:
ApiKey
Request Body schema: application/json
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 Authorization header.

This resource is available only if /config/push/web/service is an empty string.

Responses

Request samples

Content type
application/json
"jsmith"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/push/user

Authorizations:
ApiKey
Request Body schema: application/json
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 Authorization header.

This resource is available only if /config/push/web/service is an empty string.

Responses

Request samples

Content type
application/json
"jsmith"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/push/user

Reset to empty string.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/register

The register configuration of the meter.

Get /config/register

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/register

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "physical": {
    },
  • "virtual": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/register

Authorizations:
ApiKey
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "physical": {
    },
  • "virtual": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/register

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/register/physical

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.

Get /config/register/physical

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/register/physical

Authorizations:
ApiKey
Request Body schema: application/json
additional property
object (configRegisterPhysicalReg)

The configuration of the named physical register.

Responses

Request samples

Content type
application/json
{
  • "grid": {
    },
  • "grid*": {
    },
  • "solar": {
    },
  • "temp": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/register/physical

Authorizations:
ApiKey
Request Body schema: application/json
additional property
object (configRegisterPhysicalReg)

The configuration of the named physical register.

Responses

Request samples

Content type
application/json
{
  • "grid": {
    },
  • "grid*": {
    },
  • "solar": {
    },
  • "temp": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/register/physical

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/register/physical/{reg}

The configuration of the named physical register.

Get /config/register/physical/{reg}

Authorizations:
ApiKey
path Parameters
reg
required
string
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/register/physical/{reg}

Authorizations:
ApiKey
path Parameters
reg
required
string
Request Body schema: application/json
dev
string (configRegisterPhysicalRegDev)

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.

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 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.

Responses

Request samples

Content type
application/json
{
  • "dev": "local",
  • "did": 0,
  • "type": "P",
  • "value": "S16*L1+S17*L2"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/register/physical/{reg}

Authorizations:
ApiKey
path Parameters
reg
required
string
Request Body schema: application/json
dev
string (configRegisterPhysicalRegDev)

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.

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 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.

Responses

Request samples

Content type
application/json
{
  • "dev": "local",
  • "did": 0,
  • "type": "P",
  • "value": "S16*L1+S17*L2"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/register/physical/{reg}

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.

Authorizations:
ApiKey
path Parameters
reg
required
string

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/register/physical/{reg}/dev

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.

Get /config/register/physical/{reg}/dev

Authorizations:
ApiKey
path Parameters
reg
required
string

Responses

Response samples

Content type
application/json
{
  • "result": "local",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/register/physical/{reg}/dev

Authorizations:
ApiKey
path Parameters
reg
required
string
Request Body schema: application/json
string (configRegisterPhysicalRegDev)

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.

Responses

Request samples

Content type
application/json
"local"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/register/physical/{reg}/dev

Authorizations:
ApiKey
path Parameters
reg
required
string
Request Body schema: application/json
string (configRegisterPhysicalRegDev)

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.

Responses

Request samples

Content type
application/json
"local"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/register/physical/{reg}/dev

Reset to local.

Authorizations:
ApiKey
path Parameters
reg
required
string

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/register/physical/{reg}/did

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.

Get /config/register/physical/{reg}/did

Authorizations:
ApiKey
path Parameters
reg
required
string

Responses

Response samples

Content type
application/json
{
  • "result": 0,
  • "error": "Error message (present if an error occurred)."
}

Replace /config/register/physical/{reg}/did

Authorizations:
ApiKey
path Parameters
reg
required
string
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
0
0

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/register/physical/{reg}/did

Authorizations:
ApiKey
path Parameters
reg
required
string
Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
0
0

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/register/physical/{reg}/did

Reset to 0.

Authorizations:
ApiKey
path Parameters
reg
required
string

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/register/physical/{reg}/type

The type code of the register.

Get /config/register/physical/{reg}/type

Authorizations:
ApiKey
path Parameters
reg
required
string

Responses

Response samples

Content type
application/json
{
  • "result": "P",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/register/physical/{reg}/type

Authorizations:
ApiKey
path Parameters
reg
required
string
Request Body schema: application/json
string (configRegisterPhysicalRegType)

The type code of the register.

Responses

Request samples

Content type
application/json
"P"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/register/physical/{reg}/type

Authorizations:
ApiKey
path Parameters
reg
required
string
Request Body schema: application/json
string (configRegisterPhysicalRegType)

The type code of the register.

Responses

Request samples

Content type
application/json
"P"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/register/physical/{reg}/type

Reset to empty string.

Authorizations:
ApiKey
path Parameters
reg
required
string

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/register/physical/{reg}/value

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.

Get /config/register/physical/{reg}/value

Authorizations:
ApiKey
path Parameters
reg
required
string

Responses

Response samples

Content type
application/json
{
  • "result": "S16*L1+S17*L2",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/register/physical/{reg}/value

Authorizations:
ApiKey
path Parameters
reg
required
string
Request Body schema: application/json
string (configRegisterPhysicalRegValue)

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.

Responses

Request samples

Content type
application/json
"S16*L1+S17*L2"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/register/physical/{reg}/value

Authorizations:
ApiKey
path Parameters
reg
required
string
Request Body schema: application/json
string (configRegisterPhysicalRegValue)

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.

Responses

Request samples

Content type
application/json
"S16*L1+S17*L2"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/register/physical/{reg}/value

Reset to empty string.

Authorizations:
ApiKey
path Parameters
reg
required
string

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/register/virtual

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.

Get /config/register/virtual

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/register/virtual

Authorizations:
ApiKey
Request Body schema: application/json
additional property
object (configRegisterVirtualReg)

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).

Responses

Request samples

Content type
application/json
{
  • "use": {
    },
  • "gen": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/register/virtual

Authorizations:
ApiKey
Request Body schema: application/json
additional property
object (configRegisterVirtualReg)

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).

Responses

Request samples

Content type
application/json
{
  • "use": {
    },
  • "gen": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/register/virtual

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/register/virtual/{reg}

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).

Get /config/register/virtual/{reg}

Authorizations:
ApiKey
path Parameters
reg
required
string

The name of a virtual register. May not be empty, contain commas (,), and may not consist entirely of digits. Virtual register names may contain a single dot (.) between a prefix and a suffix. The prefix is called the view name.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/register/virtual/{reg}

Authorizations:
ApiKey
path Parameters
reg
required
string

The name of a virtual register. May not be empty, contain commas (,), and may not consist entirely of digits. Virtual register names may contain a single dot (.) between a prefix and a suffix. The prefix is called the view name.

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "value": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/register/virtual/{reg}

Authorizations:
ApiKey
path Parameters
reg
required
string

The name of a virtual register. May not be empty, contain commas (,), and may not consist entirely of digits. Virtual register names may contain a single dot (.) between a prefix and a suffix. The prefix is called the view name.

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "value": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/register/virtual/{reg}

Remove this virtual register.

Authorizations:
ApiKey
path Parameters
reg
required
string

The name of a virtual register. May not be empty, contain commas (,), and may not consist entirely of digits. Virtual register names may contain a single dot (.) between a prefix and a suffix. The prefix is called the view name.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/register/virtual/{reg}/value

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.

Get /config/register/virtual/{reg}/value

Authorizations:
ApiKey
path Parameters
reg
required
string

The name of a virtual register. May not be empty, contain commas (,), and may not consist entirely of digits. Virtual register names may contain a single dot (.) between a prefix and a suffix. The prefix is called the view name.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

Replace /config/register/virtual/{reg}/value

Authorizations:
ApiKey
path Parameters
reg
required
string

The name of a virtual register. May not be empty, contain commas (,), and may not consist entirely of digits. Virtual register names may contain a single dot (.) between a prefix and a suffix. The prefix is called the view name.

Request Body schema: application/json
Array
op
string (configRegisterVirtualRegValueItemOp)
Enum: "+" "-" "+max0" "-max0" "+min0" "-min0"

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).

register
string (configRegisterVirtualRegValueItemRegister)

The name of the physical register to use in calculating the value of this addend.

Responses

Request samples

Content type
application/json
[
  • {
    },
  • {
    }
]

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/register/virtual/{reg}/value

Authorizations:
ApiKey
path Parameters
reg
required
string

The name of a virtual register. May not be empty, contain commas (,), and may not consist entirely of digits. Virtual register names may contain a single dot (.) between a prefix and a suffix. The prefix is called the view name.

Request Body schema: application/json
Array
op
string (configRegisterVirtualRegValueItemOp)
Enum: "+" "-" "+max0" "-max0" "+min0" "-min0"

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).

register
string (configRegisterVirtualRegValueItemRegister)

The name of the physical register to use in calculating the value of this addend.

Responses

Request samples

Content type
application/json
[
  • {
    },
  • {
    }
]

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/register/virtual/{reg}/value

Reset to empty array.

Authorizations:
ApiKey
path Parameters
reg
required
string

The name of a virtual register. May not be empty, contain commas (,), and may not consist entirely of digits. Virtual register names may contain a single dot (.) between a prefix and a suffix. The prefix is called the view name.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/register/virtual/{reg}/value/{idx}

An additive term of the virtual register formula.

Get /config/register/virtual/{reg}/value/{idx}

Authorizations:
ApiKey
path Parameters
reg
required
string

The name of a virtual register. May not be empty, contain commas (,), and may not consist entirely of digits. Virtual register names may contain a single dot (.) between a prefix and a suffix. The prefix is called the view name.

idx
required
integer >= 0

The index of a virtual register addend.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/register/virtual/{reg}/value/{idx}

Authorizations:
ApiKey
path Parameters
reg
required
string

The name of a virtual register. May not be empty, contain commas (,), and may not consist entirely of digits. Virtual register names may contain a single dot (.) between a prefix and a suffix. The prefix is called the view name.

idx
required
integer >= 0

The index of a virtual register addend.

Request Body schema: application/json
op
string (configRegisterVirtualRegValueItemOp)
Enum: "+" "-" "+max0" "-max0" "+min0" "-min0"

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).

register
string (configRegisterVirtualRegValueItemRegister)

The name of the physical register to use in calculating the value of this addend.

Responses

Request samples

Content type
application/json
{
  • "op": "+",
  • "register": "grid"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/register/virtual/{reg}/value/{idx}

Authorizations:
ApiKey
path Parameters
reg
required
string

The name of a virtual register. May not be empty, contain commas (,), and may not consist entirely of digits. Virtual register names may contain a single dot (.) between a prefix and a suffix. The prefix is called the view name.

idx
required
integer >= 0

The index of a virtual register addend.

Request Body schema: application/json
op
string (configRegisterVirtualRegValueItemOp)
Enum: "+" "-" "+max0" "-max0" "+min0" "-min0"

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).

register
string (configRegisterVirtualRegValueItemRegister)

The name of the physical register to use in calculating the value of this addend.

Responses

Request samples

Content type
application/json
{
  • "op": "+",
  • "register": "grid"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/register/virtual/{reg}/value/{idx}

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.

Authorizations:
ApiKey
path Parameters
reg
required
string

The name of a virtual register. May not be empty, contain commas (,), and may not consist entirely of digits. Virtual register names may contain a single dot (.) between a prefix and a suffix. The prefix is called the view name.

idx
required
integer >= 0

The index of a virtual register addend.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/register/virtual/{reg}/value/{idx}/op

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).

Get /config/register/virtual/{reg}/value/{idx}/op

Authorizations:
ApiKey
path Parameters
reg
required
string

The name of a virtual register. May not be empty, contain commas (,), and may not consist entirely of digits. Virtual register names may contain a single dot (.) between a prefix and a suffix. The prefix is called the view name.

idx
required
integer >= 0

The index of a virtual register addend.

Responses

Response samples

Content type
application/json
{
  • "result": "+",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/register/virtual/{reg}/value/{idx}/op

Authorizations:
ApiKey
path Parameters
reg
required
string

The name of a virtual register. May not be empty, contain commas (,), and may not consist entirely of digits. Virtual register names may contain a single dot (.) between a prefix and a suffix. The prefix is called the view name.

idx
required
integer >= 0

The index of a virtual register addend.

Request Body schema: application/json
string (configRegisterVirtualRegValueItemOp)
Enum: "+" "-" "+max0" "-max0" "+min0" "-min0"

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).

Responses

Request samples

Content type
application/json
"+"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/register/virtual/{reg}/value/{idx}/op

Authorizations:
ApiKey
path Parameters
reg
required
string

The name of a virtual register. May not be empty, contain commas (,), and may not consist entirely of digits. Virtual register names may contain a single dot (.) between a prefix and a suffix. The prefix is called the view name.

idx
required
integer >= 0

The index of a virtual register addend.

Request Body schema: application/json
string (configRegisterVirtualRegValueItemOp)
Enum: "+" "-" "+max0" "-max0" "+min0" "-min0"

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).

Responses

Request samples

Content type
application/json
"+"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/register/virtual/{reg}/value/{idx}/op

Reset to +.

Authorizations:
ApiKey
path Parameters
reg
required
string

The name of a virtual register. May not be empty, contain commas (,), and may not consist entirely of digits. Virtual register names may contain a single dot (.) between a prefix and a suffix. The prefix is called the view name.

idx
required
integer >= 0

The index of a virtual register addend.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/register/virtual/{reg}/value/{idx}/register

The name of the physical register to use in calculating the value of this addend.

Get /config/register/virtual/{reg}/value/{idx}/register

Authorizations:
ApiKey
path Parameters
reg
required
string

The name of a virtual register. May not be empty, contain commas (,), and may not consist entirely of digits. Virtual register names may contain a single dot (.) between a prefix and a suffix. The prefix is called the view name.

idx
required
integer >= 0

The index of a virtual register addend.

Responses

Response samples

Content type
application/json
{
  • "result": "grid",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/register/virtual/{reg}/value/{idx}/register

Authorizations:
ApiKey
path Parameters
reg
required
string

The name of a virtual register. May not be empty, contain commas (,), and may not consist entirely of digits. Virtual register names may contain a single dot (.) between a prefix and a suffix. The prefix is called the view name.

idx
required
integer >= 0

The index of a virtual register addend.

Request Body schema: application/json
string (configRegisterVirtualRegValueItemRegister)

The name of the physical register to use in calculating the value of this addend.

Responses

Request samples

Content type
application/json
"grid"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/register/virtual/{reg}/value/{idx}/register

Authorizations:
ApiKey
path Parameters
reg
required
string

The name of a virtual register. May not be empty, contain commas (,), and may not consist entirely of digits. Virtual register names may contain a single dot (.) between a prefix and a suffix. The prefix is called the view name.

idx
required
integer >= 0

The index of a virtual register addend.

Request Body schema: application/json
string (configRegisterVirtualRegValueItemRegister)

The name of the physical register to use in calculating the value of this addend.

Responses

Request samples

Content type
application/json
"grid"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/register/virtual/{reg}/value/{idx}/register

Reset to empty string.

Authorizations:
ApiKey
path Parameters
reg
required
string

The name of a virtual register. May not be empty, contain commas (,), and may not consist entirely of digits. Virtual register names may contain a single dot (.) between a prefix and a suffix. The prefix is called the view name.

idx
required
integer >= 0

The index of a virtual register addend.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/remote

Requires firmware ≥ v4.4.1.The remote device configurations.

Get /config/remote

Requires firmware ≥ v4.4.1.

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/remote

Requires firmware ≥ v4.4.1.

Authorizations:
ApiKey
Request Body schema: application/json
additional property
object (configRemoteName)

The configuration of a remote device.

Responses

Request samples

Content type
application/json
{
  • "PRM3": {
    },
  • "panel2": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/remote

Requires firmware ≥ v4.4.1.

Authorizations:
ApiKey
Request Body schema: application/json
additional property
object (configRemoteName)

The configuration of a remote device.

Responses

Request samples

Content type
application/json
{
  • "PRM3": {
    },
  • "panel2": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/remote

Requires firmware ≥ v3498.345.Deletes all remote device configurations and the physical registers using them.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/remote/{name}

Requires firmware ≥ v4.4.1.The configuration of a remote device.

Get /config/remote/{name}

Requires firmware ≥ v4.4.1.

Authorizations:
ApiKey
path Parameters
name
required
string
Example: PRM3

The name of a remote device. It must consist of printable characters only. The name local is reserved for internal use and may not appear here.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/remote/{name}

Requires firmware ≥ v4.4.1.

Authorizations:
ApiKey
path Parameters
name
required
string
Example: PRM3

The name of a remote device. It must consist of printable characters only. The name local is reserved for internal use and may not appear here.

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "address": "modbus://sunspec.1@USB2",
  • "link_type": "slowd"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/remote/{name}

Requires firmware ≥ v4.4.1.

Authorizations:
ApiKey
path Parameters
name
required
string
Example: PRM3

The name of a remote device. It must consist of printable characters only. The name local is reserved for internal use and may not appear here.

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "address": "modbus://sunspec.1@USB2",
  • "link_type": "slowd"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/remote/{name}

Requires firmware ≥ v4.4.1.Delete the remote device configuration and the physical registers associated with it.

Authorizations:
ApiKey
path Parameters
name
required
string
Example: PRM3

The name of a remote device. It must consist of printable characters only. The name local is reserved for internal use and may not appear here.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/remote/{name}/address

Requires firmware ≥ v4.4.1.The address of the remote device. The meaning of this value depends on the link-type.

Get /config/remote/{name}/address

Requires firmware ≥ v4.4.1.

Authorizations:
ApiKey
path Parameters
name
required
string
Example: PRM3

The name of a remote device. It must consist of printable characters only. The name local is reserved for internal use and may not appear here.

Responses

Response samples

Content type
application/json
{
  • "result": "modbus://sunspec.1@USB2",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/remote/{name}/address

Requires firmware ≥ v4.4.1.

Authorizations:
ApiKey
path Parameters
name
required
string
Example: PRM3

The name of a remote device. It must consist of printable characters only. The name local is reserved for internal use and may not appear here.

Request Body schema: application/json
string (configRemoteNameAddress)

The address of the remote device. The meaning of this value depends on the link-type.

Responses

Request samples

Content type
application/json
"modbus://sunspec.1@USB2"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/remote/{name}/address

Requires firmware ≥ v4.4.1.

Authorizations:
ApiKey
path Parameters
name
required
string
Example: PRM3

The name of a remote device. It must consist of printable characters only. The name local is reserved for internal use and may not appear here.

Request Body schema: application/json
string (configRemoteNameAddress)

The address of the remote device. The meaning of this value depends on the link-type.

Responses

Request samples

Content type
application/json
"modbus://sunspec.1@USB2"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/remote/{name}/address

Requires firmware ≥ v4.4.1.Reset to empty string.

Authorizations:
ApiKey
path Parameters
name
required
string
Example: PRM3

The name of a remote device. It must consist of printable characters only. The name local is reserved for internal use and may not appear here.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/time

Time related configurations.

Get /config/time

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/time

Authorizations:
ApiKey
Request Body schema: application/json
zone
string (configTimeZone)

The timezone the meter is located in. The string is interpreted as a Unix TZ string.

Responses

Request samples

Content type
application/json
{
  • "zone": "LST7LDT6,M3.2.0/02:00,M11.1.0/02:00"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/time

Authorizations:
ApiKey
Request Body schema: application/json
zone
string (configTimeZone)

The timezone the meter is located in. The string is interpreted as a Unix TZ string.

Responses

Request samples

Content type
application/json
{
  • "zone": "LST7LDT6,M3.2.0/02:00,M11.1.0/02:00"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/time

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/time/zone

The timezone the meter is located in. The string is interpreted as a Unix TZ string.

Get /config/time/zone

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "LST7LDT6,M3.2.0/02:00,M11.1.0/02:00",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/time/zone

Authorizations:
ApiKey
Request Body schema: application/json
string (configTimeZone)

The timezone the meter is located in. The string is interpreted as a Unix TZ string.

Responses

Request samples

Content type
application/json
"LST7LDT6,M3.2.0/02:00,M11.1.0/02:00"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/time/zone

Authorizations:
ApiKey
Request Body schema: application/json
string (configTimeZone)

The timezone the meter is located in. The string is interpreted as a Unix TZ string.

Responses

Request samples

Content type
application/json
"LST7LDT6,M3.2.0/02:00,M11.1.0/02:00"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/time/zone

Reset to UTC.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/user

The user accounts.

Each user account has a name, a set of privileges, and the credentials (password) required to log into the account.

Get /config/user

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/user

Authorizations:
ApiKey
Request Body schema: application/json
additional property
object (configUserName)

A user configuration (account).

Responses

Request samples

Content type
application/json
{
  • "jsmith": {
    },
  • "guest": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/user

Authorizations:
ApiKey
Request Body schema: application/json
additional property
object (configUserName)

A user configuration (account).

Responses

Request samples

Content type
application/json
{
  • "jsmith": {
    },
  • "guest": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/user

Delete all user accounts.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/user/{name}

A user configuration (account).

Get /config/user/{name}

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a user. Must consist of alpha-numeric characters or underscores (_).

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": "jsmith",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/user/{name}

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a user. Must consist of alpha-numeric characters or underscores (_).

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
"jsmith"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/user/{name}

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a user. Must consist of alpha-numeric characters or underscores (_).

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
"jsmith"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/user/{name}

Delete this user account.

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a user. Must consist of alpha-numeric characters or underscores (_).

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/user/{name}/priv

The list of privileges the user possesses.

Get /config/user/{name}/priv

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a user. Must consist of alpha-numeric characters or underscores (_).

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

Replace /config/user/{name}/priv

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a user. Must consist of alpha-numeric characters or underscores (_).

Request Body schema: application/json
Array
string (configUserNamePrivItem)

A privilege the user possesses.

Responses

Request samples

Content type
application/json
[
  • "unlimited_save",
  • "view_settings"
]

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/user/{name}/priv

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a user. Must consist of alpha-numeric characters or underscores (_).

Request Body schema: application/json
Array
string (configUserNamePrivItem)

A privilege the user possesses.

Responses

Request samples

Content type
application/json
[
  • "unlimited_save",
  • "view_settings"
]

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/user/{name}/priv

Reset to empty array.

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a user. Must consist of alpha-numeric characters or underscores (_).

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/user/{name}/priv/{idx}

A privilege the user possesses.

Get /config/user/{name}/priv/{idx}

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "string",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/user/{name}/priv/{idx}

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
string (configUserNamePrivItem)

A privilege the user possesses.

Responses

Request samples

Content type
application/json
"string"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/user/{name}/priv/{idx}

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
string (configUserNamePrivItem)

A privilege the user possesses.

Responses

Request samples

Content type
application/json
"string"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/user/{name}/priv/{idx}

Remove this privilege.

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/user/{name}/hash

The hash of the user's password. Writing an empty hash string disables the account.

This resource is write-only.

Replace /config/user/{name}/hash

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a user. Must consist of alpha-numeric characters or underscores (_).

Request Body schema: application/json
string (configUserNameHash)

The hash of the user's password. Writing an empty hash string disables the account.

This resource is write-only.

Responses

Request samples

Content type
application/json
"251910de04f5eab86859939167d4fded"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/user/{name}/hash

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a user. Must consist of alpha-numeric characters or underscores (_).

Request Body schema: application/json
string (configUserNameHash)

The hash of the user's password. Writing an empty hash string disables the account.

This resource is write-only.

Responses

Request samples

Content type
application/json
"251910de04f5eab86859939167d4fded"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/user/{name}/hash

Delete this user account.

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a user. Must consist of alpha-numeric characters or underscores (_).

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/var

Requires firmware ≥ v4.6.Meter variables provide a means to store arbitrary name/value pairs on the meter itself. These variables can be employed by a WebAPI user to customize behavior. For example, the preferred currency symbol is stored in a meter variable so that all WebAPI users can consistenty display monetary values.

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.

Sections

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 (%).

Well-known Variables

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.

Get /config/var

Requires firmware ≥ v4.6.

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/var

Requires firmware ≥ v4.6.

Authorizations:
ApiKey
Request Body schema: application/json
additional property
object (configVarSection)

The meter variables in the named section.

Responses

Request samples

Content type
application/json
{
  • "global": {
    },
  • "health": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/var

Requires firmware ≥ v4.6.

Authorizations:
ApiKey
Request Body schema: application/json
additional property
object (configVarSection)

The meter variables in the named section.

Responses

Request samples

Content type
application/json
{
  • "global": {
    },
  • "health": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/var

Requires firmware ≥ v4.6.Delete all meter variables.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/var/{section}

Requires firmware ≥ v4.6.The meter variables in the named section.

Get /config/var/{section}

Requires firmware ≥ v4.6.

Authorizations:
ApiKey
path Parameters
section
required
string^[a-zA-Z0-9_%-]+$
Example: global

The name of the section to access.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /config/var/{section}

Requires firmware ≥ v4.6.

Authorizations:
ApiKey
path Parameters
section
required
string^[a-zA-Z0-9_%-]+$
Example: global

The name of the section to access.

Request Body schema: application/json
var*
additional property
string (configVarSectionVar)

The value of the named meter variable. Complex values can be stored, e.g., by JSON-encoding them.

Responses

Request samples

Content type
application/json
{
  • "billing.start_day": "6",
  • "billing.interval": "15"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/var/{section}

Requires firmware ≥ v4.6.

Authorizations:
ApiKey
path Parameters
section
required
string^[a-zA-Z0-9_%-]+$
Example: global

The name of the section to access.

Request Body schema: application/json
var*
additional property
string (configVarSectionVar)

The value of the named meter variable. Complex values can be stored, e.g., by JSON-encoding them.

Responses

Request samples

Content type
application/json
{
  • "billing.start_day": "6",
  • "billing.interval": "15"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/var/{section}

Requires firmware ≥ v4.6.Delete all meter variables in the named section.

Authorizations:
ApiKey
path Parameters
section
required
string^[a-zA-Z0-9_%-]+$
Example: global

The name of the section to access.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/config/var/{section}/{var}

Requires firmware ≥ v4.6.The value of the named meter variable. Complex values can be stored, e.g., by JSON-encoding them.

Get /config/var/{section}/{var}

Requires firmware ≥ v4.6.

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "6",
  • "error": "Error message (present if an error occurred)."
}

Replace /config/var/{section}/{var}

Requires firmware ≥ v4.6.

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
string (configVarSectionVar)

The value of the named meter variable. Complex values can be stored, e.g., by JSON-encoding them.

Responses

Request samples

Content type
application/json
"6"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /config/var/{section}/{var}

Requires firmware ≥ v4.6.

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
string (configVarSectionVar)

The value of the named meter variable. Complex values can be stored, e.g., by JSON-encoding them.

Responses

Request samples

Content type
application/json
"6"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /config/var/{section}/{var}

Requires firmware ≥ v4.6.Delete the named meter variable.

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/ctid

This service provides access to the CTid® facility built into the EG4xxx series meters. Specifically, it enables:

  1. retrieving the CTid® information from a sensor,

  2. flashing the (optional) locator LED on the sensor, and

  3. 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.

Python Example

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.

Get all CTid® information

Read the existing (previously scanned) CTid® info of all sensor ports.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "info": [
    ]
}

Replace saved CTid® info of several sensors

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.

Authorizations:
ApiKey
Request Body schema: application/json
Array of objects (CTidInfoObject) non-empty

Responses

Request samples

Content type
application/json
{
  • "info": [
    ]
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete CTid® info of all sensors

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Get CTid® info of a port

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.

Authorizations:
ApiKey
path Parameters
port
required
integer >= 1

The port number to apply this request to.

query Parameters
tid
integer >= 0

The transaction id of the CTid® operation to return information on.

Responses

Response samples

Content type
application/json
Example
{
  • "ts": "1668455577",
  • "tid": 2008264382,
  • "port": 2,
  • "polarity": "+",
  • "version": 2,
  • "mfgid": 0,
  • "model": "ERA",
  • "sn": 2,
  • "k": 2,
  • "rsrc": 176,
  • "rload": 10000000,
  • "params": {
    }
}

Initiate CTid® operation on a port

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.

Authorizations:
ApiKey
path Parameters
port
required
integer >= 1

The port number to apply this request to.

Request Body schema: application/json
op
required
string
Enum: "flash" "scan"

The operation to be initiated:

  • flash: Start blinking the locator LED on the sensor.

  • scan: Start scanning the sensor's CTid® information. A scan typically takes one to five seconds. If the scan is successful, the resulting information is stored on the meter.

polarity
required
string
Enum: "+" "-"

The voltage polarity with which to initiate the operation. A plus sign (+) requests positive polarity, a minus sign (-) requests negative polarity.

For operation scan, positive polarity should succeed unless the sensor is miswired. Thus, it is usually best to attempt scanning first with positive polarity and, if that fails, retry with negative polarity.

For operation flash, either polarity will cause the locator LED to blink, albeit with different blink frequency. For a correctly wired sensor, negative polarity should be used for blinking. If this operation is not stopped explicitly, it will time out automatically after about 30 minutes.

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 tid query parameter to a GET request on this resource.

Responses

Request samples

Content type
application/json
{
  • "op": "flash",
  • "polarity": "+",
  • "tid": 4294967295
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Replace saved CTid® info of the port

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.

Authorizations:
ApiKey
path Parameters
port
required
integer >= 1

The port number to apply this request to.

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "ts": "1668455577",
  • "tid": 2008264382,
  • "port": 2,
  • "polarity": "+",
  • "version": 2,
  • "mfgid": 0,
  • "model": "ERA",
  • "sn": 2,
  • "k": 2,
  • "rsrc": 176,
  • "rload": 10000000,
  • "params": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete CTid® information of the port

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.

Authorizations:
ApiKey
path Parameters
port
required
integer >= 1

The port number to apply this request to.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Stop any pending CTid® operation

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/ctrl

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.

/ctrl/call

This resource is used to issue control calls and to check on the status of a previously issued calls.

Issue control call

Issue a control call to a device identified by a set of device attributes.

Authorizations:
ApiKey
Request Body schema: application/json
object (DeviceAttributesWithIndexObject)

The device attributes that identify the device on which to initiate the control action.

In addition to the usual device attributes, index may be specified as the first attribute. This attribute is used when the other attributes match multiple devices. Specifically, if the value of index is n, then the call would be issued on the device with index n (with the first device having an index of 0). The default value for this attribute is 0.

For example, if there are three devices supporting the relay interface then {"index":1,"interface":"relay"} would result in a call to the second device.

method
string

The name of the control action to issue on the device. This may be either a bare method name, such as close_mask, or a fully qualified name such as relay.close_mask. In the former case, the method is invoked on the first interface registered for that device that implements a method by that name. In the latter case, the method is invoked only on the specified interface (relay).

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.

Responses

Request samples

Content type
application/json
{
  • "attrs": {
    },
  • "method": "relay.close_mask",
  • "args": [
    ]
}

Response samples

Content type
application/json
{
  • "result": {
    }
}

Get call result

Get the result of a control call on return an error message, e.g., if the result is not yet available.

Authorizations:
ApiKey
path Parameters
tid
required
integer <int54> >= 0
Example: 4294967360

The transaction id of the call.

Responses

Response samples

Content type
application/json
Example
{
  • "error": "EAGAIN: Call is pending."
}

/ctrl/device

Provides information about devices that can accept control calls. Each device is described by a set of name/value pairs called device attributes.

Get control device info

Get information about some or all available control devices.

Authorizations:
ApiKey
query Parameters
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, { needs to be encoded as %7b and } needs to be encoded as %7d.

As a special case, attribute interface is considered to match a device if the device supports the specified interface. The attribute may be specified multiple times to check for the presence of multiple interfaces. For example, the URI-encoded version of attrs={"interface":"relay","interface":"modbus"} would only match devices that provide both the relay and modbus interfaces.

This parameter also supports the index attribute like /ctrl/call does.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ]
}

/ctrl/interface

The names and descriptions of control interfaces detected by the meter.

Get /ctrl/interface

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/ctrl/interface/{if}

Description of the interface.

Get /ctrl/interface/{if}

Authorizations:
ApiKey
path Parameters
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.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/ctrl/interface/{if}/method

The array of methods provided by this interface. The methods are listed in no particular order.

Get /ctrl/interface/{if}/method

Authorizations:
ApiKey
path Parameters
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.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

/ctrl/interface/{if}/method/{idx}

The description of this method.

Get /ctrl/interface/{if}/method/{idx}

Authorizations:
ApiKey
path Parameters
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.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/ctrl/interface/{if}/method/{idx}/name

The name of the method. The name starts with a letter and consists entirely of letters, digits, or underscores.

Get /ctrl/interface/{if}/method/{idx}/name

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "close",
  • "error": "Error message (present if an error occurred)."
}

/ctrl/interface/{if}/method/{idx}/in

The DBus type signature of the input arguments to the method. An empty string indicates that the method accepts no input arguments.

Get /ctrl/interface/{if}/method/{idx}/in

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "u",
  • "error": "Error message (present if an error occurred)."
}

/ctrl/interface/{if}/method/{idx}/in_names

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.

Get /ctrl/interface/{if}/method/{idx}/in_names

Authorizations:
ApiKey
path Parameters
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.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

/ctrl/interface/{if}/method/{idx}/in_names/{argidx}

The name of this input argument.

Get /ctrl/interface/{if}/method/{idx}/in_names/{argidx}

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "n",
  • "error": "Error message (present if an error occurred)."
}

/ctrl/interface/{if}/method/{idx}/out

The DBus type signature of the return value of the method. An empty string indicates that the method returns no value.

Get /ctrl/interface/{if}/method/{idx}/out

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "",
  • "error": "Error message (present if an error occurred)."
}

/ctrl/interface/{if}/method/{idx}/doc

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.

Get /ctrl/interface/{if}/method/{idx}/doc

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "Close the relay with index <arg>n</arg>.",
  • "error": "Error message (present if an error occurred)."
}

/local

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.

Python Example

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.

Get local sensor values

Authorizations:
ApiKey
query Parameters
values
boolean

If present, the sensor values are returned in member values of the response.

energy
boolean

If present, the calculated (real) energy values are returned in member energy of the response.

apparent
boolean

If present, the calculate apparent energy values are returned in member apparent of the response.

stats
boolean

If present, statistics about the internal operation of the meter are returned in member stats of the response.

rate
boolean

If present, the rate metrics of each sensor are included in the response (members rate).

cumul
boolean

If present, the cumulative metrics of each sensor are included in the response (members cumul).

type
boolean

If present, the type code (physical unit) of each sensor is included in the response (members type).

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):

  • ALL: Include measurements for all built-in environmental sensors.

  • Hpcb: Include measurements for the built-in relative humidity sensor. This sensor measures relative humidity inside the meter's enclosure. It is not available on all meters.

  • Tpcb: Include measurements for the built-in temperature sensor. This sensor measures temperature inside the meter's enclosure, which is generally a few degrees celsius higher than the temperature of the air surrounding the meter.

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):

  • ALL: Include measurements for all available line voltages.

  • L1, L2, or L3: The voltage of the named line input pin relative to the neutral pin.

  • D1, D2, or D3: The voltage of the named line input pin relative to a virtual neutral. The virtual neutral is calculated assuming the signals at pins D1, D2, and D3 are of equal amplitude and are phase-shifted by 120° relative to each other. If either of these assumptions is not true, the measured voltages are not be meaningful.

  • L12, L23, or L31: The voltage between the two line input pin numbers. For example, L12 measures the voltage between pins L1 and L2.

  • Ldc: The voltage at the DC input port.

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, L1:L3 would request inclusion of the measurements for L1, L2, and L3.

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):

  • ALL: Include measurements for all available sensors.

  • Sn: Include measurements for sensor Sn where n is a number in the range from 1 to the number of sensor inputs supported by the meter.

  • Sn:Sm: Include measurements for sensors Sn through Sm, where n and m are numbers in the range from 1 to the number of sensor inputs supported by the meter and n is smaller than m. For example, S3:S5 would request inclusion of the measurements for S3, S4, and S5.

Responses

Response samples

Content type
application/json
{
  • "ts": "1579893622.000132",
  • "values": {
    },
  • "energy": {
    }
}

/log

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 alert log

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.

Authorizations:
ApiKey
query Parameters
after
number
Example: after=1685739455.0433328

Restricts the method to apply only to those alerts whose last timestamp is newer (younger) than the specified timestamp.

acked
boolean

Restrict the method to apply only to those alerts whose acknowledgment status matches the value of this query parameter (true for acknowledged, false for unacknowledged).

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.

Responses

Response samples

Content type
application/json
{
  • "drops": 0,
  • "log": [
    ],
  • "error": "Error message (present if an error occurred)."
}

Update alert log

Acknowledge all or some alerts.

Authorizations:
ApiKey
query Parameters
after
number
Example: after=1685739455.0433328

Restricts the method to apply only to those alerts whose last timestamp is newer (younger) than the specified timestamp.

acked
boolean

Restrict the method to apply only to those alerts whose acknowledgment status matches the value of this query parameter (true for acknowledged, false for unacknowledged).

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.

Request Body schema: application/json
string
Value: "ack"

Responses

Request samples

Content type
application/json
"ack"

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete alert log

Delete all or some alerts.

Authorizations:
ApiKey
query Parameters
after
number
Example: after=1685739455.0433328

Restricts the method to apply only to those alerts whose last timestamp is newer (younger) than the specified timestamp.

acked
boolean

Restrict the method to apply only to those alerts whose acknowledgment status matches the value of this query parameter (true for acknowledged, false for unacknowledged).

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.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Get kernel log

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.

Authorizations:
ApiKey
query Parameters
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).

Responses

Response samples

Content type
application/json
{
  • "log": [
    ],
  • "error": "Error message (present if an error occurred)."
}

Get a Lua log

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.

Authorizations:
ApiKey
path Parameters
name
required
string
Enum: "alertd" "ctrld" "teamd"

The name of a Lua log. This may be one of:

  • alertd: The log for scripts that are executed when checking for and generating alerts.

  • ctrld: The log for control scripts.

  • teamd: The log for scripts executed while evaluating formula scripts and for calculating costs (tariff script).

query Parameters
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).

Responses

Response samples

Content type
application/json
{
  • "log": [
    ]
}

Get system log

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "log": [
    ]
}

/lua

This service provides access to Lua-script related information.

Get /lua

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    }
}

Replace /lua

Authorizations:
ApiKey
Request Body schema: application/json
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 persistent.

Responses

Request samples

Content type
application/json
{
  • "var": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /lua

Authorizations:
ApiKey
Request Body schema: application/json
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 persistent.

Responses

Request samples

Content type
application/json
{
  • "var": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /lua

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/lua/var

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.

Get /lua/var

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    }
}

Replace /lua/var

Authorizations:
ApiKey
Request Body schema: application/json
additional property
object (luaVarName)

A persistent Lua variable.

Responses

Request samples

Content type
application/json
{
  • "name1": {
    },
  • "name2": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /lua/var

Authorizations:
ApiKey
Request Body schema: application/json
additional property
object (luaVarName)

A persistent Lua variable.

Responses

Request samples

Content type
application/json
{
  • "name1": {
    },
  • "name2": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /lua/var

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/lua/var/{name}

A persistent Lua variable.

Get /lua/var/{name}

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a persistent Lua variable.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /lua/var/{name}

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a persistent Lua variable.

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "result": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /lua/var/{name}

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a persistent Lua variable.

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "result": {
    }
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /lua/var/{name}

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.

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a persistent Lua variable.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/lua/var/{name}/desc

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.

Get /lua/var/{name}/desc

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a persistent Lua variable.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /lua/var/{name}/desc

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a persistent Lua variable.

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "result": "Start of the current billing interval."
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /lua/var/{name}/desc

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a persistent Lua variable.

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "result": "Start of the current billing interval."
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /lua/var/{name}/desc

Reset to empty string.

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a persistent Lua variable.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/lua/var/{name}/value

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.

Get /lua/var/{name}/value

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a persistent Lua variable.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

Replace /lua/var/{name}/value

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a persistent Lua variable.

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "result": "1677697200"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Update /lua/var/{name}/value

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a persistent Lua variable.

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "result": "1677697200"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Delete /lua/var/{name}/value

Reset to empty string.

Authorizations:
ApiKey
path Parameters
name
required
string

The name of a persistent Lua variable.

Responses

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/providers

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 alert service providers

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{}

Get push service providers

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.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{}

Get tariff service providers

Get a list of available tariff service providers.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{}

Get list of tariffs

Get a list of tariffs of a provider.

Authorizations:
ApiKey
path Parameters
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 /providers/tariff. The first entry has index 0, the second has index 1, and so on.

Responses

Response samples

Content type
application/json
{
  • "tariffs": [
    ]
}

/register

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.

Basic Usage

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.

Python Example

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:

  1. 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.

  2. Evaluating virtual registers. The class automatically fetches the formulas of virtual register and then calculates them based on the physical register values as needed.

Get register data

Authorizations:
ApiKey
query Parameters
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 format=csv, the first row is skipped and not returned at all.

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 (format=csv). If specified, it requests that the result include the demand of the selected registers in addition to the normal register values. Demand is the average rate of change over a period of time called the demand interval. A typical demand interval may be 15 minutes or 30 minutes long. Demand is either the maximum or minimum demand across multiple demand intervals, such as the demand intervals in a billing cycle.

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 demand query parameter specifies the details of how the demand is to be calculated. Specifically, the value of this parameter has the form TPI where T is one of:

  • roll: Use the rolling demand method.

  • set: Use the set demand method.

P indicates which demand should be returned:

  • +: Return the maximum demand.

  • -: Return the minimum demand.

  • |: Return the demand with the largest magnitude (absolute value). For example, if the maximum demand is +5kW and the minimum demand is −6kW, this would return −6kW.

I is the length of the demand interval expressed as a number of seconds. The interval must be an integer multiple of 60 and cannot exceed 3600 (one hour).

For example, query option demand=set+900 would return the maximum set demand of the selected registers when using a 900 second (15 minute) demand interval.

When format=csv is in effect, the resulting CSV file contains two additional column for each register which indicate the demand value and the starting time of that demand interval.

filename
string
Example: filename=data.csv

For format=backup and format=csv, this specifies the name of the file in which the response should be saved. This is indicated via a Content-disposition response header.

format
string
Enum: "backup" "csv" "json"
Example: format=csv

Selects the format of the response. This must be one of:

  • json: Return the response as JSON. This is the default.

  • backup: Return the response as a backup file. The response has MIME type text/plain.

  • csv: Return the response as a CSV (comma-separated values) file. The response has MIME type text/plain.

max-rows
number >= 1

Requires firmware ≥ v4.7.Limit the response to the specified maximum number of rows.

if
string
Example: if=epoch==1675276020

Only return data if the specified condition is true. The string must have the form texpr op val where texpr is a time expression (epoch, sob or similar), op is one of == (test for equality) or != (test for inequality) and val is a decimal string specifying a Unix timestamp. If the condition is true, data is returned as usual. If false, a current condition object is returned which contains the current value of texpr.

rate
boolean
Example: rate=true

If present, return the rate member in the registers section of the response. The value of this member is the rate at which the value of the register has been changing most recently.

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:

  • all: All available registers are selected to be returned in the result.

  • none: No registers are selected to be returned in the result.

  • n0: Select the register with index n0. The index of a register can be found in the idx member of the registers section of the response.

  • n0:n1: Select the registers with indices n0 through n1.

If the value of this parameter starts with a plus sign (+), the specified range is added to the set of registers to be returned. If it starts with a minus sign (-), the specified range is removed from the set of registers to be returned. If the value starts with any other character, the specified range establishes the set of registers to be returned. Additional ranges can be specified by adding a plus sign followed by a range to add more registers or a minus sign followed by a range to remove registers from the selected set.

It is also possible to specify combine view and reg parameters in a single request. The parameters are processed in the order specified (from left-to-right) and update the set of selected registers incrementally. For example, view==environmentals&reg=-0:7 would select all registers in view environmentals, except those with a register index in the range from 0 through 7.

Virtual registers are output only if they are selected in the set of registers to be returned and query parameter virtual is specified.

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 GET request. The value must be a string of the form tz;fmt, where tz is a timezone string and fmt is a format string. Either tz or fmt may be empty.

If non-empty, tz sets the timezone to use. If left unspecified or empty, the device timezone is used by default. The selected timezone affects, for example, how time point names such as sod (start-of-day) are interpreted and how time is output in the response. The timezone must be in the format defined by tzset(). This parameter must appear before (to the left of) any time parameters that use timezone-dependent time-points such 'sod', for example.

The fmt string is used only when query parameter format=csv is in effect. In that case, fmt defines how timestamps are output in the CSV response. By default, the format string %F %T is used, which would output July 6, 2016 4:56pm as 2016-07-06 16:56:00. The full syntax available in the format string is documented in function strftime().

Note that the format-string typically will need to be percent-encoded. In particular, each % character needs to be encoded as %25, for example.

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:

  • =: Only select the registers matching the view name are returned.

  • +: The registers matching the view name are added to the set of registers to be returned.

  • -: The registers matching the view name are removed from the set of registers to be returned.

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:

  • formula: Virtual registers are returned via the formula member in the registers section. See virtual register formulas for details.

  • value: The value of virtual registers is calculated by the meter and then return in the ranges section like any other register value.

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.

Responses

Response samples

Content type
Example
{
  • "ts": "1678330813.000129799",
  • "registers": [
    ],
  • "ranges": [
    ]
}

/remote

To be implemented.

/store

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.

Well-known Variables

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.

Get section Deprecated

Authorizations:
ApiKey
path Parameters
section
required
string
Example: global

Name of the server-storage section.

Responses

Response samples

Content type
application/json
Example
{
  • "name": "global/",
  • "content": {
    }
}

Update or delete section Deprecated

Update or delete a server-storage section according to the contents of the request body.

Authorizations:
ApiKey
path Parameters
section
required
string
Example: global

Name of the server-storage section.

Request Body schema: application/json
One of
^[-a-zA-Z%_/]*$
pattern property
string or null

The new value of the variable. A null value deletes the variable. Any other value either creates a new variable or updates an existing variable with the specified value.

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.

Responses

Request samples

Content type
application/json
{
  • "test/delete_me": null,
  • "prefs/color": "cyan"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Get section variable Deprecated

Authorizations:
ApiKey
path Parameters
section
required
string
Example: dash

Name of the server-storage section.

variable
required
string
Example: dashCfg-default

Name of the section variable.

Responses

Response samples

Content type
application/json
{
  • "name": "dash/dashCfg-default",
  • "content": {
    }
}

Update or delete section variable Deprecated

Update or delete a section variable according to the contents of the request body.

Authorizations:
ApiKey
path Parameters
section
required
string
Example: dash

Name of the server-storage section.

variable
required
string
Example: dashCfg-default

Name of the section variable.

Request Body schema: application/json
One of
string or null

The new value of the variable. A null value deletes the variable. Any other value either creates a new variable or updates an existing variable with the specified value.

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.

Responses

Request samples

Content type
application/json
{
  • "": "{\"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}]}]}]}"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Get paragraph Deprecated

Authorizations:
ApiKey
path Parameters
section
required
string
Example: global

Name of the server-storage section.

paragraph
required
string
Example: billing

Name of the paragraph.

Responses

Response samples

Content type
application/json
{
  • "name": "global/billing/",
  • "content": {
    }
}

Update or delete paragraph Deprecated

Update or delete a paragraph according to the contents of the request body.

Authorizations:
ApiKey
path Parameters
section
required
string
Example: global

Name of the server-storage section.

paragraph
required
string
Example: billing

Name of the paragraph.

Request Body schema: application/json
One of
^[-a-zA-Z%_/]*$
pattern property
string or null

The new value of the variable. A null value deletes the variable. Any other value either creates a new variable or updates an existing variable with the specified value.

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.

Responses

Request samples

Content type
application/json
{
  • "start_day": "7",
  • "taxes": null
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

Get variable Deprecated

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "name": "global/billing/start_day",
  • "content": {
    }
}

Update or delete variable Deprecated

Update or delete a variable according to the contents of the request body.

Authorizations:
ApiKey
path Parameters
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.

Request Body schema: application/json
One of
^[-a-zA-Z%_/]*$
pattern property
string or null

The new value of the variable. A null value deletes the variable. Any other value either creates a new variable or updates an existing variable with the specified value.

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.

Responses

Request samples

Content type
application/json
{
  • "": "7"
}

Response samples

Content type
application/json
{
  • "status": "OK",
  • "error": "Error message (present if an error occurred)."
}

/sys

System information. Everything here is read-only.

Accessing this service requires the view_settings privilege.

Get /sys

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/alert

Descriptions of the system-generated alerts.

Get /sys/alert

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

/sys/alert/{idx}

Description of a system alert.

Get /sys/alert/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a system alert.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/alert/{idx}/id

A short id that uniquely identifies this system alert. The id consists entirely of alpha-numeric characters.

Get /sys/alert/{idx}/id

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a system alert.

Responses

Response samples

Content type
application/json
{
  • "result": "pxyup",
  • "error": "Error message (present if an error occurred)."
}

/sys/alert/{idx}/reason

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.

Get /sys/alert/{idx}/reason

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a system alert.

Responses

Response samples

Content type
application/json
{
  • "result": "Proxy-connection established",
  • "error": "Error message (present if an error occurred)."
}

/sys/boot

Information about the most recent power-up (boot) event.

Get /sys/boot

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/boot/backup_power_ok

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.

Get /sys/boot/backup_power_ok

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": true,
  • "error": "Error message (present if an error occurred)."
}

/sys/boot/reason

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.

Get /sys/boot/reason

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "software reset",
  • "error": "Error message (present if an error occurred)."
}

/sys/boot/time

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.

Get /sys/boot/time

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "1677287880.350",
  • "error": "Error message (present if an error occurred)."
}

/sys/db

The database configuration of the meter.

Get /sys/db

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/db/max-registers

The maximum number of registers (columns) that can be stored in the meter's database.

Get /sys/db/max-registers

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": 64,
  • "error": "Error message (present if an error occurred)."
}

/sys/db/level

Definition of the available database storage levels.

Get /sys/db/level

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

/sys/db/level/{idx}

Definition of a database storage level.

Get /sys/db/level/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a db level.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/db/level/{idx}/head

Requires firmware ≥ v4.6.4.The Unix timestamp of the most recent data row stored at this level of the database. If null, no row is currently available at this database level.

Get /sys/db/level/{idx}/head

Requires firmware ≥ v4.6.4.

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a db level.

Responses

Response samples

Content type
application/json
{
  • "result": "1726675935",
  • "error": "Error message (present if an error occurred)."
}

/sys/db/level/{idx}/interval

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.

Get /sys/db/level/{idx}/interval

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a db level.

Responses

Response samples

Content type
application/json
{
  • "result": 1000,
  • "error": "Error message (present if an error occurred)."
}

/sys/db/level/{idx}/row-count

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.

Get /sys/db/level/{idx}/row-count

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a db level.

Responses

Response samples

Content type
application/json
{
  • "result": 32768,
  • "error": "Error message (present if an error occurred)."
}

/sys/db/level/{idx}/volatile

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).

Get /sys/db/level/{idx}/volatile

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a db level.

Responses

Response samples

Content type
application/json
{
  • "result": true,
  • "error": "Error message (present if an error occurred)."
}

/sys/dev

A description of hardware devices that are attached to the meter.

Get /sys/dev

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/dev/serial

The list of serial ports that are attached to the meter.

Get /sys/dev/serial

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

/sys/dev/serial/{seridx}

An attached serial port.

Get /sys/dev/serial/{seridx}

Authorizations:
ApiKey
path Parameters
seridx
required
integer >= 0

The index of a serial port device.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/dev/serial/{seridx}/devpath

The device path of the serial port that uniquely identifies the port it is attached to.

Get /sys/dev/serial/{seridx}/devpath

Authorizations:
ApiKey
path Parameters
seridx
required
integer >= 0

The index of a serial port device.

Responses

Response samples

Content type
application/json
{
  • "result": "USB2.1",
  • "error": "Error message (present if an error occurred)."
}

/sys/dev/serial/{seridx}/manufacturer

The name of the manufacturer of the serial port hardware.

Get /sys/dev/serial/{seridx}/manufacturer

Authorizations:
ApiKey
path Parameters
seridx
required
integer >= 0

The index of a serial port device.

Responses

Response samples

Content type
application/json
{
  • "result": "eGauge",
  • "error": "Error message (present if an error occurred)."
}

/sys/dev/serial/{seridx}/product

The product name of the serial port hardware.

Get /sys/dev/serial/{seridx}/product

Authorizations:
ApiKey
path Parameters
seridx
required
integer >= 0

The index of a serial port device.

Responses

Response samples

Content type
application/json
{
  • "result": "usb485",
  • "error": "Error message (present if an error occurred)."
}

/sys/dev/serial/{seridx}/sn

The serial number of the serial port hardware.

Get /sys/dev/serial/{seridx}/sn

Authorizations:
ApiKey
path Parameters
seridx
required
integer >= 0

The index of a serial port device.

Responses

Response samples

Content type
application/json
{
  • "result": "DN02MI0P",
  • "error": "Error message (present if an error occurred)."
}

/sys/dev/serial/{seridx}/version

The version of the serial port hardware.

Get /sys/dev/serial/{seridx}/version

Authorizations:
ApiKey
path Parameters
seridx
required
integer >= 0

The index of a serial port device.

Responses

Response samples

Content type
application/json
{
  • "result": 2,
  • "error": "Error message (present if an error occurred)."
}

/sys/func

Documents the eScript functions built into the meter.

Get /sys/func

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/func/basic

Documents the basic eScript functions. Basic functions are available any place eScript expressions may appear.

Get /sys/func/basic

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/func/basic/{name}

The name of the eScript function. Function names start with a letter and consist entirely of alpha-numeric characters or underscores (_).

Get /sys/func/basic/{name}

Authorizations:
ApiKey
path Parameters
name
required
string

The name of an eScript basic function.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": "max",
  • "error": "Error message (present if an error occurred)."
}

/sys/func/basic/{name}/arg

The list of input arguments the function expects.

Get /sys/func/basic/{name}/arg

Authorizations:
ApiKey
path Parameters
name
required
string

The name of an eScript basic function.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

/sys/func/basic/{name}/arg/{idx}

Description of the argument expected at index {idx} of the argument list.

Get /sys/func/basic/{name}/arg/{idx}

Authorizations:
ApiKey
path Parameters
name
required
string

The name of an eScript basic function.

idx
required
integer >= 0

The name index of a function argument.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/func/basic/{name}/arg/{idx}/name

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.

Get /sys/func/basic/{name}/arg/{idx}/name

Authorizations:
ApiKey
path Parameters
name
required
string

The name of an eScript basic function.

idx
required
integer >= 0

The name index of a function argument.

Responses

Response samples

Content type
application/json
{
  • "result": "x",
  • "error": "Error message (present if an error occurred)."
}

/sys/func/basic/{name}/arg/{idx}/type

A type code indicating the type of the argument. The special value string indicates that the value must be a string.

Get /sys/func/basic/{name}/arg/{idx}/type

Authorizations:
ApiKey
path Parameters
name
required
string

The name of an eScript basic function.

idx
required
integer >= 0

The name index of a function argument.

Responses

Response samples

Content type
application/json
{
  • "result": "#",
  • "error": "Error message (present if an error occurred)."
}

/sys/func/basic/{name}/help

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.

Get /sys/func/basic/{name}/help

Authorizations:
ApiKey
path Parameters
name
required
string

The name of an eScript basic function.

Responses

Response samples

Content type
application/json
{
  • "result": "Returns the greater value of <arg>x</arg> and <arg>y</arg>.",
  • "error": "Error message (present if an error occurred)."
}

/sys/func/basic/{name}/min-args

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.

Get /sys/func/basic/{name}/min-args

Authorizations:
ApiKey
path Parameters
name
required
string

The name of an eScript basic function.

Responses

Response samples

Content type
application/json
{
  • "result": 2,
  • "error": "Error message (present if an error occurred)."
}

/sys/func/alert

Documents the alert eScript functions. These functions are available only for eScript expressions evaluated as part of alert conditions.

Get /sys/func/alert

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/func/alert/{name}

The name of the eScript function. Function names start with a letter and consist entirely of alpha-numeric characters or underscores (_).

Get /sys/func/alert/{name}

Authorizations:
ApiKey
path Parameters
name
required
string

The name of an eScript alert function.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": "dayavg",
  • "error": "Error message (present if an error occurred)."
}

/sys/func/alert/{name}/arg

The list of input arguments the function expects.

Get /sys/func/alert/{name}/arg

Authorizations:
ApiKey
path Parameters
name
required
string

The name of an eScript alert function.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

/sys/func/alert/{name}/arg/{idx}

Description of the argument expected at index {idx} of the argument list.

Get /sys/func/alert/{name}/arg/{idx}

Authorizations:
ApiKey
path Parameters
name
required
string

The name of an eScript alert function.

idx
required
integer >= 0

The name index of a function argument.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/func/alert/{name}/arg/{idx}/name

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.

Get /sys/func/alert/{name}/arg/{idx}/name

Authorizations:
ApiKey
path Parameters
name
required
string

The name of an eScript alert function.

idx
required
integer >= 0

The name index of a function argument.

Responses

Response samples

Content type
application/json
{
  • "result": "reg",
  • "error": "Error message (present if an error occurred)."
}

/sys/func/alert/{name}/arg/{idx}/type

A type code indicating the type of the argument. The special value string indicates that the value must be a string.

Get /sys/func/alert/{name}/arg/{idx}/type

Authorizations:
ApiKey
path Parameters
name
required
string

The name of an eScript alert function.

idx
required
integer >= 0

The name index of a function argument.

Responses

Response samples

Content type
application/json
{
  • "result": "string",
  • "error": "Error message (present if an error occurred)."
}

/sys/func/alert/{name}/help

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.

Get /sys/func/alert/{name}/help

Authorizations:
ApiKey
path Parameters
name
required
string

The name of an eScript alert function.

Responses

Response samples

Content type
application/json
{
  • "result": "Calculates the 24-hour average value for register <arg>reg</arg>.",
  • "error": "Error message (present if an error occurred)."
}

/sys/func/alert/{name}/min-args

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.

Get /sys/func/alert/{name}/min-args

Authorizations:
ApiKey
path Parameters
name
required
string

The name of an eScript alert function.

Responses

Response samples

Content type
application/json
{
  • "result": 1,
  • "error": "Error message (present if an error occurred)."
}

/sys/modbus

Modbus-related information built into the firmware.

Get /sys/modbus

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/modbus/client

Modbus client related information.

Get /sys/modbus/client

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/modbus/client/map

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.

Get /sys/modbus/client/map

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/modbus/client/map/{name}

Modbus map consisting of a list of register definitions and a set of options.

Get /sys/modbus/client/map/{name}

Authorizations:
ApiKey
path Parameters
name
required
string
Example: egauge_prm3

The name of a system Modbus map (read-only).

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/modbus/client/map/{name}/option

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.

Get /sys/modbus/client/map/{name}/option

Authorizations:
ApiKey
path Parameters
name
required
string
Example: egauge_prm3

The name of a system Modbus map (read-only).

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/modbus/client/map/{name}/option/{opt}

The value of the Modbus map option.

Get /sys/modbus/client/map/{name}/option/{opt}

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "9600/8n1",
  • "error": "Error message (present if an error occurred)."
}

/sys/modbus/client/map/{name}/reg

A list of Modbus register definitions.

Get /sys/modbus/client/map/{name}/reg

Authorizations:
ApiKey
path Parameters
name
required
string
Example: egauge_prm3

The name of a system Modbus map (read-only).

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

/sys/modbus/client/map/{name}/reg/{idx}

A Modbus register definition.

Get /sys/modbus/client/map/{name}/reg/{idx}

Authorizations:
ApiKey
path Parameters
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.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/modbus/client/map/{name}/reg/{idx}/name

The name of the register. The user can choose this name freely so long as each register within a map has a unique name.

Get /sys/modbus/client/map/{name}/reg/{idx}/name

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "irradiance",
  • "error": "Error message (present if an error occurred)."
}

/sys/modbus/client/map/{name}/reg/{idx}/addr

The Modbus address of the register.

Get /sys/modbus/client/map/{name}/reg/{idx}/addr

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": 65535,
  • "error": "Error message (present if an error occurred)."
}

/sys/modbus/client/map/{name}/reg/{idx}/type

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.

Get /sys/modbus/client/map/{name}/reg/{idx}/type

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "u32",
  • "error": "Error message (present if an error occurred)."
}

/sys/modbus/client/map/{name}/reg/{idx}/encoding

Requires firmware ≥ v4.7.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).

Get /sys/modbus/client/map/{name}/reg/{idx}/encoding

Requires firmware ≥ v4.7.

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "ABCD",
  • "error": "Error message (present if an error occurred)."
}

/sys/modbus/client/map/{name}/reg/{idx}/kind

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.

Get /sys/modbus/client/map/{name}/reg/{idx}/kind

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "analog",
  • "error": "Error message (present if an error occurred)."
}

/sys/modbus/client/map/{name}/reg/{idx}/unit

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.

Get /sys/modbus/client/map/{name}/reg/{idx}/unit

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "W",
  • "error": "Error message (present if an error occurred)."
}

/sys/modbus/client/map/{name}/reg/{idx}/offset

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.

Get /sys/modbus/client/map/{name}/reg/{idx}/offset

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": 0,
  • "error": "Error message (present if an error occurred)."
}

/sys/modbus/client/map/{name}/reg/{idx}/scale

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.

Get /sys/modbus/client/map/{name}/reg/{idx}/scale

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": 0.1,
  • "error": "Error message (present if an error occurred)."
}

/sys/modbus/client/map/{name}/reg/{idx}/access

The access-mode of the register. It must be one of:

  • ro: read-only
  • rw: read-write

Get /sys/modbus/client/map/{name}/reg/{idx}/access

Authorizations:
ApiKey
path Parameters
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.

Responses

Response samples

Content type
application/json
{
  • "result": "ro",
  • "error": "Error message (present if an error occurred)."
}

/sys/model

The model name of the meter. For example, EG4030.

Get /sys/model

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "string",
  • "error": "Error message (present if an error occurred)."
}

/sys/net

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.

Get /sys/net

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/net/homeplug

The HomePlug status.

Get /sys/net/homeplug

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/net/homeplug/bridge

The array of HomePlug bridge devices detected.

Get /sys/net/homeplug/bridge

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

/sys/net/homeplug/bridge/{idx}

The status of a detected HomePlug bridge device.

Get /sys/net/homeplug/bridge/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a HomePlug bridge device.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/net/homeplug/bridge/{idx}/mac

The MAC address of the HomePlug bridge device.

Get /sys/net/homeplug/bridge/{idx}/mac

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a HomePlug bridge device.

Responses

Response samples

Content type
application/json
{
  • "result": "32:b7:c2:96:c3:78",
  • "error": "Error message (present if an error occurred)."
}

/sys/net/homeplug/bridge/{idx}/speed

Information about the current estimated speed at which communication occurs to this bridge device.

Get /sys/net/homeplug/bridge/{idx}/speed

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a HomePlug bridge device.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/net/homeplug/bridge/{idx}/speed/rx

The current estimated speed at which the meter can receive data from this bridge device. This is reported as bits/second.

Get /sys/net/homeplug/bridge/{idx}/speed/rx

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a HomePlug bridge device.

Responses

Response samples

Content type
application/json
{
  • "result": 8934500,
  • "error": "Error message (present if an error occurred)."
}

/sys/net/homeplug/bridge/{idx}/speed/tx

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.

Get /sys/net/homeplug/bridge/{idx}/speed/tx

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a HomePlug bridge device.

Responses

Response samples

Content type
application/json
{
  • "result": 9000000,
  • "error": "Error message (present if an error occurred)."
}

/sys/net/homeplug/bridge/{idx}/type

The HomePlug chipset used by the bridge device. This member is available only if the chipset could be identified.

Get /sys/net/homeplug/bridge/{idx}/type

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a HomePlug bridge device.

Responses

Response samples

Content type
application/json
{
  • "result": "hpav",
  • "error": "Error message (present if an error occurred)."
}

/sys/net/homeplug/bridge/{idx}/vendor

The name of the manufacturer of this HomePlug bridge device. This member is available only if the chipset could be identified.

Get /sys/net/homeplug/bridge/{idx}/vendor

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a HomePlug bridge device.

Responses

Response samples

Content type
application/json
{
  • "result": "TP-Link",
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ipv4

The Internet Protocol v4 (IPv4) configuration.

Get /sys/net/ipv4

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ipv4/address

An IPv4 address in dotted decimal notation.

Get /sys/net/ipv4/address

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "192.168.1.42",
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ipv4/broadcast

An IPv4 broadcast address in dotted decimal notation.

Get /sys/net/ipv4/broadcast

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "192.168.1.255",
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ipv4/dhcp

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.

Get /sys/net/ipv4/dhcp

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": true,
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ipv4/netmask

The address of the IPv4 gateway in dotted decimal notation.

Get /sys/net/ipv4/netmask

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "255.255.255.0",
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ipv4/network

The IPv4 network mask in dotted decimal notation.

Get /sys/net/ipv4/network

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "192.168.1.0",
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ipv4/gateway

The IPv4 network number in dotted decimal notation.

Get /sys/net/ipv4/gateway

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "192.168.1.1",
  • "error": "Error message (present if an error occurred)."
}

Get /sys/net/link

Requires firmware ≥ v4.7.

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

/sys/net/link/{idx}

Requires firmware ≥ v4.7.Status of the link.

Get /sys/net/link/{idx}

Requires firmware ≥ v4.7.

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a link.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/net/link/{idx}/id

Requires firmware ≥ v4.7.The interface index of the link.

Get /sys/net/link/{idx}/id

Requires firmware ≥ v4.7.

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a link.

Responses

Response samples

Content type
application/json
{
  • "result": 1,
  • "error": "Error message (present if an error occurred)."
}

/sys/net/link/{idx}/name

Requires firmware ≥ v4.7.The name of the link.

Get /sys/net/link/{idx}/name

Requires firmware ≥ v4.7.

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a link.

Responses

Response samples

Content type
application/json
{
  • "result": "wlan0",
  • "error": "Error message (present if an error occurred)."
}

/sys/net/link/{idx}/state

Requires firmware ≥ v4.7.The operational state of the link.

Get /sys/net/link/{idx}/state

Requires firmware ≥ v4.7.

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a link.

Responses

Response samples

Content type
application/json
{
  • "result": "up",
  • "error": "Error message (present if an error occurred)."
}

/sys/net/link/{idx}/addr

Requires firmware ≥ v4.7.The link layer address (e.g. MAC address).

Get /sys/net/link/{idx}/addr

Requires firmware ≥ v4.7.

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a link.

Responses

Response samples

Content type
application/json
{
  • "result": "32:ab:cd:03:76:fc",
  • "error": "Error message (present if an error occurred)."
}

/sys/net/link/{idx}/broadcast

Requires firmware ≥ v4.7.The link layer broadcast address.

Get /sys/net/link/{idx}/broadcast

Requires firmware ≥ v4.7.

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a link.

Responses

Response samples

Content type
application/json
{
  • "result": "ff:ff:ff:ff:ff:ff",
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ntp

Network Time Protocol (NTP) status.

Get /sys/net/ntp

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ntp/server

Status of each configured NTP server.

Get /sys/net/ntp/server

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ntp/server/{idx}

Status of the NTP server.

Get /sys/net/ntp/server/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of an NTP server.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ntp/server/{idx}/address

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.

Get /sys/net/ntp/server/{idx}/address

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of an NTP server.

Responses

Response samples

Content type
application/json
{
  • "result": "192.168.1.1",
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ntp/server/{idx}/delay

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.

Get /sys/net/ntp/server/{idx}/delay

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of an NTP server.

Responses

Response samples

Content type
application/json
{
  • "result": 0.79,
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ntp/server/{idx}/jitter

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.

Get /sys/net/ntp/server/{idx}/jitter

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of an NTP server.

Responses

Response samples

Content type
application/json
{
  • "result": 0.106,
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ntp/server/{idx}/name

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.

Get /sys/net/ntp/server/{idx}/name

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of an NTP server.

Responses

Response samples

Content type
application/json
{
  • "result": null,
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ntp/server/{idx}/next_poll

The time that needs to elapse before the meter contacts this server again. The unit is seconds.

Get /sys/net/ntp/server/{idx}/next_poll

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of an NTP server.

Responses

Response samples

Content type
application/json
{
  • "result": 615,
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ntp/server/{idx}/offset

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.

Get /sys/net/ntp/server/{idx}/offset

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of an NTP server.

Responses

Response samples

Content type
application/json
{
  • "result": -0.601,
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ntp/server/{idx}/poll_interval

The interval of time between successive contacts from the meter to this server. The unit is seconds.

Get /sys/net/ntp/server/{idx}/poll_interval

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of an NTP server.

Responses

Response samples

Content type
application/json
{
  • "result": 1545,
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ntp/server/{idx}/state

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.

Get /sys/net/ntp/server/{idx}/state

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of an NTP server.

Responses

Response samples

Content type
application/json
{
  • "result": "SYNC",
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ntp/server/{idx}/stratum

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.

Get /sys/net/ntp/server/{idx}/stratum

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of an NTP server.

Responses

Response samples

Content type
application/json
{
  • "result": 3,
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ntp/server/{idx}/trust_level

The meter's estimate of how trustworthy this server's time is. Higher numbers indicate a higher level of trustworthiness.

Get /sys/net/ntp/server/{idx}/trust_level

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of an NTP server.

Responses

Response samples

Content type
application/json
{
  • "result": 10,
  • "error": "Error message (present if an error occurred)."
}

/sys/net/ntp/server/{idx}/weight

The meter's estimate of the weight that should be given to this NTP server's time.

Get /sys/net/ntp/server/{idx}/weight

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of an NTP server.

Responses

Response samples

Content type
application/json
{
  • "result": 1,
  • "error": "Error message (present if an error occurred)."
}

/sys/net/wlan

The WLAN (Wi-Fi) status.

Get /sys/net/wlan

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/net/wlan/ap

The list of detected access points (available WLAN networks).

Get /sys/net/wlan/ap

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

/sys/net/wlan/ap/{idx}

Access point status.

Get /sys/net/wlan/ap/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a WLAN access point.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/net/wlan/ap/{idx}/bssid

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 (:).

Get /sys/net/wlan/ap/{idx}/bssid

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a WLAN access point.

Responses

Response samples

Content type
application/json
{
  • "result": "d8:08:a5:ae:4c:e1",
  • "error": "Error message (present if an error occurred)."
}

/sys/net/wlan/ap/{idx}/flags

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.

Get /sys/net/wlan/ap/{idx}/flags

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a WLAN access point.

Responses

Response samples

Content type
application/json
{
  • "result": "[WPA2-PSK-CCMP][ESS]",
  • "error": "Error message (present if an error occurred)."
}

/sys/net/wlan/ap/{idx}/frequency

The frequency in MHz of this access point.

Get /sys/net/wlan/ap/{idx}/frequency

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a WLAN access point.

Responses

Response samples

Content type
application/json
{
  • "result": 2452,
  • "error": "Error message (present if an error occurred)."
}

/sys/net/wlan/ap/{idx}/signal_level

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.

Get /sys/net/wlan/ap/{idx}/signal_level

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a WLAN access point.

Responses

Response samples

Content type
application/json
{
  • "result": -18,
  • "error": "Error message (present if an error occurred)."
}

/sys/net/wlan/ap/{idx}/ssid

The SSID (service set identifier) of this WLAN network.

Get /sys/net/wlan/ap/{idx}/ssid

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a WLAN access point.

Responses

Response samples

Content type
application/json
{
  • "result": "wireless",
  • "error": "Error message (present if an error occurred)."
}

/sys/net/wlan/net

The status of configured wireless networks.

Get /sys/net/wlan/net

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

/sys/net/wlan/net/{idx}

The WLAN network status.

Get /sys/net/wlan/net/{idx}

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a WLAN network.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/net/wlan/net/{idx}/network_id

Identifier for this network.

Get /sys/net/wlan/net/{idx}/network_id

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a WLAN network.

Responses

Response samples

Content type
application/json
{
  • "result": 1,
  • "error": "Error message (present if an error occurred)."
}

/sys/net/wlan/net/{idx}/bssid

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.

Get /sys/net/wlan/net/{idx}/bssid

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a WLAN network.

Responses

Response samples

Content type
application/json
{
  • "result": "any",
  • "error": "Error message (present if an error occurred)."
}

/sys/net/wlan/net/{idx}/flags

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.

Get /sys/net/wlan/net/{idx}/flags

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a WLAN network.

Responses

Response samples

Content type
application/json
{
  • "result": "[CURRENT]",
  • "error": "Error message (present if an error occurred)."
}

/sys/net/wlan/net/{idx}/ssid

The SSID (service set identifier) of this WLAN network.

Get /sys/net/wlan/net/{idx}/ssid

Authorizations:
ApiKey
path Parameters
idx
required
integer >= 0

The index of a WLAN network.

Responses

Response samples

Content type
application/json
{
  • "result": "wireless",
  • "error": "Error message (present if an error occurred)."
}

/sys/push

The status of the push (data sharing) service. See /config/push.

Get /sys/push

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/push/next

Information about the next push request.

Get /sys/push/next

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/push/next/attempt

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.

Get /sys/push/next/attempt

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "1682658559.0",
  • "error": "Error message (present if an error occurred)."
}

/sys/push/last

Information about the last (most recent) push request.

Get /sys/push/last

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/push/last/attempt

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.

Get /sys/push/last/attempt

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "1682658499.0",
  • "error": "Error message (present if an error occurred)."
}

/sys/push/last/count

The number of register data rows that were sent to the server during the last push. If unavailable, this is zero.

Get /sys/push/last/count

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": 900,
  • "error": "Error message (present if an error occurred)."
}

/sys/push/last/status

The HTTP status returned by the server at the end of the last push. If unavailable, this is zero.

Get /sys/push/last/status

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": 200,
  • "error": "Error message (present if an error occurred)."
}

/sys/push/last/success

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.

Get /sys/push/last/success

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "1682658499.1",
  • "error": "Error message (present if an error occurred)."
}

/sys/push/last/ts

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.

Get /sys/push/last/ts

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "1682658480.0",
  • "error": "Error message (present if an error occurred)."
}

/sys/reboot

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.

Get /sys/reboot

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": true,
  • "error": "Error message (present if an error occurred)."
}

/sys/slowd

Requires firmware ≥ v4.6.The status of slowd (serial) devices.

Get /sys/slowd

Requires firmware ≥ v4.6.Get the status of the slowd (serial device) service.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/sn

The serial number of the meter. Even though it is called serial-number, this string may contain letters, dashes (-) and underscores (_) as well.

Get /sys/sn

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "G10400",
  • "error": "Error message (present if an error occurred)."
}

/sys/status

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.

Get /sys/status

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": { },
  • "error": "Error message (present if an error occurred)."
}

/sys/status/{token}

The current status of the long-running operation.

Get /sys/status/{token}

Authorizations:
ApiKey
path Parameters
token
required
string

The token returned when a long-running operation was started.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/status/{token}/args

A list of strings that provide additional information to the error or info tag.

Get /sys/status/{token}/args

Authorizations:
ApiKey
path Parameters
token
required
string

The token returned when a long-running operation was started.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": [
    ],
  • "error": "Error message (present if an error occurred)."
}

/sys/status/{token}/args/{idx}

A string that provides additional information to the error or info tag.

Get /sys/status/{token}/args/{idx}

Authorizations:
ApiKey
path Parameters
token
required
string

The token returned when a long-running operation was started.

idx
required
integer >= 0

The index of a status argument.

Responses

Response samples

Content type
application/json
{
  • "result": "4.5alpha1",
  • "error": "Error message (present if an error occurred)."
}

/sys/status/{token}/done

This is true if the operation has completed or false if it is still in progress.

Get /sys/status/{token}/done

Authorizations:
ApiKey
path Parameters
token
required
string

The token returned when a long-running operation was started.

Responses

Response samples

Content type
application/json
{
  • "result": true,
  • "error": "Error message (present if an error occurred)."
}

/sys/status/{token}/error

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.

Get /sys/status/{token}/error

Authorizations:
ApiKey
path Parameters
token
required
string

The token returned when a long-running operation was started.

Responses

Response samples

Content type
application/json
{
  • "result": "NOT_NEWER",
  • "error": "Error message (present if an error occurred)."
}

/sys/status/{token}/info

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.

Get /sys/status/{token}/info

Authorizations:
ApiKey
path Parameters
token
required
string

The token returned when a long-running operation was started.

Responses

Response samples

Content type
application/json
{
  • "result": "RESTORE",
  • "error": "Error message (present if an error occurred)."
}

/sys/status/{token}/progress

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.

Get /sys/status/{token}/progress

Authorizations:
ApiKey
path Parameters
token
required
string

The token returned when a long-running operation was started.

Responses

Response samples

Content type
application/json
{
  • "result": 0.31415,
  • "error": "Error message (present if an error occurred)."
}

/sys/status/{token}/result

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.

Get /sys/status/{token}/result

Authorizations:
ApiKey
path Parameters
token
required
string

The token returned when a long-running operation was started.

Responses

Response samples

Content type
application/json
{}

/sys/status/{token}/ts

The time when this status was created. It is a decimal Unix timestamp string.

Get /sys/status/{token}/ts

Authorizations:
ApiKey
path Parameters
token
required
string

The token returned when a long-running operation was started.

Responses

Response samples

Content type
application/json
{
  • "result": "1679103764.278772467",
  • "error": "Error message (present if an error occurred)."
}

/sys/team

The team status. This describes the current status of all registers whether locally measured or obtained from a remote device.

Get /sys/team

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/team/lag

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.

Get /sys/team/lag

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": 0.195,
  • "error": "Error message (present if an error occurred)."
}

/sys/team/fft

The status of the FFT calculations.

Get /sys/team/fft

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/team/fft/last_update

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.

Get /sys/team/fft/last_update

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "1708030925.1",
  • "error": "Error message (present if an error occurred)."
}

/sys/team/reg

The current status of all registers (physical and virtual).

Get /sys/team/reg

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/team/reg/{name}

The current status of the register.

Get /sys/team/reg/{name}

Authorizations:
ApiKey
path Parameters
name
required
string

The register name.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/team/reg/{name}/available

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.

Get /sys/team/reg/{name}/available

Authorizations:
ApiKey
path Parameters
name
required
string

The register name.

Responses

Response samples

Content type
application/json
{
  • "result": true,
  • "error": "Error message (present if an error occurred)."
}

/sys/team/reg/{name}/excess

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.

Get /sys/team/reg/{name}/excess

Authorizations:
ApiKey
path Parameters
name
required
string

The register name.

Responses

Response samples

Content type
application/json
{
  • "result": "0",
  • "error": "Error message (present if an error occurred)."
}

/sys/team/reg/{name}/last

The info for the most recent (last) update to the register.

Get /sys/team/reg/{name}/last

Authorizations:
ApiKey
path Parameters
name
required
string

The register name.

query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/team/reg/{name}/last/update

The decimal Unix timestamp of when this register was last updated.

Get /sys/team/reg/{name}/last/update

Authorizations:
ApiKey
path Parameters
name
required
string

The register name.

Responses

Response samples

Content type
application/json
{
  • "result": "1708042434",
  • "error": "Error message (present if an error occurred)."
}

/sys/team/reg/{name}/last/val

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).

Get /sys/team/reg/{name}/last/val

Authorizations:
ApiKey
path Parameters
name
required
string

The register name.

Responses

Response samples

Content type
application/json
{
  • "result": "-9767738213",
  • "error": "Error message (present if an error occurred)."
}

/sys/time

The current meter time as a decimal Unix timestamp string.

Get /sys/time

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "1679104389.095469",
  • "error": "Error message (present if an error occurred)."
}

/sys/uptime

The number of seconds the device has been running since the last reboot.

Get /sys/uptime

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": 1232588.28,
  • "error": "Error message (present if an error occurred)."
}

/sys/version

Meter version information.

Get /sys/version

Authorizations:
ApiKey
query Parameters
max-depth
integer >= 1
Example: max-depth=2

Limit output depth of the response. See Max-Depth.

filter
string
Example: filter={foo,bar}

Response filter string. See Filter-Spec.

Responses

Response samples

Content type
application/json
{
  • "result": {
    },
  • "error": "Error message (present if an error occurred)."
}

/sys/version/firmware

The version code of the installed firmware.

Get /sys/version/firmware

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "4.5alpha1",
  • "error": "Error message (present if an error occurred)."
}

/sys/version/hardware

Requires firmware ≥ v4.4.1.The version code of the hardware.

Get /sys/version/hardware

Requires firmware ≥ v4.4.1.

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "3EA",
  • "error": "Error message (present if an error occurred)."
}

/sys/version/kernel

The version code of the installed kernel.

Get /sys/version/kernel

Authorizations:
ApiKey

Responses

Response samples

Content type
application/json
{
  • "result": "5.15.95+ #47 Thu Feb 23 15:15:34 MST 2023",
  • "error": "Error message (present if an error occurred)."
}

Glossary

Deprecated

Items marked deprecated should not be used going forward as they will be removed in a future firmware release.

Device Attributes

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

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-Spec

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 {).

Formal Definition

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.

Lua Scripts

In addition to eScript, the meter firmware also supports the more powerful Lua language. All eScript functions can be called directly from Lua. Conversely, eScript may also call Lua functions as long as they use only numbers as arguments and return a single number as a result.

Max-Depth

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.

Non-Transactional Updates

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.

Password Hashes

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

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.

Serial Ports

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).

Service Activation

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:

  1. Meter sends an activation request to a URL defined by the service provider. This URL is called the control URL.

  2. 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.

  3. 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.

  4. 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.

Activation Request to Control URL

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.

Example Activation Request

A typical activation request body is shown below (formatted for readability):

{
  "name": "Test1234",
  "sn": "G13456789",
  "opts": ["gzip", "json", "secure"]
}

Challenge Response

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:

    1. generating a sequence of cryptographically random bytes,

    2. encrypting the sequence with the meter's public key, and, finally,

    3. 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:

  1. decrypts the server nonce using its private key and converting the resulting byte sequence to a lowercase hex string
  • we will call this rnd,
  1. creates a cryptographically strong random hexadecimal string which we'll call cnnc (client nonce),

  2. calculates the MD5 hash of the string obtained by concatenating rnd, a colon (:), and cnnc.

  3. 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.

Example of Challenge Response and Resulting Meter Request

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.

Service URL Response

Upon successful service activation, the provider returns a response body containing a JSON object with the following members:

  1. url (required): The service URL to which the service's data should be sent.

  2. 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).

  3. pw: If specified, the password to use when sending the post request to the service URL.

  4. 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.

Example Service URL Response

{
  "url": "https://provider.com/alert/post/a08b44098",
  "options": "json,gzip,min_prio=7"
}

Error Response

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.

Time Expressions

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: years
  • q: quarters
  • b: billing-cycles
  • m: months
  • w: weeks
  • d: days
  • h: hours
  • Q: quarter-hours
  • M: minutes

For 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.

Formal Definition

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

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).

Time Ranges

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.

Formal Definition

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.

Type Codes

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 / quantumdt

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 ($).

Unix Timestamp

A Unix timestamp is a number that counts the seconds since the start of January 1, 1970 UTC.

User Privileges

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.

View Names

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.

Virtual Register Formulas

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.