v1.0.0
v1.0.0 — Architecture Overhaul, 140+ New Entities & Battery BMS Support
Version 1.0.0 is our biggest release yet! This milestone features a complete internal rewrite following SOLID principles, support for 140+ new entities covering the full Modbus V23 protocol, and direct battery BMS monitoring with auto-discovery.
🚀 New Features
🔋 Battery BMS Monitoring (Only for LXP Batteries) (#114)
- Direct Battery Data: Read real-time data from your battery BMS via Modbus register range 5000+.
- 18 Sensors Per Battery: Capacity, Voltage, Current, SOC, SOH, Cycle Count, Max/Min Cell Voltage, Max/Min Cell Temperature, Cell Voltage Difference, Firmware Version, and more.
- Auto-Discovery Mode: Set battery entities to
autoand the integration will automatically detect connected batteries and create entities dynamically. - Manual Configuration: Specify comma-separated battery serial numbers for explicit control.
- Per-Battery Sub-Devices: Each battery appears as a separate sub-device under the main inverter when Device Grouping is enabled.
⚡ 140+ New Entity Definitions
- 109 new number entities for comprehensive inverter control: three-phase power settings, advanced battery management, grid peak shaving, and generator controls.
- 23 new sensor entities for three-phase power monitoring (S/T phases), battery diagnostics, BMS exception reasons, and charge/discharge disable reasons.
- 6 new time entities for additional Charge First and AC First scheduling periods.
- 2 new button entities for inverter control actions.
- Enabled by Default: All entities are now enabled by default—no more hunting through disabled entities to find what you need.
🔋 BMS Charge Request Sensors (#109)
- New sensors to indicate when the battery BMS is actively requesting charge from the inverter.
📋 Protocol V23 Register Updates
- 7 new input register constants: Three-phase diagnostic registers (ExceptionReason1/2, ChgDischgDisableReason), Generator power S/T phases, On-grid load power S/T phases.
- Grid Overload warning code (W010) for Trip6-20k models.
🐛 Bug Fixes
- Fixed warning code byte swap: Warning codes are now correctly extracted from the low byte of the register value, resolving incorrect warning displays.
🛠️ Architecture & Code Quality (#113)
🏗️ SOLID Refactoring
The entire Modbus client has been decomposed into focused, single-responsibility classes:
- ConnectionManager: TCP connection lifecycle, reconnection logic, and retry management.
- PacketRecoveryHandler: Recovers valid Modbus frames from corrupted or partial data streams.
- DataValidator: Validates register data sanity (time values, ranges).
- InverterDiscovery: Model identification during initial setup.
- Coordinator: Extracted into its own module for cleaner separation of concerns.
🧪 Comprehensive Test Suite
4 new test modules with 124 tests covering all critical paths:
test_connection_manager.py: Connection lifecycle, retry logic, reconnection behavior.test_packet_recovery.py: Frame recovery from corrupted and partial streams.test_data_validator.py: Register data validation and boundary conditions.test_modbus_client.py: End-to-end client behavior and data flow.
⚠️ Breaking Changes
- Entity Visibility: All entities are now enabled by default. If you previously relied on certain entities being disabled, you may need to manually disable them after upgrading.
🤝 Contributors
Special thanks to @ivanfmartinez for the original battery data decoding implementation in PR #65, which served as the foundation for the battery BMS support.
📈 Statistics
- 38 files changed, 4,997 additions, 879 deletions.
- 4 pull requests merged.
- 140+ new entities added.
- 124 automated tests across 4 test modules.
- 18 battery sensors per connected battery.
- 5 new architectural classes for maintainability.
Full Changelog: 0.2.5...1.0.0