{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "Carlo Gavazzi", "model": "ET112", "models": ["ET112"], "vendor_website": "gavazziautomation.com", "description": "Single-phase bidirectional energy meter with hour counter (DIN rail), RS485 Modbus RTU", "revision": 2, "revised": "2026-10-17", "source": "Carlo Gavazzi, \"EM100 Series and ET100 Series Modbus communication protocol\", public version 4.0 (June 2025)", "sources": [{"title": "EM100 Series and ET100 Series Modbus communication protocol", "version": "Public version 4.0", "date": "2025-06", "url": "https://www.gavazziautomation.com/fileadmin/images/PIM/OTHERSTUFF/COMPRO/EM100_ET100_Series_CPP.pdf"}], "notes": [ "FC03 or FC04 read (the same values), FC06 writes one register.", "32- and 64-bit values are low word first (bytes high first in each word).", "Out-of-range or invalid written values set the parameter to its default." ], "protocol": "rtu", "unit_id": 1, "baudrate": 9600, "parity": "N", "byte_order": "big", "word_order": "little", "address_base": 0, "max_read_registers": 125, "x_status": "official", "registers": [ {"name": "Voltage", "group": "Measurements", "area": "input", "address": "0x0000", "type": "int32", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "Current", "group": "Measurements", "area": "input", "address": "0x0002", "type": "int32", "scale": 0.001, "unit": "A", "access": "R"}, {"name": "Active power", "group": "Measurements", "area": "input", "address": "0x0004", "type": "int32", "scale": 0.1, "unit": "W", "access": "R"}, {"name": "Apparent power", "group": "Measurements", "area": "input", "address": "0x0006", "type": "int32", "scale": 0.1, "unit": "VA", "access": "R"}, {"name": "Reactive power", "group": "Measurements", "area": "input", "address": "0x0008", "type": "int32", "scale": 0.1, "unit": "var", "access": "R"}, {"name": "Power demand", "group": "Measurements", "area": "input", "address": "0x000A", "type": "int32", "scale": 0.1, "unit": "W", "access": "R"}, {"name": "Power demand peak", "group": "Measurements", "area": "input", "address": "0x000C", "type": "int32", "scale": 0.1, "unit": "W", "access": "R"}, {"name": "Power factor", "group": "Measurements", "area": "input", "address": "0x000E", "type": "int16", "scale": 0.001, "access": "R"}, {"name": "Frequency", "group": "Measurements", "area": "input", "address": "0x000F", "type": "int16", "scale": 0.1, "unit": "Hz", "access": "R"}, {"name": "Active energy import", "group": "Energy", "area": "input", "address": "0x0010", "type": "int32", "scale": 0.1, "unit": "kWh", "access": "R"}, {"name": "Reactive energy import", "group": "Energy", "area": "input", "address": "0x0012", "type": "int32", "scale": 0.1, "unit": "kvarh", "access": "R"}, {"name": "Active energy import partial", "group": "Energy", "area": "input", "address": "0x0014", "type": "int32", "scale": 0.1, "unit": "kWh", "access": "R"}, {"name": "Reactive energy import partial", "group": "Energy", "area": "input", "address": "0x0016", "type": "int32", "scale": 0.1, "unit": "kvarh", "access": "R"}, {"name": "Active energy import tariff 1", "group": "Energy", "area": "input", "address": "0x0018", "type": "int32", "scale": 0.1, "unit": "kWh", "access": "R"}, {"name": "Active energy import tariff 2", "group": "Energy", "area": "input", "address": "0x001A", "type": "int32", "scale": 0.1, "unit": "kWh", "access": "R"}, {"name": "Active energy export", "group": "Energy", "area": "input", "address": "0x0020", "type": "int32", "scale": 0.1, "unit": "kWh", "access": "R"}, {"name": "Reactive energy export", "group": "Energy", "area": "input", "address": "0x0022", "type": "int32", "scale": 0.1, "unit": "kvarh", "access": "R"}, {"name": "Hour counter", "group": "Measurements", "area": "input", "address": "0x002C", "type": "int32", "scale": 0.01, "unit": "h", "access": "R"}, {"name": "Carlo Gavazzi identification code", "group": "Identity", "area": "input", "address": "0x000B", "type": "uint16", "access": "R", "enum": {"120": "ET112", "121": "ET112"}, "role": "model", "description": "Read alone, one word at a time: the same address is the high word of the power demand"}, {"name": "Version code", "group": "Identity", "area": "input", "address": "0x0302", "type": "uint16", "access": "R", "description": "0 = A, 1 = B …"}, {"name": "Revision code", "group": "Identity", "area": "input", "address": "0x0303", "type": "uint16", "access": "R"}, {"name": "Serial number character 1", "group": "Identity", "area": "input", "address": "0x5000", "type": "uint16", "access": "R", "description": "ASCII code in the low byte"}, {"name": "Serial number character 2", "group": "Identity", "area": "input", "address": "0x5001", "type": "uint16", "access": "R"}, {"name": "Serial number character 3", "group": "Identity", "area": "input", "address": "0x5002", "type": "uint16", "access": "R"}, {"name": "Serial number character 4", "group": "Identity", "area": "input", "address": "0x5003", "type": "uint16", "access": "R"}, {"name": "Serial number character 5", "group": "Identity", "area": "input", "address": "0x5004", "type": "uint16", "access": "R"}, {"name": "Serial number character 6", "group": "Identity", "area": "input", "address": "0x5005", "type": "uint16", "access": "R"}, {"name": "Serial number character 7", "group": "Identity", "area": "input", "address": "0x5006", "type": "uint16", "access": "R"}, {"name": "Measuring system", "group": "Settings", "area": "holding", "address": "0x1002", "type": "uint16", "access": "R", "enum": {"0": "1P"}}, {"name": "Demand integration time", "group": "Settings", "area": "holding", "address": "0x1010", "type": "uint32", "unit": "min", "access": "RW", "write_min": 1, "write_max": 30}, {"name": "Pulse on time", "group": "Settings", "area": "holding", "address": "0x1012", "type": "uint32", "access": "RW", "enum": {"0": "30 ms", "1": "100 ms"}}, {"name": "kWh per pulse, output 1", "group": "Settings", "area": "holding", "address": "0x1020", "type": "uint32", "access": "RW"}, {"name": "kWh per pulse, output 2", "group": "Settings", "area": "holding", "address": "0x1022", "type": "uint32", "access": "RW"}, {"name": "Tariff management", "group": "Settings", "area": "holding", "address": "0x1101", "type": "uint16", "access": "RW", "enum": {"0": "Off", "1": "On"}}, {"name": "Measurement mode", "group": "Settings", "area": "holding", "address": "0x1103", "type": "uint16", "access": "RW", "enum": {"0": "A (easy connection)", "1": "B (bidirectional)"}, "description": "Writable on non-MID (X) versions only"}, {"name": "Tariff selection mode", "group": "Settings", "area": "holding", "address": "0x1200", "type": "uint16", "access": "RW", "enum": {"0": "Digital inputs", "1": "Serial"}}, {"name": "Tariff via serial", "group": "Settings", "area": "holding", "address": "0x1201", "type": "uint16", "access": "RW", "enum": {"1": "Tariff 1", "2": "Tariff 2"}}, {"name": "RS485 address", "group": "Settings", "area": "holding", "address": "0x2000", "type": "uint16", "access": "RW", "write_min": 1, "write_max": 247}, {"name": "RS485 baud rate", "group": "Settings", "area": "holding", "address": "0x2001", "type": "uint16", "access": "RW", "enum": {"1": "9600", "2": "19200", "3": "38400", "4": "57600", "5": "115200"}}, {"name": "RS485 parity", "group": "Settings", "area": "holding", "address": "0x2002", "type": "uint16", "access": "RW", "enum": {"1": "None", "2": "Even"}}, {"name": "RS485 stop bits", "group": "Settings", "area": "holding", "address": "0x2003", "type": "uint16", "access": "RW", "enum": {"1": "1", "2": "2"}, "description": "2 only with no parity"}, {"name": "Max words per read", "group": "Settings", "area": "holding", "address": "0x2004", "type": "uint16", "access": "R"}, {"name": "Reset partial and tariff meters and demand", "group": "Commands", "area": "holding", "address": "0x4000", "type": "uint16", "access": "W", "enum": {"1": "Execute"}}, {"name": "Reset total energy meters", "group": "Commands", "area": "holding", "address": "0x4001", "type": "uint16", "access": "W", "enum": {"1": "Execute"}, "description": "Non-MID (X) versions only"}, {"name": "Reset hour counter", "group": "Commands", "area": "holding", "address": "0x4002", "type": "uint16", "access": "W", "enum": {"1": "Execute"}} ] }