Advanced: metering data API - plan-d-io/P1-dongle GitHub Wiki

The P1-dongle has a REStful API to access the most recent received data from the P1 port. This API can be accessed over HTTP or MQTT.

HTTP API

Endpoint <dongle ip>/data

Supported methods GET,

Viewing all data

A GET to the config endpoint returns all configured meter readings present in the meter telegram.

Example output:

[
    {
        "value": 125443.07,
        "unit": "kWh",
        "timestamp": 1291890620,
        "friendly_name": "Total energy consumed",
        "sensorId": "beta_meter.total_energy_consumed",
        "entity": "Beta meter",
        "metric": "GridElectricityImport",
        "metricKind": "cumulative"
    },
    {
        "value": 126052.26,
        "unit": "kWh",
        "timestamp": 1291890620,
        "friendly_name": "Total energy injected",
        "sensorId": "beta_meter.total_energy_injected",
        "entity": "Beta meter",
        "metric": "GridElectricityExport",
        "metricKind": "cumulative"
    }
]

For more information about the formatting, please see the payload format page.

Viewing limited data

A GET to the <dongle ip>/data?basic endpoint returns the most important meter readings present in the meter telegram.

MQTT API

Measurement data

When MQTT is enabled, the dongle pushes its metering data to the <mqtt-prefix>/ topic, with each detected and enabled measurement sent to a different topic.

The <mqtt-prefix> defaults to data/devices/utility_meter

The default MQTT topic structure is

data/devices/utility_meter/[MEASUREMENT]  

with [MEASUREMENT] being the name of the measurement.

E.g. the value of the active power consumption measurement is sent to data/devices/utility_meter/active_power_consumption. The same formatting as the HTTP API applies.

If you run mosquitto as MQTT broker on your server, you can scan the topics with the command mosquitto_sub -v -t data/devices/utility_meter/#.

The frequency of the MQTT data push is dependent on the Update interval (s) setting.

Alive and last will

The dongle uses the <mqtt-prefix> to post alive and last will messages. As long as the dongle is online and connected, this topic will retain the message online. If the connection to the broker is lost, this topic will display offline.

Full DSMR telegram

If enabled, the dongle will push the complete P1 DSMR telegram to <mqtt-prefix>/telegram.

Warning: the full telegram is quite large (>4kB). Make sure your MQTT broker supports large payloads.

⚠️ **GitHub.com Fallback** ⚠️