-
released this
2026-06-30 17:20:55 +02:00 | 7 commits to main since this releasev1.4.0 — DDSU666 Modbus meter support
Adds support for the CHINT DDSU666 single-phase smart meter alongside the
existing Eastron SDM120, and generalizes the Modbus read driver so the read
function code is chosen per device profile instead of being hardcoded.
Validated end-to-end against real DDSU666 hardware.Highlights
- 🆕 DDSU666 support — a second supported energy meter model.
- 🔧 Per-profile read function code — the driver now selects FC03 (holding) vs FC04 (input) registers based on the device profile.
- ✅ Hardware-validated — confirmed on a live DDSU666 (big-endian word order, FC03 reads, energy accumulation).
Added
- DDSU666 device profile (
ddsu666.yaml): reads via FC03 holding registers — voltage, current, active power (kW), reactive power (kvar), power factor, frequency, import/export active energy. Big-endian word and byte order. - DDSU666 Modbus protocol reference (
docs/references/DDSU666-Modbus-Protocol.md), extracted from the official CHINT manual: register map, frame format, function codes, CRC/exception handling, an SDM120 comparison table, and field notes from real-hardware validation.
Changed
driver.read_blocksnow selects the read function code per profile (function_code: 4 = FC04 input registers — default, SDM120; 3 = FC03 holding registers — DDSU666), validated before connecting. Previously the read path was hardcoded to FC04 and the profile'sfunction_codefield was declared but never honored.function_codeis now threaded through every read path: themodbus_cli readcommand, the background poller, and the device/testendpoint. The CLIreadoutput additionally prints the active function code.
Compatibility
- SDM120 behavior is unchanged (still FC04).
- No API or OpenAPI schema changes.
- Read-only — no meter configuration registers are ever written.
Verification
- Full test suite green (1037 passed), ruff clean, OpenAPI unchanged; multi-stage Docker image builds, migrates, and boots cleanly.
- Confirmed on a live DDSU666: big-endian word order correct, FC03 reads decode to sensible values, cumulative energy (kWh) accumulates correctly.
- Note: at load currents below the meter's measuring range (Imin ≈ 0.25 A), the instantaneous active power and power factor read 0 while energy still accumulates — expected meter behavior at very low current, not a decoding issue.
Docs
- Roadmap updated to queue Authentication next-steps (sliding session renewal + long-lived token targets).
Downloads