Register map(s) for this device, each at the trust rung it earned. Addresses are 0-based as on the wire. Word order and scaling are confirmed at the hardware-verified rung and at no rung below it.
Read + decoded cleanly over a real network vs an independent third-party Modbus test server (transport and framing; reads are remapped into the server's register window, so the map's own addresses are NOT exercised). Does NOT prove word order/scaling against the actual device.
| 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.
If your device isn't here, upload its register map. Generation is free, and the connector keeps the rung it earns under testing.
To prove a connector against your own device, order hardware verification. If it doesn't verify, you don't pay.
Platform builders can license the verified library: machine-readable maps, the firmware matrix, API access.