# Overview

Per toestel is het vaak mogelijk om verschillende software te installeren. Daarom zijn de handleidingen opgedeeld in toestel- en softwareafhankelijke instructies.&#x20;

## Toestelafhankelijk

| Toestel                 | Link naar instructie                                                              |
| ----------------------- | --------------------------------------------------------------------------------- |
| P1 Dongle Pro+          | [naar handleiding](https://docs.smart-stuff.nl/p1-dongle-pro+/)                   |
| Ethernet P1 Dongle Pro+ | [naar handleiding](https://docs.smart-stuff.nl/ethernet-p1-dongle-pro+/)          |
| Ultra Mini              | [naar handleiding](https://docs.smart-stuff.nl/ultra-mini/)                       |
| Ultra                   | [naar handleiding](https://docs.smart-stuff.nl/ultra/)                            |
| P1 Modbus Pro           | [naar handleiding](https://docs.smart-stuff.nl/p1-modbus-dongle/)                 |
| Waterlezer              | [naar handleiding](https://docs.smart-stuff.nl/waterlezer-or-h2o-dongle-esphome/) |
| S0                      | [naar handleiding](https://docs.smart-stuff.nl/esphome-s0-dongle/)                |
| P1 Splitter Pro         | [naar handleiding](https://docs.smart-stuff.nl/p1-bridge/)                        |

## Softwareafhankelijk

| Software | Link naar instructie                                                   |
| -------- | ---------------------------------------------------------------------- |
| DSMR-API | [naar handleiding](https://docs.smart-stuff.nl/dsmr-api/)              |
| ESPHome  | [naar handleiding](https://docs.smart-stuff.nl/esphome-p1-dongle-pro/) |

## Archief

Er zijn enkele handleiding naar het archief gegaan. Deze zijn te vinden op&#x20;

<https://martijn-hendriks.gitbook.io/archive>

Dit zijn de handleidingen van de eerste generatie dongles: P1 Dongle / P1 Ethernet.

| Toestel                | Link naar instructie                                                    |
| ---------------------- | ----------------------------------------------------------------------- |
| P1 Dongle Pro          | [naar handleiding](broken://spaces/vTGCAhDAE4XdkKPkKBuT)                |
| Ethernet P1 Dongle Pro | [naar handleiding](https://docs.smart-stuff.nl/ethernet-p1-dongle-pro/) |


# Inleiding

{% hint style="warning" %}
Voor de gebruikers in Vlaanderen: De P1 poort van de slimme meter dient via de website van Fluvius geactiveerd te worden.&#x20;
{% endhint %}

## Gedachte achter de dongles

De P1 Dongle Pro Dongle is een veelzijdige oplossing om slimme meter gegevens te kunnen verwerken en te delen met alle toepassingen die u wenst.

<figure><img src="https://4261191675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkKsDyUDXfooWhgxCfhok%2Fuploads%2FnHlBN3TmZFyahn8WqRgy%2FPro%20V6%20v14.png?alt=media&amp;token=f29d3f25-8497-40d9-ba52-405cd9ce92fa" alt="" width="320"><figcaption></figcaption></figure>

### Gedachte achter de dongles <a href="#gedachte-achter-de-dongles" id="gedachte-achter-de-dongles"></a>

* Open hardware
* Standaard interfaces
* Privacy: data blijft altijd van de gebruiker en wordt niet gedeeld
* Geen abonnement
* laagdrempelig: in kosten en gebruikerservaring

## Primaire functies

* Uitlezen van de slimme meter (via de p1 aansluiting)
* Wifi koppeling met uw netwerk
* Inzien van de actuele gegevens (Elektra/Gas/Water)
* Inzien van de energie geschiedenis (tabel/grafisch)
* Eigen web server (standalone) voor het kunnen inzien van alle gegevens en configureren
* Lokaal opslaan van de gegevens met een bewaartermijn van maximaal 2 jaar
* Delen van de gegevens met andere systemen

## Installeren

In enkele minuten is de dongle klaar voor gebruik. De stappen zijn:

{% content-ref url="/pages/bp3oz0Fw26a7FcjXmjoS" %}
[Aansluiten](/snelle-start/aansluiten)
{% endcontent-ref %}

{% content-ref url="/pages/GBzkvp3qq5x2LihjrcQR" %}
[Broken mention](broken://pages/GBzkvp3qq5x2LihjrcQR)
{% endcontent-ref %}

{% content-ref url="/pages/6iuXxpHGoB0BcZAAN4RF" %}
[Optie: Watermeter sensor](/snelle-start/optie-watermeter-sensor)
{% endcontent-ref %}

{% content-ref url="/pages/Iwgo9mT9YkjMt8sScU6g" %}
[Broken mention](broken://pages/Iwgo9mT9YkjMt8sScU6g)
{% endcontent-ref %}

{% content-ref url="/pages/X2Z4vOF4cZD1RVir7lQS" %}
[Broken mention](broken://pages/X2Z4vOF4cZD1RVir7lQS)
{% endcontent-ref %}

## Geavanceerd: haal er alles uit!

Haal nog meer uit de dongle met geavanceerde functies&#x20;

{% content-ref url="/pages/X9FIDByRZRxtNHpHjNO9" %}
[Broken mention](broken://pages/X9FIDByRZRxtNHpHjNO9)
{% endcontent-ref %}

{% content-ref url="/pages/ldUlKfdpToiapDLkB2Pd" %}
[Broken mention](broken://pages/ldUlKfdpToiapDLkB2Pd)
{% endcontent-ref %}

{% content-ref url="/pages/YsI2ObfQQ7wAJIStiwqR" %}
[Broken mention](broken://pages/YsI2ObfQQ7wAJIStiwqR)
{% endcontent-ref %}

{% content-ref url="/pages/fkLHiSzTuYaorZIZQgzi" %}
[Broken mention](broken://pages/fkLHiSzTuYaorZIZQgzi)
{% endcontent-ref %}

{% content-ref url="/pages/MlvhD6VNrwLPFbIzOcYC" %}
[Broken mention](broken://pages/MlvhD6VNrwLPFbIzOcYC)
{% endcontent-ref %}

{% content-ref url="/pages/72Qerg5P9RCZnkUB5Ftc" %}
[Broken mention](broken://pages/72Qerg5P9RCZnkUB5Ftc)
{% endcontent-ref %}

{% content-ref url="/pages/9ZHEgWxRnssXn4wX3rfo" %}
[Broken mention](broken://pages/9ZHEgWxRnssXn4wX3rfo)
{% endcontent-ref %}

{% content-ref url="/pages/mVVii98E2WJI20CAeFwx" %}
[Broken mention](broken://pages/mVVii98E2WJI20CAeFwx)
{% endcontent-ref %}

## Smart home systemen

Er zijn diverse smart home oplossingen voor enkele hiervan wordt een voorbeeld gegeven.

{% content-ref url="/pages/NY1eVK8NXmgbiUGuEROQ" %}
[Broken mention](broken://pages/NY1eVK8NXmgbiUGuEROQ)
{% endcontent-ref %}


# Aansluiten

## USB Adapter wel of niet nodig?

Er zijn diverse versies en merken slimme meters in omloop. Het meest voorkomende zijn versies 2,3,4 en 5. De laatste jaren worden alleen versie 5 meters geïnstalleerd.&#x20;

{% hint style="warning" %}
Soms is een usb adapter nodig om de dongle te voeden.
{% endhint %}

Het is relevant om de slimme meter versie te kennen omdat:

* sommige versies geven geen of te weinig voeding om de dongle te voeden
* oudere versies geven minder data door (bv. geen spanning)&#x20;

De versie staat vaak op de meter met de aanduiding DSMR, SMR of ESMR. Ook kan via merk/typenummer gezocht worden welke slimme meter versie het is. In België zijn het altijd versie 5 meters, dat is prettig.

Op versie 5 meters kan de dongle zo aangesloten worden zonder extra voeding. Voor de versie 2,3 en 4 meters dient een aparte usb adapter + kabel gebruikt te worden. Dit kan elke oude usb adapter zijn die u nog heeft liggen.

{% hint style="info" %}
Enkele versie 5 meters zijn kritisch waardoor helaas een usb adapter aangesloten dient te worden op de dongle.
{% endhint %}

## Koppelen aan slimme meter

Sluit de dongle met de meegeleverde kabel aan op de slimme meter eventueel nog een usb voeding.&#x20;

## Checks

<figure><img src="https://4261191675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkKsDyUDXfooWhgxCfhok%2Fuploads%2FgEdmKByUEUrmgv98ykXD%2Fdongle%20aansluiten%20(2).png?alt=media&amp;token=6626df63-6595-43a4-89a6-8bddc4b777ad" alt=""><figcaption></figcaption></figure>


# Van Start

Er kunnen diverse software versies geinstalleerd zijn. Afhankelijk van de software zal de werking van de dongle verschillen. Hieronder de linkjes naar de beschrijving van de software functies.

[DSMR-API](https://docs.smart-stuff.nl/dsmr-api/)

[ESPHome](https://docs.smart-stuff.nl/esphome-p1-dongle-pro/)

### Quick link <a href="#quick-link" id="quick-link"></a>

webinterface: <http://p1-dongle-pro.local>

Heeft u een andere host naam ingesteld in de dongle dan zal de dongle onder deze host naam te bereiken zijn http\://\<host naam>.local


# Optie: Watermeter sensor

Heeft u een Pro versie met watermeter sensor dan is deze extra stap vereist.

### Sensor plaatsen <a href="#sensor-plaatsen" id="sensor-plaatsen"></a>

Het waterverbruik wordt gemeten door de omwentelingen te tellen van het liter wieltje in de watermeter. Dit wieltje moet een metalen vlakje hebben om te worden gedetecteerd.

Plaats de sensor recht boven het wieltje zonder dat er lucht/plakband tussen de sensor en het glas zit. Wanneer het rode lampje gaat branden, is de sensor goed geplaatst. Sensor zit normaal gesproken recht boven het rode literwieltje iets verschoven van het midden van deze wijzer.

Er zijn twee typen sensoren verkrijgbaar. Een platte (geel/oranje) en langwerpige (pen). De pensensor wordt gebruikt voor watermeters waarbij het kijkglas boven het literwieltje niet geheel vlak is.

{% hint style="info" %}
Zet de kraan een beetje open om te checken of de sensor goed zit.&#x20;
{% endhint %}

{% hint style="warning" %}
Gele sensor: monteer de sensor met het kruis / rode ledje naar de watermeter
{% endhint %}

#### **Gele / platte sensor plaatsen** <a href="#platte-sensor-plaatsen" id="platte-sensor-plaatsen"></a>

Maak de sensor vast met meegeleverde klittenband of met de sensor beugel, zie onderstaande montage wijze. Bij het langsgaan van de halve maan/metaal op het wieltje dient de rode led op te lichten en daarna weer uit te gaan.

<figure><img src="https://github.com/mhendriks/esphome-p1/raw/main/manuals/Waterlezer/afb/montage_sensor.png" alt=""><figcaption></figcaption></figure>

#### Lange/pen sensor plaatsen <a href="#lange-pen-sensor-plaatsen" id="lange-pen-sensor-plaatsen"></a>

Voor de pen sensor is een aparte beugel meegeleverd. Schroef de sensor zo in de beugel dat het blauwe uiteinde vlak op het kijkvenster komt te zitten. Plaats de beugel met sensor op het venster en zet hem vast met elastiek. De foto hieronder toont een Elster meter. Hierbij is een pensensor niet nodig maar het kan wel. Hij is bij deze meter net zo gemonteerd als bij andere.

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9yqjZq2xIv2DaOltuGqz%2Fuploads%2FmlLNWXtqIU7Joc0Ltre5%2FIMG_0807.JPG?alt=media&#x26;token=461795b0-3254-47c7-9961-bb323842953c" alt=""><figcaption><p>goed vastzetten met elastiek</p></figcaption></figure>

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9yqjZq2xIv2DaOltuGqz%2Fuploads%2F1TXFCDy6iyFyEZ6p5akP%2FIMG_0808.JPG?alt=media&#x26;token=ff1eb8a5-5a10-4339-86a8-4b0b7eabec5c" alt=""><figcaption><p>sensor iets verschoven uit het midden van het wieltje</p></figcaption></figure>


# CE Conformiteit

De dongle voldoet aan de regels die de EU stelt aan dergelijke toestellen. In het document hieronder treft u de conformiteitsverklaring aan.

{% file src="/files/OmwSW6RVGnKw0bh6j1mB" %}


# Systeem

Eigenschappen van de dongle

De dongle heeft de onderstaande eigenschappen.

| Processor          | Espressif ESP32 C3                    |
| ------------------ | ------------------------------------- |
| CPU kernen         | 1                                     |
| CPU type           | RISC IV                               |
| Geheugen           | 4 MB flash                            |
| usb poort          | micro usb                             |
| Voeding            | 5 Volt uit de slimme meter of via usb |
| ESD beveiliging    | Ja, op de ingangspoorten              |
| Reset mogelijkheid | Ja, via de fysieke knop               |
| Visuele indicator  | Ja, blauwe LED                        |


# Smart Meter Modbus Adapters

Choose, install and configure a Smartstuff smart meter to Modbus RTU adapter.

Smartstuff Smart Meter Modbus Adapters make data from supported smart meters available locally through Modbus RTU. This documentation covers firmware v3 for all current Modbus RTU adapters, firmware v2 for existing installations and legacy firmware v1 installations.

{% hint style="info" %}
Start by choosing the hardware variant. Connections, power requirements and physical controls differ between adapters. Firmware v3 is available for every current Modbus RTU adapter.
{% endhint %}

## Choose your adapter

### D1MC

<figure><img src="https://869162580-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F50CFzoSHtUAx13D3ZcfB%2Fuploads%2Fgit-blob-56c3623c817b6e8950135a35b4eee9b689c12a29%2Fd1mc.png?alt=media" alt="D1MC DIN-rail Smart Meter Modbus Adapter" width="375"><figcaption><p>D1MC DIN-rail adapter.</p></figcaption></figure>

Choose [D1MC](/p1-modbus-dongle/hardware-variants/hardware-variants/d1mc) for a fixed DIN-rail installation, HAN-NVE support, Modbus RTU screw terminals, flexible 5 V power options and software-controlled RS485 termination.

D1MC currently converts DSMR/P1 and HAN-NVE to Modbus RTU. Its physical Linky TIC/S0 interface is present, but Linky software support is planned and not yet available.

### P1 Modbus Pro (NRGD)

<figure><img src="https://869162580-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F50CFzoSHtUAx13D3ZcfB%2Fuploads%2Fgit-blob-e4bf6e90b7ef55020d3cd29968f18ca52ca11898%2Fnrgd-term.png?alt=media" alt="P1 Modbus Pro compact Smart Meter Modbus Adapter" width="375"><figcaption><p>P1 Modbus Pro (NRGD).</p></figcaption></figure>

Choose [P1 Modbus Pro](/p1-modbus-dongle/hardware-variants/hardware-variants/p1-modbus-pro) for a compact smart-meter-to-Modbus RTU adapter. NRGD is available as a regular implementation and as an implementation based on ZAP2/NRGDH. The latter also supports HAN-NVE with a HAN (RJ45)-to-RJ12 cable. Check the connection sticker on the dongle because their Modbus `A` and `B` positions differ.

## Hardware and feature matrix

| Feature                               | P1 Modbus Pro (NRGD)                                                             | Din rail adapter (D1MC)                     |
| ------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------- |
| DSMR/P1 input                         | Available                                                                        | Available                                   |
| HAN-NVE                               | Available on the ZAP2/NRGDH-based implementation with a HAN (RJ45)-to-RJ12 cable | Available with adapter cable                |
| Linky TIC hardware                    | Not available                                                                    | Interface present; software support planned |
| Modbus RTU                            | Available                                                                        | Available                                   |
| Software-controlled 120 Ω termination | Not available                                                                    | Available; enabled by default               |
| USB connection                        | USB-C                                                                            | USB-C                                       |
| Additional 5 V screw-terminal supply  | Not available                                                                    | Available                                   |
| P1 output                             | Available                                                                        | Not available                               |
| Firmware v3                           | Available                                                                        | Available                                   |
| Firmware v2                           | Available for existing installations                                             | Available for existing installations        |
| Firmware v1                           | Legacy installations only                                                        | Not supported                               |

The old white P1 Modbus adapter is intentionally excluded from this current-product matrix. It remains documented only where an older installation or [firmware v1](/p1-modbus-dongle/firmware-v1-legacy/firmware-v1) requires it.

## Firmware

All current Modbus RTU adapters can use [firmware v3](/p1-modbus-dongle/firmware-v3-all-modbus-rtu-adapters/firmware-v3). In addition to the standard selectable register mappings, v3 lets an expert create and store a custom Modbus mapping for an unsupported system.

Firmware v2 remains documented for existing installations. Both generations provide configurable Modbus RTU settings and local diagnostics through the USB Device Manager. Hardware-dependent settings appear only when the connected adapter supports them.

## Get started

1. [Choose and install the hardware variant](/p1-modbus-dongle/hardware-variants/installation).
2. [Connect to the Device Manager](/p1-modbus-dongle/firmware-v2-existing-installations/device-manager).
3. Configure the meter source and Modbus RTU settings.
4. Select a standard mapping or, with v3, [create a custom mapping](/p1-modbus-dongle/firmware-v3-all-modbus-rtu-adapters/custom-mapping).


# Hardware variants

Connections, power and installation information for each Smart Meter Modbus Adapter.

Choose the hardware page that matches the product name and hardware ID shown in the Device Manager.

| Product                                                                              | Hardware ID                                         | Use this variant for                                                                                                                        |
| ------------------------------------------------------------------------------------ | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| [D1MC](/p1-modbus-dongle/hardware-variants/hardware-variants/d1mc)                   | D1MC                                                | DIN-rail installations using DSMR/P1 or HAN-NVE, with screw-terminal Modbus RTU and flexible 5 V power                                      |
| [P1 Modbus Pro](/p1-modbus-dongle/hardware-variants/hardware-variants/p1-modbus-pro) | NRGD, including the ZAP2/NRGDH-based implementation | Compact DSMR/P1-to-Modbus RTU installations with P1 output; the ZAP2/NRGDH-based implementation also supports HAN-NVE with an adapter cable |

{% hint style="info" %}
NRGD exists as a regular implementation and as an implementation based on ZAP2/NRGDH. The enclosure does not reliably distinguish them. Check the connection sticker because the `A` and `B` terminal positions differ; the ZAP2/NRGDH-based implementation also replaces the separate blue status LED with an RGB LED in the P1 input.
{% endhint %}

Firmware configuration and register mappings are documented once under [Firmware v2 — current](/p1-modbus-dongle/firmware-v2-existing-installations/firmware-v2).


# D1MC

Hardware, connections, power and installation for the D1MC DIN-rail Smart Meter Adapter.

D1MC is a configurable DIN-rail Smart Meter Adapter for fixed indoor installations. It currently converts DSMR/P1 and HAN-NVE meter data locally to Modbus RTU.

{% hint style="warning" %}
Linky TIC hardware interface present. Software support is planned and not yet available. Do not select or commission Linky TIC as a current firmware v2 meter source.
{% endhint %}

## Connections and pin-out

<figure><img src="https://869162580-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F50CFzoSHtUAx13D3ZcfB%2Fuploads%2Fgit-blob-0a0fe3f74183bf71b6ce8bed353e9722fb52fa4e%2Fd1mc-pinout.png?alt=media" alt="D1MC terminal pin-out for Linky TIC and S0, power and Modbus RTU" width="800"><figcaption><p>D1MC screw-terminal groups and terminal order, viewed from the front.</p></figcaption></figure>

The colors group terminals by purpose: blue identifies the Linky TIC/S0 signal terminals, red identifies 5 V and ground or reference terminals, and orange identifies the Modbus RTU data pair.

| Group               | Terminal | Description                                                                 |
| ------------------- | -------- | --------------------------------------------------------------------------- |
| Linky TIC/S0 — blue | `I2`     | Galvanically isolated signal input 2; use depends on the installed firmware |
| Linky TIC/S0 — blue | `I1`     | Galvanically isolated signal input 1; use depends on the installed firmware |
| Power — red         | `GND`    | Ground connection for the 5 V supply group                                  |
| Power — red         | `GND`    | Second ground connection for the 5 V supply group                           |
| Power — red         | `5 V`    | Input for an additional regulated 5 V supply                                |
| Modbus RTU — orange | `A+`     | Modbus RTU data line A                                                      |
| Modbus RTU — orange | `B-`     | Modbus RTU data line B                                                      |

{% hint style="warning" %}
The Linky TIC/S0 terminals are physically present. Linky TIC software support is planned and not yet available in firmware v2. Do not infer a current Linky wiring procedure from the hardware pin-out alone.
{% endhint %}

## Controls and interfaces

<figure><img src="https://869162580-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F50CFzoSHtUAx13D3ZcfB%2Fuploads%2Fgit-blob-0ba38ca4f5def038d75529c071c96d80a6dc7711%2Fd1mc-controls.png?alt=media" alt="D1MC smart-meter input, button, status LED and USB connection" width="800"><figcaption><p>D1MC front controls and interfaces.</p></figcaption></figure>

| Label    | Feature           | Description                                                                                                                                                              |
| -------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `SMR/P1` | Smart-meter input | RJ12 input for DSMR/P1 meters. HAN-NVE uses the same input with the appropriate optional adapter cable.                                                                  |
| `BUTTON` | Local control     | Short press to reboot; press for more than 5 seconds to restore factory settings; hold while applying power to enter download mode.                                      |
| `LED`    | RGB status LED    | Shows operating state and diagnostics. Firmware v2 can adjust its brightness; see [LED indicators](/p1-modbus-dongle/firmware-v2-existing-installations/led-indicators). |
| `USB`    | USB-C connection  | Additional 5 V power, local Device Manager connection and firmware updates. Use a USB data cable for configuration and updates.                                          |

D1MC has no P1 output. It has software-controlled 120 Ω Modbus RTU termination, enabled by default.

## Power options

| Meter interface        | Power requirement                                              |
| ---------------------- | -------------------------------------------------------------- |
| DSMR/P1 version 5      | 5 V through the P1 connection, USB-C or the 5 V screw terminal |
| DSMR/P1 version 2 or 4 | External regulated 5 V through USB-C or the 5 V screw terminal |
| HAN-NVE                | External regulated 5 V through USB-C or the 5 V screw terminal |
| Linky TIC/S0 hardware  | External regulated 5 V through USB-C or the 5 V screw terminal |

Average consumption is 90 mA at 5 V. The power manager has a 500 mA protection limit; this is not the normal operating current.

## Installation

{% hint style="warning" %}
D1MC is intended only for a dry indoor installation. Installation in or near electrical distribution equipment must be performed in accordance with applicable local rules by a person competent to do so.
{% endhint %}

1. Mount D1MC on the DIN rail with the installation de-energized.
2. Connect the supported meter interface:
   * connect a DSMR/P1 meter to the P1 input; or
   * connect HAN-NVE to the P1 input using the appropriate adapter cable.
3. Connect a regulated external 5 V supply when required by the table above.
4. Connect Modbus RTU using the labels on the screw terminal and the connected controller manufacturer's wiring instructions.
5. Apply power and connect through USB-C to the [Device Manager](/p1-modbus-dongle/firmware-v2-existing-installations/device-manager).
6. Select the meter source and configure Modbus RTU in [Configuration](/p1-modbus-dongle/firmware-v2-existing-installations/configuration).
7. Confirm whether the default enabled 120 Ω termination is appropriate for D1MC's position on the RS485 bus.

Do not connect or commission the Linky TIC/S0 terminal as a current meter source until supported firmware and its installation instructions are published.


# P1 Modbus Pro (NRGD)

Hardware, connections, power and installation for P1 Modbus Pro (NRGD).

P1 Modbus Pro is the compact Smartstuff smart-meter-to-Modbus RTU adapter. **NRGD** is its product family and may appear in the Device Manager or support information. Two hardware implementations exist within this family.

<figure><img src="https://869162580-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F50CFzoSHtUAx13D3ZcfB%2Fuploads%2Fgit-blob-e4bf6e90b7ef55020d3cd29968f18ca52ca11898%2Fnrgd-term.png?alt=media" alt="P1 Modbus Pro with removable Modbus RTU terminal connector" width="375"><figcaption><p>P1 Modbus Pro (NRGD).</p></figcaption></figure>

## NRGD implementations

The regular NRGD and the newer implementation based on ZAP2/NRGDH use the same enclosure and cannot be distinguished reliably by the enclosure alone. Check the connection sticker and LEDs on the dongle:

| Characteristic     | Regular NRGD                             | ZAP2/NRGDH-based NRGD                                                                                                                                               |
| ------------------ | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Hardware basis     | NRGD                                     | ZAP2/NRGDH                                                                                                                                                          |
| Smart-meter input  | DSMR/P1                                  | DSMR/P1 or HAN-NVE; HAN-NVE requires a HAN (RJ45)-to-RJ12 cable                                                                                                     |
| Modbus `A` and `B` | Use the connection sticker on the dongle | Different `A`/`B` terminal positions; use the connection sticker on the dongle                                                                                      |
| Status LED         | Separate blue mono status LED            | No separate blue status LED; RGB status LED in the P1 input, in the position used by the green LED on the regular NRGD. Its colors have the same meaning as on D1MC |

{% hint style="warning" %}
The `A` and `B` positions differ between the two implementations. Never copy the terminal order from another NRGD dongle or from an image: always follow the connection sticker on the dongle being installed.
{% endhint %}

## Features and connections

* DSMR/P1 input through the supplied P1 cable
* HAN-NVE input on the ZAP2/NRGDH-based implementation, using a HAN (RJ45)-to-RJ12 cable
* Modbus RTU through the removable RS485 module terminal connector
* USB-C for additional 5 V power, local configuration and firmware updates
* P1 output
* P1 output LED; the power and status indication differs by implementation as shown above
* Button for reboot, factory reset and download mode

P1 Modbus Pro does not support Linky TIC and does not have software-controlled RS485 termination.

## Modbus RTU terminal

|                                                                                                                                                                Regular NRGD                                                                                                                                                               |                                                                                                                                                   ZAP2/NRGDH-based NRGD                                                                                                                                                  |
| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| <img src="https://869162580-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F50CFzoSHtUAx13D3ZcfB%2Fuploads%2FPKtHAypBeQZO5qkffw76%2Fnrgd-rs485%20(2).png?alt=media&amp;token=222ce781-125f-4457-ac38-7c6814459ac1" alt="Regular P1 Modbus Pro NRGD terminal order: GND, A positive, B negative" data-size="original"> | <img src="https://869162580-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F50CFzoSHtUAx13D3ZcfB%2Fuploads%2Fgit-blob-85d11ef8d22d41d49efab7f3bd48939e03214607%2Fnrgdh-pinning.png?alt=media" alt="ZAP2/NRGDH-based P1 Modbus Pro terminal order: B negative, GND, A positive" data-size="original"> |
|                                                                                                                                                   From top to bottom: `GND`, `A+`, `B-`                                                                                                                                                   |                                                                                                                                           From top to bottom: `B-`, `GND`, `A+`                                                                                                                                          |

Match the `A`, `B` and, when required, `GND` labels to the connected Modbus device. In most installations only `A` and `B` are required. Follow the connected device manufacturer's instructions and use a suitable twisted pair.

{% hint style="warning" %}
Do not use the pin-out of the old white P1 Modbus adapter or another NRGD implementation. Their terminal order may be different.
{% endhint %}

## Power

The adapter is normally powered from a suitable DSMR/P1 meter. Connect an external regulated 5 V USB power supply through USB-C when the meter cannot provide sufficient power. USB-C is also used with a USB data cable for the Device Manager and firmware updates.

The P1 output is powered only while USB power is connected.

## Installation

1. Disconnect power from the equipment involved before wiring Modbus RTU.
2. Connect the P1 Modbus Pro to the meter with the supplied P1 cable.
3. Add a 5 V USB-C supply if the meter cannot supply sufficient power or if the P1 output must be powered.
4. Identify the NRGD implementation from its connection sticker and LEDs, then connect Modbus RTU using the `A` and `B` labels on that dongle.
5. Apply power and connect through the [Device Manager](/p1-modbus-dongle/firmware-v2-existing-installations/device-manager).
6. Configure the [Modbus communication settings](/p1-modbus-dongle/firmware-v2-existing-installations/configuration) to match the connected controller.

## LEDs and button

The RGB status LED on the ZAP2/NRGDH-based implementation uses the same colors and indications as D1MC. See [LED indicators](/p1-modbus-dongle/firmware-v2-existing-installations/led-indicators) for firmware v2 status behavior.

* Short press: reboot.
* Press for more than 5 seconds: restore factory settings and reboot.
* Hold while applying power: enter download mode.


# Installation

Select the installation instructions for your Smart Meter Modbus Adapter.

Connections, power and physical controls differ by hardware. Use the page for your adapter:

* [D1MC](/p1-modbus-dongle/hardware-variants/hardware-variants/d1mc) — DIN-rail hardware with DSMR/P1 and HAN-NVE support, screw-terminal Modbus RTU and flexible 5 V power.
* [P1 Modbus Pro (NRGD)](/p1-modbus-dongle/hardware-variants/hardware-variants/p1-modbus-pro) — compact adapter with an RS485 module and P1 output. Includes regular NRGD and ZAP2/NRGDH-based implementations with different `A`/`B` terminal positions; the latter also supports HAN-NVE using a HAN (RJ45)-to-RJ12 cable.

After installing the hardware, use the [Device Manager](/p1-modbus-dongle/firmware-v2-existing-installations/device-manager) and follow the shared [firmware v2 configuration](/p1-modbus-dongle/firmware-v2-existing-installations/configuration).

{% hint style="warning" %}
The old white P1 Modbus adapter has a micro-USB connector and a different fixed Modbus terminal pin-out. It has not been sold for years. Do not use its wiring diagram for current hardware; retain existing installation information only when servicing an old unit.
{% endhint %}

## General Modbus RTU checks

* De-energize the installation before changing wiring.
* Match `A` and `B` to the labels and instructions for both devices.
* Use a suitable twisted pair and follow the connected equipment manufacturer's requirements for cable length, topology, grounding and shielding.
* Configure the same device ID, baud rate and serial format on the adapter and Modbus master.
* Apply 120 Ω termination only where required by the RS485 bus topology.


# Firmware v3 overview

Firmware v3 for Smart Meter Modbus RTU adapters, including the Custom Modbus mapping expert feature.

Firmware v3 is the current software generation for all **Smart Meter Modbus RTU adapters**, including P1 Modbus Pro (NRGD) and D1MC. It retains the selectable standard Modbus mappings and Device Manager workflow from v2, and adds a custom mapper for systems whose required register layout is not available as a standard profile.

{% hint style="info" %}
Firmware v3 is available for every current Smart Meter Modbus RTU adapter. [Firmware v2](/p1-modbus-dongle/firmware-v2-existing-installations/firmware-v2) remains available for existing installations.
{% endhint %}

## Main V3 features

* **Custom Modbus mapping:** create a register layout for a controller, inverter, charger or energy-management system that is not covered by a supplied profile.
* **Verified starter mappings:** start from a Smartstuff-provided SDM630, inverted SDM630 or P1M floats mapping, then adapt it for the installation.
* **Import and export:** save a custom mapping as JSON, share it with an installer or keep it as a backup before changing it.
* **Persistent custom profile:** one custom mapping is stored on the adapter and can be selected as its active Modbus mapping.
* **Flexible register handling:** choose the register address, smart-meter value, scale, signed or unsigned data type and 32-bit word order. You can choose whether registers outside the mapping return zero or a Modbus error.
* **Improved data foundation:** the internal energy-data model has been renewed while preserving the established behaviour of the standard mappings.

## Device Manager navigation

After connecting, the Device Manager shows **Refresh** and **Save** in its secondary navigation bar. Firmware v3 adds **Custom mapping · Expert** there. The button is available only when the connected adapter confirms that it supports the mapper; it is not shown on firmware v2.

<figure><img src="https://869162580-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F50CFzoSHtUAx13D3ZcfB%2Fuploads%2Fgit-blob-80fbcb9f54a346c9168756afadd4c43936fad55e%2Fdevice-manager-v3-sub-navigation.png?alt=media" alt="Device Manager subnavigation with Refresh, Save and Custom mapping Expert"><figcaption><p>The custom-mapper entry point in the firmware v3 Device Manager.</p></figcaption></figure>

## Standard mappings remain available

V3 does not replace the standard mappings. Choose the supplied mapping when it exactly matches the connected system; it is the simplest and supported choice. Use a custom mapping only when no supplied mapping fits, or when the target system requires a small, well-understood variation.

The available standard profiles also include **SDM120 - Total system** in v3, in addition to the profiles documented for firmware v2. The Device Manager shows the profiles supported by the connected adapter.

## Getting started

1. Install the V3 Alpha with the [web installer](/p1-modbus-dongle/firmware-v2-existing-installations/update).
2. Connect the adapter and first select a standard mapping if one fits the target system.
3. If it does not, open **Custom mapping · Expert** in the Device Manager.
4. Start with a verified mapping or create one, validate it and upload it to the adapter.
5. Select the uploaded **Custom mapping** as the active Modbus mapping and test the registers with the connected system.

For the complete workflow, limits and important compatibility notes, see [Custom Modbus mapping](/p1-modbus-dongle/firmware-v3-all-modbus-rtu-adapters/custom-mapping).


# Custom Modbus mapping

Create, validate, save and use a custom Modbus register mapping on Smart Meter Modbus RTU adapters with firmware v3.

The custom mapper lets an experienced installer define the Modbus registers that a connected system expects. It is useful when no supplied standard mapping matches an inverter, charger, PLC or energy-management system.

{% hint style="warning" %}
This is an expert feature for **Smart Meter Modbus RTU adapters with firmware v3**. A custom mapping can make the target system display incorrect energy data when register addresses, data types, scaling or word order are wrong. Use a standard mapping whenever one fits.
{% endhint %}

<figure><img src="https://869162580-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F50CFzoSHtUAx13D3ZcfB%2Fuploads%2Fgit-blob-8328cecb481c53cd20c4d8796e00a2d5036fdb8e%2Fdevice-manager-v3-custom-mapper.png?alt=media" alt="Firmware v3 Custom mapping Expert screen with verified mappings, mapping settings and editable register rows"><figcaption><p>The Custom mapping · Expert screen: start from a verified mapping or build and validate a profile register by register.</p></figcaption></figure>

## The mapper screen

The top of the screen has three parts:

* **Verified mappings** lets you choose a Smartstuff starting point and load it into the editor.
* **Mapping** contains the mapping name, 32-bit word order and the behaviour for registers that are not mapped. It also has buttons to start a new mapping and import or export JSON.
* **Register entries** is the editable table. Each row has the register address, source or derived value, factor, type, sign, missing-value rule and an optional constant. Use the delete icon to remove an entry.

At the bottom of the table, use **Validate** before uploading. **Validate & upload** checks the mapping and only then writes it to the adapter. **← Device** returns to the normal Device Manager screen without changing the mapping.

## What it does

One named custom mapping can be stored persistently on each adapter. It contains up to 80 register entries. For every entry you choose:

* The Modbus register address.
* The smart-meter value or derived value to expose, or a constant value.
* The scale factor.
* The data type: 16- or 32-bit signed/unsigned integer, or 32-bit float.
* The missing-value behaviour: use the source default, return zero, or report it as unavailable.

For 32-bit entries you can select MSW-first or LSW-first word order for the entire mapping. You can also choose whether registers not included in the mapping return zero (the default) or a Modbus error. Returning zero can be needed when a controller reads a broad register block containing unused addresses.

V3 also supports **By direction** for applicable phase-current and total-current values, so a current can follow the import/export direction reported by the smart meter.

## Create and activate a mapping

1. Install the **V3 Alpha** with the [web installer](/p1-modbus-dongle/firmware-v2-existing-installations/update), then connect the adapter with a USB data cable and open the [Device Manager](https://config.smart-stuff.nl/).
2. Select **Connect** and choose the adapter. The **Custom mapping · Expert** action appears only when compatible v3 firmware is connected.
3. Open **Custom mapping · Expert**.
4. Choose a verified starter mapping and select **Use mapping**, or select **New mapping**.
5. Enter a recognizable name, set the word order and add the required register entries.
6. Select **Validate**. Correct every reported address, overlap, type, source or size issue.
7. Select **Validate & upload**. The adapter verifies and stores the mapping before activating it.
8. Return to the device overview, choose **Custom mapping —&#x20;*****your mapping name*** as the Modbus mapping and select **Save**.
9. Test the required registers with the target system before commissioning the installation.

The mapper stores the editable definition in the browser while you work. The adapter receives a validated compiled version, not arbitrary JSON.

## Verified starter mappings

The mapper includes a Smartstuff library of verified starting points:

* **SDM630 compatible**
* **SDM630 compatible (inverted)** for installations that need inverted signed power values
* **P1M floats**, including signed phase currents by direction

Load a starter mapping when it is close to the desired result, then make only the required changes. A starter mapping is a useful basis, but the final responsibility for compatibility with the target device remains with the installer.

## Save and share safely

Use **Export JSON** to make a backup before changing a working mapping. Use **Import JSON** to restore it or transfer it to another v3 Smart Meter Modbus RTU adapter. Importing does not change the adapter until you validate and upload the mapping.

Only one custom mapping is stored on an adapter. Uploading another one replaces the stored custom mapping after validation succeeds. Keep the exported JSON for each installation, together with the target device model and its required register documentation.

## Limits and troubleshooting

* A name may contain up to 48 printable characters.
* A mapping may contain up to 80 entries and use at most 1024 bytes of adapter storage.
* Register entries may not overlap; a 32-bit value occupies two consecutive Modbus registers.
* Custom mappings are specific to firmware v3. Export the JSON before changing major firmware generations.
* If **Custom mapping** is not available in the mapping list, upload a valid mapping first and then select it in the Device Manager.
* Use the [Modbus monitor](/p1-modbus-dongle/firmware-v2-existing-installations/configuration#modbus-monitor-and-diagnostics) while testing to see the addresses and results requested by the target system.


# Firmware v2 overview

Firmware v2 remains available for existing Smart Meter Modbus Adapter installations.

Firmware v2 remains available for existing Smart Meter Modbus Adapter installations. Instead of installing a separately compiled firmware variant for each application, v2 contains all supported Modbus mappings in one firmware image. Mapping, communication settings, monitoring and device control are handled at runtime through the Device Manager.

{% hint style="info" %}
Firmware v3 is the current generation for all Smart Meter Modbus RTU adapters; see [firmware v3](/p1-modbus-dongle/firmware-v3-all-modbus-rtu-adapters/firmware-v3) for its custom-mapper feature. Firmware v2 remains suitable for existing installations.
{% endhint %}

Older P1 Modbus adapters currently running firmware v1 can be upgraded. Follow [Migrate from v1 to v2](/p1-modbus-dongle/firmware-v1-legacy/migrate-to-v2) because the current mapping and communication settings must be recorded and restored after installation. Firmware v1 does not apply to D1MC.

## Fundamental difference

| Firmware v1                                                         | Firmware v2                                                 |
| ------------------------------------------------------------------- | ----------------------------------------------------------- |
| Separate firmware variant for each mapping or use case              | One firmware image containing all mappings                  |
| Reflash to change to another mapping variant                        | Select another mapping in the Device Manager                |
| Configuration mainly through Modbus registers and compiled defaults | Configuration and device control through the Device Manager |
| Basic status and update workflow                                    | Live status, Modbus monitor and integrated updates          |

## Main changes from v1

* Selectable Modbus mappings in one firmware image
* Configuration through the USB Device Manager
* Live device, P1 and Modbus status
* Persistent configuration stored on the adapter
* Integrated stable firmware check and update flow
* Modbus request monitor for diagnostics
* Improved RGB status indications and hardware diagnostics
* Support for DSMR/P1 and, on compatible hardware, HAN-NVE as the smart-meter source

## Mappings included in firmware v2

The following mappings can be selected in the Device Manager without installing different firmware:

* Default - TeltoCharge
* Default - floats
* SDM630
* DTSU666
* Alfen
* EM330
* EM111
* ABB B21
* EMPRO / MX3xx
* KLEFR / Inepro
* Phoenix Contact EEM / XM3xx
* Charge Pro
* DRIS
* Wallbox - P1MB
* SolarEdge
* SunSpec 203

## Default configuration

* Mapping: Default - TeltoCharge
* Modbus device ID: `43`
* RS485: `38400 8E1`
* Smart-meter source: DSMR/P1 (`SMR (P1)` in the current Device Manager)

These values can be changed in the [Device Manager](/p1-modbus-dongle/firmware-v2-existing-installations/device-manager). Changing a mapping does not require a firmware update. See [Configuration](/p1-modbus-dongle/firmware-v2-existing-installations/configuration) for hardware applicability and setting details.

## Available mappings

Firmware v2 contains native mappings and emulations for integrations that expect a particular meter layout. See [Firmware v2 register mappings](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping) for the complete list and register tables generated from the v2 recipes.

## Confirmed device configurations

See [Confirmed device configurations](/p1-modbus-dongle/firmware-v2-existing-installations/confirmed-configurations) for settings that users have successfully applied with specific chargers, inverters and other Modbus devices.

## Updating

The preferred update method is the integrated updater in the Device Manager. See [Updating firmware](/p1-modbus-dongle/firmware-v2-existing-installations/update).


# Device Manager

Configure, monitor and update a Smart Meter Modbus Adapter over USB.

The Device Manager is the local configuration and control interface for firmware v2 and v3. It communicates directly with the adapter through USB-C. Configuration data remains local between the browser and the connected device; the adapter has no built-in network web interface.

[Open the Device Manager](https://config.smart-stuff.nl/)

<figure><img src="https://869162580-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F50CFzoSHtUAx13D3ZcfB%2Fuploads%2Fgit-blob-8773a6ca19986eebf038e1c41eb5a155133a0855%2Fdevice-manager-v2-firmware-update.png?alt=media" alt="Firmware v2 Device Manager with a firmware update available and the Modbus monitor visible"><figcaption><p>Firmware v2 Device Manager showing device status, the Modbus monitor and an available firmware update.</p></figcaption></figure>

{% hint style="warning" %}
Use a Chromium-based browser such as Google Chrome or Microsoft Edge and connect the adapter with a USB data cable.
{% endhint %}

## Connect

1. Connect the adapter to the computer through USB-C.
2. Open the Device Manager.
3. Select **Connect**.
4. Choose the adapter from the browser dialog.

The overview shows the hardware type, installed firmware version, connection state and live smart-meter status.

## Subnavigation

Once connected, the Device Manager shows a secondary navigation bar with **Refresh** and **Save**. **Refresh** reads the current device state again; **Save** stores changed configuration values.

With compatible firmware v3, the same bar also shows **Custom mapping · Expert**. This opens the separate custom-mapper screen. Firmware v2 deliberately shows only **Refresh** and **Save**: it does not support custom mappings.

<figure><img src="https://869162580-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F50CFzoSHtUAx13D3ZcfB%2Fuploads%2Fgit-blob-80fbcb9f54a346c9168756afadd4c43936fad55e%2Fdevice-manager-v3-sub-navigation.png?alt=media" alt="Device Manager subnavigation with Refresh, Save and Custom mapping Expert"><figcaption><p>Firmware v3 adds Custom mapping · Expert to the connected Device Manager subnavigation.</p></figcaption></figure>

## Device control

The Device Manager is used to:

* View device, firmware and hardware information
* Configure the active Modbus mapping and serial communication
* Select the smart meter source on compatible hardware
* Monitor recent Modbus requests
* Reboot the adapter
* Check for and install firmware v2 updates
* Copy diagnostic system information for support
* With firmware v3: create, import, export and activate a [custom Modbus mapping](/p1-modbus-dongle/firmware-v3-all-modbus-rtu-adapters/custom-mapping)

## Configuration

Depending on the connected hardware, the following settings are available. See [Configuration](/p1-modbus-dongle/firmware-v2-existing-installations/configuration) for the applicability matrix and detailed guidance.

* Smart-meter source: DSMR/P1 or HAN-NVE
* Modbus mapping
* Modbus device ID
* Baud rate
* Serial format
* RS485 termination
* Modbus monitor
* RGB LED brightness, on hardware variants with an RGB status LED

Changed rows are marked in the interface. Select **Save** to store the changed values on the adapter.

The mapping, device ID, baud rate and serial format are independent settings. Selecting another mapping changes the exposed register model only; it does not automatically change the communication settings.

## LED indicators

The Device Manager can change the RGB LED brightness on supported hardware. See [Configuration](/p1-modbus-dongle/firmware-v2-existing-installations/configuration#status-led-brightness) for applicability and [LED indicators](/p1-modbus-dongle/firmware-v2-existing-installations/led-indicators) for status meanings.

## Modbus monitor

The monitor displays the 30 most recent Modbus RTU requests received by the adapter, including device ID, function code, address, word count and result. It can be enabled in Configuration and is intended for commissioning and troubleshooting, not permanent logging.

## Firmware v2 update

When a newer stable firmware v2 version is available, the Device Manager displays an update notification. The existing USB connection is handed to the firmware updater, so the adapter does not need to be selected a second time. Firmware v3 Alpha is currently installed through the [web installer](/p1-modbus-dongle/firmware-v2-existing-installations/update), not through this screen.

The update does not erase the stored user configuration. After a successful update, the Device Manager reconnects automatically.


# Configuration

Configure meter source, Modbus RTU, termination and LED brightness in firmware v2.

Firmware v2 configuration applies to installations that use v2. Every Modbus RTU adapter with firmware v3 uses the same Device Manager for its normal communication settings and adds the [custom mapper](/p1-modbus-dongle/firmware-v3-all-modbus-rtu-adapters/custom-mapping). The Device Manager identifies the connected hardware and shows only settings supported by that adapter.

Open the [Device Manager](https://config.smart-stuff.nl/), connect with a USB data cable, change the required values and select **Save**.

## Hardware applicability

| Setting                                | P1 Modbus Pro (NRGD)                                                                                                 | D1MC                          |
| -------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | ----------------------------- |
| Smart-meter source                     | Regular NRGD: DSMR/P1 only. ZAP2/NRGDH-based NRGD: DSMR/P1 or HAN-NVE                                                | DSMR/P1 or HAN-NVE            |
| Modbus mapping                         | Available                                                                                                            | Available                     |
| Device ID, baud rate and serial format | Available                                                                                                            | Available                     |
| Software-controlled 120 Ω termination  | Not available                                                                                                        | Available; enabled by default |
| RGB LED brightness                     | Not available on the regular NRGD; shown by the Device Manager when supported on the ZAP2/NRGDH-based implementation | Available                     |
| Modbus monitor                         | Available                                                                                                            | Available                     |

## Smart-meter source

Use **DSMR/P1** for a meter connected directly through the P1 input. On D1MC or the ZAP2/NRGDH-based NRGD, select **HAN-NVE** when a supported HAN-NVE meter is connected through the appropriate adapter cable. The NRGDH-based implementation requires a HAN (RJ45)-to-RJ12 cable.

{% hint style="warning" %}
D1MC's Linky TIC interface is hardware only at this stage. Linky software support is planned and not yet available, so it is not a current meter-source choice.
{% endhint %}

## Modbus communication

Configure the adapter and Modbus master with the same values:

* **Mapping:** the register model expected by the connected system.
* **Device ID:** address used by the Modbus master.
* **Baud rate:** communication speed.
* **Serial format:** data bits, parity and stop bits, such as `8E1`.

The firmware v2 defaults are the Default - TeltoCharge mapping, device ID `43` and `38400 8E1`. Selecting another mapping changes the register model only; it does not automatically change the communication values. See the canonical [register mappings](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping) and [confirmed device configurations](/p1-modbus-dongle/firmware-v2-existing-installations/confirmed-configurations).

## RS485 termination

RS485 termination is a hardware-dependent setting. D1MC includes a software-controlled 120 Ω terminator and ships with it enabled. P1 Modbus Pro (NRGD) does not provide this setting.

Termination is normally used at both physical ends of an RS485 bus, not at every device. Leave D1MC termination enabled when it is at an end and disable it when it is an intermediate node, subject to the design of the complete bus and the connected equipment.

## Status LED brightness

D1MC has an RGB status LED whose brightness can be adjusted in the Device Manager. The ZAP2/NRGDH-based NRGD implementation also has an RGB status LED; the Device Manager shows the brightness setting when that hardware supports it. The regular NRGD uses a mono status LED and does not expose this setting. See [LED indicators](/p1-modbus-dongle/firmware-v2-existing-installations/led-indicators) for status meanings.

## Modbus monitor and diagnostics

Enable the Modbus monitor during commissioning or troubleshooting. It displays the 30 most recent Modbus RTU requests, including device ID, function code, address, word count and result. It is a local diagnostic view, not permanent logging or analysis software.


# LED indicators

LED behaviour and diagnostics for firmware v2 hardware variants.

The available LEDs depend on the hardware variant. Firmware v2 uses the status LED for operating state and diagnostics. Separate power and P1 output LEDs, when present, have a fixed hardware function.

| Hardware variant                      | LEDs                                                                                       |
| ------------------------------------- | ------------------------------------------------------------------------------------------ |
| P1 Modbus Pro (regular NRGD)          | Separate blue mono status LED, green mono power LED on the P1 input and mono P1 output LED |
| P1 Modbus Pro (ZAP2/NRGDH-based NRGD) | RGB status LED in the P1 input and mono P1 output LED; no separate blue status LED         |
| D1MC                                  | RGB status LED                                                                             |

The old white P1 Modbus adapter uses mono status and power LEDs. It is legacy hardware and is not part of the current hardware comparison.

## Power LED

On a regular NRGD, the green LED in the P1 input is on when the adapter has power. During normal operation this LED should stay on continuously. On the ZAP2/NRGDH-based NRGD, an RGB status LED occupies this position instead. If the adapter is off or unstable, check the P1 cable, USB power and smart meter power supply.

## P1 output LED

On P1 Modbus Pro, the P1 output LED indicates outgoing P1 data. It blinks when the adapter transmits data on the P1 output. D1MC has no P1 output.

## Status LED

On D1MC and the ZAP2/NRGDH-based NRGD, the RGB status LED color indicates the current state. Both implementations use exactly the same RGB colors and indications shown in the table below. On the regular NRGD, the separate blue mono status LED shows the equivalent state without color.

Firmware v1 does not use the RGB status LED behaviour described here. For v1 installations, the status LED is mono.

| State                               | RGB status LED                               | Mono status LED                          | Meaning                                                                                                 |
| ----------------------------------- | -------------------------------------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| Startup                             | Soft white breathing                         | Soft breathing                           | The dongle is booting. This normally lasts about 3 seconds.                                             |
| Ready                               | Solid blue                                   | On                                       | The dongle is running normally and ready.                                                               |
| Smart meter telegram received       | Short green flash                            | Short blink                              | A valid smart meter telegram has been received successfully.                                            |
| Read, parse or Modbus request error | Red pulse                                    | Two short flashes                        | The dongle detected an error.                                                                           |
| RS485 module missing                | Three short red flashes, followed by a pause | Three short flashes, followed by a pause | The RS485 module is not detected. Modbus communication is disabled until the module is available again. |

## Button feedback

When the button is pressed, hardware with an RGB status LED temporarily shows the button action:

| Button action                          | RGB LED indication                       | Result                               |
| -------------------------------------- | ---------------------------------------- | ------------------------------------ |
| Short press                            | Green while the button is pressed        | Reboot the dongle.                   |
| Press and hold for more than 5 seconds | Green at first, then red after 5 seconds | Restore factory settings and reboot. |


# Confirmed device configurations

Modbus settings that users have successfully applied with specific devices.

This page lists firmware v2 configurations that users have successfully applied with specific devices. Use it as a practical starting point when configuring a Smart Meter Modbus Adapter and the connected device.

| Device                                             | Mapping                                                                                                   | Modbus device ID | RS485 settings |
| -------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ---------------: | -------------- |
| TeltoCharger                                       | [Default - TeltoCharge](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping/default-p1) |             `43` | `38400 8E1`    |
| Growatt THOR                                       | [SDM630](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping/sdm630)                    |              `2` | `9600 8N1`     |
| Deye battery/inverter system (model not specified) | [SDM630](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping/sdm630)                    |              `1` | `9600 8N1`     |

{% hint style="info" %}
These configurations are based on successful user installations. They are not a guarantee for every model or firmware version. Configure the same device ID and serial settings on both sides of the Modbus connection.
{% endhint %}

If your device is not listed, select the mapping and communication settings specified by its manufacturer. The [Modbus request monitor](/p1-modbus-dongle/firmware-v2-existing-installations/device-manager) can help diagnose the connection.


# Register mappings

Complete firmware v2 mapping and register reference.

Firmware v2 contains all selectable mapping profiles in one firmware image. Selecting a mapping changes only the exposed register model. It does not change the Modbus device ID, baud rate or serial format.

## Global communication settings

The factory defaults are device ID `43`, `38400` baud and `8E1`. These are global settings and can be changed independently in the Device Manager.

Both `FC03` and `FC04` read the active mapping. The preferred configuration method is the Device Manager. Firmware v2 also accepts these global `FC06` writes:

| Address | Setting              | Values                                    |
| ------: | -------------------- | ----------------------------------------- |
|     `0` | Device ID            | `1-254`                                   |
|     `2` | Serial format offset | `46-91`                                   |
|     `4` | Baud-rate index      | `0-4` = 9600, 19200, 38400, 57600, 115200 |
|     `8` | Mapping              | Mapping value from the table below        |

## Mapping overview

| Value | Mapping                                                                                                                | Profile      | Firmware 2.3.0 status       |
| ----: | ---------------------------------------------------------------------------------------------------------------------- | ------------ | --------------------------- |
|   `0` | [Default - TeltoCharge](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping/default-p1)              | `P1M`        | Active                      |
|   `1` | [SDM630](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping/sdm630)                                 | `SDM630`     | Active                      |
|   `2` | [DTSU666](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping/dtsu666)                               | `DTSU666`    | Active                      |
|   `3` | [Alfen](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping/alfen)                                   | `ALFEN`      | Active                      |
|   `4` | [EM330](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping/em330)                                   | `EM330`      | Active                      |
|  `14` | [EM111](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping/em111)                                   | `EM111`      | Active                      |
|   `5` | [ABB B21](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping/abb-b21)                               | `ABB_B21`    | Active                      |
|   `6` | [EMPRO / MX3xx](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping/empro-mx3xx)                     | `EMPRO`      | Active                      |
|   `7` | [Default - floats](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping/default-floats)               | `P1M_F`      | Active                      |
|   `8` | [KLEFR / Inepro](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping/klefr-inepro)                   | `KLEFR`      | Active                      |
|   `9` | [Phoenix Contact EEM / XM3xx](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping/phoenix-eem-xm3xx) | `PHOENIX`    | Active                      |
|  `10` | [Charge Pro](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping/charge-pro)                         | `CHARGE`     | No recipe assigned in 2.3.0 |
|  `11` | [DRIS](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping/dris)                                     | `DRIS`       | No recipe assigned in 2.3.0 |
|  `12` | [Wallbox - P1MB](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping/wallbox-p1mb)                   | `XEMEX`      | Active                      |
|  `13` | [SolarEdge](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping/solaredge)                           | `SE`         | Active                      |
|  `15` | [SunSpec 203](/p1-modbus-dongle/firmware-v2-existing-installations/register-mapping/sunspec-203)                       | `SUNSPEC203` | Active                      |

{% hint style="warning" %}
Charge Pro and DRIS are selectable in firmware 2.3.0, but no register recipes are assigned to their profiles. See their pages for details.
{% endhint %}

## Register table conventions

Each mapping page is generated from the active firmware v2 recipe and profile definitions. Addresses are shown in decimal and hexadecimal. A 32-bit value occupies two consecutive 16-bit Modbus registers.


# Default - TeltoCharge

Firmware v2 register overview for the Default - TeltoCharge mapping.

## Mapping behaviour

* Device Manager mapping value: `0`
* Profile: `P1M`
* Read function codes: `FC03` and `FC04`
* Register widths: 32-bit entries unless a text/fill range is shown
* 32-bit word order: high word first (MSW-LSW)
* Unmapped register handling: Modbus exception

{% hint style="info" %}
Device ID, baud rate and serial format are global firmware v2 settings. They are not changed when this mapping is selected.
{% endhint %}

## Register overview

| Address (decimal / hex) | Words | Type     | Source or fixed value          | Conversion | Missing         |
| ----------------------- | ----: | -------- | ------------------------------ | ---------- | --------------- |
| `0` / `0x0000`          |     2 | `uint32` | `timestamp_epoch`              | —          | source\_default |
| `2` / `0x0002`          |     2 | `uint32` | `energy_delivered_tariff1_kwh` | scale 1000 | source\_default |
| `4` / `0x0004`          |     2 | `uint32` | `energy_delivered_tariff2_kwh` | scale 1000 | source\_default |
| `6` / `0x0006`          |     2 | `uint32` | `energy_returned_tariff1_kwh`  | scale 1000 | source\_default |
| `8` / `0x0008`          |     2 | `uint32` | `energy_returned_tariff2_kwh`  | scale 1000 | source\_default |
| `10` / `0x000A`         |     2 | `uint32` | `energy_delivered_total_kwh`   | scale 1000 | source\_default |
| `12` / `0x000C`         |     2 | `uint32` | `energy_returned_total_kwh`    | scale 1000 | source\_default |
| `14` / `0x000E`         |     2 | `uint32` | `power_delivered_kw`           | scale 1000 | source\_default |
| `16` / `0x0010`         |     2 | `uint32` | `power_returned_kw`            | scale 1000 | source\_default |
| `18` / `0x0012`         |     2 | `uint32` | `voltage_l1_v`                 | scale 1000 | source\_default |
| `20` / `0x0014`         |     2 | `uint32` | `voltage_l2_v`                 | scale 1000 | source\_default |
| `22` / `0x0016`         |     2 | `uint32` | `voltage_l3_v`                 | scale 1000 | source\_default |
| `24` / `0x0018`         |     2 | `uint32` | `derived_current_l1_a`         | scale 1000 | source\_default |
| `26` / `0x001A`         |     2 | `uint32` | `current_l2_a`                 | scale 1000 | source\_default |
| `28` / `0x001C`         |     2 | `uint32` | `derived_current_l3_a`         | scale 1000 | source\_default |
| `30` / `0x001E`         |     2 | `uint32` | `gas_timestamp_epoch`          | —          | source\_default |
| `32` / `0x0020`         |     2 | `uint32` | `gas_delivered_m3`             | scale 1000 | source\_default |
| `34` / `0x0022`         |     2 | `uint32` | `water_timestamp_epoch`        | —          | source\_default |
| `36` / `0x0024`         |     2 | `uint32` | `water_delivered_m3`           | scale 1000 | source\_default |
| `38` / `0x0026`         |     2 | `uint32` | `power_delivered_l1_kw`        | scale 1000 | source\_default |
| `40` / `0x0028`         |     2 | `uint32` | `power_delivered_l2_kw`        | scale 1000 | source\_default |
| `42` / `0x002A`         |     2 | `uint32` | `power_delivered_l3_kw`        | scale 1000 | source\_default |
| `44` / `0x002C`         |     2 | `uint32` | `power_returned_l1_kw`         | scale 1000 | source\_default |
| `46` / `0x002E`         |     2 | `uint32` | `power_returned_l2_kw`         | scale 1000 | source\_default |
| `48` / `0x0030`         |     2 | `uint32` | `power_returned_l3_kw`         | scale 1000 | source\_default |
| `50` / `0x0032`         |     2 | `uint32` | `electricity_tariff`           | —          | source\_default |
| `52` / `0x0034`         |     2 | `uint32` | `peak_pwr_last_q_kw`           | scale 1000 | source\_default |
| `54` / `0x0036`         |     2 | `int32`  | `net_power_l1_kw`              | scale 1000 | source\_default |
| `56` / `0x0038`         |     2 | `int32`  | `net_power_l2_kw`              | scale 1000 | source\_default |
| `58` / `0x003A`         |     2 | `int32`  | `net_power_l3_kw`              | scale 1000 | source\_default |
| `60` / `0x003C`         |     2 | `int32`  | `net_power_total_kw`           | scale 1000 | source\_default |
| `100` / `0x0064`        |     2 | `uint32` | `dev_id`                       | —          | source\_default |
| `102` / `0x0066`        |     2 | `uint32` | `serial_config_offset`         | —          | source\_default |
| `104` / `0x0068`        |     2 | `uint32` | `baudrate`                     | —          | source\_default |
| `106` / `0x006A`        |     2 | `uint32` | `pre40`                        | —          | source\_default |
| `108` / `0x006C`        |     2 | `uint32` | `firmware_version_packed`      | —          | source\_default |
| `110` / `0x006E`        |     2 | `uint32` | `p1_device_magic`              | —          | source\_default |

## Reading the table

* **Words** is the number of consecutive 16-bit Modbus registers occupied by the entry.
* **Source** names correspond directly to the firmware v2 recipe source.
* **Conversion** records the exact scale, transform or direction handling configured by the recipe.
* This page is generated from `mb_recipe.h` and `modbus_profiles.h` for firmware 2.3.0.


# SDM630

Firmware v2 register overview for the SDM630 mapping.

## Mapping behaviour

* Device Manager mapping value: `1`
* Profile: `SDM630`
* Read function codes: `FC03` and `FC04`
* Register widths: 32-bit entries unless a text/fill range is shown
* 32-bit word order: high word first (MSW-LSW)
* Unmapped register handling: Zero-filled

{% hint style="info" %}
Device ID, baud rate and serial format are global firmware v2 settings. They are not changed when this mapping is selected.
{% endhint %}

## Register overview

| Address (decimal / hex) | Words | Type      | Source or fixed value         | Conversion | Missing         |
| ----------------------- | ----: | --------- | ----------------------------- | ---------- | --------------- |
| `0` / `0x0000`          |     2 | `float32` | `voltage_l1_v`                | —          | source\_default |
| `2` / `0x0002`          |     2 | `float32` | `voltage_l2_v`                | —          | source\_default |
| `4` / `0x0004`          |     2 | `float32` | `voltage_l3_v`                | —          | source\_default |
| `6` / `0x0006`          |     2 | `float32` | `derived_current_l1_a`        | —          | source\_default |
| `8` / `0x0008`          |     2 | `float32` | `derived_current_l2_a`        | —          | source\_default |
| `10` / `0x000A`         |     2 | `float32` | `derived_current_l3_a`        | —          | source\_default |
| `12` / `0x000C`         |     2 | `float32` | `net_power_l1_kw`             | scale 1000 | source\_default |
| `14` / `0x000E`         |     2 | `float32` | `net_power_l2_kw`             | scale 1000 | source\_default |
| `16` / `0x0010`         |     2 | `float32` | `net_power_l3_kw`             | scale 1000 | source\_default |
| `24` / `0x0018`         |     2 | `float32` | `net_power_l1_kw`             | scale 1000 | source\_default |
| `26` / `0x001A`         |     2 | `float32` | `net_power_l2_kw`             | scale 1000 | source\_default |
| `28` / `0x001C`         |     2 | `float32` | `net_power_l3_kw`             | scale 1000 | source\_default |
| `30` / `0x001E`         |     2 | `float32` | `direction_l1`                | —          | source\_default |
| `32` / `0x0020`         |     2 | `float32` | `direction_l2_or_zero`        | —          | source\_default |
| `34` / `0x0022`         |     2 | `float32` | `direction_l3_or_zero`        | —          | source\_default |
| `48` / `0x0030`         |     2 | `float32` | `current_total_legacy_a`      | —          | source\_default |
| `52` / `0x0034`         |     2 | `float32` | `net_power_total_kw`          | scale 1000 | source\_default |
| `60` / `0x003C`         |     2 | `float32` | `net_power_total_kw`          | scale 1000 | source\_default |
| `62` / `0x003E`         |     2 | `float32` | `direction_total`             | —          | source\_default |
| `70` / `0x0046`         |     2 | `float32` | `constant 50.0f`              | —          | —               |
| `72` / `0x0048`         |     2 | `float32` | `energy_delivered_total_kwh`  | —          | source\_default |
| `74` / `0x004A`         |     2 | `float32` | `energy_returned_total_kwh`   | —          | source\_default |
| `200` / `0x00C8`        |     2 | `float32` | `line_voltage_l12_v`          | —          | source\_default |
| `202` / `0x00CA`        |     2 | `float32` | `line_voltage_l23_v`          | —          | source\_default |
| `204` / `0x00CC`        |     2 | `float32` | `line_voltage_l31_v`          | —          | source\_default |
| `342` / `0x0156`        |     2 | `float32` | `energy_total_throughput_kwh` | —          | source\_default |
| `406` / `0x0196`        |     2 | `uint32`  | `pre40`                       | —          | source\_default |
| `408` / `0x0198`        |     2 | `uint32`  | `firmware_version_packed`     | —          | source\_default |
| `410` / `0x019A`        |     2 | `uint32`  | `p1_device_magic`             | —          | source\_default |

## Reading the table

* **Words** is the number of consecutive 16-bit Modbus registers occupied by the entry.
* **Source** names correspond directly to the firmware v2 recipe source.
* **Conversion** records the exact scale, transform or direction handling configured by the recipe.
* This page is generated from `mb_recipe.h` and `modbus_profiles.h` for firmware 2.3.0.


# DTSU666

Firmware v2 register overview for the DTSU666 mapping.

## Mapping behaviour

* Device Manager mapping value: `2`
* Profile: `DTSU666`
* Read function codes: `FC03` and `FC04`
* Register widths: mixed 16-bit and 32-bit
* 32-bit word order: high word first (MSW-LSW)
* Unmapped register handling: Zero-filled

{% hint style="info" %}
Device ID, baud rate and serial format are global firmware v2 settings. They are not changed when this mapping is selected.
{% endhint %}

## Register overview

| Address (decimal / hex) | Words | Type      | Source or fixed value            | Conversion        | Missing         |
| ----------------------- | ----: | --------- | -------------------------------- | ----------------- | --------------- |
| `0` / `0x0000`          |     1 | `int16`   | `constant 204`                   | —                 | source\_default |
| `1` / `0x0001`          |     1 | `int16`   | `constant 701`                   | —                 | source\_default |
| `2` / `0x0002`          |     1 | `int16`   | `constant 0`                     | —                 | source\_default |
| `3` / `0x0003`          |     1 | `int16`   | `constant 0`                     | —                 | source\_default |
| `5` / `0x0005`          |     1 | `int16`   | `constant 0`                     | —                 | source\_default |
| `6` / `0x0006`          |     1 | `int16`   | `constant 1`                     | —                 | source\_default |
| `7` / `0x0007`          |     1 | `int16`   | `constant 10`                    | —                 | source\_default |
| `10` / `0x000A`         |     1 | `int16`   | `constant 0`                     | —                 | source\_default |
| `12` / `0x000C`         |     1 | `int16`   | `constant 0`                     | —                 | source\_default |
| `44` / `0x002C`         |     1 | `int16`   | `constant 3`                     | —                 | source\_default |
| `45` / `0x002D`         |     1 | `int16`   | `baudrate`                       | baud\_index\_dtsu | source\_default |
| `46` / `0x002E`         |     1 | `int16`   | `dev_id`                         | —                 | source\_default |
| `8192` / `0x2000`       |     2 | `float32` | `line_voltage_l12_v`             | scale 10          | source\_default |
| `8194` / `0x2002`       |     2 | `float32` | `line_voltage_l23_v`             | scale 10          | source\_default |
| `8196` / `0x2004`       |     2 | `float32` | `line_voltage_l31_v`             | scale 10          | source\_default |
| `8198` / `0x2006`       |     2 | `float32` | `voltage_l1_v`                   | scale 10          | source\_default |
| `8200` / `0x2008`       |     2 | `float32` | `voltage_l2_v`                   | scale 10          | source\_default |
| `8202` / `0x200A`       |     2 | `float32` | `voltage_l3_v`                   | scale 10          | source\_default |
| `8204` / `0x200C`       |     2 | `float32` | `derived_current_l1_a`           | scale 1000        | source\_default |
| `8206` / `0x200E`       |     2 | `float32` | `derived_current_l2_a`           | scale 1000        | source\_default |
| `8208` / `0x2010`       |     2 | `float32` | `derived_current_l3_a`           | scale 1000        | source\_default |
| `8210` / `0x2012`       |     2 | `float32` | `net_power_total_int_x10_legacy` | —                 | source\_default |
| `8212` / `0x2014`       |     2 | `float32` | `net_power_l1_int_x10_legacy`    | —                 | source\_default |
| `8214` / `0x2016`       |     2 | `float32` | `net_power_l2_int_x10_legacy`    | —                 | source\_default |
| `8216` / `0x2018`       |     2 | `float32` | `net_power_l3_int_x10_legacy`    | —                 | source\_default |
| `8218` / `0x201A`       |     2 | `float32` | `net_power_total_int_x10_legacy` | —                 | source\_default |
| `8220` / `0x201C`       |     2 | `float32` | `net_power_l1_int_x10_legacy`    | —                 | source\_default |
| `8222` / `0x201E`       |     2 | `float32` | `net_power_l2_int_x10_legacy`    | —                 | source\_default |
| `8224` / `0x2020`       |     2 | `float32` | `net_power_l3_int_x10_legacy`    | —                 | source\_default |
| `8234` / `0x202A`       |     2 | `float32` | `direction_total`                | scale 1000        | source\_default |
| `8236` / `0x202C`       |     2 | `float32` | `direction_l1`                   | scale 1000        | source\_default |
| `8238` / `0x202E`       |     2 | `float32` | `direction_l2_or_zero`           | scale 1000        | source\_default |
| `8240` / `0x2030`       |     2 | `float32` | `direction_l3_or_zero`           | scale 1000        | source\_default |
| `8260` / `0x2044`       |     2 | `float32` | `constant 5000.0f`               | —                 | —               |
| `4126` / `0x101E`       |     2 | `float32` | `energy_delivered_total_kwh`     | —                 | source\_default |
| `4136` / `0x1028`       |     2 | `float32` | `energy_returned_total_kwh`      | —                 | source\_default |
| `16390` / `0x4006`      |     2 | `float32` | `pre40`                          | —                 | source\_default |
| `16392` / `0x4008`      |     2 | `uint32`  | `firmware_version_packed`        | —                 | source\_default |
| `16400` / `0x4010`      |     2 | `uint32`  | `p1_device_magic`                | —                 | source\_default |

## Reading the table

* **Words** is the number of consecutive 16-bit Modbus registers occupied by the entry.
* **Source** names correspond directly to the firmware v2 recipe source.
* **Conversion** records the exact scale, transform or direction handling configured by the recipe.
* This page is generated from `mb_recipe.h` and `modbus_profiles.h` for firmware 2.3.0.


# Alfen

Firmware v2 register overview for the Alfen mapping.

## Mapping behaviour

* Device Manager mapping value: `3`
* Profile: `ALFEN`
* Read function codes: `FC03` and `FC04`
* Register widths: mixed 16-bit and 32-bit
* 32-bit word order: high word first (MSW-LSW)
* Unmapped register handling: Zero-filled

{% hint style="info" %}
Device ID, baud rate and serial format are global firmware v2 settings. They are not changed when this mapping is selected.
{% endhint %}

## Register overview

| Address (decimal / hex) | Words | Type     | Source or fixed value | Conversion | Missing         |
| ----------------------- | ----: | -------- | --------------------- | ---------- | --------------- |
| `50528` / `0xC560`      |     2 | `uint32` | `current_l1_a`        | scale 1000 | source\_default |
| `50530` / `0xC562`      |     2 | `uint32` | `current_l2_a`        | scale 1000 | source\_default |
| `50532` / `0xC564`      |     2 | `uint32` | `current_l3_a`        | scale 1000 | source\_default |
| `50534` / `0xC566`      |     2 | `uint32` | `current_total_a`     | scale 1000 | source\_default |
| `50544` / `0xC570`      |     2 | `int32`  | `net_power_l1_kw`     | scale 100  | source\_default |
| `50546` / `0xC572`      |     2 | `int32`  | `net_power_l2_kw`     | scale 100  | source\_default |
| `50548` / `0xC574`      |     2 | `int32`  | `net_power_l3_kw`     | scale 100  | source\_default |

## Reading the table

* **Words** is the number of consecutive 16-bit Modbus registers occupied by the entry.
* **Source** names correspond directly to the firmware v2 recipe source.
* **Conversion** records the exact scale, transform or direction handling configured by the recipe.
* This page is generated from `mb_recipe.h` and `modbus_profiles.h` for firmware 2.3.0.


# EM330

Firmware v2 register overview for the EM330 mapping.

## Mapping behaviour

* Device Manager mapping value: `4`
* Profile: `EM330`
* Read function codes: `FC03` and `FC04`
* Register widths: mixed 16-bit and 32-bit
* 32-bit word order: low word first (LSW-MSW)
* Unmapped register handling: Zero-filled

{% hint style="info" %}
Device ID, baud rate and serial format are global firmware v2 settings. They are not changed when this mapping is selected.
{% endhint %}

## Register overview

| Address (decimal / hex) | Words | Type     | Source or fixed value            | Conversion                    | Missing         |
| ----------------------- | ----: | -------- | -------------------------------- | ----------------------------- | --------------- |
| `0` / `0x0000`          |     2 | `uint32` | `voltage_l1_v`                   | scale 10                      | source\_default |
| `2` / `0x0002`          |     2 | `uint32` | `voltage_l2_v`                   | scale 10                      | source\_default |
| `4` / `0x0004`          |     2 | `uint32` | `voltage_l3_v`                   | scale 10                      | source\_default |
| `6` / `0x0006`          |     2 | `uint32` | `line_voltage_l12_v`             | scale 10                      | source\_default |
| `8` / `0x0008`          |     2 | `uint32` | `line_voltage_l23_v`             | scale 10                      | source\_default |
| `10` / `0x000A`         |     2 | `uint32` | `line_voltage_l31_v`             | scale 10                      | source\_default |
| `12` / `0x000C`         |     2 | `uint32` | `derived_current_l1_a`           | scale 1000                    | source\_default |
| `14` / `0x000E`         |     2 | `uint32` | `current_l2_a`                   | scale 1000                    | source\_default |
| `16` / `0x0010`         |     2 | `uint32` | `derived_current_l3_a`           | scale 1000                    | source\_default |
| `18` / `0x0012`         |     2 | `int32`  | `net_power_l1_kw`                | scale 10000                   | source\_default |
| `20` / `0x0014`         |     2 | `int32`  | `net_power_l2_kw`                | scale 10000                   | source\_default |
| `22` / `0x0016`         |     2 | `int32`  | `net_power_l3_kw`                | scale 10000                   | source\_default |
| `24` / `0x0018`         |     2 | `int32`  | `net_power_l1_kw`                | scale 10000                   | source\_default |
| `26` / `0x001A`         |     2 | `int32`  | `net_power_l2_kw`                | scale 10000                   | source\_default |
| `28` / `0x001C`         |     2 | `int32`  | `net_power_l3_kw`                | scale 10000                   | source\_default |
| `30` / `0x001E`         |     2 | `int32`  | `constant 0`                     | —                             | source\_default |
| `32` / `0x0020`         |     2 | `int32`  | `constant 0`                     | —                             | source\_default |
| `34` / `0x0022`         |     2 | `int32`  | `constant 0`                     | —                             | source\_default |
| `36` / `0x0024`         |     2 | `int32`  | `line_voltage_avg_tenths_legacy` | —                             | source\_default |
| `38` / `0x0026`         |     2 | `int32`  | `line_voltage_avg_tenths_legacy` | —                             | source\_default |
| `40` / `0x0028`         |     2 | `int32`  | `net_power_total_kw`             | scale 10000                   | source\_default |
| `42` / `0x002A`         |     2 | `int32`  | `net_power_total_kw`             | scale 10000                   | source\_default |
| `44` / `0x002C`         |     2 | `int32`  | `constant 0`                     | —                             | source\_default |
| `46` / `0x002E`         |     1 | `int16`  | `direction_l1`                   | scale 1000                    | source\_default |
| `47` / `0x002F`         |     1 | `int16`  | `direction_l2`                   | scale 1000                    | source\_default |
| `48` / `0x0030`         |     1 | `int16`  | `direction_l3`                   | scale 1000                    | source\_default |
| `49` / `0x0031`         |     1 | `int16`  | `direction_total`                | scale 1000                    | source\_default |
| `50` / `0x0032`         |     1 | `int16`  | `constant 0`                     | —                             | source\_default |
| `51` / `0x0033`         |     1 | `int16`  | `constant 500`                   | —                             | source\_default |
| `52` / `0x0034`         |     2 | `uint32` | `energy_delivered_total_kwh`     | scale 10                      | source\_default |
| `54` / `0x0036`         |     2 | `uint32` | `constant 0`                     | —                             | source\_default |
| `80` / `0x0050`         |     2 | `uint32` | `energy_returned_total_kwh`      | scale 10                      | source\_default |
| `82` / `0x0052`         |     2 | `uint32` | `constant 0`                     | —                             | source\_default |
| `92` / `0x005C`         |     2 | `uint32` | `uptime_seconds`                 | —                             | source\_default |
| `406` / `0x0196`        |     2 | `uint32` | `pre40`                          | —                             | source\_default |
| `408` / `0x0198`        |     2 | `uint32` | `firmware_version_packed`        | —                             | source\_default |
| `410` / `0x019A`        |     2 | `uint32` | `p1_device_magic`                | —                             | source\_default |
| `8192` / `0x2000`       |     1 | `int16`  | `dev_id`                         | —                             | source\_default |
| `8193` / `0x2001`       |     1 | `int16`  | `baudrate`                       | baud\_index\_em330            | source\_default |
| `8194` / `0x2002`       |     1 | `int16`  | `serial_config_offset`           | parity\_index\_none\_or\_even | source\_default |
| `8195` / `0x2003`       |     1 | `int16`  | `serial_config_offset`           | stop\_bits\_count             | source\_default |
| `8196` / `0x2004`       |     1 | `int16`  | `constant 50`                    | —                             | source\_default |

## Reading the table

* **Words** is the number of consecutive 16-bit Modbus registers occupied by the entry.
* **Source** names correspond directly to the firmware v2 recipe source.
* **Conversion** records the exact scale, transform or direction handling configured by the recipe.
* This page is generated from `mb_recipe.h` and `modbus_profiles.h` for firmware 2.3.0.


# EM111

Firmware v2 register overview for the EM111 mapping.

## Mapping behaviour

* Device Manager mapping value: `14`
* Profile: `EM111`
* Read function codes: `FC03` and `FC04`
* Register widths: mixed 16-bit and 32-bit
* 32-bit word order: low word first (LSW-MSW)
* Unmapped register handling: Zero-filled

{% hint style="info" %}
Device ID, baud rate and serial format are global firmware v2 settings. They are not changed when this mapping is selected.
{% endhint %}

## Register overview

| Address (decimal / hex) | Words | Type     | Source or fixed value              | Conversion                    | Missing         |
| ----------------------- | ----: | -------- | ---------------------------------- | ----------------------------- | --------------- |
| `0` / `0x0000`          |     2 | `int32`  | `voltage_l1_v`                     | scale 10                      | source\_default |
| `2` / `0x0002`          |     2 | `int32`  | `current_l1_a`                     | scale 1000                    | source\_default |
| `4` / `0x0004`          |     2 | `int32`  | `net_power_l1_kw`                  | scale 10000                   | source\_default |
| `6` / `0x0006`          |     2 | `int32`  | `apparent_power_total_va`          | scale 10                      | zero            |
| `8` / `0x0008`          |     2 | `int32`  | `reactive_power_import_kw`         | scale 10000                   | zero            |
| `10` / `0x000A`         |     2 | `int32`  | `peak_pwr_last_q_kw`               | scale 10000                   | zero            |
| `12` / `0x000C`         |     2 | `int32`  | `peak_pwr_last_q_kw`               | scale 10000                   | zero            |
| `14` / `0x000E`         |     1 | `int16`  | `direction_l1`                     | scale 1000                    | source\_default |
| `15` / `0x000F`         |     1 | `int16`  | `constant 500`                     | —                             | source\_default |
| `16` / `0x0010`         |     2 | `int32`  | `energy_delivered_total_kwh`       | scale 10                      | source\_default |
| `18` / `0x0012`         |     2 | `int32`  | `reactive_energy_total_import_kwh` | scale 10                      | zero            |
| `20` / `0x0014`         |     2 | `int32`  | `energy_delivered_total_kwh`       | scale 10                      | source\_default |
| `22` / `0x0016`         |     2 | `int32`  | `reactive_energy_total_import_kwh` | scale 10                      | zero            |
| `24` / `0x0018`         |     2 | `int32`  | `energy_delivered_tariff1_kwh`     | scale 10                      | source\_default |
| `26` / `0x001A`         |     2 | `int32`  | `energy_delivered_tariff2_kwh`     | scale 10                      | source\_default |
| `28` / `0x001C`         |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `30` / `0x001E`         |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `32` / `0x0020`         |     2 | `int32`  | `energy_returned_total_kwh`        | scale 10                      | source\_default |
| `34` / `0x0022`         |     2 | `int32`  | `reactive_energy_total_export_kwh` | scale 10                      | zero            |
| `36` / `0x0024`         |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `38` / `0x0026`         |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `40` / `0x0028`         |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `42` / `0x002A`         |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `44` / `0x002C`         |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `46` / `0x002E`         |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `48` / `0x0030`         |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `50` / `0x0032`         |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `52` / `0x0034`         |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `256` / `0x0100`        |     2 | `int32`  | `current_l1_a`                     | scale 1000                    | source\_default |
| `258` / `0x0102`        |     2 | `int32`  | `voltage_l1_v`                     | scale 10                      | source\_default |
| `260` / `0x0104`        |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `262` / `0x0106`        |     2 | `int32`  | `net_power_l1_kw`                  | scale 10000                   | source\_default |
| `264` / `0x0108`        |     2 | `int32`  | `apparent_power_total_va`          | scale 10                      | zero            |
| `266` / `0x010A`        |     2 | `int32`  | `reactive_power_import_kw`         | scale 10000                   | zero            |
| `268` / `0x010C`        |     2 | `int32`  | `direction_l1`                     | scale 1000                    | source\_default |
| `270` / `0x010E`        |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `272` / `0x0110`        |     2 | `int32`  | `constant 500`                     | —                             | source\_default |
| `274` / `0x0112`        |     2 | `int32`  | `energy_delivered_total_kwh`       | scale 10                      | source\_default |
| `276` / `0x0114`        |     2 | `int32`  | `reactive_energy_total_import_kwh` | scale 10                      | zero            |
| `278` / `0x0116`        |     2 | `int32`  | `energy_returned_total_kwh`        | scale 10                      | source\_default |
| `280` / `0x0118`        |     2 | `int32`  | `reactive_energy_total_export_kwh` | scale 10                      | zero            |
| `282` / `0x011A`        |     2 | `int32`  | `peak_pwr_last_q_kw`               | scale 10000                   | zero            |
| `284` / `0x011C`        |     2 | `int32`  | `peak_pwr_last_q_kw`               | scale 10000                   | zero            |
| `328` / `0x0148`        |     2 | `int32`  | `energy_delivered_total_kwh`       | scale 10                      | source\_default |
| `330` / `0x014A`        |     2 | `int32`  | `reactive_energy_total_import_kwh` | scale 10                      | zero            |
| `338` / `0x0152`        |     2 | `int32`  | `energy_delivered_tariff1_kwh`     | scale 10                      | source\_default |
| `340` / `0x0154`        |     2 | `int32`  | `energy_delivered_tariff2_kwh`     | scale 10                      | source\_default |
| `342` / `0x0156`        |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `344` / `0x0158`        |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `346` / `0x015A`        |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `348` / `0x015C`        |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `350` / `0x015E`        |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `352` / `0x0160`        |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `384` / `0x0180`        |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `386` / `0x0182`        |     2 | `int32`  | `constant 0`                       | —                             | source\_default |
| `770` / `0x0302`        |     1 | `uint16` | `constant 3`                       | —                             | source\_default |
| `771` / `0x0303`        |     1 | `uint16` | `pre40`                            | —                             | source\_default |
| `4098` / `0x1002`       |     1 | `uint16` | `constant 0`                       | —                             | source\_default |
| `8192` / `0x2000`       |     1 | `int16`  | `dev_id`                           | —                             | source\_default |
| `8193` / `0x2001`       |     1 | `int16`  | `baudrate`                         | baud\_index\_em330            | source\_default |
| `8194` / `0x2002`       |     1 | `int16`  | `serial_config_offset`             | parity\_index\_none\_or\_even | source\_default |
| `8195` / `0x2003`       |     1 | `int16`  | `serial_config_offset`             | stop\_bits\_count             | source\_default |
| `8196` / `0x2004`       |     1 | `int16`  | `constant 50`                      | —                             | source\_default |

## Reading the table

* **Words** is the number of consecutive 16-bit Modbus registers occupied by the entry.
* **Source** names correspond directly to the firmware v2 recipe source.
* **Conversion** records the exact scale, transform or direction handling configured by the recipe.
* This page is generated from `mb_recipe.h` and `modbus_profiles.h` for firmware 2.3.0.


# ABB B21

Firmware v2 register overview for the ABB B21 mapping.

## Mapping behaviour

* Device Manager mapping value: `5`
* Profile: `ABB_B21`
* Read function codes: `FC03` and `FC04`
* Register widths: 32-bit entries unless a text/fill range is shown
* 32-bit word order: high word first (MSW-LSW)
* Unmapped register handling: Modbus exception

{% hint style="info" %}
Device ID, baud rate and serial format are global firmware v2 settings. They are not changed when this mapping is selected.
{% endhint %}

## Register overview

| Address (decimal / hex) | Words | Type     | Source or fixed value             | Conversion | Missing         |
| ----------------------- | ----: | -------- | --------------------------------- | ---------- | --------------- |
| `23296` / `0x5B00`      |     2 | `uint32` | `voltage_l1_v`                    | scale 10   | source\_default |
| `23298` / `0x5B02`      |     2 | `uint32` | `voltage_l2_v`                    | scale 10   | source\_default |
| `23300` / `0x5B04`      |     2 | `uint32` | `voltage_l3_v`                    | scale 10   | source\_default |
| `23308` / `0x5B0C`      |     2 | `uint32` | `derived_current_l1_a`            | scale 100  | source\_default |
| `23310` / `0x5B0E`      |     2 | `uint32` | `current_l2_a`                    | scale 100  | source\_default |
| `23312` / `0x5B10`      |     2 | `uint32` | `derived_current_l3_a`            | scale 100  | source\_default |
| `23316` / `0x5B14`      |     2 | `int32`  | `net_power_total_int_x100_legacy` | —          | source\_default |
| `23318` / `0x5B16`      |     2 | `int32`  | `net_power_l1_int_x100_legacy`    | —          | source\_default |
| `23320` / `0x5B18`      |     2 | `int32`  | `net_power_l2_int_x100_legacy`    | —          | source\_default |
| `23322` / `0x5B1A`      |     2 | `int32`  | `net_power_l3_int_x100_legacy`    | —          | source\_default |

## Reading the table

* **Words** is the number of consecutive 16-bit Modbus registers occupied by the entry.
* **Source** names correspond directly to the firmware v2 recipe source.
* **Conversion** records the exact scale, transform or direction handling configured by the recipe.
* This page is generated from `mb_recipe.h` and `modbus_profiles.h` for firmware 2.3.0.


# EMPRO / MX3xx

Firmware v2 register overview for the EMPRO / MX3xx mapping.

## Mapping behaviour

* Device Manager mapping value: `6`
* Profile: `EMPRO`
* Read function codes: `FC03` and `FC04`
* Register widths: 32-bit entries unless a text/fill range is shown
* 32-bit word order: high word first (MSW-LSW)
* Unmapped register handling: Modbus exception

{% hint style="info" %}
Device ID, baud rate and serial format are global firmware v2 settings. They are not changed when this mapping is selected.
{% endhint %}

## Register overview

| Address (decimal / hex) | Words | Type      | Source or fixed value        | Conversion | Missing         |
| ----------------------- | ----: | --------- | ---------------------------- | ---------- | --------------- |
| `32774` / `0x8006`      |     2 | `float32` | `voltage_l1_v`               | —          | source\_default |
| `32776` / `0x8008`      |     2 | `float32` | `voltage_l2_v`               | —          | source\_default |
| `32778` / `0x800A`      |     2 | `float32` | `voltage_l3_v`               | —          | source\_default |
| `32782` / `0x800E`      |     2 | `float32` | `current_l1_a`               | —          | source\_default |
| `32784` / `0x8010`      |     2 | `float32` | `current_l2_a`               | —          | source\_default |
| `32786` / `0x8012`      |     2 | `float32` | `current_l3_a`               | —          | source\_default |
| `32798` / `0x801E`      |     2 | `float32` | `net_power_l1_kw`            | scale 1000 | source\_default |
| `32800` / `0x8020`      |     2 | `float32` | `net_power_l2_kw`            | scale 1000 | source\_default |
| `32802` / `0x8022`      |     2 | `float32` | `net_power_l3_kw`            | scale 1000 | source\_default |
| `32804` / `0x8024`      |     2 | `float32` | `net_power_l1_kw`            | scale 1000 | source\_default |
| `32806` / `0x8026`      |     2 | `float32` | `net_power_l2_kw`            | scale 1000 | source\_default |
| `32808` / `0x8028`      |     2 | `float32` | `net_power_l3_kw`            | scale 1000 | source\_default |
| `32790` / `0x8016`      |     2 | `float32` | `net_power_total_kw`         | scale 1000 | source\_default |
| `32792` / `0x8018`      |     2 | `float32` | `net_power_total_kw`         | scale 1000 | source\_default |
| `32816` / `0x8030`      |     2 | `float32` | `direction_l1`               | —          | source\_default |
| `32818` / `0x8032`      |     2 | `float32` | `direction_l2`               | —          | source\_default |
| `32820` / `0x8034`      |     2 | `float32` | `direction_l3`               | —          | source\_default |
| `32780` / `0x800C`      |     2 | `float32` | `constant 50.0f`             | —          | —               |
| `33024` / `0x8100`      |     2 | `float32` | `energy_delivered_total_kwh` | —          | source\_default |
| `33030` / `0x8106`      |     2 | `float32` | `energy_returned_total_kwh`  | —          | source\_default |
| `316` / `0x013C`        |     2 | `uint32`  | `constant 909127987`         | —          | source\_default |
| `318` / `0x013E`        |     2 | `uint32`  | `constant 942748210`         | —          | source\_default |
| `320` / `0x0140`        |     2 | `uint32`  | `constant 14644`             | —          | source\_default |
| `322` / `0x0142`        |     2 | `uint32`  | `constant 0`                 | —          | source\_default |
| `324` / `0x0144`        |     1 | `int16`   | `constant -1`                | —          | source\_default |

## Reading the table

* **Words** is the number of consecutive 16-bit Modbus registers occupied by the entry.
* **Source** names correspond directly to the firmware v2 recipe source.
* **Conversion** records the exact scale, transform or direction handling configured by the recipe.
* This page is generated from `mb_recipe.h` and `modbus_profiles.h` for firmware 2.3.0.


# Default - floats

Firmware v2 register overview for the Default - floats mapping.

## Mapping behaviour

* Device Manager mapping value: `7`
* Profile: `P1M_F`
* Read function codes: `FC03` and `FC04`
* Register widths: 32-bit entries unless a text/fill range is shown
* 32-bit word order: high word first (MSW-LSW)
* Unmapped register handling: Modbus exception

{% hint style="info" %}
Device ID, baud rate and serial format are global firmware v2 settings. They are not changed when this mapping is selected.
{% endhint %}

## Register overview

| Address (decimal / hex) | Words | Type      | Source or fixed value          | Conversion    | Missing         |
| ----------------------- | ----: | --------- | ------------------------------ | ------------- | --------------- |
| `0` / `0x0000`          |     2 | `uint32`  | `timestamp_epoch`              | —             | source\_default |
| `2` / `0x0002`          |     2 | `float32` | `energy_delivered_tariff1_kwh` | scale 1000    | source\_default |
| `4` / `0x0004`          |     2 | `float32` | `energy_delivered_tariff2_kwh` | scale 1000    | source\_default |
| `6` / `0x0006`          |     2 | `float32` | `energy_returned_tariff1_kwh`  | scale 1000    | source\_default |
| `8` / `0x0008`          |     2 | `float32` | `energy_returned_tariff2_kwh`  | scale 1000    | source\_default |
| `10` / `0x000A`         |     2 | `float32` | `energy_delivered_total_kwh`   | scale 1000    | source\_default |
| `12` / `0x000C`         |     2 | `float32` | `energy_returned_total_kwh`    | scale 1000    | source\_default |
| `14` / `0x000E`         |     2 | `float32` | `power_delivered_kw`           | scale 1000    | source\_default |
| `16` / `0x0010`         |     2 | `float32` | `power_returned_kw`            | scale 1000    | source\_default |
| `18` / `0x0012`         |     2 | `float32` | `net_power_total_kw`           | scale 1000    | source\_default |
| `20` / `0x0014`         |     2 | `float32` | `voltage_l1_v`                 | —             | source\_default |
| `22` / `0x0016`         |     2 | `float32` | `voltage_l2_v`                 | —             | source\_default |
| `24` / `0x0018`         |     2 | `float32` | `voltage_l3_v`                 | —             | source\_default |
| `26` / `0x001A`         |     2 | `float32` | `derived_current_l1_a`         | by\_direction | source\_default |
| `28` / `0x001C`         |     2 | `float32` | `current_l2_a`                 | by\_direction | source\_default |
| `30` / `0x001E`         |     2 | `float32` | `derived_current_l3_a`         | by\_direction | source\_default |
| `32` / `0x0020`         |     2 | `uint32`  | `gas_timestamp_epoch`          | —             | source\_default |
| `34` / `0x0022`         |     2 | `float32` | `gas_delivered_m3`             | —             | source\_default |
| `36` / `0x0024`         |     2 | `uint32`  | `electricity_tariff`           | —             | source\_default |
| `38` / `0x0026`         |     2 | `float32` | `peak_pwr_last_q_kw`           | —             | source\_default |
| `40` / `0x0028`         |     2 | `float32` | `net_power_l1_kw`              | scale 1000    | source\_default |
| `42` / `0x002A`         |     2 | `float32` | `net_power_l2_kw`              | scale 1000    | source\_default |
| `44` / `0x002C`         |     2 | `float32` | `net_power_l3_kw`              | scale 1000    | source\_default |
| `46` / `0x002E`         |     2 | `float32` | `water_delivered_m3`           | —             | source\_default |
| `48` / `0x0030`         |     2 | `uint32`  | `p1_device_dongle_magic`       | —             | source\_default |
| `50` / `0x0032`         |     2 | `uint32`  | `firmware_version_packed`      | —             | source\_default |
| `52` / `0x0034`         |     2 | `uint32`  | `device_online`                | —             | source\_default |

## Reading the table

* **Words** is the number of consecutive 16-bit Modbus registers occupied by the entry.
* **Source** names correspond directly to the firmware v2 recipe source.
* **Conversion** records the exact scale, transform or direction handling configured by the recipe.
* This page is generated from `mb_recipe.h` and `modbus_profiles.h` for firmware 2.3.0.


# KLEFR / Inepro

Firmware v2 register overview for the KLEFR / Inepro mapping.

## Mapping behaviour

* Device Manager mapping value: `8`
* Profile: `KLEFR`
* Read function codes: `FC03` and `FC04`
* Register widths: 32-bit entries unless a text/fill range is shown
* 32-bit word order: high word first (MSW-LSW)
* Unmapped register handling: Modbus exception

{% hint style="info" %}
Device ID, baud rate and serial format are global firmware v2 settings. They are not changed when this mapping is selected.
{% endhint %}

## Register overview

| Address (decimal / hex) | Words | Type      | Source or fixed value          | Conversion | Missing         |
| ----------------------- | ----: | --------- | ------------------------------ | ---------- | --------------- |
| `0` / `0x0000`          |     2 | `uint32`  | `constant 18010365`            | —          | source\_default |
| `5` / `0x0005`          |     2 | `float32` | `constant 1.18f`               | —          | —               |
| `7` / `0x0007`          |     2 | `float32` | `constant 18.0f`               | —          | —               |
| `9` / `0x0009`          |     2 | `float32` | `constant 1.0f`                | —          | —               |
| `4096` / `0x1000`       |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `4098` / `0x1002`       |     2 | `float32` | `voltage_l1_v`                 | —          | source\_default |
| `4100` / `0x1004`       |     2 | `float32` | `voltage_l2_v`                 | —          | source\_default |
| `4102` / `0x1006`       |     2 | `float32` | `voltage_l3_v`                 | —          | source\_default |
| `4104` / `0x1008`       |     2 | `float32` | `constant 50.0f`               | —          | —               |
| `4106` / `0x100A`       |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `4108` / `0x100C`       |     2 | `float32` | `derived_current_l1_a`         | —          | source\_default |
| `4110` / `0x100E`       |     2 | `float32` | `current_l2_a`                 | —          | source\_default |
| `4112` / `0x1010`       |     2 | `float32` | `derived_current_l3_a`         | —          | source\_default |
| `4114` / `0x1012`       |     2 | `float32` | `net_power_total_kw`           | —          | source\_default |
| `4116` / `0x1014`       |     2 | `float32` | `net_power_l1_kw`              | —          | source\_default |
| `4118` / `0x1016`       |     2 | `float32` | `net_power_l2_kw`              | —          | source\_default |
| `4120` / `0x1018`       |     2 | `float32` | `net_power_l3_kw`              | —          | source\_default |
| `4122` / `0x101A`       |     2 | `float32` | `constant 0.0f`                | —          | —               |
| `4124` / `0x101C`       |     2 | `float32` | `constant 0.0f`                | —          | —               |
| `4126` / `0x101E`       |     2 | `float32` | `constant 0.0f`                | —          | —               |
| `4128` / `0x1020`       |     2 | `float32` | `constant 0.0f`                | —          | —               |
| `4130` / `0x1022`       |     2 | `float32` | `net_power_total_kw`           | —          | source\_default |
| `4132` / `0x1024`       |     2 | `float32` | `net_power_l1_kw`              | —          | source\_default |
| `4134` / `0x1026`       |     2 | `float32` | `net_power_l2_kw`              | —          | source\_default |
| `4136` / `0x1028`       |     2 | `float32` | `net_power_l3_kw`              | —          | source\_default |
| `4138` / `0x102A`       |     2 | `float32` | `direction_total`              | —          | source\_default |
| `4140` / `0x102C`       |     2 | `float32` | `direction_l1`                 | —          | source\_default |
| `4142` / `0x102E`       |     2 | `float32` | `direction_l2_or_zero`         | —          | source\_default |
| `4144` / `0x1030`       |     2 | `float32` | `direction_l3_or_zero`         | —          | source\_default |
| `8192` / `0x2000`       |     2 | `float32` | `energy_net_total_kwh`         | —          | source\_default |
| `8194` / `0x2002`       |     2 | `float32` | `energy_net_tariff1_kwh`       | —          | source\_default |
| `8196` / `0x2004`       |     2 | `float32` | `energy_net_tariff2_kwh`       | —          | source\_default |
| `8198` / `0x2006`       |     2 | `float32` | `energy_net_avg_kwh`           | —          | source\_default |
| `8200` / `0x2008`       |     2 | `float32` | `energy_net_avg_kwh`           | —          | source\_default |
| `8202` / `0x200A`       |     2 | `float32` | `energy_net_avg_kwh`           | —          | source\_default |
| `8204` / `0x200C`       |     2 | `float32` | `energy_delivered_total_kwh`   | —          | source\_default |
| `8206` / `0x200E`       |     2 | `float32` | `energy_delivered_tariff1_kwh` | —          | source\_default |
| `8208` / `0x2010`       |     2 | `float32` | `energy_delivered_tariff2_kwh` | —          | source\_default |
| `8210` / `0x2012`       |     2 | `float32` | `energy_delivered_avg_kwh`     | —          | source\_default |
| `8212` / `0x2014`       |     2 | `float32` | `energy_delivered_avg_kwh`     | —          | source\_default |
| `8214` / `0x2016`       |     2 | `float32` | `energy_delivered_avg_kwh`     | —          | source\_default |
| `8216` / `0x2018`       |     2 | `float32` | `energy_returned_total_kwh`    | —          | source\_default |
| `8218` / `0x201A`       |     2 | `float32` | `energy_returned_tariff1_kwh`  | —          | source\_default |
| `8220` / `0x201C`       |     2 | `float32` | `energy_returned_tariff2_kwh`  | —          | source\_default |
| `8222` / `0x201E`       |     2 | `float32` | `energy_returned_avg_kwh`      | —          | source\_default |
| `8224` / `0x2020`       |     2 | `float32` | `energy_returned_avg_kwh`      | —          | source\_default |
| `8226` / `0x2022`       |     2 | `float32` | `energy_returned_avg_kwh`      | —          | source\_default |
| `400` / `0x0190`        |     2 | `uint32`  | `dev_id`                       | —          | source\_default |
| `402` / `0x0192`        |     2 | `uint32`  | `serial_config_offset`         | —          | source\_default |
| `404` / `0x0194`        |     2 | `uint32`  | `baudrate`                     | —          | source\_default |
| `406` / `0x0196`        |     2 | `uint32`  | `pre40`                        | —          | source\_default |
| `408` / `0x0198`        |     2 | `uint32`  | `firmware_version_packed`      | —          | source\_default |
| `410` / `0x019A`        |     2 | `uint32`  | `p1_device_magic`              | —          | source\_default |

## Reading the table

* **Words** is the number of consecutive 16-bit Modbus registers occupied by the entry.
* **Source** names correspond directly to the firmware v2 recipe source.
* **Conversion** records the exact scale, transform or direction handling configured by the recipe.
* This page is generated from `mb_recipe.h` and `modbus_profiles.h` for firmware 2.3.0.


# Phoenix Contact EEM / XM3xx

Firmware v2 register overview for the Phoenix Contact EEM / XM3xx mapping.

## Mapping behaviour

* Device Manager mapping value: `9`
* Profile: `PHOENIX`
* Read function codes: `FC03` and `FC04`
* Register widths: 32-bit entries unless a text/fill range is shown
* 32-bit word order: high word first (MSW-LSW)
* Unmapped register handling: Modbus exception

{% hint style="info" %}
Device ID, baud rate and serial format are global firmware v2 settings. They are not changed when this mapping is selected.
{% endhint %}

## Register overview

| Address (decimal / hex) | Words | Type      | Source or fixed value          | Conversion | Missing         |
| ----------------------- | ----: | --------- | ------------------------------ | ---------- | --------------- |
| `32768` / `0x8000`      |     2 | `float32` | `line_voltage_l12_v`           | —          | source\_default |
| `32770` / `0x8002`      |     2 | `float32` | `line_voltage_l23_v`           | —          | source\_default |
| `32772` / `0x8004`      |     2 | `float32` | `line_voltage_l31_v`           | —          | source\_default |
| `32774` / `0x8006`      |     2 | `float32` | `voltage_l1_v`                 | —          | source\_default |
| `32776` / `0x8008`      |     2 | `float32` | `voltage_l2_v`                 | —          | source\_default |
| `32778` / `0x800A`      |     2 | `float32` | `voltage_l3_v`                 | —          | source\_default |
| `32780` / `0x800C`      |     2 | `float32` | `constant 50.0f`               | —          | —               |
| `32782` / `0x800E`      |     2 | `float32` | `current_l1_a`                 | —          | source\_default |
| `32784` / `0x8010`      |     2 | `float32` | `current_l2_a`                 | —          | source\_default |
| `32786` / `0x8012`      |     2 | `float32` | `current_l3_a`                 | —          | source\_default |
| `32790` / `0x8016`      |     2 | `float32` | `net_power_total_kw`           | scale 1000 | source\_default |
| `32792` / `0x8018`      |     2 | `float32` | `constant 0.0f`                | —          | —               |
| `32794` / `0x801A`      |     2 | `float32` | `apparent_power_total_va`      | —          | source\_default |
| `32796` / `0x801C`      |     2 | `float32` | `constant 1.0f`                | —          | —               |
| `32798` / `0x801E`      |     2 | `float32` | `net_power_l1_kw`              | scale 1000 | source\_default |
| `32800` / `0x8020`      |     2 | `float32` | `net_power_l2_kw`              | scale 1000 | source\_default |
| `32802` / `0x8022`      |     2 | `float32` | `net_power_l3_kw`              | scale 1000 | source\_default |
| `32804` / `0x8024`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `32806` / `0x8026`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `32808` / `0x8028`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `32810` / `0x802A`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `32812` / `0x802C`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `32814` / `0x802E`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `32816` / `0x8030`      |     2 | `float32` | `constant 1.0f`                | —          | —               |
| `32818` / `0x8032`      |     2 | `float32` | `constant 1.0f`                | —          | —               |
| `32820` / `0x8034`      |     2 | `float32` | `constant 1.0f`                | —          | —               |
| `32859` / `0x805B`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `32875` / `0x806B`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `32877` / `0x806D`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `32879` / `0x806F`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `33272` / `0x81F8`      |     2 | `float32` | `energy_delivered_tariff1_kwh` | —          | source\_default |
| `33274` / `0x81FA`      |     2 | `float32` | `energy_delivered_tariff2_kwh` | —          | source\_default |
| `33276` / `0x81FC`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `33278` / `0x81FE`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `33291` / `0x820B`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `33303` / `0x8217`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `33315` / `0x8223`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `33327` / `0x822F`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `34822` / `0x8806`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `34824` / `0x8808`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `34826` / `0x880A`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `34828` / `0x880C`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `34830` / `0x880E`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `34832` / `0x8810`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `37630` / `0x92FE`      |     2 | `float32` | `energy_total_abs_kwh`         | —          | source\_default |
| `37638` / `0x9306`      |     2 | `float32` | `energy_delivered_total_kwh`   | —          | source\_default |
| `37646` / `0x930E`      |     2 | `float32` | `energy_returned_total_kwh`    | —          | source\_default |
| `37686` / `0x9336`      |     2 | `float32` | `reactive_energy_total_varh`   | —          | source\_default |
| `37712` / `0x9350`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `37714` / `0x9352`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `37716` / `0x9354`      |     2 | `float32` | `unavailable_float`            | —          | source\_default |
| `37718` / `0x9356`      |     2 | `float32` | `energy_total_abs_kwh`         | —          | source\_default |
| `40129` / `0x9CC1`      |     2 | `uint32`  | `device_serial_u32`            | —          | source\_default |
| `40131` / `0x9CC3`      |     2 | `uint32`  | `constant 0x0107`              | —          | source\_default |

## Reading the table

* **Words** is the number of consecutive 16-bit Modbus registers occupied by the entry.
* **Source** names correspond directly to the firmware v2 recipe source.
* **Conversion** records the exact scale, transform or direction handling configured by the recipe.
* This page is generated from `mb_recipe.h` and `modbus_profiles.h` for firmware 2.3.0.


# Charge Pro

Firmware v2 register overview for the Charge Pro mapping.

{% hint style="danger" %}
Firmware 2.3.0 exposes this mapping in the Device Manager, but no register recipe is assigned in `buildMappingsOnce()`. The selected profile therefore has no active mapped registers.
{% endhint %}

## Mapping behaviour

* Device Manager mapping value: `10`
* Profile: `CHARGE`
* Read function codes: `FC03` and `FC04`
* Register widths: mixed 16-bit and 32-bit
* 32-bit word order: high word first (MSW-LSW)
* Unmapped register handling: Modbus exception

{% hint style="info" %}
Device ID, baud rate and serial format are global firmware v2 settings. They are not changed when this mapping is selected.
{% endhint %}

## Register overview

No active registers are assigned to this profile in firmware 2.3.0.

## Reading the table

* **Words** is the number of consecutive 16-bit Modbus registers occupied by the entry.
* **Source** names correspond directly to the firmware v2 recipe source.
* **Conversion** records the exact scale, transform or direction handling configured by the recipe.
* This page is generated from `mb_recipe.h` and `modbus_profiles.h` for firmware 2.3.0.


# DRIS

Firmware v2 register overview for the DRIS mapping.

{% hint style="danger" %}
Firmware 2.3.0 exposes this mapping in the Device Manager, but no register recipe is assigned in `buildMappingsOnce()`. The selected profile therefore has no active mapped registers.
{% endhint %}

## Mapping behaviour

* Device Manager mapping value: `11`
* Profile: `DRIS`
* Read function codes: `FC03` and `FC04`
* Register widths: mixed 16-bit and 32-bit
* 32-bit word order: high word first (MSW-LSW)
* Unmapped register handling: Modbus exception

{% hint style="info" %}
Device ID, baud rate and serial format are global firmware v2 settings. They are not changed when this mapping is selected.
{% endhint %}

## Register overview

No active registers are assigned to this profile in firmware 2.3.0.

## Reading the table

* **Words** is the number of consecutive 16-bit Modbus registers occupied by the entry.
* **Source** names correspond directly to the firmware v2 recipe source.
* **Conversion** records the exact scale, transform or direction handling configured by the recipe.
* This page is generated from `mb_recipe.h` and `modbus_profiles.h` for firmware 2.3.0.


# Wallbox - P1MB

Firmware v2 register overview for the Wallbox - P1MB mapping.

## Mapping behaviour

* Device Manager mapping value: `12`
* Profile: `XEMEX`
* Read function codes: `FC03` and `FC04`
* Register widths: mixed 16-bit and 32-bit
* 32-bit word order: high word first (MSW-LSW)
* Unmapped register handling: Zero-filled

{% hint style="info" %}
Device ID, baud rate and serial format are global firmware v2 settings. They are not changed when this mapping is selected.
{% endhint %}

## Register overview

| Address (decimal / hex) | Words | Type     | Source or fixed value          | Conversion | Missing |
| ----------------------- | ----: | -------- | ------------------------------ | ---------- | ------- |
| `0` / `0x0000`          |     8 | `text`   | `constant "WBXCSB0000013123"`  | —          | zero    |
| `8` / `0x0008`          |     3 | `text`   | `constant "XEMEX"`             | —          | zero    |
| `11` / `0x000B`         |     8 | `text`   | `constant "XM_P1MB_V03"`       | —          | zero    |
| `19` / `0x0013`         |     1 | `uint16` | `dev_id`                       | —          | zero    |
| `20` / `0x0014`         |    48 | `text`   | `header_text`                  | —          | zero    |
| `68` / `0x0044`         |     2 | `text`   | `p1_version_text`              | —          | zero    |
| `70` / `0x0046`         |     7 | `text`   | `timestamp_text`               | —          | zero    |
| `78` / `0x004E`         |    48 | `text`   | `equipment_id_text`            | —          | zero    |
| `126` / `0x007E`        |     2 | `uint32` | `energy_delivered_tariff1_kwh` | scale 1000 | zero    |
| `128` / `0x0080`        |     2 | `uint32` | `energy_delivered_tariff2_kwh` | scale 1000 | zero    |
| `130` / `0x0082`        |     2 | `uint32` | `energy_returned_tariff1_kwh`  | scale 1000 | zero    |
| `132` / `0x0084`        |     2 | `uint32` | `energy_returned_tariff2_kwh`  | scale 1000 | zero    |
| `134` / `0x0086`        |     2 | `text`   | `tariff_text`                  | —          | zero    |
| `136` / `0x0088`        |     2 | `uint32` | `power_delivered_kw`           | scale 1000 | zero    |
| `138` / `0x008A`        |     2 | `uint32` | `power_returned_kw`            | scale 1000 | zero    |
| `761` / `0x02F9`        |     2 | `uint32` | `voltage_l1_v`                 | scale 10   | zero    |
| `763` / `0x02FB`        |     2 | `uint32` | `voltage_l2_v`                 | scale 10   | zero    |
| `765` / `0x02FD`        |     2 | `uint32` | `voltage_l3_v`                 | scale 10   | zero    |
| `767` / `0x02FF`        |     1 | `uint16` | `current_l1_a`                 | —          | zero    |
| `769` / `0x0301`        |     1 | `uint16` | `current_l2_a`                 | —          | zero    |
| `771` / `0x0303`        |     1 | `uint16` | `current_l3_a`                 | —          | zero    |
| `773` / `0x0305`        |     2 | `uint32` | `power_delivered_l1_kw`        | scale 1000 | zero    |
| `775` / `0x0307`        |     2 | `uint32` | `power_delivered_l2_kw`        | scale 1000 | zero    |
| `777` / `0x0309`        |     2 | `uint32` | `power_delivered_l3_kw`        | scale 1000 | zero    |
| `779` / `0x030B`        |     2 | `uint32` | `power_returned_l1_kw`         | scale 1000 | zero    |
| `781` / `0x030D`        |     2 | `uint32` | `power_returned_l2_kw`         | scale 1000 | zero    |
| `783` / `0x030F`        |     2 | `uint32` | `power_returned_l3_kw`         | scale 1000 | zero    |
| `785` / `0x0311`        |     1 | `uint16` | `mbus_device_type_ch1`         | —          | zero    |
| `786` / `0x0312`        |     1 | `uint16` | `mbus_device_type_ch2`         | —          | zero    |
| `787` / `0x0313`        |     1 | `uint16` | `mbus_device_type_ch3`         | —          | zero    |
| `788` / `0x0314`        |     1 | `uint16` | `mbus_device_type_ch4`         | —          | zero    |
| `789` / `0x0315`        |    48 | `text`   | `mbus_equipment_id_ch1_text`   | —          | zero    |
| `837` / `0x0345`        |    48 | `text`   | `mbus_equipment_id_ch2_text`   | —          | zero    |
| `885` / `0x0375`        |    48 | `text`   | `mbus_equipment_id_ch3_text`   | —          | zero    |
| `933` / `0x03A5`        |    48 | `text`   | `mbus_equipment_id_ch4_text`   | —          | zero    |
| `981` / `0x03D5`        |     7 | `text`   | `mbus_timestamp_ch1_text`      | —          | zero    |
| `988` / `0x03DC`        |     2 | `uint32` | `mbus_delivered_ch1_m3`        | scale 1000 | zero    |
| `990` / `0x03DE`        |     7 | `text`   | `mbus_timestamp_ch2_text`      | —          | zero    |
| `997` / `0x03E5`        |     2 | `uint32` | `mbus_delivered_ch2_m3`        | scale 1000 | zero    |
| `999` / `0x03E7`        |     7 | `text`   | `mbus_timestamp_ch3_text`      | —          | zero    |
| `1006` / `0x03EE`       |     2 | `uint32` | `mbus_delivered_ch3_m3`        | scale 1000 | zero    |
| `1008` / `0x03F0`       |     7 | `text`   | `mbus_timestamp_ch4_text`      | —          | zero    |
| `1015` / `0x03F7`       |     2 | `uint32` | `mbus_delivered_ch4_m3`        | scale 1000 | zero    |
| `1017` / `0x03F9`       |     2 | `uint32` | `energy_delivered_total_kwh`   | scale 1000 | zero    |
| `1019` / `0x03FB`       |     2 | `uint32` | `energy_returned_total_kwh`    | scale 1000 | zero    |
| `1021` / `0x03FD`       |     4 | `text`   | `p1_version_be_text`           | —          | zero    |

## Reading the table

* **Words** is the number of consecutive 16-bit Modbus registers occupied by the entry.
* **Source** names correspond directly to the firmware v2 recipe source.
* **Conversion** records the exact scale, transform or direction handling configured by the recipe.
* This page is generated from `mb_recipe.h` and `modbus_profiles.h` for firmware 2.3.0.


# SolarEdge

Firmware v2 register overview for the SolarEdge mapping.

## Mapping behaviour

* Device Manager mapping value: `13`
* Profile: `SE`
* Read function codes: `FC03` and `FC04`
* Register widths: 32-bit entries unless a text/fill range is shown
* 32-bit word order: high word first (MSW-LSW)
* Unmapped register handling: Modbus exception

{% hint style="info" %}
Device ID, baud rate and serial format are global firmware v2 settings. They are not changed when this mapping is selected.
{% endhint %}

## Register overview

| Address (decimal / hex) | Words | Type      | Source or fixed value               | Conversion | Missing         |
| ----------------------- | ----: | --------- | ----------------------------------- | ---------- | --------------- |
| `0` / `0x0000`          |     2 | `uint32`  | `timestamp_epoch`                   | —          | source\_default |
| `2` / `0x0002`          |     2 | `float32` | `energy_delivered_total_direct_kwh` | —          | zero            |
| `4` / `0x0004`          |     2 | `float32` | `energy_returned_total_direct_kwh`  | —          | zero            |
| `6` / `0x0006`          |     2 | `float32` | `reactive_energy_total_import_kwh`  | —          | zero            |
| `8` / `0x0008`          |     2 | `float32` | `reactive_energy_total_export_kwh`  | —          | zero            |
| `10` / `0x000A`         |     2 | `float32` | `power_delivered_kw`                | —          | zero            |
| `12` / `0x000C`         |     2 | `float32` | `power_returned_kw`                 | —          | zero            |
| `14` / `0x000E`         |     2 | `float32` | `reactive_power_import_kw`          | —          | zero            |
| `16` / `0x0010`         |     2 | `float32` | `reactive_power_export_kw`          | —          | zero            |
| `18` / `0x0012`         |     2 | `float32` | `power_delivered_l1_kw`             | —          | source\_default |
| `20` / `0x0014`         |     2 | `float32` | `power_returned_l1_kw`              | —          | source\_default |
| `22` / `0x0016`         |     2 | `float32` | `power_delivered_l2_kw`             | —          | source\_default |
| `24` / `0x0018`         |     2 | `float32` | `power_returned_l2_kw`              | —          | source\_default |
| `26` / `0x001A`         |     2 | `float32` | `power_delivered_l3_kw`             | —          | source\_default |
| `28` / `0x001C`         |     2 | `float32` | `power_returned_l3_kw`              | —          | source\_default |
| `30` / `0x001E`         |     2 | `float32` | `reactive_power_l1_import_kw`       | —          | zero            |
| `32` / `0x0020`         |     2 | `float32` | `reactive_power_l1_export_kw`       | —          | zero            |
| `34` / `0x0022`         |     2 | `float32` | `reactive_power_l2_import_kw`       | —          | zero            |
| `36` / `0x0024`         |     2 | `float32` | `reactive_power_l2_export_kw`       | —          | zero            |
| `38` / `0x0026`         |     2 | `float32` | `reactive_power_l3_import_kw`       | —          | zero            |
| `40` / `0x0028`         |     2 | `float32` | `reactive_power_l3_export_kw`       | —          | zero            |
| `42` / `0x002A`         |     2 | `float32` | `voltage_l1_v`                      | —          | source\_default |
| `44` / `0x002C`         |     2 | `float32` | `voltage_l2_v`                      | —          | source\_default |
| `46` / `0x002E`         |     2 | `float32` | `voltage_l3_v`                      | —          | source\_default |
| `48` / `0x0030`         |     2 | `float32` | `current_l1_a`                      | —          | source\_default |
| `50` / `0x0032`         |     2 | `float32` | `current_l2_a`                      | —          | source\_default |
| `52` / `0x0034`         |     2 | `float32` | `current_l3_a`                      | —          | source\_default |
| `100` / `0x0064`        |     2 | `uint32`  | `dev_id`                            | —          | source\_default |
| `102` / `0x0066`        |     2 | `uint32`  | `serial_config_offset`              | —          | source\_default |
| `104` / `0x0068`        |     2 | `uint32`  | `baudrate`                          | —          | source\_default |
| `106` / `0x006A`        |     2 | `uint32`  | `pre40`                             | —          | source\_default |
| `108` / `0x006C`        |     2 | `uint32`  | `firmware_version_packed`           | —          | source\_default |
| `110` / `0x006E`        |     2 | `uint32`  | `p1_device_magic`                   | —          | source\_default |

## Reading the table

* **Words** is the number of consecutive 16-bit Modbus registers occupied by the entry.
* **Source** names correspond directly to the firmware v2 recipe source.
* **Conversion** records the exact scale, transform or direction handling configured by the recipe.
* This page is generated from `mb_recipe.h` and `modbus_profiles.h` for firmware 2.3.0.


# SunSpec 203

Firmware v2 register overview for the SunSpec 203 mapping.

## Mapping behaviour

* Device Manager mapping value: `15`
* Profile: `SUNSPEC203`
* Read function codes: `FC03` and `FC04`
* Register widths: mixed 16-bit and 32-bit
* 32-bit word order: high word first (MSW-LSW)
* Unmapped register handling: Modbus exception

{% hint style="info" %}
Device ID, baud rate and serial format are global firmware v2 settings. They are not changed when this mapping is selected.
{% endhint %}

## Register overview

| Address (decimal / hex) | Words | Type          | Source or fixed value        | Conversion               | Missing         |
| ----------------------- | ----: | ------------- | ---------------------------- | ------------------------ | --------------- |
| `40000` / `0x9C40`      |     2 | `uint32`      | `constant 0x53756E53u`       | —                        | —               |
| `40002` / `0x9C42`      |     1 | `uint16`      | `constant 1`                 | —                        | —               |
| `40003` / `0x9C43`      |     1 | `uint16`      | `constant 65`                | —                        | —               |
| `40004` / `0x9C44`      |    16 | `text`        | `constant "Smartstuff"`      | —                        | zero            |
| `40020` / `0x9C54`      |    16 | `text`        | `constant "P1 Modbus Pro+"`  | —                        | zero            |
| `40036` / `0x9C64`      |     8 | `text`        | `constant ""`                | —                        | zero            |
| `40044` / `0x9C6C`      |     8 | `text`        | `constant _VERSION_ONLY`     | —                        | zero            |
| `40052` / `0x9C74`      |    16 | `text`        | `constant "P1M"`             | —                        | zero            |
| `40068` / `0x9C84`      |     1 | `uint16`      | `dev_id`                     | —                        | source\_default |
| `40069` / `0x9C85`      |     1 | `uint16`      | `constant 203`               | —                        | —               |
| `40070` / `0x9C86`      |     1 | `uint16`      | `constant 105`               | —                        | —               |
| `40071` / `0x9C87`      |     1 | `int16`       | `current_total_legacy_a`     | scale 100                | zero            |
| `40072` / `0x9C88`      |     1 | `int16`       | `derived_current_l1_a`       | scale 100, by\_direction | zero            |
| `40073` / `0x9C89`      |     1 | `int16`       | `current_l2_a`               | scale 100, by\_direction | zero            |
| `40074` / `0x9C8A`      |     1 | `int16`       | `derived_current_l3_a`       | scale 100, by\_direction | zero            |
| `40075` / `0x9C8B`      |     1 | `int16`       | `constant -2`                | —                        | —               |
| `40076` / `0x9C8C`      |     1 | `int16`       | `voltage_l1_v`               | scale 10                 | zero            |
| `40077` / `0x9C8D`      |     1 | `int16`       | `voltage_l2_v`               | scale 10                 | zero            |
| `40078` / `0x9C8E`      |     1 | `int16`       | `voltage_l3_v`               | scale 10                 | zero            |
| `40079` / `0x9C8F`      |     3 | `uint16 fill` | `constant 0x8000u`           | —                        | zero            |
| `40082` / `0x9C92`      |     1 | `int16`       | `constant -1`                | —                        | —               |
| `40083` / `0x9C93`      |     1 | `int16`       | `constant 5000`              | —                        | —               |
| `40084` / `0x9C94`      |     1 | `int16`       | `constant -2`                | —                        | —               |
| `40085` / `0x9C95`      |     1 | `int16`       | `net_power_total_kw`         | scale 1000               | zero            |
| `40086` / `0x9C96`      |     1 | `int16`       | `net_power_l1_kw`            | scale 1000               | zero            |
| `40087` / `0x9C97`      |     1 | `int16`       | `net_power_l2_kw`            | scale 1000               | zero            |
| `40088` / `0x9C98`      |     1 | `int16`       | `net_power_l3_kw`            | scale 1000               | zero            |
| `40089` / `0x9C99`      |     1 | `int16`       | `constant 0`                 | —                        | —               |
| `40090` / `0x9C9A`      |     4 | `uint16 fill` | `constant 0x8000u`           | —                        | zero            |
| `40094` / `0x9C9E`      |     1 | `int16`       | `constant 0`                 | —                        | —               |
| `40095` / `0x9C9F`      |     4 | `uint16 fill` | `constant 0x8000u`           | —                        | zero            |
| `40099` / `0x9CA3`      |     1 | `int16`       | `constant 0`                 | —                        | —               |
| `40100` / `0x9CA4`      |     4 | `uint16 fill` | `constant 0x8000u`           | —                        | zero            |
| `40104` / `0x9CA8`      |     1 | `int16`       | `constant 0`                 | —                        | —               |
| `40105` / `0x9CA9`      |     2 | `uint32`      | `energy_returned_total_kwh`  | scale 1000               | zero            |
| `40107` / `0x9CAB`      |     2 | `uint32`      | `constant 0xFFFFFFFFu`       | —                        | —               |
| `40109` / `0x9CAD`      |     2 | `uint32`      | `constant 0xFFFFFFFFu`       | —                        | —               |
| `40111` / `0x9CAF`      |     2 | `uint32`      | `constant 0xFFFFFFFFu`       | —                        | —               |
| `40113` / `0x9CB1`      |     2 | `uint32`      | `energy_delivered_total_kwh` | scale 1000               | zero            |
| `40115` / `0x9CB3`      |     2 | `uint32`      | `constant 0xFFFFFFFFu`       | —                        | —               |
| `40117` / `0x9CB5`      |     2 | `uint32`      | `constant 0xFFFFFFFFu`       | —                        | —               |
| `40119` / `0x9CB7`      |     2 | `uint32`      | `constant 0xFFFFFFFFu`       | —                        | —               |
| `40121` / `0x9CB9`      |     1 | `int16`       | `constant 0`                 | —                        | —               |
| `40122` / `0x9CBA`      |    52 | `uint16 fill` | `constant 0xFFFFu`           | —                        | zero            |
| `40174` / `0x9CEE`      |     2 | `uint32`      | `constant 0`                 | —                        | —               |
| `40176` / `0x9CF0`      |     1 | `uint16`      | `constant 0xFFFFu`           | —                        | —               |
| `40177` / `0x9CF1`      |     1 | `uint16`      | `constant 0`                 | —                        | —               |

## Reading the table

* **Words** is the number of consecutive 16-bit Modbus registers occupied by the entry.
* **Source** names correspond directly to the firmware v2 recipe source.
* **Conversion** records the exact scale, transform or direction handling configured by the recipe.
* This page is generated from `mb_recipe.h` and `modbus_profiles.h` for firmware 2.3.0.


# Updating firmware

Firmware v2 can be updated directly from the Device Manager. Firmware v3 is currently an Alpha release and must be installed through the web installer. It is available for all Smart Meter Modbus RTU adapters.

{% hint style="warning" %}
**Use a USB data cable.** Some USB cables provide power only and cannot be used for configuration or firmware updates.
{% endhint %}

## Update firmware v2 using the Device Manager

1. Connect the adapter to the computer using a USB-C data cable.
2. Open <https://config.smart-stuff.nl/>.
3. Select **Connect** and choose the adapter.
4. If an update is available, select **Update to version**.
5. Confirm the update in the firmware dialog.
6. Keep the USB cable connected until the update is complete.

The Device Manager keeps the current settings and reconnects to the adapter after a successful update.

## Install firmware v3 Alpha

Use the web installer to install firmware v3. Connect the adapter with a USB data cable, open the installer and select **V3 Alpha** for the connected adapter. Do not disconnect it until the installation finishes.

{% embed url="<https://install.smart-stuff.nl/p1m/>" fullWidth="false" %}

{% hint style="warning" %}
Firmware v3 is currently an Alpha release. Before changing firmware generations, record the communication settings and export any working custom mapping JSON so it can be restored if needed.
{% endhint %}

Use the same web installer for manual installation, recovery or a legacy firmware variant.

## Migrating from firmware v1

Older P1 Modbus adapters running firmware v1 can be migrated to v2 through the web installer. The v1 mapping and communication settings must be recorded first and configured in the Device Manager after installing v2. This migration does not apply to D1MC.

See [Migrate from v1 to v2](/p1-modbus-dongle/firmware-v1-legacy/migrate-to-v2) for the complete procedure.


# Release notes

Release history for firmware v3, firmware v2 and legacy firmware v1 of Smart Meter Modbus RTU adapters.

## Firmware v3 — all Modbus RTU adapters

### 3.0.1

* Expanded the custom mapper to up to 80 register entries and 1024 bytes per mapping.
* Added signed phase and total currents by direction in custom mappings.
* Added the choice to return zero or a Modbus error for registers not included in a custom mapping.
* Added verified Smartstuff starter mappings, including SDM630 and P1M floats.
* Improved P1M float phase-current handling.

### 3.0.0

* Added the Custom mapping expert feature for systems that do not match a supplied Modbus profile.
* Added persistent storage of one custom mapping on the adapter.
* Introduced the internal energy-data model used by the Modbus mappings, while retaining the established standard mapping behaviour.

## Firmware v2

Firmware v2 release notes apply to supported Smart Meter Modbus Adapter hardware unless an item names a specific variant.

### 2.3.0 — 24 June 2026

* Added firmware updating directly from the Device Manager.
* Added stable-version checking and update notifications.
* Added a Modbus RTU request monitor.
* Added Device Manager and RGB LED warnings when the RS485 module is missing.
* Updated the ESP32 Arduino SDK to 3.3.10.

### 2.2.3 — 24 June 2026

* Added the SunSpec model 203 mapping.

### 2.2.2 — 24 June 2026

* Added EM111 emulation.
* Corrected word order handling for EM330 and EM111 mappings.

### 2.2.1 — 3 May 2026

* Synchronised Modbus mappings with the DSMR-API implementation.
* Refactored the mapping definitions for lower overhead and easier maintenance.

### 2.2.0 — 2 May 2026

* Restored the standard defaults: Default P1 mapping, device ID `43`, `38400 8E1`.
* Added the P1MB / Wallbox mapping.
* Set the default D1MC RGB LED brightness to 10%.

### 2.1.1 — 26 April 2026

* Added configurable RGB LED brightness.
* Corrected P1 output mapping and the NRGD P1 output LED behaviour.

### 2.1.0 — 25 April 2026

* Added selectable P1 and HAN smart meter sources on compatible hardware.
* Expanded persistent configuration and Device Manager controls.
* Added the current RGB status LED behaviour and factory-reset flow.

### 2.0.1 beta — 12 April 2026

* First public beta of the unified firmware v2 architecture.
* Introduced runtime-selectable Modbus mapping profiles.

## Firmware v1

### 1.5.10

* Final v1 maintenance release.
* Recompiled with updated DSMR parsing to accept current values from Kenter meters.

Earlier v1 releases used separate firmware variants for mappings and communication defaults. They remain available for existing installations through the web installer.


# Firmware v1 overview

Information for older P1 Modbus adapters that still use legacy firmware v1.

Firmware v1 is the legacy firmware generation for older P1 Modbus adapters. Each mapping or use case is delivered as a separately compiled firmware variant with its own defaults. It remains documented for existing installations, but current products and new integrations should use firmware v2. Firmware v1 does not support D1MC.

{% hint style="info" %}
Existing P1 Modbus adapters with firmware v1 can be migrated to firmware v2. See [Migrate from v1 to v2](/p1-modbus-dongle/firmware-v1-legacy/migrate-to-v2).
{% endhint %}

## How v1 differs from v2

* The Modbus mapping is selected by installing a specific firmware variant.
* Default device ID, baud rate and serial format may differ between variants.
* Configuration is primarily performed through Modbus registers and the physical button.
* The firmware does not provide the complete v2 Device Manager experience.

Firmware v1 therefore behaves fundamentally differently from v2: changing the application or mapping generally means selecting and installing another firmware variant.

## Legacy register mappings

The existing v1 mapping reference has been retained under [Firmware v1 register mappings](/p1-modbus-dongle/firmware-v1-legacy/register-mapping). Mapping availability, device ID and serial defaults depend on the specific v1 firmware variant installed on the dongle.

{% hint style="warning" %}
Before changing or updating a v1 installation, record the installed mapping, device ID, baud rate and serial format. These values are needed when selecting or configuring the replacement firmware.
{% endhint %}

## Updating a v1 dongle

Legacy firmware variants and recovery installation remain available through the [P1 Modbus web installer](https://install.smart-stuff.nl/p1m/).

When upgrading to v2, reconnect through the [Device Manager](https://config.smart-stuff.nl/) and select the required mapping and communication settings after installation.

## Existing integrations

There is no need to upgrade a stable v1 installation solely because v2 is available. Migration is supported and recommended when you need configurable mappings, Device Manager support, newer emulations, monitoring or integrated firmware updates.


# Firmware v1 register mappings

Legacy mapping reference for separately compiled firmware v1 variants.

Firmware v1 uses separately compiled firmware variants. The selected variant determines the mapping and its initial device ID, baud rate and serial format.

{% hint style="warning" %}
This is a legacy reference. Confirm the exact firmware variant installed on the dongle before relying on its mapping or communication defaults.
{% endhint %}

## Native mappings

* [Default P1 mapping](/p1-modbus-dongle/firmware-v1-legacy/register-mapping/default-p1-mapping)
* [Default float mapping](/p1-modbus-dongle/firmware-v1-legacy/register-mapping/default-float-mapping)

## Meter emulations

* [ABB B21](/p1-modbus-dongle/firmware-v1-legacy/register-mapping/abb-b21)
* [DTSU666](/p1-modbus-dongle/firmware-v1-legacy/register-mapping/dtsu666-emulation)
* [EM330 / EM340](/p1-modbus-dongle/firmware-v1-legacy/register-mapping/em330-em340-emulation)
* [Inepro / KLEFR 6924](/p1-modbus-dongle/firmware-v1-legacy/register-mapping/inepro-klefr-6924-emulation)
* [Schneider Charge Pro](/p1-modbus-dongle/firmware-v1-legacy/register-mapping/schneider-charge-pro-emulation)
* [SDM630](/p1-modbus-dongle/firmware-v1-legacy/register-mapping/sdm630-emulation)

Legacy firmware variants remain available through the [P1 Modbus web installer](https://install.smart-stuff.nl/p1m/). Existing v1 dongles can also [migrate to firmware v2](/p1-modbus-dongle/firmware-v1-legacy/migrate-to-v2).


# Default P1 mapping

This is the normal P1 Modbus Dongle mapping from the non-emulation firmware.

### Defaults

* Modbus device id: `43`
* RS485: `38400 8E1`
* Function codes: `FC03`, `FC04`, `FC06`
* Data format: all values are `uint32` in word order `4321`
* Unavailable value: `0xFFFFFFFF`

### FC03 / FC04 - P1 data

| Register | Description                   | Unit / encoding                                     |
| -------- | ----------------------------- | --------------------------------------------------- |
| 0        | energy meter sample timestamp | epoch UTC                                           |
| 2        | energy\_delivered\_tariff1    | Wh                                                  |
| 4        | energy\_delivered\_tariff2    | Wh                                                  |
| 6        | energy\_returned\_tariff1     | Wh                                                  |
| 8        | energy\_returned\_tariff2     | Wh                                                  |
| 10       | energy\_delivered\_total      | Wh                                                  |
| 12       | energy\_returned\_total       | Wh                                                  |
| 14       | power\_delivered              | W                                                   |
| 16       | power\_returned               | W                                                   |
| 18       | U1                            | mV                                                  |
| 20       | U2                            | mV                                                  |
| 22       | U3                            | mV                                                  |
| 24       | I1                            | mA                                                  |
| 26       | I2                            | mA                                                  |
| 28       | I3                            | mA                                                  |
| 30       | gas timestamp                 | epoch UTC                                           |
| 32       | gas delivered                 | liter                                               |
| 34       | water timestamp               | epoch UTC                                           |
| 36       | water delivered               | liter                                               |
| 38       | power\_delivered\_l1          | W                                                   |
| 40       | power\_delivered\_l2          | W                                                   |
| 42       | power\_delivered\_l3          | W                                                   |
| 44       | power\_returned\_l1           | W                                                   |
| 46       | power\_returned\_l2           | W                                                   |
| 48       | power\_returned\_l3           | W                                                   |
| 50       | tariff                        | `0`, `1` or `2` depending meter                     |
| 52       | peak power last quarter       | Belgium only                                        |
| 54       | net\_power\_l1                | signed W = `power_delivered_l1 - power_returned_l1` |
| 56       | net\_power\_l2                | signed W = `power_delivered_l2 - power_returned_l2` |
| 58       | net\_power\_l3                | signed W = `power_delivered_l3 - power_returned_l3` |
| 60       | net\_power\_total             | signed W = `power_delivered - power_returned`       |

### FC03 / FC04 - device information

| Register | Description      | Value                                             |
| -------- | ---------------- | ------------------------------------------------- |
| 100      | device id        | current Modbus slave id                           |
| 102      | serial config    | same encoding as FC06 register `2`                |
| 104      | baudrate         | actual baudrate value                             |
| 106      | pre4 meter       | `0` or `1`                                        |
| 108      | firmware version | packed `MMmmpp`, `1.5.10` = `66826` = `0x01050A`  |
| 110      | dongle name      | ASCII packed `P1M3` = `1345408307` = `0x50314D33` |

### FC06

| Register | Description     | Values                                          |
| -------- | --------------- | ----------------------------------------------- |
| 0        | device id       | `1-254`                                         |
| 2        | serial config   | encoded serial mode value                       |
| 4        | baudrate        | `0-4` = `{ 9600, 19200, 38400, 57600, 115200 }` |
| 6        | pre4 meter mode | `0` or `1`                                      |

### Serial config values

* `SERIAL_5E1 = 46`
* `SERIAL_5O1 = 47`
* `SERIAL_6E1 = 50`
* `SERIAL_6O1 = 51`
* `SERIAL_7N1 = 52`
* `SERIAL_7E1 = 54`
* `SERIAL_7O1 = 55`
* `SERIAL_8N1 = 56`
* `SERIAL_8E1 = 58`
* `SERIAL_8O1 = 59`
* `SERIAL_5N2 = 76`
* `SERIAL_5E2 = 78`
* `SERIAL_5O2 = 79`
* `SERIAL_6N2 = 80`
* `SERIAL_6E2 = 82`
* `SERIAL_6O2 = 83`
* `SERIAL_7N2 = 84`
* `SERIAL_7E2 = 86`
* `SERIAL_7O2 = 87`
* `SERIAL_8N2 = 88`
* `SERIAL_8E2 = 90`
* `SERIAL_8O2 = 91`


# Default float mapping

This is the default FLOAT emulation mapping. It exposes a compact float-based layout.

### Defaults

* Modbus device id: `1`
* RS485: `9600 8E1`
* Function codes: `FC03`
* Data format: mostly `float32`, plus a few `uint32` status registers
* Address range: `0-52`

### Registers

| Register | Description                | Type      | Unit / encoding                  |
| -------- | -------------------------- | --------- | -------------------------------- |
| 0        | sample timestamp           | `uint32`  | epoch UTC                        |
| 2        | energy\_delivered\_tariff1 | `float32` | kWh                              |
| 4        | energy\_delivered\_tariff2 | `float32` | kWh                              |
| 6        | energy\_returned\_tariff1  | `float32` | kWh                              |
| 8        | energy\_returned\_tariff2  | `float32` | kWh                              |
| 10       | energy\_delivered\_total   | `float32` | kWh                              |
| 12       | energy\_returned\_total    | `float32` | kWh                              |
| 14       | power\_delivered           | `float32` | kW                               |
| 16       | power\_returned            | `float32` | kW                               |
| 18       | net\_power\_total          | `float32` | W                                |
| 20       | voltage\_l1                | `float32` | V                                |
| 22       | voltage\_l2                | `float32` | V                                |
| 24       | voltage\_l3                | `float32` | V                                |
| 26       | current\_l1                | `float32` | A, negative when returning on L1 |
| 28       | current\_l2                | `float32` | A, negative when returning on L2 |
| 30       | current\_l3                | `float32` | A, negative when returning on L3 |
| 32       | gas timestamp              | `uint32`  | epoch UTC                        |
| 34       | gas delivered              | `float32` | m3                               |
| 36       | tariff                     | `uint32`  | numeric tariff id                |
| 38       | peak power last quarter    | `float32` | meter value                      |
| 40       | net\_power\_l1             | `float32` | W                                |
| 42       | net\_power\_l2             | `float32` | W                                |
| 44       | net\_power\_l3             | `float32` | W                                |
| 46       | water delivered            | `float32` | m3                               |
| 48       | identifier                 | `uint32`  | fixed `P1DO` = `0x5031444F`      |
| 50       | firmware version           | `uint32`  | packed `MMmmpp`                  |
| 52       | online flag                | `uint32`  | `1` = online, `0` = offline      |

### Notes

* Missing float values are returned as `NaN`.
* Missing integer values use `0xFFFFFFFF`.
* This mapping is useful when the Modbus client expects engineering values directly as floats.


# ABB B21

This mapping emulates the ABB B21 meter.

### Defaults

* Modbus device id: `2`
* RS485: `9600 8N1`
* Function codes: `FC03`
* Data format: `uint32` and signed `int32`
* Unavailable values: `0`

### Measurement registers

| Register | Description          | Type     | Unit / encoding |
| -------- | -------------------- | -------- | --------------- |
| `0x5B00` | voltage\_l1          | `uint32` | V x10           |
| `0x5B02` | voltage\_l2          | `uint32` | V x10           |
| `0x5B04` | voltage\_l3          | `uint32` | V x10           |
| `0x5B0C` | current\_l1          | `uint32` | A x100          |
| `0x5B0E` | current\_l2          | `uint32` | A x100          |
| `0x5B10` | current\_l3          | `uint32` | A x100          |
| `0x5B14` | active\_power\_total | `int32`  | W x100          |
| `0x5B16` | active\_power\_l1    | `int32`  | W x100          |
| `0x5B18` | active\_power\_l2    | `int32`  | W x100          |
| `0x5B1A` | active\_power\_l3    | `int32`  | W x100          |

### Device info

| Register | Description      | Value               |
| -------- | ---------------- | ------------------- |
| 400      | device id        | current `DevID`     |
| 402      | serial config    | encoded serial mode |
| 404      | baudrate         | actual baudrate     |
| 406      | pre4 meter flag  | `0` or `1`          |
| 408      | firmware version | packed `MMmmpp`     |
| 410      | dongle name      | packed `P1M3`       |


# DTSU666 emulation

This mapping emulates a DTSU666 style meter.

### Defaults

* Modbus device id: `2`
* RS485: `9600 8N1`
* Function codes: `FC03`
* Data types: mixed `int16` control registers and `float32` measurement registers

### Low register block

These are implemented as signed 16-bit style values:

| Register | Description       | Value               |
| -------- | ----------------- | ------------------- |
| `0x0000` | software version  | `204`               |
| `0x0001` | programming code  | `701`               |
| `0x0002` | power reset       | `0`                 |
| `0x0003` | network selection | `0`                 |
| `0x0005` | reserved / fixed  | `0`                 |
| `0x0006` | fixed config      | `1`                 |
| `0x0007` | fixed config      | `10`                |
| `0x000A` | fixed config      | `0`                 |
| `0x000C` | fixed config      | `0`                 |
| `0x002C` | phase mode        | `3`                 |
| `0x002D` | baud selector     | depends on baudrate |
| `0x002E` | device id         | current `DevID`     |

### Measurement registers

| Register | Description            | Unit / encoding                 |
| -------- | ---------------------- | ------------------------------- |
| `0x101E` | import energy active   | kWh                             |
| `0x1028` | export energy active   | kWh                             |
| `0x2000` | line\_voltage\_l1\_l2  | V x10                           |
| `0x2002` | line\_voltage\_l2\_l3  | V x10                           |
| `0x2004` | line\_voltage\_l3\_l1  | V x10                           |
| `0x2006` | voltage\_l1            | V x10                           |
| `0x2008` | voltage\_l2            | V x10                           |
| `0x200A` | voltage\_l3            | V x10                           |
| `0x200C` | current\_l1            | A x1000                         |
| `0x200E` | current\_l2            | A x1000                         |
| `0x2010` | current\_l3            | A x1000                         |
| `0x2012` | active\_power\_total   | W x10                           |
| `0x2014` | active\_power\_l1      | W x10                           |
| `0x2016` | active\_power\_l2      | W x10                           |
| `0x2018` | active\_power\_l3      | W x10                           |
| `0x201A` | reactive\_power\_total | same sign logic as active total |
| `0x201C` | reactive\_power\_l1    | same sign logic as active L1    |
| `0x201E` | reactive\_power\_l2    | same sign logic as active L2    |
| `0x2020` | reactive\_power\_l3    | same sign logic as active L3    |
| `0x202A` | power\_factor\_total   | `1000` or `-1000`               |
| `0x202C` | power\_factor\_l1      | `1000` or `-1000`               |
| `0x202E` | power\_factor\_l2      | `1000` or `-1000`               |
| `0x2030` | power\_factor\_l3      | `1000` or `-1000`               |
| `0x2044` | frequency              | `5000` = 50.00 Hz               |

### Device info

| Register | Description      | Value           |
| -------- | ---------------- | --------------- |
| `0x4006` | pre4 meter flag  | `0` or `1`      |
| `0x4008` | firmware version | packed `MMmmpp` |
| `0x4010` | dongle name      | packed `P1M3`   |

### Notes

* For power registers, export is represented using a negative sign convention.
* This is a targeted subset for inverter compatibility, not a full DTSU666 implementation.


# EM330 / EM340 emulation

This mapping emulates an EM330/EM340 style meter.

### Defaults

* Modbus device id: `1`
* RS485: `9600 8N1`
* Function codes: `FC03`
* Data types: mixed `int32` and `int16`
* Unavailable values: `0`

### Main measurement registers

| Register | Description              | Type    | Unit / encoding       |
| -------- | ------------------------ | ------- | --------------------- |
| 0        | voltage\_l1              | `int32` | V x10                 |
| 2        | voltage\_l2              | `int32` | V x10                 |
| 4        | voltage\_l3              | `int32` | V x10                 |
| 6        | line\_voltage\_l1\_l2    | `int32` | V x10                 |
| 8        | line\_voltage\_l2\_l3    | `int32` | V x10                 |
| 10       | line\_voltage\_l3\_l1    | `int32` | V x10                 |
| 12       | current\_l1              | `int32` | A x1000               |
| 14       | current\_l2              | `int32` | A x1000               |
| 16       | current\_l3              | `int32` | A x1000               |
| 18       | active\_power\_l1        | `int32` | W x10                 |
| 20       | active\_power\_l2        | `int32` | W x10                 |
| 22       | active\_power\_l3        | `int32` | W x10                 |
| 24       | mirror of 18             | `int32` | W x10                 |
| 26       | mirror of 20             | `int32` | W x10                 |
| 28       | mirror of 22             | `int32` | W x10                 |
| 30       | reactive\_power\_l1      | `int32` | fixed `0`             |
| 32       | reactive\_power\_l2      | `int32` | fixed `0`             |
| 34       | reactive\_power\_l3      | `int32` | fixed `0`             |
| 36       | system\_voltage\_ln      | `int32` | averaged value        |
| 38       | system\_voltage\_ll      | `int32` | averaged value        |
| 40       | system\_active\_power    | `int32` | W x10                 |
| 42       | system\_apparent\_power  | `int32` | same as register `40` |
| 44       | system\_reactive\_power  | `int32` | fixed `0`             |
| 46       | power\_factor\_l1        | `int16` | `1000` or `-1000`     |
| 47       | power\_factor\_l2        | `int16` | `1000` or `-1000`     |
| 48       | power\_factor\_l3        | `int16` | `1000` or `-1000`     |
| 49       | power\_factor\_total     | `int16` | `1000` or `-1000`     |
| 50       | phase sequence           | `int16` | fixed `0`             |
| 51       | frequency                | `int16` | `500` = 50.0 Hz       |
| 52       | imported energy total    | `int32` | kWh x10               |
| 54       | imported reactive energy | `int32` | fixed `0`             |
| 80       | exported energy total    | `int32` | kWh x10               |
| 82       | exported reactive energy | `int32` | fixed `0`             |
| 92       | run hour meter           | `int32` | seconds since boot    |

### Configuration / info registers

| Register | Description        | Type    | Value                  |
| -------- | ------------------ | ------- | ---------------------- |
| 406      | pre4 meter flag    | `int32` | `0` or `1`             |
| 408      | firmware version   | `int32` | packed `MMmmpp`        |
| 410      | dongle name        | `int32` | packed `P1M3`          |
| `0x2000` | device id          | `int16` | current `DevID`        |
| `0x2001` | baudrate selector  | `int16` | `1-5`                  |
| `0x2002` | parity selector    | `int16` | `1` = none, `2` = even |
| `0x2003` | stop bits          | `int16` | `1` or `2`             |
| `0x2004` | max words per read | `int16` | fixed `50`             |

### Notes

* The implementation mixes 16-bit and 32-bit registers, so clients must request registers exactly as expected by the target integration.


# Inepro / KLEFR 6924 emulation

This mapping emulates the KLEFR 6924 style layout.

### Defaults

* Modbus device id: `1`
* RS485: `9600 8N1`
* Function codes: `FC03`
* Base address: requests start at `0x4000`
* Data format: mainly `float32`, plus a small number of `uint32` info registers

### Identification block

| Register | Description               | Value      |
| -------- | ------------------------- | ---------- |
| `0x4000` | fixed identifier          | `18010365` |
| `0x4005` | fixed firmware-like value | `1.18`     |
| `0x4007` | fixed model-like value    | `18`       |
| `0x4009` | fixed flag                | `1`        |

### Power quality and measurements

| Register | Description                      | Unit / encoding                  |
| -------- | -------------------------------- | -------------------------------- |
| `0x5000` | single-phase voltage placeholder | `NaN`                            |
| `0x5002` | voltage\_l1                      | V                                |
| `0x5004` | voltage\_l2                      | V                                |
| `0x5006` | voltage\_l3                      | V                                |
| `0x5008` | frequency                        | `50.0` Hz                        |
| `0x500A` | average current placeholder      | `NaN`                            |
| `0x500C` | current\_l1                      | A                                |
| `0x500E` | current\_l2                      | A                                |
| `0x5010` | current\_l3                      | A                                |
| `0x5012` | active\_power\_total             | kW-like DSMR engineering value   |
| `0x5014` | active\_power\_l1                | kW-like DSMR engineering value   |
| `0x5016` | active\_power\_l2                | kW-like DSMR engineering value   |
| `0x5018` | active\_power\_l3                | kW-like DSMR engineering value   |
| `0x501A` | reactive\_power\_total           | not implemented                  |
| `0x501C` | reactive\_power\_l1              | not implemented                  |
| `0x501E` | reactive\_power\_l2              | not implemented                  |
| `0x5020` | reactive\_power\_l3              | not implemented                  |
| `0x5022` | apparent\_power\_total           | mirrors total active power logic |
| `0x5024` | apparent\_power\_l1              | mirrors L1 active power logic    |
| `0x5026` | apparent\_power\_l2              | mirrors L2 active power logic    |
| `0x5028` | apparent\_power\_l3              | mirrors L3 active power logic    |
| `0x502A` | power\_factor\_total             | `1.0` or `-1.0`                  |
| `0x502C` | power\_factor\_l1                | `1.0` or `-1.0`                  |
| `0x502E` | power\_factor\_l2                | `1.0` or `-1.0`                  |
| `0x5030` | power\_factor\_l3                | `1.0` or `-1.0`                  |

### Energy registers

| Register | Description             | Unit / encoding         |
| -------- | ----------------------- | ----------------------- |
| `0x6000` | net energy total        | imported minus exported |
| `0x6002` | net energy tariff 1     | imported minus exported |
| `0x6004` | net energy tariff 2     | imported minus exported |
| `0x6006` | per-phase net energy    | average of all phases   |
| `0x6008` | per-phase net energy    | average of all phases   |
| `0x600A` | per-phase net energy    | average of all phases   |
| `0x600C` | forward energy total    | imported                |
| `0x600E` | forward energy tariff 1 | imported                |
| `0x6010` | forward energy tariff 2 | imported                |
| `0x6012` | forward phase energy    | average of all phases   |
| `0x6014` | forward phase energy    | average of all phases   |
| `0x6016` | forward phase energy    | average of all phases   |
| `0x6018` | reverse energy total    | exported                |
| `0x601A` | reverse energy tariff 1 | exported                |
| `0x601C` | reverse energy tariff 2 | exported                |
| `0x601E` | reverse phase energy    | average of all phases   |
| `0x6020` | reverse phase energy    | average of all phases   |
| `0x6022` | reverse phase energy    | average of all phases   |

### Device info

| Register | Description      | Value               |
| -------- | ---------------- | ------------------- |
| 400      | device id        | current `DevID`     |
| 402      | serial config    | encoded serial mode |
| 404      | baudrate         | actual baudrate     |
| 406      | pre4 meter flag  | `0` or `1`          |
| 408      | firmware version | packed `MMmmpp`     |
| 410      | dongle name      | packed `P1M3`       |


# Schneider Charge Pro emulation

This mapping emulates the Schneider Charge Pro layout that is used for charger integrations.

### Defaults

* Modbus device id: `16`
* RS485: `9600 8E1`
* Function codes: `FC03`
* Data types: mixed `uint16` and `uint32`

### Measurement registers

| Register | Description          | Type     | Unit / encoding |
| -------- | -------------------- | -------- | --------------- |
| 761      | voltage\_l1          | `uint32` | V               |
| 763      | voltage\_l2          | `uint32` | V               |
| 765      | voltage\_l3          | `uint32` | V               |
| 767      | current\_l1          | `uint16` | A               |
| 769      | current\_l2          | `uint16` | A               |
| 771      | current\_l3          | `uint16` | A               |
| 773      | power\_delivered\_l1 | `uint32` | W               |
| 775      | power\_delivered\_l2 | `uint32` | W               |
| 777      | power\_delivered\_l3 | `uint32` | W               |
| 779      | power\_returned\_l1  | `uint32` | W               |
| 781      | power\_returned\_l2  | `uint32` | W               |
| 783      | power\_returned\_l3  | `uint32` | W               |

### Notes about the current layout

* The current registers are served with mixed word widths.
* Registers `768`, `770` and `772` are filler 16-bit words used to keep the current values aligned.

### Device info

| Register | Description      | Value               |
| -------- | ---------------- | ------------------- |
| 400      | device id        | current `DevID`     |
| 402      | serial config    | encoded serial mode |
| 404      | baudrate         | actual baudrate     |
| 406      | pre4 meter flag  | `0` or `1`          |
| 408      | firmware version | packed `MMmmpp`     |
| 410      | dongle name      | packed `P1M3`       |


# SDM630 emulation

This mapping emulates an Eastron SDM630 style meter.

### Defaults

* Modbus device id: `1`
* Baudrate: `9600`
* Function codes: `FC03` and `FC04`
* Data format: mainly `float32`

### Important note

* The code comment describes the SDM630 default serial mode as `8N1`.
* In `p1m.h`, the current `SDM630` build is configured as `SERIAL_8E1`.
* If you publish this page, it is worth deciding which one should be considered the intended default.

### FC04 - measurement registers

| Register | Description            | Unit / encoding                                   |
| -------- | ---------------------- | ------------------------------------------------- |
| 0        | voltage\_l1            | V                                                 |
| 2        | voltage\_l2            | V                                                 |
| 4        | voltage\_l3            | V                                                 |
| 6        | current\_l1            | A                                                 |
| 8        | current\_l2            | A                                                 |
| 10       | current\_l3            | A                                                 |
| 12       | active\_power\_l1      | W                                                 |
| 14       | active\_power\_l2      | W                                                 |
| 16       | active\_power\_l3      | W                                                 |
| 24       | reactive\_power\_l1    | mirrored from active power sign/value logic       |
| 26       | reactive\_power\_l2    | mirrored from active power sign/value logic       |
| 28       | reactive\_power\_l3    | mirrored from active power sign/value logic       |
| 30       | power\_factor\_l1      | `1.0` or `-1.0`                                   |
| 32       | power\_factor\_l2      | `1.0` or `-1.0`                                   |
| 34       | power\_factor\_l3      | `1.0` or `-1.0`                                   |
| 48       | total\_current         | A                                                 |
| 52       | total\_active\_power   | W                                                 |
| 60       | total\_reactive\_power | mirrored from total active power sign/value logic |
| 62       | total\_power\_factor   | `1.0` or `-1.0`                                   |
| 70       | frequency              | `50.0` Hz                                         |
| 72       | import\_energy\_active | kWh                                               |
| 74       | export\_energy\_active | kWh                                               |
| 200      | line\_voltage\_l1\_l2  | V                                                 |
| 202      | line\_voltage\_l2\_l3  | V                                                 |
| 204      | line\_voltage\_l3\_l1  | V                                                 |
| 342      | total\_energy\_sum     | kWh = import + export                             |
| 406      | pre4 meter flag        | integer-like float                                |
| 408      | firmware version       | packed `MMmmpp` as raw 32-bit                     |
| 410      | dongle name            | packed `P1M3`                                     |

### FC03 - holding / configuration style registers

| Register | Description         | Value                           |
| -------- | ------------------- | ------------------------------- |
| `0x00`   | demand time         | `42`                            |
| `0x02`   | demand period       | `60`                            |
| `0x04`   | relay pulse width   | `0`                             |
| `0x06`   | network parity stop | `220`                           |
| `0x08`   | meter id mirror     | `5`                             |
| `0x0A`   | baud mirror         | `3`                             |
| `0x0C`   | p1 output mode      | `200`                           |
| `0x12`   | stop/parity config  | currently fixed `0`             |
| `0x14`   | device id           | current `DevID`                 |
| `0x16`   | pulse per tick      | `1`                             |
| `0x18`   | password / pin code | `1000`                          |
| `0x1C`   | baud selector       | `0-4` based on current baudrate |
| `0x56`   | output config       | `39`                            |
| `0xF010` | reset max demand    | `0`                             |
| `0xFC00` | serial number       | fixed `22502976`                |

### Notes

* Registers are implemented exactly as used by the emulation code; this is not a full SDM630 register map.
* With `NEGATIEF` enabled, the sign of active and reactive power is inverted.


# Migrate from v1 to v2

Upgrade an older P1 Modbus adapter from legacy firmware v1 to firmware v2.

Older P1 Modbus adapters running firmware v1 can be migrated to firmware v2. The hardware does not need to be replaced. This procedure does not apply to D1MC, because it does not support firmware v1. D1MC can use firmware v2 or [firmware v3](/p1-modbus-dongle/firmware-v3-all-modbus-rtu-adapters/firmware-v3).

{% hint style="warning" %}
Treat the migration as a new configuration. Record the current settings before installing v2; do not assume that v1 settings will be transferred automatically.
{% endhint %}

## Before migration

Record the settings used by the connected Modbus master:

* Installed mapping or v1 firmware variant
* Modbus device ID
* Baud rate
* Serial format, for example `8N1` or `8E1`
* Pre-v4 smart meter mode, if applicable
* RS485 termination setting, if available on the hardware

If possible, temporarily stop the inverter, charger, EMS or other Modbus master while changing the dongle firmware.

## Install firmware v2

1. Connect the P1 Modbus adapter to the computer using a USB data cable.
2. Open the [P1 Modbus web installer](https://install.smart-stuff.nl/p1m/).
3. Select the current P1 Modbus v2 firmware for the detected hardware.
4. Start the installation and keep the USB cable connected until it is complete.

## Configure the migrated adapter

1. Open the [Device Manager](https://config.smart-stuff.nl/).
2. Select **Connect** and choose the adapter.
3. Select the v2 mapping that corresponds to the previous v1 firmware variant.
4. Restore the recorded device ID, baud rate and serial format.
5. Restore any other required settings and select **Save**.
6. Verify that valid P1 telegrams and Modbus requests are visible.
7. Re-enable the connected Modbus master and verify its measurements.

After migration, future stable updates can be installed directly through the Device Manager without selecting the adapter a second time.


# EU declarations of conformity

Download the EU declarations of conformity for Smartstuff Smart Meter Modbus Adapters.

Download the EU declaration of conformity for your Smart Meter Modbus Adapter below.

## D1MC

EU declaration of conformity for the D1MC DIN-rail Smart Meter Adapter, including its subtypes.

{% file src="/files/13G56YyKho4F9t0D1VWQ" %}

## P1 Modbus Pro

EU declaration of conformity for the P1 Modbus Pro (`p1m`), including all subversions.

{% file src="/files/V0gaDtXbnomzzmKAkNQ1" %}


# FAQ

<details>

<summary>What do the LEDs on the adapter mean?</summary>

LEDs depend on the hardware implementation. A regular NRGD has a separate blue mono status LED, a green power LED in the P1 input and a P1 output LED. On the ZAP2/NRGDH-based NRGD, the blue status LED is absent and an RGB status LED occupies the former green LED position in the P1 input. This RGB LED uses the same colors and indications as D1MC. See [LED indicators](/p1-modbus-dongle/firmware-v2-existing-installations/led-indicators) for the detailed firmware v2 behavior.

</details>

<details>

<summary>The power LED is off or unstable</summary>

On a regular NRGD, the green power LED in the P1 input should be on continuously when the adapter has power. The ZAP2/NRGDH-based NRGD has an RGB status LED in this position instead of a separate green power LED. If the adapter appears unpowered or unstable, check the P1 cable, USB power supply and whether the smart meter supplies enough power through its P1 port. See the applicable [hardware page](/p1-modbus-dongle/hardware-variants/hardware-variants) for power requirements.

</details>

<details>

<summary>The status LED shows three short flashes followed by a pause</summary>

On firmware v2 this means that the RS485 module is not detected. Modbus communication is disabled until the module is available again. On P1 Modbus Pro, check that the module is installed correctly and reconnect or reboot the adapter.

</details>

<details>

<summary>Which firmware version is installed on the adapter?</summary>

Connect the adapter with a USB data cable and open the [Device Manager](/p1-modbus-dongle/firmware-v2-existing-installations/device-manager). It shows the hardware type and installed firmware version. For a legacy P1 Modbus adapter that cannot connect to the Device Manager, read the version through its serial port; this is supported from firmware version 1.1.0.

</details>

<details>

<summary>Strange errors</summary>

Always check that the phases are connected correctly. Phase 1 to phase 1 of the smart meter and phase 1 to the consumer appliance, etc. If they are reversed, the control circuit is no longer correct.

</details>


# Connection example

This legacy field example shows a P1 Modbus adapter connected to a Growatt SPH inverter through RS485 (thanks Willem). Verify terminal labels against the [current P1 Modbus Pro hardware page](/p1-modbus-dongle/hardware-variants/hardware-variants/p1-modbus-pro); do not use this image as a D1MC pin-out.

<figure><img src="https://869162580-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F50CFzoSHtUAx13D3ZcfB%2Fuploads%2Fnli9LTeVZjiUH3OGgirq%2Fimage0.jpeg?alt=media&amp;token=e7ee414b-07ad-48c5-b43d-3f363b6f7703" alt=""><figcaption></figcaption></figure>


# P1 Splitter Pro (Bridge/Repeater)

&#x20;

{% hint style="warning" %}
Vanaf 12/7/24 is firmware versie 1.1.3 beschikbaar voor de Splitter. Deze lost een compatibiliteitsprobleem op met sommige toestellen ( bv Youless). Deze versie kan via de webinstaller op de splitter worden geïnstalleerd. \
\
ga naar <https://install.smart-stuff.nl/p1s/>
{% endhint %}

## Doel

Doel van de splitter is om van de ene slimme meter aansluiting meerdere aansluitingen te maken. Dit kan bijvoorbeeld van pas komen als je een laadpaal hebt die op basis van de thuis behoefte de laadcapaciteit regelt en je daarnaast zelf ook nog je productie en afname in de gaten wilt houden.

## Hoe werkt deze &#x20;

Het signaal uit de slimme meter wordt per uitgang tot 10x versterkt. Daarnaast is elke uitgang onafhankelijk aangesloten waardoor verstoring op de ene uitgang de andere niet beïnvloed.

De splitter wordt van stroom voorzien door slimme meter of additionele adapter.

<figure><img src="https://4000183700-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhyHaRlQZDGXmxnkorAZq%2Fuploads%2FxjxydK6EFDxrqM5pGXzc%2Fp1s.png?alt=media&amp;token=ab7ebac6-63e9-4f97-9cf4-044dcfc78243" alt=""><figcaption></figcaption></figure>

\
**Aansluiten**
--------------

Met de meegeleverde RJ12 kabel kan de splitter via het  aansluitblok (P1 ) aan de usb kant op de slimme meter worden aangesloten.\
\
Eventueel kan er nog een usb adapter worden aangesloten op de splitter. Dit is noodzakelijk voor versie 2/3 slimme meters en afhankelijk van de belasting op de uitgang van de splitter ook nodig voor versie 4/5 slimme meters.\
\
Op elke willekeurige uitgang (drie aansluitblokjes) kan een apparaat worden aangesloten. Volgorde maakt niet uit.<br>

{% hint style="info" %}
De USB adapter mag een oude smartphone of tablet adapter zijn of een usb aansluiting die voorhanden is in de meterkast (bv van een NAS/Router). Bijna alle usb adapters voldoen (5V/10Watt is prima).
{% endhint %}

## **Betekenis van de LED's**

* De groene led op de ingang geeft aan dat er spanning op de splitter staat. Is deze uit dat zal de splitter niet functioneren. <br>
* De groene leds in of naast de uitgangen geven per uitgang aan dat er data aan het afnemende apparaat wordt aangeboden.

## Voor Nederland

Er zijn in Nederland diverse slimme meter versies in omloop. Zo komt u versie 2,4 en 5 tegen. V2 is ter herkennen omdat deze geen voeding geeft. Indien u v2 heeft dan zal de splitter het v2 data pakket vertalen naar het v4/v5 formaat.&#x20;


# Specificaties

* werkt op elke slimme meter in NL / BE / Lux / DE / DK
* 1 x RJ12 ingangspoort
* 3 x RJ12 uitgangspoorten; maximaal 30mA / 5V per poort (open collector)
* usb type c aansluiting voor additionele voeding
* elke uitgang heeft een 5 Volt voeding (deze komt van slimme meter of usb aansluiting); Max 350mA / 5V per uitgang.
* P1 Splitter vraag continu een datapakket op; afhankelijk van de slimme meter versie komt de data tussen de 1 en 10 seconde. op basis van de behoefte wordt de data doorgegeven aan de uitgangen.


# Updaten

De splitters met een microprocessor kunnen worden geupdate indien deze een microprosessor bevatten.&#x20;

Dit zijn de zwarte varianten en geleverd vanaf 2025. Maar let op: in 2025 zijn er ook p1 dongles pro geleverd die geen microprosessor bevatten. Deze zijn niet goed te onderscheiden vanaf de buitenkant.

## Webinstaller

Er zijn twee software versies beschikbaar via de webinstaller. De webinstaller is te vinden op: <https://install.smart-stuff.nl/p1s/>

## Software versies

Versie 1: alle uitgaande poorten hebben de dsmr v5 snelheid en crc. Ook bij oude meters zal de data worden omgezet naar de nieuwe specificatie. De inhoud van de data blijft identiek.

Versie 2: De meest linkse poort heeft de instellingen van de P1 meter. Indien het een smr 2 meter is zal de linkse poort de specificatie van de smr 2 meter hebben zonder crc check. De middelste en rechter poort zijn wel op de smr 5 snelheid met crc.

Er zijn afnemende systemen die niet overweg kunnen met een smr 2 datapakket op een smr 5 snelheid met crc. Deze toestellen kunnen dan op links worden aangesloten.

Bijvoorbeeld wil een ZinVolt batterij de data in smr 5 formaat ontvangen. Maar een Toon kan niets met een smr 2 bericht die verpakt is als smr5. In dat geval kan de Toon op de linker poort en de ZinVolt op een van de andere twee.


# Inleiding

De P1 Dongle Pro+ is een veelzijdig toestel om slimme meter gegevens inclusief randapparaten te kunnen verwerken en te delen met alle toepassingen die u wenst.

<figure><img src="https://4206987480-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FV1fJDBNdAueoFqmRI56T%2Fuploads%2F3k8gRqiz0sWWZeEMK3FK%2Fp1ep-home.png?alt=media&amp;token=79357aa1-a21d-4468-bc71-a3c856491bf6" alt=""><figcaption></figcaption></figure>

## Gedachte achter onze producten

* Open hardware
* Standaard en open interfaces
* Privacy: data blijft altijd van de gebruiker en wordt niet gedeeld
* Geen abonnement
* laagdrempelig: in kosten en gebruikerservaring

## Snelle start

In enkele minuten is de dongle klaar voor gebruik. De stappen zijn:

{% content-ref url="/pages/dJoFlanuRSEaVw5VHDU5" %}
[Aansluiten](/ethernet-p1-dongle-pro+/snelle-start/aansluiten)
{% endcontent-ref %}

{% content-ref url="/pages/DVJWYkzmGza4xPrpOBKo" %}
[Van start](/ethernet-p1-dongle-pro+/snelle-start/van-start)
{% endcontent-ref %}


# Aansluiten

## **Aansluiten op de slimme meter**

\
Sluit de  Dongle  aan op de P1 aansluiting van de slimme meter. De plek van deze aansluiting is per meter fabrikant verschillend en te herkennen aan de opdruk P1. Soms is de aansluiting afgeschermd door een plastic of rubber kapje.

De P1 kabel wordt aangesloten aan de usb-c zijde, als u ander onderkant van aansluiting kijkt ziet u IN staan.

{% hint style="warning" %}
Vanaf hardware 3.2 (juni 2025) is de power led verplaatst naar de P1 ingang.
{% endhint %}

<figure><img src="https://4206987480-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FV1fJDBNdAueoFqmRI56T%2Fuploads%2F6BntgbHxRezWNtjcYT9J%2Fp1e.png?alt=media&amp;token=e37348af-ab9c-4287-8ed1-3b32e60fb33c" alt=""><figcaption></figcaption></figure>

## **USB C Adapter aansluiten**

Een extra voeding is voor versie 5.0 slimme meters niet nodig omdat de slimme meter voldoende stroom levert via de P1 aansluiting. Voor oudere meters is het echter wel nodig om een usb adapter aan te sluiten op de dongle.

{% hint style="info" %}
**Elke adapter is prima**

De USB adapter mag een oude smartphone of tablet adapter zijn of een usb aansluiting die voorhanden is in de meterkast (bv van een NAS/Router). Bijna alle adapters voldoen.
{% endhint %}

## P1 Uitgang

De dongle heeft een P1 uitgang. Deze is te vinden naast de groene aansluiting.

{% hint style="danger" %}
Wordt er een toestel op de P1 uitgang aangesloten, sluit dan een voeding op het aangesloten apparaat of dongle aan.
{% endhint %}

## Ledjes en knopjes

Er zijn diverse knopjes en ledjes te vinden. Op de foto's hierboven staan de knopjes en ledjes afgebeeld.&#x20;

**Power led (groen)**

Deze is groen en geeft aan of er voeding is voor de dongle. Deze led dient altijd aan te staan en mag niet knipperen. Knippert de groene led dan is er iets met de voeding aan de hand en dient u een USB adapter aan te sluiten of de adapter te vervangen.&#x20;

Vanaf hardware 3.2 (juni 2025) is de power led verplaatst naar de P1 ingang.

**Status leds (blauw)**

De werking van de **Dongle status led** is afhankelijk van de software. Hieronder de algemene functies va de blauwe leds.

| Led           |                                                                               |
| ------------- | ----------------------------------------------------------------------------- |
| P1 Status led | kort aan bij het opstarten                                                    |
|               | knippert snel indien de dongle gekoppeld dient te worden aan het wifi netwerk |
|               | Staat aan indien er een wifi koppeling is                                     |
|               | Blinkt om de 1 of 10 seconde als de slimme meter data is verwerkt             |


# Van start

Er kunnen diverse software versies geinstalleerd zijn. Afhankelijk van de software zal de werking van de dongle verschillen. Hieronder de linkjes naar de beschrijving van de software functies.

{% content-ref url="/spaces/a0nbnZRi8AhAnCzcZmch" %}
[DSMR-API](https://docs.smart-stuff.nl/dsmr-api/)
{% endcontent-ref %}

{% content-ref url="/spaces/dR5Ofl0F6VoLhW4jQ5b5" %}
[ESPHome P1 Dongle](https://martijn-hendriks.gitbook.io/archive/esphome-p1-dongle/)
{% endcontent-ref %}

## Quick link

webinterface: <http://eth-dongle-pro.local/>

Heeft u een andere host naam ingesteld in de dongle dan zal de dongle onder deze host naam te bereiken zijn  http\://\<host naam>.local


# CE Conformiteit

De dongle voldoet aan de regels die de EU stelt aan dergelijke toestellen. In het document hieronder treft u de conformiteitsverklaring aan.

{% file src="/files/AeBB09L4SyAP58qRnFq3" %}


# Systeem

De dongle heeft de onderstaande eigenschappen.

| Processor          | Espressif ESP32 C3                             |
| ------------------ | ---------------------------------------------- |
| CPU kernen         | 1                                              |
| CPU type           | RISC IV                                        |
| Geheugen           | 4 MB flash                                     |
| usb poort          | usb-c                                          |
| Voeding            | 5 Volt uit de slimme meter of via usb          |
| Reset mogelijkheid | Ja, via de fysieke knop                        |
| Visuele indicator  | <p>Power Led - groen<br>Status Led - blauw</p> |


# Inleiding

De P1 Dongle Pro+ is een veelzijdig toestel om slimme meter gegevens inclusief randapparaten te kunnen verwerken en te delen met alle toepassingen die u wenst.

<figure><img src="https://2836879201-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrSpvGpSH2jy3KAC8YN0A%2Fuploads%2FiI7O54vUljsYdFs2eYJw%2Fnrgd.png?alt=media&amp;token=c4581c89-f86a-4f10-b503-c7a48d1393f6" alt=""><figcaption></figcaption></figure>

## Gedachte achter onze producten

* Open hardware
* Standaard en open interfaces
* Privacy: data blijft altijd van de gebruiker en wordt niet gedeeld
* Geen abonnement
* laagdrempelig: in kosten en gebruikerservaring

## Snelle start

In enkele minuten is de dongle klaar voor gebruik. De stappen zijn:

{% content-ref url="/pages/dJoFlanuRSEaVw5VHDU5" %}
[Aansluiten](/p1-dongle-pro+/snelle-start/aansluiten)
{% endcontent-ref %}

{% content-ref url="/pages/DVJWYkzmGza4xPrpOBKo" %}
[Van start](/p1-dongle-pro+/snelle-start/van-start)
{% endcontent-ref %}


# Aansluiten

## **Aansluiten op de slimme meter**

\
Sluit de Dongle aan op de P1 aansluiting van de slimme meter. De plek van deze aansluiting is per meter fabrikant verschillend en te herkennen aan de opdruk P1. Soms is de aansluiting afgeschermd door een plastic of rubber kapje.

De P1 kabel wordt aangesloten aan de usb-c zijde, als u ander onderkant van aansluiting kijkt ziet u IN staan.

<figure><img src="https://2836879201-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrSpvGpSH2jy3KAC8YN0A%2Fuploads%2FVeGwqafvhwaDMdC3ExM1%2Fnrgd-ingang.png?alt=media&amp;token=ca68e0ed-8670-4ca3-b3dc-eb5a74c819a0" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
In de nieuwe modellen is de Power led in de p1 ingang geplaatst.
{% endhint %}

## **Handige stroomschema**

Alleen voor Nederland: Er zijn diverse type slimme meters in omloop. Zo kunt u een versie 2,4 en 5 tegen komen.

Versie twee is redelijk eenvoudig te herkennen omdat er geen stroom voor de dongle geleverd wordt uit de slimme meter.

Versie 4 is minder eenvoudig herkenbaar ... zodra de wifi koppeling niet wil lukken is het advies om een usb adapter aan te sluiten. Dan is het waarschijnlijk een versie 4 meter.

Hieronder een stroomschema om het wellicht wat makkelijker te maken.

<figure><img src="https://2836879201-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrSpvGpSH2jy3KAC8YN0A%2Fuploads%2Fw5K78ieZ5ZPlRHRi8kHY%2FWifi%20koppelen%20(1).png?alt=media&amp;token=fb618269-7ed4-4dbf-a2b3-706dc584df04" alt=""><figcaption></figcaption></figure>

## **USB C Adapter aansluiten**

Een extra voeding is voor versie 5.0 slimme meters niet nodig omdat de slimme meter voldoende stroom levert via de P1 aansluiting. Voor oudere meters is het echter wel nodig om een usb adapter aan te sluiten op de dongle.

{% hint style="info" %}
**Elke adapter is prima**

De USB adapter mag een oude smartphone of tablet adapter zijn of een usb aansluiting die voorhanden is in de meterkast (bv van een NAS/Router). Bijna alle adapters voldoen.
{% endhint %}

<figure><img src="https://2836879201-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrSpvGpSH2jy3KAC8YN0A%2Fuploads%2Fji2EjXDUpIl25MOXANPq%2Fnrgd-uitgang%20(1).png?alt=media&amp;token=5c3333ab-1fc8-419e-96c0-70858a4c8e88" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
In de nieuwe modellen is de P1 uit led in de p1 uitgang geplaatst.
{% endhint %}

## P1 Uitgang

De dongle heeft een P1 uitgang. Deze is te vinden naast de groene aansluiting.

{% hint style="danger" %}
Wordt er een toestel op de P1 uitgang aangesloten, sluit dan een voeding op het aangesloten apparaat of dongle aan. Of sluit een voeding direct op het aangesloten toestel aan.
{% endhint %}

## Ledjes en knopjes

Er zijn diverse knopjes en ledjes te vinden. Op de foto's hierboven staan de knopjes en ledjes afgebeeld.

**Power led (groen)**

deze is groen en geeft aan of er voeding is voor de dongle. Deze led dient altijd aan te staan en mag niet knipperen. Knippert de groene led dan is er iets met de voeding aan de hand en dient u een USB adapter aan te sluiten of de adapter te vervangen

**Status led (blauw) en P1 uit leds (blauw / in nieuwe versie groen)**

De werking van de **Dongle status led** en de **P1 uit led** is afhankelijk van de software. Hieronder de algemene functies va de blauwe leds.

| Led           |                                                                               |
| ------------- | ----------------------------------------------------------------------------- |
| P1 Uit Led    | gaat aan indien er data wordt aangeboden aan de p1 uitgang                    |
| P1 Status led | kort aan bij het opstarten                                                    |
|               | knippert snel indien de dongle gekoppeld dient te worden aan het wifi netwerk |
|               | Staat aan indien er een wifi koppeling is                                     |
|               | Blinkt om de 1 of 10 seconde als de slimme meter data is verwerkt             |


# Varianten

De P1 Dongle Pro+ heeft een mogelijkheid om functionaliteit toe te voegen in de vorm van modules. De groene 3 pins connector zal afhankelijk van de module andere aansluitingen krijgen.

De modules worden bij de bestelling geselecteerd en door ons aangebracht. Wilt u hem later toevoegen of wijzigen dan kan dat ook. De modules zijn los te bestellen. Door de behuizing op te maken kunt u de modules aanpassen of toevoegen.

{% hint style="info" %}
De dongle zal de module automatisch detecteren en de juiste functionaliteit toevoegen
{% endhint %}

### Module 1 - H20 = watersensor

Door deze module toe te voegen kan er een externe watersensor worden aangesloten. Zo kunt u het waterverbruik bijhouden.

### Module 2 - RS485 = Modbus RTU

Heeft u de behoefte om de gegevens van de dongle uit te lezen via de modbus RTU interface dan kunt u deze module toevoegen. Via de ESPHome firmware bent u maximaal flexibel om alle functies van de dongle te benutten. De aansluiting is terminated.

### Modules 3 - IO+

Een pulse/S0 gestuurde ingang of toch liever iets schakelen via de uitgang van de dongle (NetSwitch) kan via de IO+ module. Deze heeft een potentiaal vrije / galvanisch gescheiden in- en uitgang. Dit zorgt voor nog meer mogelijkheden.

Max waarden:

Ingang:\
\- Imax = 50mA\
\- Ur = 6V\
\
Uitgang:\
\- Imax = 50mA\
\- Umax = 80V

<div align="center"><figure><img src="https://2836879201-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrSpvGpSH2jy3KAC8YN0A%2Fuploads%2FNp9n1eCAw9eP71FZtNC7%2FScreenshot%202025-02-14%20at%2008.16.48.png?alt=media&amp;token=e1e53385-b0b8-4c9f-84e1-e82b309b5359" alt="" width="68"><figcaption></figcaption></figure></div>

### Module 4 - IO

Liever 2 IO's zo vanuit de processor op de uitgangspoorten kan ook. Bijvoorbeeld om er een I2C/TWI of andere mogelijkheid te benutten.

### Pinout

<figure><img src="https://2836879201-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrSpvGpSH2jy3KAC8YN0A%2Fuploads%2FEqP1o57kOe9jbRam4pmZ%2Fnrgd-pinout.png?alt=media&amp;token=9b9154d7-42bf-41ff-b494-4ca789d028f2" alt=""><figcaption></figcaption></figure>


# Watersensor

Heeft u een Pro versie met watermeter sensor dan is deze extra stap vereist.

### Sensor plaatsen <a href="#sensor-plaatsen" id="sensor-plaatsen"></a>

Het waterverbruik wordt gemeten door de omwentelingen te tellen van het liter wieltje in de watermeter. Dit wieltje moet een metalen vlakje hebben om te worden gedetecteerd.

Plaats de sensor recht boven het wieltje zonder dat er lucht/plakband tussen de sensor en het glas zit. Wanneer het rode lampje gaat branden, is de sensor goed geplaatst. Sensor zit normaal gesproken recht boven het rode literwieltje iets verschoven van het midden van deze wijzer.

Er zijn twee typen sensoren verkrijgbaar. Een platte (geel/oranje) en langwerpige (pen). De pensensor wordt gebruikt voor watermeters waarbij het kijkglas boven het literwieltje niet geheel vlak is.

{% hint style="info" %}
Zet de kraan een beetje open om te checken of de sensor goed zit.
{% endhint %}

{% hint style="warning" %}
Gele sensor: monteer de sensor met het kruis / rode ledje naar de watermeter
{% endhint %}

#### **Gele / platte sensor plaatsen** <a href="#platte-sensor-plaatsen" id="platte-sensor-plaatsen"></a>

Maak de sensor vast met meegeleverde klittenband of met de sensor beugel, zie onderstaande montage wijze. Bij het langsgaan van de halve maan/metaal op het wieltje dient de rode led op te lichten en daarna weer uit te gaan.

<figure><img src="https://github.com/mhendriks/esphome-p1/raw/main/manuals/Waterlezer/afb/montage_sensor.png" alt=""><figcaption></figcaption></figure>

#### Lange/pen sensor plaatsen <a href="#lange-pen-sensor-plaatsen" id="lange-pen-sensor-plaatsen"></a>

Voor de pen sensor is een aparte beugel meegeleverd. Schroef de sensor zo in de beugel dat het blauwe uiteinde vlak op het kijkvenster komt te zitten. Plaats de beugel met sensor op het venster en zet hem vast met elastiek. De foto hieronder toont een Elster meter. Hierbij is een pensensor niet nodig maar het kan wel. Hij is bij deze meter net zo gemonteerd als bij andere.

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9yqjZq2xIv2DaOltuGqz%2Fuploads%2FmlLNWXtqIU7Joc0Ltre5%2FIMG_0807.JPG?alt=media&#x26;token=461795b0-3254-47c7-9961-bb323842953c" alt=""><figcaption><p>goed vastzetten met elastiek</p></figcaption></figure>

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9yqjZq2xIv2DaOltuGqz%2Fuploads%2F1TXFCDy6iyFyEZ6p5akP%2FIMG_0808.JPG?alt=media&#x26;token=ff1eb8a5-5a10-4339-86a8-4b0b7eabec5c" alt=""><figcaption><p>sensor iets verschoven uit het midden van het wieltje</p></figcaption></figure>


# RS485 - Modbus

In de basis uitleg over de varianten is het aansluitschema te vinden .

Op dit moment is de RS485 aansluiting alleen te gebruiken in combinatie met de ESPHome firmware. U dient dan zelf een implementatie hiervoor te maken.


# Van start

Er kunnen diverse software versies geinstalleerd zijn. Afhankelijk van de software zal de werking van de dongle verschillen. Hieronder de linkjes naar de beschrijving van de software functies.

{% content-ref url="/spaces/a0nbnZRi8AhAnCzcZmch" %}
[DSMR-API](https://docs.smart-stuff.nl/dsmr-api/)
{% endcontent-ref %}

{% content-ref url="/spaces/dR5Ofl0F6VoLhW4jQ5b5" %}
[ESPHome P1 Dongle](https://martijn-hendriks.gitbook.io/archive/esphome-p1-dongle/)
{% endcontent-ref %}

## Quick link

webinterface: [http://nrg-dongle-pro.local](http://nrg-dongle-pro.local/)

Heeft u een andere host naam ingesteld in de dongle dan zal de dongle onder deze host naam te bereiken zijn http\://\<host naam>.local


# CE Conformiteit

De dongle voldoet aan de regels die de EU stelt aan dergelijke toestellen. In het document hieronder treft u de conformiteitsverklaring aan.

{% file src="/files/oxi2jvbLjMpw0FRPtn76" %}


# Systeem

De dongle heeft de onderstaande eigenschappen.

| Processor          | Espressif ESP32 C3                                                            |
| ------------------ | ----------------------------------------------------------------------------- |
| CPU kernen         | 1                                                                             |
| CPU type           | RISC IV                                                                       |
| Geheugen           | 4 MB flash                                                                    |
| usb poort          | usb-c                                                                         |
| Voeding            | 5 Volt uit de slimme meter of via usb                                         |
| Reset mogelijkheid | Ja, via de fysieke knop                                                       |
| Visuele indicator  | <p>Power Led - groen<br>Status Led - blauw<br>P1 Uit Led - blauw of groen</p> |
| Uitbreiding        | Via 3 pins connector                                                          |


# Inleiding

De Ultra Mini Dongle is een veelzijdige oplossing om slimme meter gegevens inclusief randapparaten te kunnen verwerken en te delen met alle toepassingen die u wenst.

<figure><img src="https://238437572-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5FJ26L1p0T0UwDD03mcA%2Fuploads%2Fjxl4ZTaPyTglxW8DUoa7%2Fp1um-front.png?alt=media&amp;token=375df34c-79a8-465d-aba6-02971d0d7d22" alt=""><figcaption></figcaption></figure>

## Gedachte achter de dongles

* Open hardware
* Standaard interfaces
* Privacy: data blijft altijd van de gebruiker en wordt niet gedeeld
* Geen abonnement
* laagdrempelig: in kosten en gebruikerservaring

## Snelle start

In enkele minuten is de dongle klaar voor gebruik. De stappen zijn:

{% content-ref url="/pages/dJoFlanuRSEaVw5VHDU5" %}
[Aansluiten](/ultra-mini/snelle-start/aansluiten)
{% endcontent-ref %}

{% content-ref url="/pages/DVJWYkzmGza4xPrpOBKo" %}
[Van start](/ultra-mini/snelle-start/van-start)
{% endcontent-ref %}


# Aansluiten

## **Aansluiten op de slimme meter**

\
Sluit de  Dongle  aan op de P1 aansluiting van de slimme meter. De plek van deze aansluiting is per meter fabrikant verschillend en te herkennen aan de opdruk P1. Soms is de aansluiting afgeschermd door een plastic of rubber kapje.

De P1 kabel wordt aangesloten op de stekker waar IN bij staat (aan de usb-c zijde)

<figure><img src="https://238437572-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5FJ26L1p0T0UwDD03mcA%2Fuploads%2FzYhjhR5c0UM7P3VzzN33%2Fp1um%20(2).png?alt=media&amp;token=440a425e-1178-4854-8de0-366d239ed51a" alt=""><figcaption></figcaption></figure>

## **USB C Adapter aansluiten**

Een extra voeding is voor versie 5.0 slimme meters niet nodig omdat de slimme meter voldoende stroom levert via de P1 aansluiting. Voor oudere meters is het echter wel nodig om een usb adapter aan te sluiten op de dongle.

{% hint style="danger" %}
Wordt er een toestel op de P1 uitgang aangesloten, sluit dan een voeding op het aangesloten apparaat of dongle aan.
{% endhint %}

{% hint style="info" %}
**Elke adapter is prima**

De USB adapter mag een oude smartphone of tablet adapter zijn of een usb aansluiting die voorhanden is in de meterkast (bv van een NAS/Router). Bijna alle adapters voldoen.
{% endhint %}

## Ethernet aansluiten

De dongle dient via een ethernet kabel verbonden te worden met uw netwerk. Aan de lampjes onder de aansluiting is te zien dat er verbinding is gemaakt.&#x20;

## RS485 / Modbus RTU aansluiten

Hieronder de aansluitingen.

<div data-full-width="true"><figure><img src="https://238437572-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5FJ26L1p0T0UwDD03mcA%2Fuploads%2FM07HVfpryCgMkpgDKc2Q%2Fp1um-rs485.png?alt=media&amp;token=a8dc29fc-19cc-491b-9503-609deffe8158" alt="" width="282"><figcaption></figcaption></figure></div>

## Ledjes en knopjes

De werking van de ledjes en knopjes is afhankelijk van de geinstalleerd software. Deze is daarom beschreven in bij de software.


# Van start

Er kunnen diverse software versies geinstalleerd zijn. Afhankelijk van de software zal de werking van de dongle verschillen. Hieronder de linkjes naar de beschrijving van de software functies.

{% content-ref url="/spaces/a0nbnZRi8AhAnCzcZmch" %}
[DSMR-API](https://docs.smart-stuff.nl/dsmr-api/)
{% endcontent-ref %}

{% content-ref url="/spaces/dR5Ofl0F6VoLhW4jQ5b5" %}
[ESPHome P1 Dongle](https://martijn-hendriks.gitbook.io/archive/esphome-p1-dongle/)
{% endcontent-ref %}

## Quick link

webinterface:  <http://ultra-dongle.local> &#x20;

Heeft u een andere host naam ingesteld in de dongle dan zal de dongle onder deze host naam te bereiken zijn  http\://\<host naam>.local


# Inleiding

De Ultra Dongle is de meest veelzijdige oplossing om slimme meter gegevens, waterlezer sensor, S0 gegevens te kunnen verwerken en te delen met alle toepassingen die u wenst. Er drie types. De witte variant is de V1 , de zwart (hieronder) is de V2 en de zwarte variant met spuitgietbehuizing is de X2.

<figure><img src="https://2530594451-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOegZpFqRfIg8rYXeEPhA%2Fuploads%2FaQ2lUfVr8ixvvkgL1eYM%2Fp1ux.png?alt=media&amp;token=759fb7ae-427b-49ba-85f3-f98b2454702d" alt=""><figcaption><p>X2 model</p></figcaption></figure>

## Regie over uw energie

Waar we voor staan:

* Open source beschikbaar
* Geen abonnement
* Privacy: data blijft altijd van de gebruiker en wordt niet gedeeld
* Veilig ontwerp
* laagdrempelig: in kosten en gebruikerservaring

## Snelle start

In enkele minuten is de dongle klaar voor gebruik. De stappen zijn:

{% content-ref url="/pages/dJoFlanuRSEaVw5VHDU5" %}
[Aansluiten](/ultra/snelle-start/aansluiten)
{% endcontent-ref %}

{% content-ref url="/pages/DVJWYkzmGza4xPrpOBKo" %}
[Van start](/ultra/snelle-start/van-start)
{% endcontent-ref %}


# Aansluiten

## **Aansluiten op de slimme meter**

Sluit de  Dongle  aan op de P1 aansluiting van de slimme meter. De plek van deze aansluiting is per meter fabrikant verschillend en te herkennen aan de opdruk P1. Soms is de aansluiting afgeschermd door een plastic of rubber kapje.

De P1 ingang is de rj plug aan de usb-c zijde. Onderstaande linker aansluiting voor alle modellen.

<figure><img src="https://2530594451-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOegZpFqRfIg8rYXeEPhA%2Fuploads%2F8uKKd3H0QI1NPL10ZJ2A%2Fp1ux2-usbc-crop.png?alt=media&amp;token=1e34006e-2bdc-45cd-9dbb-67e0ca56ef81" alt="X2"><figcaption><p>X2 model</p></figcaption></figure>

<figure><img src="https://2530594451-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOegZpFqRfIg8rYXeEPhA%2Fuploads%2FBSJHNo5DpgCjGllthLPy%2Fimage.png?alt=media&amp;token=9a720b16-d561-4e6e-a07f-a3a8ae99c6f6" alt=""><figcaption><p>V2 model</p></figcaption></figure>

<figure><img src="https://2530594451-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOegZpFqRfIg8rYXeEPhA%2Fuploads%2Fa0Q1tabLfS6ZXzknRGh4%2Fultra-pinout-in.png?alt=media&amp;token=d6d9966f-6c03-4df6-9a76-80112e791585" alt=""><figcaption><p>V1 model</p></figcaption></figure>

## **USB C Adapter aansluiten**

Een extra voeding is voor versie 5.0 slimme meters niet nodig omdat de slimme meter voldoende stroom levert via de P1 aansluiting. Voor oudere meters is het echter wel nodig om een usb adapter aan te sluiten op de dongle.

{% hint style="info" %}
**Elke adapter is prima**

De USB adapter mag een oude smartphone of tablet adapter zijn of een usb aansluiting die voorhanden is in de meterkast (bv van een NAS/Router). Bijna alle adapters voldoen.
{% endhint %}

## Ethernet aansluiten

De dongle dient via een ethernet kabel verbonden te worden met uw netwerk. Aan de lampjes onder de aansluiting is te zien dat er verbinding is gemaakt. <br>


# Van start

De Ultra dongle is een het grote broertje/zusje van de Ethernet Dongle Pro. Er zitten alleen veel meer functies op ... deze worden hieronder verder besproken.&#x20;

## Leds

{% hint style="warning" %}
hardware V2.1 uitgeleverd vanaf juni 2025 heeft geen power en p1 out leds
{% endhint %}

De dongle heeft een aantal led's, namelijk:

* RGB status led &#x20;
* groene led = indicatie dat er voldoende stroom is. Dient altijd te branden
* led bij de p1 bridge uitgang.  Aan bij het afleveren van p1 bericht&#x20;

De rgb status led geeft een aantal statussen terug. Deze zijn:

* LED UIT: geen netwerk koppeling
* LED BLAUW: netwerk koppeling aanwezig
* LED BLAUW met af en toe knipper: knipper geeft aan dat er succesvol slimme data van de meter ingelezen is
* LED BLAUW snel knipperen: zodra de dongle aangesloten is op stroom/p1 en er geen ethernet gekoppeld is zal de wifi hotspot na 6.5 seconde gestart worden. Dan knippert de status led. Zodra wifi gekoppeld is zal de led branden.

## Webinterface

De website van de dongle is te benaderen via <http://ultra-dongle.local>  Soms lukt dit niet omdat de router de url niet kan vinden. Dan kan de dongle benaderd worden via het ip-adres van de dongle. Dit ip adres is in de router te vinden onder en vaak onder de naam : ultra-dongle

Heeft u een andere host naam ingesteld in de dongle dan zal de dongle onder deze host naam te bereiken zijn  http\://\<host naam>.local

## ESPHome

Vanaf 13/7/24  is de Esphome firmware versie van de Ultra aangepast zodat de dongle ook onder bovenstaande url te benaderen is. Daarnaast werkt de P1 Out poort ook op de Ultra en de Ultra Mini.

Wel is het zo dat op de Ultra Mini GEEN S0 poort aanwezig is. Op de webpagina van de Ultra is deze wel te zien maar doet niets.&#x20;

## Functionele beschrijving

Los van de wifi koppeling en watersensor is de beschrijving van de P1 Pro Dongle te volgen zie:&#x20;

DSMR API : <https://docs.smart-stuff.nl/>

ESPHome: [https://docs.smart-stuff.nl/](https://docs.smart-stuff.nl/v/esphome-p1-dongle-pro/)


# Pinout V1

<figure><img src="https://2530594451-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOegZpFqRfIg8rYXeEPhA%2Fuploads%2Fa0Q1tabLfS6ZXzknRGh4%2Fultra-pinout-in.png?alt=media&amp;token=d6d9966f-6c03-4df6-9a76-80112e791585" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2530594451-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOegZpFqRfIg8rYXeEPhA%2Fuploads%2FCn7Jd1JartDuPegig9Y6%2Fultra-pinout-out.png?alt=media&amp;token=ff9837d4-0d8e-48e6-97ab-6efa412772a7" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2530594451-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOegZpFqRfIg8rYXeEPhA%2Fuploads%2Fv04nczuL20siNYH3llTl%2Fultra-pinout-top.png?alt=media&amp;token=e15686ab-5f51-4449-b845-fcfb08902755" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2530594451-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOegZpFqRfIg8rYXeEPhA%2Fuploads%2FWSdK7zeno4hrsyhP7IRr%2FScreenshot%202024-01-14%20at%2020.32.31.png?alt=media&amp;token=ee2661fb-b866-4396-8c5a-bc74bd737534" alt=""><figcaption></figcaption></figure>


# Pinout V2

{% hint style="warning" %}
Dongles uitgeleverd vamaf juni 2025 hebben geen power en p1 out leds
{% endhint %}

<figure><img src="https://2530594451-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOegZpFqRfIg8rYXeEPhA%2Fuploads%2F6O0HWqpezezcqkjJBYwH%2FP1u%20v2%20-%20in%20(1).png?alt=media&amp;token=78535160-229f-4524-8694-5e2645310c09" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2530594451-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOegZpFqRfIg8rYXeEPhA%2Fuploads%2F1cfxbOEqUuceDnwjRApU%2Fp1u%20v2%20-%20out.png?alt=media&amp;token=81e7d9d8-9e3e-4e96-a94f-86d1c51d6a4a" alt=""><figcaption></figcaption></figure>

De V2 heeft twee multifunctionele module poorten. Hieronder de mogelijkheid per module poort.

<figure><img src="https://2530594451-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOegZpFqRfIg8rYXeEPhA%2Fuploads%2FsKA6UKKRxY9Bg5ueOVJl%2Fmodules%20(1).png?alt=media&amp;token=534d2920-a0db-43fc-a316-c20d4fb749ad" alt=""><figcaption></figcaption></figure>

De Ultra V2 dongle heeft 2 slots elke slot heeft identieke aansluitingen. De verschillende modules worden via 3 IO's aangestuurd. Zie hieronder de gebruikte IO's per module.

| SLOT 1     | IO41 | IO43 | IO44 |
| ---------- | :--: | :--: | :--: |
| H20 Signal |      |   x  |      |
| RS485 RTS  |      |   x  |      |
| RS485 Rx   |   x  |      |      |
| RS485 Tx   |      |      |   x  |
| IO+ IN     |      |   x  |      |
| IO+ OUT    |   x  |      |      |

| SLOT 2     | IO36 | IO38 | IO39 |
| ---------- | :--: | :--: | :--: |
| H20 Signal |      |   x  |      |
| RS485 RTS  |      |   x  |      |
| RS485 Rx   |   x  |      |      |
| RS485 Tx   |      |      |   x  |
| IO+ IN     |      |   x  |      |
| IO+ OUT    |   x  |      |      |


# Pinout X2

## USB C zijde

<figure><img src="https://2530594451-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOegZpFqRfIg8rYXeEPhA%2Fuploads%2FGPJ6QYiDYepDDpnH9nm3%2Fp1ux2-usbc-crop.png?alt=media&amp;token=35053401-79d5-4e99-88b9-5b09c057ecf2" alt=""><figcaption></figcaption></figure>

Aansluitingen van links naar rechts:

* p1 ingang (rj11) met groene power led
* Ethernet ingang (rj45) met groene en gele status leds
* Usb-c aansluiting
* multifunctionele aansluiting (5 polig)

## P1 uitgang zijde

<figure><img src="https://2530594451-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOegZpFqRfIg8rYXeEPhA%2Fuploads%2FDE9s4QQAWrEl2LiifBHq%2Fp1um-p1-out_crop.png?alt=media&amp;token=a6e83350-6a57-4899-ad54-02624a14d3b7" alt=""><figcaption></figcaption></figure>

Aansluitingen van links naar rechts (bij de X2 zitten de aansluitingen net iets verder dan op de afbeelding):

* Drukknopje
* Status led (RGB)
* P1 uitgang ( met groene status led)

## Multifunctionele aansluiting

De X2 heeft twee multifunctionele module poorten. Hieronder de mogelijkheid per module poort.

<figure><img src="https://2530594451-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOegZpFqRfIg8rYXeEPhA%2Fuploads%2Fp6UupoFLdOR4ggtCMTo4%2Fp1ux2%20copy.png?alt=media&amp;token=e496e68c-3160-4158-b55b-ead2957100ec" alt=""><figcaption></figcaption></figure>

De Ultra V2 dongle heeft 2 slots elke slot heeft identieke aansluitingen. De verschillende modules worden via 3 IO's aangestuurd. Zie hieronder de gebruikte IO's per module.

| SLOT 1 (R) | IO41 | IO43 | IO44 |
| ---------- | :--: | :--: | :--: |
| H20 Signal |      |   x  |      |
| RS485 RTS  |      |   x  |      |
| RS485 Rx   |   x  |      |      |
| RS485 Tx   |      |      |   x  |
| IO+ IN     |      |   x  |      |
| IO+ OUT    |   x  |      |      |

| SLOT 2 (L) | IO36 | IO38 | IO39 |
| ---------- | :--: | :--: | :--: |
| H20 Signal |      |   x  |      |
| RS485 RTS  |      |   x  |      |
| RS485 Rx   |   x  |      |      |
| RS485 Tx   |      |      |   x  |
| IO+ IN     |      |   x  |      |
| IO+ OUT    |   x  |      |      |


# Modules plaatsen

{% hint style="danger" %}
Zorg dat de stroom van de dongle af is
{% endhint %}

Drie stappen die u dient te volgen:

* open de behuizing
* plaats de module
* sluit de behuizing

## Open de behuizing

Als u modules wilt plaatsen open dan voorzichtig de behuizing.&#x20;

Voor de V1 en V2 kunt u iets duns tussen de rand doen aan de korte zijde. Deze springen dan open.

Voor de X2 dient u voorzichtig de boven en onderkant een beetje te bewegen. De bovenkant die over de onderkant heen steekt kan dan worden opgetild .

## Module Plaatsen

De modules kunnen geplaatst worden door de korte zijde naar de buitenkant te laten wijzen. Zoals op onderstaande afbeelding rechts onder te zien is.

<figure><img src="https://2530594451-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOegZpFqRfIg8rYXeEPhA%2Fuploads%2FbqlmrY8xcW6Y6RGOz6AN%2Fp1ux2-top-open-crop.png?alt=media&amp;token=08beefa8-e8d6-42c2-94b8-2124ab74377a" alt=""><figcaption></figcaption></figure>

## Behuizing sluiten

U klikt de bovenkant weer op de onderkant. Check bij de X2 versie of het knopje nog goed ingedrukt kan worden.&#x20;


# Introduction

Extend the P1 connection of a smart meter wirelessly with the Virtual P1 Master and Virtual P1 dongles.

The Virtual P1 set transfers the P1 telegram from your smart meter to another location over a direct wireless connection. It does not require your home Wi-Fi network or an internet connection.

The set consists of two dongles:

* **White: Master** — connects to the smart meter and transmits the P1 data.
* **Black: Virtual P1** — receives the data and makes it available on its P1 Out port.

The dongles are paired before delivery and are ready to use. The white Master is normally powered by the smart meter. The black Virtual P1 dongle is powered through USB-C or through a connected P1 device that supplies power.

| White Master                                                                                                                                                                                                                                         | Black Virtual P1                                                                                                                                                                                                                       |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ![White Virtual P1 Master dongle](https://3638916270-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKkPWZ4yyvD0SCADlVDMV%2Fuploads%2Fgit-blob-7ae85739392a08230bc4aac640c761fef857ca43%2Fvirtual-p1-master-white.png?alt=media) | ![Black Virtual P1 dongle](https://3638916270-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKkPWZ4yyvD0SCADlVDMV%2Fuploads%2Fgit-blob-9e6df8276ceace6be29d9cbfbee4706adde60528%2Fvirtual-p1-black.png?alt=media) |

{% hint style="warning" %}
The Virtual P1 set only supports V4 and V5 smart meters.
{% endhint %}

Both dongles have two P1 connections:

* **P1 Input** — located next to the USB-C connector.
* **P1 Output** — located next to the green connector.

Connect the smart meter to the **P1 Input** of the white Master. Connect the receiving P1 device to the **P1 Output** of the black Virtual P1 dongle.

The current firmware also forwards the incoming telegram to the local P1 output on the Master. This lets you keep using P1 data next to the smart meter while the same data is sent to the black Virtual P1 dongle.

## Quick start

{% content-ref url="/pages/dJoFlanuRSEaVw5VHDU5" %}
[Installation](/virtual-p1-set/quick-start/installation)
{% endcontent-ref %}


# Installation

{% hint style="warning" %}
Do not install either dongle inside a closed metal cabinet. Metal strongly reduces the wireless signal and can prevent the dongles from connecting.
{% endhint %}

{% hint style="warning" %}
Only V4 and V5 smart meters are supported.
{% endhint %}

The dongles are paired before delivery. Identify them by colour before connecting them:

* **White = Master**
* **Black = Virtual P1**

## Identify the P1 connections

Both dongles have a P1 input and a P1 output:

* The **P1 Input** is located next to the USB-C connector.
* The **P1 Output** is located next to the green connector.

## Connect the dongles

1. Connect the P1 port of the smart meter to the **P1 Input** next to the USB-C connector on the **white Master**. The smart meter normally powers the Master.
2. If required, connect a local P1 device to the **P1 Output** next to the green connector on the Master. The Master forwards the smart-meter telegram locally as well as wirelessly.
3. Place the **black Virtual P1** at the location where you need the remote P1 connection.
4. Power the black dongle with a USB-C power adapter.
5. Connect the receiving device to the **P1 Output** next to the green connector on the black dongle.

After startup, the dongles establish their direct ESP-NOW connection automatically. P1 data is available at the black dongle as soon as its blue data LED starts flashing.

{% hint style="info" %}
The direct link does not use your router, home Wi-Fi credentials or an internet connection.
{% endhint %}

## LEDs

### White Master

* The power LED remains on while the dongle is powered.
* The blue status LED flashes evenly while the Master is searching for a Virtual P1 dongle.
* Once paired, the blue LED remains on and briefly changes state when a P1 telegram is transmitted.

### Black Virtual P1

* The power LED remains on while the dongle is powered.
* The blue P1 Out LED flashes when received data is written to the P1 output.

## Button and pairing

A short button press restarts a dongle without deleting its pairing.

To pair the white Master with a different black Virtual P1 dongle:

1. Power the black Virtual P1 dongle and place both dongles close together.
2. Press and hold the button on the **white Master** for more than 5 seconds, then release it.
3. The Master clears its stored pairing, restarts and searches for a nearby Virtual P1 dongle.
4. Wait until the Master's blue LED stops flashing evenly. The new pairing is stored automatically.

Holding the button on the black Virtual P1 dongle for more than 5 seconds only restarts it; pairing information is stored by the white Master.

## Firmware updates

Use the [Virtual P1 web installer](https://install.smart-stuff.nl/vp1/) to update or reinstall the firmware.


# Good to know

## Supported smart meters

The Virtual P1 set only supports smart meters with a V4 or V5 P1 interface. Older P1 versions are not supported.

## Wireless connection and range

The dongles communicate directly over ESP-NOW on channel 6. Firmware 1.2.0 enables ESP-NOW Long Range mode on both dongles at 500 kbit/s.

The actual range depends on walls, floors, insulation, electrical cabinets and other obstacles. A clear line of sight gives the best result. If the connection is unreliable, move the dongles away from metal objects and reduce the distance between them.

The Master only accepts a new pairing from a nearby Virtual P1 dongle. Keep the dongles close together while pairing; after pairing they can be moved to their intended locations.

## Local and remote P1 output

The white Master sends every received smart-meter telegram wirelessly and also forwards it to its local P1 output. The black Virtual P1 dongle writes the received telegram to its P1 Out port. This means the same P1 data can be used both near the smart meter and at the remote location.

## Power sharing

The black Virtual P1 dongle can be powered with a USB-C adapter. Power is then available to a compatible device connected to P1 Out. Power can also be supplied in the opposite direction when the connected P1 device provides power on its P1 connection.

{% hint style="warning" %}
Only connect equipment with a compatible P1 interface and pinout. Do not connect the P1 ports to Ethernet equipment, even though the connector may look similar.
{% endhint %}

## Firmware

The current Master and Virtual P1 firmware version is **1.2.0**. Both sides must use compatible firmware settings; Long Range mode is enabled on both devices in this release.

## Updates and reinstallation

Firmware updates and reinstallations for both dongles can be performed with the [Virtual P1 web installer](https://install.smart-stuff.nl/vp1/).

## CE conformity

Both Virtual P1 dongles use the same hardware as the NRG Dongle and are covered by the same CE declaration. See [CE conformity](/virtual-p1-set/product-information/ce-conformity) or the original [P1 Dongle Pro+ CE conformity page](https://docs.smart-stuff.nl/p1-dongle-pro+/eigenschappen/ce-conformiteit) for the declaration.


# CE conformity

The white Master and black Virtual P1 dongles use the same hardware as the NRG Dongle. The NRG Dongle CE declaration therefore also applies to both dongles in the Virtual P1 set.

The original conformity information is available on the [P1 Dongle Pro+ CE conformity page](https://docs.smart-stuff.nl/p1-dongle-pro+/eigenschappen/ce-conformiteit).

{% file src="/files/P6LTq4dfVLHVaoUzyOPa" %}


# Introductie

Met de NRG monitor kunt u in een oogopslag uw energiehuishouden zien. Verbruik of teruglevering van elektra, gas en water.

De NRG monitor zal de lokale data van de P1 Dongle Pro gebruiken. U kunt zelf verbruiksdoelen instellen om zo snel te zien hoe deze er voor staan. Daarnaast worden de kosten die opgegeven zijn/worden in de P1 Dongle gebruikt zodat zaken niet dubbel ingevuld dienen te worden.

Installatie is een fluitje van een cent. Ook hiervoor zal de NRG monitor opzoek gaan naar de P1 Dongle en op basis van deze dongle koppelen aan uw wifi netwerk en p1 dongle.


# Aansluiten en koppelen

De NRM Monitor dient van stroom te worden voorzien en daarnaast gekoppeld te worden aan de P1 Dongle Pro.

### Beugel monteren

De bijgeleverde beugel kan gebruikt worden als steun zodat het scherm ergens opgezet kan worden.&#x20;

Aan de achterkant van het scherm onderaan zit een klein gaatje deze correspondeert met het nokje op de beugel. Beste manier om de beugel te monteren is om eerst de beugel op de rand aan de voorzijde te zetten en dan met lichte druk door te drukken totdat deze in het gaatje valt.

Eraf halen kan ook volg dan de omgekeerde route. Lichte druk zetten zodat het nokje uit het gaatje van het scherm gaat en dan is de beugel los.

### Koppelen aan Ultra of Ethernet Dongle

{% hint style="warning" %}
Gaat u de NRG Monitor koppelen aan een **Ethernet of Ultra Dongle** dan dient deze tijdelijk van een extra usb voeding te worden voorzien (indien dit nog niet het geval is). De koppeling verloopt namelijk via een tijdelijke wifi-verbinding en dit vraagt extra stroom.
{% endhint %}

{% hint style="warning" %}
De Ethernet of Ultra Dongle dient verbonden te zijn met het netwerk om te kunnen koppelen
{% endhint %}

De Ultra en Ethernet dongles hebben geen wifi koppeling en daarom zijn deze netwerkgegevens niet bekend bij deze dongles. De NRG Monitor heeft ze wel nodig (koppeling via Wifi). Daarom is het voor het koppelen dat deze opgevoerd worden. Zie onderstaande stappen:

1\) maak een bestandje (notepad) met de naam wifi.json

2\) zet in dit bestanden de volgende gegevens. Vervang wifinaam en wachtwoord met de juiste gegevens van uw Wifinetwerk.\
\
{"ssid":"wifinaam","pw":"wachtwoord"}

{% file src="/files/oc2mXSCKbNd8i6yxoK9u" %}

3\) upload dit bestandje naar de bestanden op de dongle.&#x20;

<figure><img src="https://51680982-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOLi8uKVPCtT26B5HWACG%2Fuploads%2FDqkc8RCewKSNn84E75xx%2FScreenshot%202024-01-14%20at%2021.34.21.png?alt=media&amp;token=adc4cd68-5b16-494f-a9c8-9439efe3c5c0" alt=""><figcaption></figcaption></figure>

4\) Verwijder dit wifi.json bestandje weer na koppeling.

### Aansluiten

De bijgeleverde USB C kabel dient aangesloten te worden op een USB C adapter of ander toestel met een USB C aansluiting die als voeding gebruikt kan worden. U zult dat onderstaande scherm gaan zien

<figure><img src="https://51680982-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOLi8uKVPCtT26B5HWACG%2Fuploads%2Fbx1BQ9aBEIXpqJp0nN40%2Fsplash.png?alt=media&amp;token=e2df3ca6-db8e-4858-9294-d1b88d6af478" alt="" width="375"><figcaption></figcaption></figure>

### Koppelen

{% hint style="warning" %}
Bij de Ultra dient dient de dongle en NRG Monitor dicht bij elkaar gehouden worden (binne 1mtr). Dit omdat de Ultra geen wifi antenne heeft en de wifi kortstondig wordt gebruikt voor deze koppeling.&#x20;
{% endhint %}

Na het startscherm zal het koppelscherm zichtbaar worden, zie hieronder.

<figure><img src="https://51680982-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOLi8uKVPCtT26B5HWACG%2Fuploads%2Ff8Cnb11d7TevnyXJQbSx%2Fpair.png?alt=media&amp;token=cc790984-64b2-4a1f-812e-606a3173cb5d" alt="" width="375"><figcaption></figcaption></figure>

Ga dan naar de P1 Dongle Pro en kies in de menubalk  bij settings voor **Koppelen ...**

<figure><img src="https://51680982-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOLi8uKVPCtT26B5HWACG%2Fuploads%2FQBWKVC24WXM6gFqL6Pnj%2FScreenshot%202023-12-24%20at%2013.45.17.png?alt=media&amp;token=d64b3ec7-f025-48c0-af82-af172e7e4e71" alt="" width="243"><figcaption></figcaption></figure>

Onderstaande koppelscherm is  te zien&#x20;

<figure><img src="https://51680982-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOLi8uKVPCtT26B5HWACG%2Fuploads%2FI2HQGv25BswyMdJrkqK1%2Fpair-success-web.png?alt=media&amp;token=962db76a-4f5c-4399-a4fd-890ba9a0c2e0" alt="" width="360"><figcaption></figcaption></figure>

Druk op **START**

Op zowel het scherm van de NRG Monitor als de P1 Dongle Pro is te zien dat het is gelukt.&#x20;

<figure><img src="https://51680982-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOLi8uKVPCtT26B5HWACG%2Fuploads%2FxX5LkfJiLpZlJeeIYGZP%2Fpair-success.png?alt=media&amp;token=968383e1-edfc-47eb-9f8f-bf96259accb3" alt="" width="375"><figcaption></figcaption></figure>

<figure><img src="https://51680982-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOLi8uKVPCtT26B5HWACG%2Fuploads%2FRp3lQRWqMpiOBBWxbEnZ%2FScreenshot%202023-12-24%20at%2013.49.24.png?alt=media&amp;token=b636d1bd-8fd0-4444-a9cd-3740c1cfdb1d" alt="" width="375"><figcaption></figcaption></figure>

U bent klaar met koppelen!

Druk op **verder ->** op het scherm van de NRG Monitor om naar het dashboard te gaan.


# Gebruiken en aanpassen

De energie monitor bestaat uit twee schermen:

1\) dashboard

2\) settings

### Nieuw vanaf 20 juli 2024

Vanaf versie 1.2.3 beschikbaar is er een menu optie linksonder in het dashboard. Zodra daar op geklikt wordt zal er een menu zichtbaar worden.

<div data-full-width="true"><figure><img src="https://51680982-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOLi8uKVPCtT26B5HWACG%2Fuploads%2Fi0yzhdAnKiopgodAcb1I%2FScreenshot%202024-07-30%20at%2017.41.20.png?alt=media&amp;token=49f6ecd7-3c2e-4e2c-b094-15823085f88f" alt="" width="375"><figcaption></figcaption></figure></div>

### Settings

Menu -> Settings. Menu knopje is linksonder te vinden op het dashboard.

{% hint style="info" %}
Druk lang op een van de plekken van het dashboardscherm waar geen metertjes staan om in de settings te komen
{% endhint %}

<figure><img src="https://51680982-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOLi8uKVPCtT26B5HWACG%2Fuploads%2FoMDhN5zqnNV4rIkH6qUh%2Fsettings.png?alt=media&amp;token=6bbb8903-a56f-4629-9290-908658822a78" alt="" width="375"><figcaption></figcaption></figure>

Het settingsscherm heeft de volgende onderdelen:

* < terug knop om naar dashboard te gaan
* schuifje om de helderheid van het scherm in te stellen
* weergave huidige software
* weergave laatste versie
* Reboot knop om het toestel opnieuw op te starten
* Update knop (alleen zichtbaar indien er een nieuwere versie is)
* Reset knop: bij **lang** **indrukken** wordt de koppeling met de P1 Dongle gewist en het toestel opnieuw gestart. De NRG Monitor dient dan opnieuw gekoppeld te worden

### Dashboard

<figure><img src="https://51680982-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOLi8uKVPCtT26B5HWACG%2Fuploads%2FCKhbC5iW5QpdmpPQiv5o%2Fdash-all.png?alt=media&amp;token=4b8c0e68-5a29-43c3-acce-49a5a6e38d6d" alt="" width="375"><figcaption></figcaption></figure>

Wat is er te zien op het dashboard:

* linksboven de hartslag. Deze laat zien dat het toestel nog functioneert.
* linksboven de datum/tijd uit de slimme meter; deze wordt eens per 10 seconde geuopdate. Slimme meters versie 2 en 3 geven geen tijd door. Dit zal dan de tijd van de tijdserver zijn.&#x20;
* Groene meter links boven: indien er een gas aansluiting is dan is de dagconsumptie hier te zien
* Blauwe meter links onder indien er een water aansluiting is dan is de dagconsumptie hier te zien
* Meter in het midden: Elektra vermogen (grijs) of teruglevering (groen) is hier te zien
* meter rechtsboven: elektrakosten vandaag
* meter rechtsmidden: gaskosten vandaag
* meter rechtsonder: waterkosten vandaag
* in/uit levering:  afname of teruglevering van elektra van vandaag

De cirkel om de meters geeft aan hoeveel er verbruikt is ten opzichte van het ingestelde doel. Zie doelen.

### Doelen

Door op een van de meters aan te raken komt het doelenscherm over de meters te liggen.&#x20;

{% hint style="info" %}
Vanaf software versie 1.2.3 zijn de doelen te bereiken via het menu > Budget.
{% endhint %}

Zie voorbeeld hieronder van het Elektra doel.

<figure><img src="https://51680982-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOLi8uKVPCtT26B5HWACG%2Fuploads%2FKqFv9vTW9lsUgFR4rFF8%2Fdagdoel%20instellen.png?alt=media&amp;token=bf69895d-c591-4f40-a852-7d7c62962a71" alt="" width="375"><figcaption></figcaption></figure>

Het gaat om het verbruiksdoel of kostendoel afhankelijk van de meter. Door aan de slider te trekken verandert het doel. Opslaan kan door op  de titel van dit scherm te drukken. In dit geval **"Dagdoel Elektra (X)"**

### Kosten

Kosten worden geimporteerd vanuit de P1 Dongle Pro. In het settingsscherm zijn maandelijkse en dynamische kosten op te geven.&#x20;

De maandelijkse kosten worden omgerekend naar dag kosten door deze formule:  maandkosten \* 12 / 365

Dynamischekosten zijn de kosten per afgenomen eenheid. Bijvoorbeeld kWh of m3. Deze kunnen uit de factuur of overeenkomst van de energieleverancier gehaald worden. Neem in de calculatie ook de belasting mee. Oftewel alle kosten die te maken hebben met het afnemen van 1 eenheid.

Importeren van de kosten vanuit de dongle gebeurd eens per uur.&#x20;

{% hint style="info" %}
Heeft u de kosten in de P1 Dongle Pro aangepast dan kan het even duren voordat deze ingelezen worden door de NRG Monitor. Wilt u niet wachten ... ga naar het settingsscherm van de NRG Monitor. Dan worden de gegevens automatisch ververst.
{% endhint %}


# Updates

U kunt checken of er een update voor de NRG Monitor is door naar het settingsscherm te gaan.

Bij het openen van het settingsscherm zal het toestel een check uitvoeren. Zodra er een update is komt er een groene knop in beeld. Door hier op te drukken gaat de update uitgevoerd worden.

### Nieuw vanaf 20 juli 2024

Vanaf versie 1.2.3, na 20/7/2024 beschikbaar, zal de dongle bij opstarten en eens per dag zelf een test uitvoeren. Indien er een update aanwezig is zal dit getoond worden op het hoofdscherm, zie voorbeeld hieronder.&#x20;

De handmatige check in het settingsscherm blijft ook bestaan.

<figure><img src="https://51680982-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOLi8uKVPCtT26B5HWACG%2Fuploads%2FxhydD397bxDm06Qp485h%2FScreenshot%202024-07-20%20at%2023.38.43.png?alt=media&amp;token=3d5b0e0d-6c12-4458-aea8-53ff70dae59d" alt=""><figcaption></figcaption></figure>

### Waar staat het versienummer?

Het versienummer van de software op de monitor kan gevonden worden in het settingsscherm. In de 1.2.2 en eerdere versies is deze midden in het scherm te zien. Bij versie 1.2.3 en hoger links onder.


# Opwekking (zonne-energy)

<https://envoy/api/v1/production>Vanaf software versie 1.2.0 is het ook mogelijk om de opbrengst van je zonnepanelen op het scherm te tonen.

Hieronder hoe dit in te stellen is en wat de gegevens zeggen.

{% hint style="warning" %}
Bij veranderingen aan de .json bestanden op de dongle altijd de NRG Monitor herstarten.

NRG Monitor leest de bestanden alleen in tijdens het opstarten.
{% endhint %}

## Koppelen

Op de P1 Dongle Pro (of Ultra/variant) wordt een json bestandje gezet met de configuratie van de koppeling. Dit kan nu voor de Enphase IQ Gateway en SolarEdge (v1) systemen. Wellicht ook andere systemen in de toekomst.

<figure><img src="https://51680982-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOLi8uKVPCtT26B5HWACG%2Fuploads%2FjMxwEnAre0ARTBYX9vgW%2FScreenshot%202024-01-28%20at%2009.57.49.png?alt=media&amp;token=6563bf73-5a41-42ae-99fc-1be86d6d1821" alt=""><figcaption><p>P1 Dongle Pro - twee zonnesystemen (SolarEdge + Enphase)</p></figcaption></figure>

### Multi vendor systeem

Heeft u zonnepanelen met omvormers van Enphase + SolarEdge dan worden deze beide ondersteund. De opwekking van beide systemen worden los van elkaar gelezen en gecombineerd (opgeteld) weergegeven. Lekker makkelijk toch ... alles in 1 overzicht.

### Enphase IQ Gateway

Op de P1 Dongle (Pro/H2O/Ultra) dient een bestandje gezet te worden met de volgende gegevens:

bestandsnaam: enphase.json

voorbeeld inhoud:&#x20;

```
{"gateway-url":"https://envoy/api/v1/production",
 "wp":3300,
 "expire":1737323745,
 "refresh-interval": 60,
 "token":"<token>" 
 }
```

De verschillende waardes dienen ingevuld te worden waarbij "token" het belangrijkste is. In vele andere gevallen zijn de andere waarden bruikbaar.

<table><thead><tr><th width="167">naam</th><th>standaard waarde</th><th>omschrijving</th></tr></thead><tbody><tr><td>gateway-url</td><td>https://envoy/api/v1/production</td><td>url van de lokale IQ Gateway. Mocht deze niet op envoy te bereiken zijn dan kan voor envoy ook het ip-adres ingevuld worden</td></tr><tr><td>wp</td><td>3300</td><td>systeemvermogen in Wp. deze wordt gebruikt voor het bepalen van het benuttig van het totaal.</td></tr><tr><td>expire</td><td>0</td><td>waarde 0 is geen check. Indien gevuld zal de Monitor checken of het token verlopen is.</td></tr><tr><td>refresh-interval</td><td>60</td><td>per x seconde zal de data uit de IQ Gateway worden opgehaald. Deze kan ingesteld worden. </td></tr><tr><td>token</td><td>geheim per gebruiker/site</td><td></td></tr></tbody></table>

**STAP 1: Verkrijgen van Token**

Blijkbaar moet dit nogal moeilijk gaan bij Enphase ... het normale token is 12uur geldig en dat werkt niet.&#x20;

Via onderstaande procedure krijgt u een 1 jaar geldig token.

1\) ga naar uw lokale envoy systeem via : <https://envoy/home>

<figure><img src="https://51680982-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOLi8uKVPCtT26B5HWACG%2Fuploads%2FxS4KuAdhnopGhid7Kj4P%2FScreenshot%202025-01-26%20at%2010.44.55.png?alt=media&amp;token=2f97f999-4678-4d9a-908c-b98c6e8e9027" alt=""><figcaption></figcaption></figure>

2\) druk op login with Enphase&#x20;

<figure><img src="https://51680982-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOLi8uKVPCtT26B5HWACG%2Fuploads%2FcAw1vNNGTQLZ3gokeyR9%2FScreenshot%202025-01-26%20at%2010.45.01.png?alt=media&amp;token=369c2e89-cb80-48bd-a769-1dda488a6d5d" alt=""><figcaption></figcaption></figure>

3\) vul username en password in en druk op log in

U krijgt het ingelogd scherm en dient even te wachten voordat u terug gaat naar uw lokale envoy&#x20;

4\) kopieer Serial Number&#x20;

5\) in dezelfde browser (ander tab)  plakt u onderstaande url + na het "=" het serienummer uit stap 4

<https://enlighten.enphaseenergy.com/entrez-auth-token?serial_num=>\<serienummer uit stap 4>

6\) Kopieer het access token. Aan de verlooptijd (einde van het data pakket) kunt u zien dat deze 1 jaar geldig is.

{% hint style="warning" %}
De tokens zijn maximaal 1 jaar geldig. Na een jaar dient u de handeling te herhalen.
{% endhint %}

### SolarEdge

Op de P1 Dongle (Pro/H2O/Ultra) dient een bestandje gezet te worden met de volgende gegevens:

bestandsnaam: solaredge.json

voorbeeld inhoud:&#x20;

```
{
 "gateway-url":"",
 "siteid": 123456
 "wp":3300,
 "expire": 0,
 "refresh-interval": 300,
 "token":"<token>" 
 }
```

De verschillende waardes dienen ingevuld te worden waarbij "token" het belangrijkste is. In vele andere gevallen zijn de andere waarden bruikbaar.

<table><thead><tr><th width="167">naam</th><th>standaard waarde</th><th>omschrijving</th></tr></thead><tbody><tr><td>gateway-url</td><td>niet van toepassing</td><td>niet gebruikt</td></tr><tr><td>wp</td><td>3300</td><td>systeemvermogen in Wp. deze wordt gebruikt voor het bepalen van het benuttig van het totaal.</td></tr><tr><td>expire</td><td>0</td><td>waarde 0 is geen check. Indien gevuld zal de Monitor checken of het token verlopen is.</td></tr><tr><td>refresh-interval</td><td>300</td><td>per x seconde zal de data worden gelezen. v1 koppeling mag maximaal 300 keer per dag worden gelezen dan is ca elke 5 minuten een update.</td></tr><tr><td>token</td><td>geheim per gebruiker/site</td><td>Deze kunt u van uw installateur opvragen of heeft u al een keer ontvangen.  Dit wordt ook wel de X-API-Key genoemd.</td></tr><tr><td>siteid</td><td>geheim per gebruiker/site</td><td>Deze kunt u van uw installateur opvragen of heeft u al een keer ontvangen.</td></tr></tbody></table>

## Uitleg

Naast de basis functionaliteit van de NRG Monitor voegt de opwekking functie enkele elementen toe. Dit werkt voor alle omvormers identiek. Bij gebruikt van meerdere omvormers worden de ingelezen waardes bij elkaar opgeteld.

<figure><img src="https://51680982-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOLi8uKVPCtT26B5HWACG%2Fuploads%2FBC1HyfLAzSmbEyG2UI8R%2FScreenshot%202024-01-27%20at%2022.36.40.png?alt=media&amp;token=266775ab-e7c1-4f16-bab8-020469e371dd" alt=""><figcaption></figcaption></figure>

In het midden boven de elektra cirkel komen twee "oren" en een zonnetje te staan. HIeronder een verklaring van deze items

<table><thead><tr><th width="136">Item</th><th></th></tr></thead><tbody><tr><td>zonnetje</td><td>wordt geel zodra er opwekking plaatsvind (Aantal Watts > 0); anders is deze grijs</td></tr><tr><td>Linker oor</td><td>Geeft het opgewekte dagvermogen in Wh aan. De groene indicatie laat zien hoeveel van het totale potentieel benut wordt. Het systeemvermogen wordt hiervoor gebruikt en teruggerekend naar dag opwekking op basis van geschat jaaropbrengst</td></tr><tr><td>Rechter oor</td><td>Geeft het de actuele opwekking in Watts aan. De groene indicatie laat zie hoeveel energie er op dat moment opgewekt wordt ten opzichte van het maximale potentieel. Maximale potentieel is systeemvermogen * 85%.</td></tr></tbody></table>

De dagopbrengst en actuele opwekking komen uit de Enphase IQ Gateway.&#x20;

De indicaties worden berekend op basis van het systeemvermogen en zullen afwijken. Ligging, hellingshoek, temperatuur, leeftijd spelen allemaal mee en zijn niet opgenomen in de schatting.  Eventueel kunt u via aanpassing van systeemvermogen in het enphase.json bestand nog wat tweaken met deze indicatoren.


# Veel gestelde vragen (FAQ)

<details>

<summary>Monitor doet het niet meer nadat ik een wachtwoord heb ingesteld op de dongle</summary>

De beveiliging werkt zo goed dat ook de NRG Monitor er niet meer bij kan :-{ Op dit moment is daar nog geen oplossing voor.&#x20;

</details>

<details>

<summary>Waar staat het versienummer</summary>

Deze is te vinden in het settingsscherm. Of linksonder of bij oudere versies midden in het scherm

</details>


# Versiegeschiedenis

<table><thead><tr><th width="109">versie</th><th>omschrijving</th></tr></thead><tbody><tr><td>1.0.1</td><td>initiele release</td></tr><tr><td>1.0.2</td><td>bugfix</td></tr><tr><td>1.0.3</td><td>bugfix</td></tr><tr><td>1.1.0</td><td>aanpassing in het design</td></tr><tr><td>1.2.0</td><td>Opwekking ook zichtbaar: Enphase IQ Gateway </td></tr><tr><td>1.2.1</td><td>SolarEdge + multi system support</td></tr><tr><td>1.2.2</td><td>enkele kleine verbeteringen</td></tr><tr><td>1.2.3</td><td>dagelijkse update check, nieuwe sdk, kleine fixes, wifi reconnect logica </td></tr></tbody></table>


# Opnieuw installeren

Mocht het voor komen dat de Monitor niet meer goed functioneert en dat een update ook niet meer werkt dan kan de NRG Monitor via de webinstaller opnieuw van software worden voorzien.

U dient hiervoor naar de website : <https://install.smart-stuff.nl/nrgm> te gaan

Naast de NRG Monitor en een USB C kabel heeft u een laptop nodig. Via de browser (bijvoorkeur Chrome)  kunt u de stappen volgen op de webinstaller en de nieuwe software installeren.&#x20;


# Upgrade naar v3 software

{% hint style="danger" %}
Na het update naar V3 kan er alleen via de webinstaller weer teruggegaan worden naar V1
{% endhint %}

Wilt u het NRG Monitor gebruiken met dsmr-api V5.2 dongle software dan dient het scherm geupdate te worden naar v3. Dit kan op ondertaande manier.

1\) update de NRG Monitor naar de laatste versie via het settingsscherm. Versie 1.2.6

2\) druk lang linksonder op het versienummer in het settingsscherm. De UPDATE knop is dan zichtbaar

3\) druk op UPDATEN en wacht

4\) het scherm start opnieuw op met linksonder 3.0.0 of hoger

5\) koppel het display aan de dongle door 1x kort op het knopje van de dongle te drukken


# Introductie

Met de NRG Monitor kunt u in een oogopslag uw energiehuishouden zien. Verbruik of teruglevering van elektra, gas en water.

De NRG Monitor zal de lokale data van de P1 Dongle gebruiken. U kunt zelf verbruiksbudgetten instellen om zo snel te zien hoe deze er voor staan. De tarieven die opgegeven zijn in de P1 Dongle worden gebruikt zodat zaken niet dubbel hoeven te worden ingevuld.

{% hint style="warning" %}
Gebruikt u de NRG Monitor met een Ultra of Ethernet dongle en is deze dongle via Ethernet aangesloten? Sluit dan altijd een USB-voeding aan op de dongle.
{% endhint %}

Installatie is een fluitje van een cent. De set komt al gekoppeld bij u aan of kunt eenvoudig zelf koppelen.


# Aansluiten en koppelen

De NRG Monitor dient van stroom te worden voorzien en daarnaast gekoppeld te worden aan de P1 Dongle.

### Schermvoet monteren

De bijgeleverde voet kan gebruikt worden als steun zodat het scherm ergens opgezet kan worden.

Aan de achterkant van het scherm onderaan zit een klein gaatje deze correspondeert met het nokje op de beugel. Beste manier om de beugel te monteren is om eerst de beugel op de rand aan de voorzijde te zetten en dan met lichte druk door te drukken totdat deze in het gaatje valt.

Eraf halen kan ook volg dan de omgekeerde route. Lichte druk zetten zodat het nokje uit het gaatje van het scherm gaat en dan is de beugel los.

### Koppelen aan Ultra of Ethernet Dongle

{% hint style="warning" %}
Gebruikt u de NRG Monitor met een **Ultra of Ethernet dongle** en is deze dongle via Ethernet aangesloten? Sluit dan altijd een USB-voeding aan op de dongle.
{% endhint %}

### Aansluiten

Een USB C kabel dient aangesloten te worden op een USB adapter of ander toestel met een USB aansluiting die als voeding gebruikt kan worden. U zult dat onderstaande startscherm zien.

<figure><img src="https://1639398339-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3mWyxx18EMPdJIRUd1nX%2Fuploads%2FjNUqQDL8HVscNtBy55pD%2FNRGM%20V1%20(15).png?alt=media&amp;token=b1936ee2-aab6-4be4-bee4-458bc7400a9d" alt="" width="375"><figcaption></figcaption></figure>

### Koppelen

Na het startscherm zal het koppelscherm zichtbaar worden, zie hieronder.

<figure><img src="https://1639398339-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3mWyxx18EMPdJIRUd1nX%2Fuploads%2FS9gjtjT8xhfKlJgB4GXO%2Fframe%20-%20koppelen.png?alt=media&amp;token=8542b36e-2298-499b-9e53-7f13fc20a692" alt="" width="375"><figcaption></figcaption></figure>

{% hint style="info" %}
Vaak zijn dongle en scherm al gekoppeld. Installeer eerst de dongle en dan het scherm. Dan ziet u of het nodig is om de koppelprocedure uit te voeren.
{% endhint %}

## Koppelprocedure

* Vanaf dongle firmware 5.3.5 (april 2026) dient eerst de **Data naar NRG Monitor** optie in de settings aangezet worden in de dongle.
* Op de P1 Dongle drukt u **1x kort op het knopje**.
* U **wacht** even totdat de NRG Monitor contact heeft gemaakt het **dashboard** wordt zichtbaar
* U bent **klaar** met koppelen!


# Schermen

De NRG Monitor is opgedeeld in meerdere schermen, namelijk:

1\) het centrale scherm: Dashboard

2\) Settings

3\) Budgetten

4\) Tarieven

5\) Wifi

Het Dashboard is standaard (na koppelen zichtbaar). De overige schermen zijn via het menu op te roepen.

## Het menu

Het menu is op te roepen door linksonder op het menu icoon te drukken. Zodra daar op geklikt wordt zal er een menu zichtbaar worden.

<div data-full-width="true"><figure><img src="https://1639398339-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3mWyxx18EMPdJIRUd1nX%2Fuploads%2FtRkAArDIcPGmmxMVCurz%2FNRGM%20V1%20(14).png?alt=media&amp;token=ec648f2d-bc6a-43be-9354-1342769f1a90" alt="" width="375"><figcaption></figcaption></figure></div>


# Dashboard

Het dashboard is het centrale scherm van de NRG Monitor.

<figure><img src="https://1639398339-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3mWyxx18EMPdJIRUd1nX%2Fuploads%2FpHUuOTUZJ922xw0RvT0T%2FNRGM%20V1%20(13).png?alt=media&amp;token=33a00e11-cbe5-4ca1-9c5b-9b57dedcd015" alt=""><figcaption></figcaption></figure>

De hoeken hebben een speciale functie, namelijk:

* rechtsboven: zodra er een update beschikaar is zal het groene update icoontje zichtbaar worden; door er op te klikken zal u naar het settingsscherm gaan waar u de update kunt starten
* rechtsonder: het wifi icoon is rood of groen; groen dan is er verbinding geweest met de huidige wifi gegevens; rood dan zijn deze gegevens niet aanwezig of niet juist; door op het icoon te klikken komt u bij het WiFi scherm
* linksonder: klik om het menu te activeren
* linksboven: datum en tijd. Deze komen uit de slimme meter; het rode hartje geeft aan dat de het toestel nog goed functioneert. Het hartje dient te "kloppen"

Op het dashboard kunnen verschillende gegevens worden getoond. Het aantal gegevens is afhankelijk van:

* zijn de gasmeter gegevens aanwezig
* zijn de watermeter gegevens aanwezig
* zijn de productiegegevens van zonnepanelen aanwezig

Wat is er maximaal te zien op het dashboard:

* linksboven: de hartslag. Deze laat zien dat het toestel nog functioneert.
* linksboven: de datum/tijd uit de slimme meter; deze wordt eens per seconde geuopdate. Slimme meters versie 2 en 3 geven geen tijd door. Dit zal dan de tijd van de tijdserver zijn.
* rechtsboven: een wifi icoon als teken dat de NRG Monitor ook gekoppeld is met uw wifi netwerk
* linksonder: Menu icoon om het menu op te roepen
* Groene meter linksboven: indien er een **gas** aansluiting is dan is de dagconsumptie hier te zien
* Blauwe meter linksonder indien er een **water** aansluiting is dan is de dagconsumptie hier te zien
* Meter in het midden: Elektra vermogen (grijs) of teruglevering (groen) is hier te zien
* Twee halve meters in het midden: de dagopwekking en huidige opwekking van de zonnepanelen
* meter rechtsboven: elektrakosten vandaag
* meter rechtsmidden: gaskosten vandaag
* meter rechtsonder: waterkosten vandaag
* in/uit levering: afname en teruglevering van elektra van vandaag

De cirkel om de meters geeft aan hoeveel er verbruikt is ten opzichte van het ingestelde budget. Zie Budgetten.

## Menu

Het menu kunt u op het dashboard activeren door linksonder op het menu icoontje te klikken. U ziet dan onderstaande. Kies een van de menu opties om naar dat scherm te gaan.

<figure><img src="https://1639398339-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3mWyxx18EMPdJIRUd1nX%2Fuploads%2FtRkAArDIcPGmmxMVCurz%2FNRGM%20V1%20(14).png?alt=media&amp;token=ec648f2d-bc6a-43be-9354-1342769f1a90" alt=""><figcaption></figcaption></figure>

## Updates (werkt alleen bij ingeschakelde wifi)

Indien er een wifi koppeling is zal het scherm bij opstarten en regelmatig checken of er een update aanwezig is. Is deze aanwezig dan wordt onderstaande scherm getoond.

<figure><img src="https://content.gitbook.com/content/3mWyxx18EMPdJIRUd1nX/blobs/zqOSfczYHH4fgHPuBY3v/Screenshot%202024-07-20%20at%2023.38.43.png" alt=""><figcaption></figcaption></figure>

Indien u de update wilt installeren drukt u op de Ja knopt.

U kunt de check ook adhoc aanroepen door naar het Settingsscherm te gaan. Dan wordt automatisch een updatecheck uitgevoerd.


# Settings

U komt bij het settingsscherm door op menu en daarna op Settings te drukken.

<figure><img src="https://1639398339-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3mWyxx18EMPdJIRUd1nX%2Fuploads%2FUQRe9VHLTRfRH454d9uz%2Fframe%20-%20setting%20met%20update.png?alt=media&amp;token=e19e7a70-d86d-4fce-ad2c-dd21d46a51a2" alt=""><figcaption></figcaption></figure>

Het scherm bevat de volgende onderdelen.

* **< terug:** wijzigingen opslaan en terug naar dashboard
* **schuifje** om de helderheid van het scherm in te stellen
* optie om de **update beschikbaarmelding** uit of aan te zetten
* **Reboot** knop om het toestel opnieuw op te starten
* **Update** knop (alleen zichtbaar indien er een nieuwere versie is)
* **Reset** knop: bij **lang** **indrukken** wordt de koppeling met de P1 Dongle gewist en het toestel opnieuw gestart. De NRG Monitor dient dan opnieuw gekoppeld te worden
* linksonder de softwareversie

## Beta versie

Door lang op het versienummer te drukken zal er rechtsboven een (b) of (d) verschijnen. Dit is een indicatie dat de beta versie gecheckt wordt. Is er een nieuwere beta versie beschikbaar dan kan er ene update gestart worden. Bij een herstart zal de beta versie check verdwijnen.


# Budgetten

{% hint style="success" %}
U kunt naar het Budgetten scherm gaan door in het dashboard het menu aan te klikken en vervolgens op Budget.
{% endhint %}

Via dit scherm is het mogelijk om maandbudgetten voor de verschillende bronnen in te stellen. Of alle drie de budgetten ingesteld kunnen worden is afhankelijk van de slimme meter data.

U kunt op onderstaande scherm komen door via Menu op Budget te klikken.

<figure><img src="https://1639398339-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3mWyxx18EMPdJIRUd1nX%2Fuploads%2FPaYI067eoatGE6EuGfpk%2Fframe%20-%20budgetten.png?alt=media&amp;token=529efac6-8b3b-4188-b416-c8aeeb5c60e9" alt=""><figcaption></figcaption></figure>

Per bron geeft u het maandelijkse budget op. Dit zou het budget kunnen zijn wat ook in de voorschotnota is verwerkt maar mag natuurlijk ook altijd wat uitdagender.

De budgetten zijn zichtbaar in de cirkels van de buitenste meters.

Drukt u op < terug dan worden de wijzigingen opgeslagen en gaat u terug naar het dashboard.


# Tarieven

{% hint style="success" %}
U kunt naar het Tarieven scherm gaan door in het dashboard het menu aan te klikken en vervolgens op Tarieven.
{% endhint %}

Om inzicht te krijgen in de kosten van het energieverbruik dient u de tarieven in te voeren.

De tariefdata in de dongle wordt als bron gebruikt. Indien deze in het display aangepast worden dan zullen ze ook in de dongle worden aangepast.

Het gaat om de Electriciteit, Gas en/of Water tarieven. Welke ingevoerd dienen te worden is afhankelijk welke slimme meter gegevens beschikbaar zijn.

<figure><img src="https://1639398339-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3mWyxx18EMPdJIRUd1nX%2Fuploads%2FYGs9mXa6GMWTLe3Fpisj%2FNRGM%20V1%20(10).png?alt=media&amp;token=8717dfa2-446a-4bac-ade4-289e146a7392" alt=""><figcaption></figcaption></figure>

Alle tarieven zijn op maandbasis. Door Elektra, Gas of Water te selecteren komt u bij de verschillende tarieven. Vervolgens drukt u op een van de groene vlakken. Dan opent het mutatiescherm, zoals op het voorbeeld hieronder.

<figure><img src="https://1639398339-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3mWyxx18EMPdJIRUd1nX%2Fuploads%2Fza07ofVv48t1IWU320WU%2FNRGM%20V1%20(12).png?alt=media&amp;token=1313082f-f955-4d59-a239-18170991434d" alt=""><figcaption></figcaption></figure>

Na het invoeren kunt u op het vinkje of kruisje drukken en komt u terug in het tarievenscherm.


# WiFi

{% hint style="danger" %}
Vanaf versie 2.1 is dit scherm vervallen. Er is geen koppeling met het wifi netwerk meer. Data uitwisseling (incl. Updates) verlopen altijd via de dongle.
{% endhint %}

{% hint style="success" %}
U kunt naar het Wifi scherm gaan door op het wifi icoon rechtsonder op het dashboard te klikken.
{% endhint %}

De NRG Monitor heeft in principe geen actieve Wifi verbinding nodig. De communicatie met de dongle verloopt rechtstreeks zonder tussenkomst van een Wifi netwerk.

Wel is er een Wifi verbinding nodig om te checken of er updates zijn en om deze te installeren. Wilt u dat het toestel automatisch checkt of er updates zijn dan is het advies om de Wifi koppeling te maken.

Eens per dag zal het toestel checken of er een update klaar staat. Hier krijgt u dan een notificatie over.

<figure><img src="https://1639398339-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3mWyxx18EMPdJIRUd1nX%2Fuploads%2FforoHC8FsMhnagwKe7gR%2FNRGM%20V1%20(9).png?alt=media&amp;token=3e4c6246-6454-42b1-8d5f-15700a5463b8" alt=""><figcaption></figcaption></figure>

U vult uw WiFi netwerknaam in en het bijbehorende wachtwoord. Het toestel zal bij het verlaten van het scherm direct checken of het netwerk benaderd kan worden en checken of er een update klaar staat.

Is er succesvol verbonden met het wifi netwerk dan ziet u dit in het dashboard omdat het wifi logo rechtsonder groen is.

## Gegevens uit de dongle

Heeft u een P1 dongle die al verbonden is met uw Wifi netwerk dan zullen deze gegevens automatisch met de NRG Monitor gedeeld worden. Deze gegevens ziet u staan in het Wifi scherm.

indien u deze gegevens wijzigt zal dit weer overschreven worden door de gegeven van de Wifi gevens uit de P1 dongle.


# Zonnepanelen

Indien de dongle ook productiegegevens ophaald van de omvormer(s) zullen deze gegevens ook zichtbaar worden in de NRG Monitor. Instellen hiervan kunt u in de handleiding van de dongle nalezen.

## Wat u ziet

Naast de basis functionaliteit van de NRG Monitor voegt de productie functie enkele gegevens toe. Bij gebruikt van meerdere omvormers worden de ingelezen waardes bij elkaar opgeteld.

<figure><img src="https://1639398339-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3mWyxx18EMPdJIRUd1nX%2Fuploads%2F3Qfekgp1ZuQn9u3nYOPE%2Fframe%20-%20dash%20met%20wifi.png?alt=media&amp;token=4f096a62-9b95-4c04-ac9f-6dfd54a9cfb0" alt=""><figcaption></figcaption></figure>

In het midden boven de elektra cirkel komen twee "oren" en een zonnetje te staan. HIeronder een verklaring van deze items

<table><thead><tr><th width="136">Item</th><th></th></tr></thead><tbody><tr><td>zonnetje</td><td>wordt geel zodra er opwekking plaatsvind (Aantal Watts > 0); anders is deze grijs</td></tr><tr><td>Linker oor</td><td>Geeft het opgewekte dagvermogen in Wh aan. De groene indicatie laat zien hoeveel van het totale potentieel benut wordt. Het systeemvermogen wordt hiervoor gebruikt en teruggerekend naar dag opwekking op basis van geschat jaaropbrengst</td></tr><tr><td>Rechter oor</td><td>Geeft het de actuele opwekking in Watts aan. De groene indicatie laat zie hoeveel energie er op dat moment opgewekt wordt ten opzichte van het maximale potentieel. Maximale potentieel is systeemvermogen * 85%.</td></tr></tbody></table>

De indicaties worden berekend op basis van het systeemvermogen en zullen afwijken. Ligging, hellingshoek, temperatuur, leeftijd spelen allemaal mee en zijn niet opgenomen in de schatting. Eventueel kunt u via aanpassing van systeemvermogen in de bestanden op de dongle worden getweaked.




---

[Next Page](/llms-full.txt/1)

