> For the complete documentation index, see [llms.txt](https://docs.smart-stuff.nl/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.smart-stuff.nl/p1-modbus-dongle/firmware-v2-current/register-mapping/em111.md).

# EM111

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