Kostal KOSTAL Smart Energy Meter Modbus register map
Also covers KSEM
KOSTAL Smart Energy Meter (KSEM) as Modbus RTU slave (RS485 A/B) or Modbus TCP slave (port 502): internal OBIS power and energy registers
- Official
- 65 registers
- Modbus TCP
- Revision 3 · 2026-11-10
- Identity: firmware, serial number
Official: Written from the manufacturer's documentation, but not tested on a device yet. Check the map against the manufacturer's documentation before you write to a live device. Tested it? Report a test.
Communication
- Protocol
- Modbus TCP
- Unit ID
- 1
- TCP port
- 502
- Byte / word order
- ABCD · bytes big-endian, words high first
- Addresses
- 0-based
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 65 holding registers
- Groups
- 3
- Revision
- 3 · 2026-11-10
- Added
- ()
- File
- maps/kostal/kostal-smart-energy-meter.mbmap.json · 14 KB · history
- SHA-256
- 44446b73c037a8b0b4294183e6a4344481c4c3e8c8ec8a42880782e0cfbe8d05
- Manufacturer
- kostal-solar-electric.com
Device identity
What a tool can read to check that this map fits the connected device (SPEC.md section 4.7). Registers with a role are read like any other register.
| Role | Register | Address | Type | Values |
|---|---|---|---|---|
| Serial number | Serial number | holding 8228 | string[16] | |
| Firmware | Firmware major | holding 8195 | uint16 bits 8–15 | |
| Firmware | Firmware minor | holding 8195 | uint16 bits 0–7 |
Sources and notes
- KOSTAL Smart Energy Meter Interface description Sections 3.2 and 3.3: internal instantaneous and energy registers
Source: KOSTAL Solar Electric, "KOSTAL Smart Energy Meter - Modbus interface description" (BA KOSTAL Interface KSEM EN)
- Registers are read with FC03. Multi-register values are big-endian, high word first; request all registers of a value in one read.
- Modbus TCP slave listens on port 502 (802 with TLS). The RS-485 ports are configured in the web interface; the document gives no serial defaults.
- Power values are split into + (import) and - (export) registers, each unsigned.
- Unlisted registers return exception 0x02. Only the identity part of the KSEM/RM PnP block (8195 and 8196 to 8243) is in this map. Not in this map: the rest of the PnP block (8192 onwards), the SunSpec block (40000-40177), and the energy flow, wallbox, group and sensor blocks.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 0 | uint32 ABCD | R | W | ×0.1 | OBIS 1-0:1.4.0*255 | |
| HR | 2 | uint32 ABCD | R | W | ×0.1 | OBIS 1-0:2.4.0*255 | |
| HR | 4 | uint32 ABCD | R | var | ×0.1 | OBIS 1-0:3.4.0*255 | |
| HR | 6 | uint32 ABCD | R | var | ×0.1 | OBIS 1-0:4.4.0*255 | |
| HR | 16 | uint32 ABCD | R | VA | ×0.1 | OBIS 1-0:9.4.0*255 | |
| HR | 18 | uint32 ABCD | R | VA | ×0.1 | OBIS 1-0:10.4.0*255 | |
| HR | 24 | int32 ABCD | R | ×0.001 | OBIS 1-0:13.4.0*255 | ||
| HR | 26 | uint32 ABCD | R | Hz | ×0.001 | OBIS 1-0:14.4.0*255 | |
| HR | 40 | uint32 ABCD | R | W | ×0.1 | OBIS 1-0:21.4.0*255 | |
| HR | 42 | uint32 ABCD | R | W | ×0.1 | OBIS 1-0:22.4.0*255 | |
| HR | 44 | uint32 ABCD | R | var | ×0.1 | OBIS 1-0:23.4.0*255 | |
| HR | 46 | uint32 ABCD | R | var | ×0.1 | OBIS 1-0:24.4.0*255 | |
| HR | 56 | uint32 ABCD | R | VA | ×0.1 | OBIS 1-0:29.4.0*255 | |
| HR | 58 | uint32 ABCD | R | VA | ×0.1 | OBIS 1-0:30.4.0*255 | |
| HR | 60 | uint32 ABCD | R | A | ×0.001 | OBIS 1-0:31.4.0*255 | |
| HR | 62 | uint32 ABCD | R | V | ×0.001 | OBIS 1-0:32.4.0*255 | |
| HR | 64 | int32 ABCD | R | ×0.001 | OBIS 1-0:33.4.0*255 | ||
| HR | 80 | uint32 ABCD | R | W | ×0.1 | OBIS 1-0:41.4.0*255 | |
| HR | 82 | uint32 ABCD | R | W | ×0.1 | OBIS 1-0:42.4.0*255 | |
| HR | 84 | uint32 ABCD | R | var | ×0.1 | OBIS 1-0:43.4.0*255 | |
| HR | 86 | uint32 ABCD | R | var | ×0.1 | OBIS 1-0:44.4.0*255 | |
| HR | 96 | uint32 ABCD | R | VA | ×0.1 | OBIS 1-0:49.4.0*255 | |
| HR | 98 | uint32 ABCD | R | VA | ×0.1 | OBIS 1-0:50.4.0*255 | |
| HR | 100 | uint32 ABCD | R | A | ×0.001 | OBIS 1-0:51.4.0*255 | |
| HR | 102 | uint32 ABCD | R | V | ×0.001 | OBIS 1-0:52.4.0*255 | |
| HR | 104 | int32 ABCD | R | ×0.001 | OBIS 1-0:53.4.0*255 | ||
| HR | 120 | uint32 ABCD | R | W | ×0.1 | OBIS 1-0:61.4.0*255 | |
| HR | 122 | uint32 ABCD | R | W | ×0.1 | OBIS 1-0:62.4.0*255 | |
| HR | 124 | uint32 ABCD | R | var | ×0.1 | OBIS 1-0:63.4.0*255 | |
| HR | 126 | uint32 ABCD | R | var | ×0.1 | OBIS 1-0:64.4.0*255 | |
| HR | 136 | uint32 ABCD | R | VA | ×0.1 | OBIS 1-0:69.4.0*255 | |
| HR | 138 | uint32 ABCD | R | VA | ×0.1 | OBIS 1-0:70.4.0*255 | |
| HR | 140 | uint32 ABCD | R | A | ×0.001 | OBIS 1-0:71.4.0*255 | |
| HR | 142 | uint32 ABCD | R | V | ×0.001 | OBIS 1-0:72.4.0*255 | |
| HR | 144 | int32 ABCD | R | ×0.001 | OBIS 1-0:73.4.0*255 | ||
| HR | 146 | uint32 ABCD | R | W | ×0.1 | ||
| HR | 512 | uint64 ABCD | R | Wh | ×0.1 | OBIS 1-0:1.8.0*255 | |
| HR | 516 | uint64 ABCD | R | Wh | ×0.1 | OBIS 1-0:2.8.0*255 | |
| HR | 520 | uint64 ABCD | R | varh | ×0.1 | OBIS 1-0:3.8.0*255 | |
| HR | 524 | uint64 ABCD | R | varh | ×0.1 | OBIS 1-0:4.8.0*255 | |
| HR | 544 | uint64 ABCD | R | VAh | ×0.1 | OBIS 1-0:9.8.0*255 | |
| HR | 548 | uint64 ABCD | R | VAh | ×0.1 | OBIS 1-0:10.8.0*255 | |
| HR | 592 | uint64 ABCD | R | Wh | ×0.1 | OBIS 1-0:21.8.0*255 | |
| HR | 596 | uint64 ABCD | R | Wh | ×0.1 | OBIS 1-0:22.8.0*255 | |
| HR | 600 | uint64 ABCD | R | varh | ×0.1 | OBIS 1-0:23.8.0*255 | |
| HR | 604 | uint64 ABCD | R | varh | ×0.1 | OBIS 1-0:24.8.0*255 | |
| HR | 624 | uint64 ABCD | R | VAh | ×0.1 | OBIS 1-0:29.8.0*255 | |
| HR | 628 | uint64 ABCD | R | VAh | ×0.1 | OBIS 1-0:30.8.0*255 | |
| HR | 672 | uint64 ABCD | R | Wh | ×0.1 | OBIS 1-0:41.8.0*255 | |
| HR | 676 | uint64 ABCD | R | Wh | ×0.1 | OBIS 1-0:42.8.0*255 | |
| HR | 680 | uint64 ABCD | R | varh | ×0.1 | OBIS 1-0:43.8.0*255 | |
| HR | 684 | uint64 ABCD | R | varh | ×0.1 | OBIS 1-0:44.8.0*255 | |
| HR | 704 | uint64 ABCD | R | VAh | ×0.1 | OBIS 1-0:49.8.0*255 | |
| HR | 708 | uint64 ABCD | R | VAh | ×0.1 | OBIS 1-0:50.8.0*255 | |
| HR | 752 | uint64 ABCD | R | Wh | ×0.1 | OBIS 1-0:61.8.0*255 | |
| HR | 756 | uint64 ABCD | R | Wh | ×0.1 | OBIS 1-0:62.8.0*255 | |
| HR | 760 | uint64 ABCD | R | varh | ×0.1 | OBIS 1-0:63.8.0*255 | |
| HR | 764 | uint64 ABCD | R | varh | ×0.1 | OBIS 1-0:64.8.0*255 | |
| HR | 784 | uint64 ABCD | R | VAh | ×0.1 | OBIS 1-0:69.8.0*255 | |
| HR | 788 | uint64 ABCD | R | VAh | ×0.1 | OBIS 1-0:70.8.0*255 | |
| HR | 8196 | string[16] | R | KSEM/RM PnP block, padded with NUL bytes | |||
| HR | 8212 | string[16] | R | KSEM/RM PnP block, padded with NUL bytes | |||
| HR | 8228 | string[16] | R | KSEM/RM PnP block, padded with NUL bytes | |||
| HR | 8195 | uint16 bits 8–15 | R | KSEM/RM PnP block: 0x0103 is 1.3.x | |||
| HR | 8195 | uint16 bits 0–7 | R | KSEM/RM PnP block: 0x0103 is 1.3.x |
No registers match
Try part of the name, an address (decimal or 0x hex) or clear the filters.
Help improve this map
- I tested it on a deviceReport whether it worked, even if you did not write the map.
- Suggest a correctionEdit the file on GitHub; it opens a pull request.
- Report a problemA wrong address, type, scale or byte order.
- Read the formatWhat each key of the file means (SPEC.md).