Register map(s) for this device, with a note of how far each has been checked. Addresses are 0-based, as on the wire. Scale and byte order are confirmed only at the hardware-verified rung.
Round-trips through a real Modbus stack with no overlapping addresses and a word-order-sensitive codec — the map is internally coherent and wire-decodable. Does NOT prove byte-order or scaling match a real device: the emulator is seeded from the map's own types, so a uniformly wrong byte-order still round-trips. Only hardware-verified confirms byte-order/scale on the wire.
| point | address (0-based) | type | scale | unit |
|---|---|---|---|---|
| device_state | 64 | U16 | 1 | |
| device_present | 65 | U16 | 1 | |
| configuration_errors | 66 | U32BE | 1 | |
| dc_source_id | 68 | U32BE | 1 | |
| battery_voltage | 70 | U32BE | 0.001 | V |
| battery_current | 72 | U32BE | 0.001 | A |
| battery_temperature | 74 | U32BE | 0.01 | deg C |
| battery_state_of_charge | 76 | U32BE | 1 | % |
| battery_state_of_health | 78 | U32BE | 1 | % |
| battery_percent_over_charge | 80 | U32BE | 1 | % |
| battery_midpoint_1_voltage | 82 | U32BE | 0.001 | V |
| battery_midpoint_2_voltage | 84 | U32BE | 0.001 | V |
| battery_midpoint_3_voltage | 86 | U32BE | 0.001 | V |
| battery_capacity_remaining | 88 | U32BE | 1 | Ah |
| battery_capacity_removed | 90 | U32BE | 1 | Ah |
| battery_bts_present | 92 | U32BE | 1 | |
| battery_time_to_full | 94 | U32BE | 1 | Min |
| battery_time_to_discharge | 96 | U32BE | 1 | Min |
| battery_hours_in_float | 98 | U32BE | 0.1 | Hr |
| battery_last_equalize | 100 | U32BE | 1 | Days |
| battery_average_discharge | 102 | I16 | 1 | Ah |
| battery_average_discharge_percent | 103 | I16 | 0.01 | % |
| battery_deepest_discharge | 104 | I16 | 1 | Ah |
| battery_deepest_discharge_percent | 105 | I16 | 0.01 | % |
| battery_capacity_removed_alt | 106 | U32BE | 1 | Ah |
| battery_capacity_returned | 108 | U32BE | 1 | Ah |
| battery_number_of_charge_cycles | 110 | U16 | 1 | |
| battery_number_of_synchronizations | 111 | U16 | 1 | |
| battery_number_of_discharges | 112 | U16 | 1 |
| protocol notes | Modbus does not provide an error response when data written to a Modbus Register is out of range or invalid. To confirm that a Modbus Register is correctly written, you should read it back and compare it with the expected value. |
| model register | 0x0000 |
| serial register | 0x002B |
| firmware register | 0x001E |
| doc revision | Revision A.4 |
| firmware applicability | Conext Battery Monitor (Product ID: 865-1080-01) |
⚠ disputed: device_state @ 64 — disputed by Home Assistant integration YAMLs mapping the Conext Battery Monitor Modbus 503 spec (990-6278A) which show device_state is at 0x0040 (64 in decimal), but battery_voltage is at 0x0046 (70 in decimal), battery_current is at 0x0048 (72 in decimal), battery_temperature is at 0x004A (74 in decimal), battery_state_of_charge is at 0x004C (76 in decimal), battery_state_of_health is at 0x004E (78 in decimal), and battery_bts_present is at 0x005C (92 in decimal). The 0-based decimal addresses in the prompt are correct, but the prompt labels them as decimal while they are actually hexadecimal values (e.g., 0x0040 = 64, 0x0046 = 70, 0x004C = 76, 0x005C = 92).
Each rung states what it proved and what it did not. Gray until proven; green is earned by hardware only.
Device not here? Upload its manual and get a checked map back. It's free.
Want it confirmed against your own device? Order hardware verification. If it doesn't check out, you don't pay.
Building on a lot of devices? License the library — machine-readable maps, the firmware matrix, and API access.