Release 1.4.3 🌞
Small fixes on top of 1.4.2 — a regression fix, two guards against a real control-loss incident, and a solar pass-through improvement.
🩹 Fixes
- Fix Zero-Export / SOCFULL bypass with gridReverse "disabled" by @zaubara in #1512 — a regression from the 1.4.0 gridReverse rework: "disabled" (0) was treated as export-allowed, so a full battery could no longer follow the requested output. Only "allow" now enables the bypass accounting; "disabled" and "forbidden" both mean no export.
- Feed all available solar at SOCFULL instead of stalling by @zaubara in #1511 — a SOCFULL device no longer gets stuck at ~50W; it now passes through the real available solar (bounded by demand and the discharge limit), so a full battery's panels aren't wasted.
🛡️ Control-loss guards (issue #1505)
A SolarFlow 2400 Pro was observed reporting a narrowed limit (inverseMaxPower=800) for hours and, at 100% SoC, silently ignoring commands — leaving the battery stuck while the house drew from the grid. Two independent guards:
- Clamp number writes instead of failing by @marcokrenkel-collab in #1506 — when a device narrows an entity's range at runtime, a
number.set_valueabove the narrowed max is now clamped (with a warning) instead of being rejected by Home Assistant and discarded. Control degrades gracefully rather than being lost. - Send the full command on limit writes by @marcokrenkel-collab in #1507 — external
output_limit/input_limitwrites now go through the same full command (smartMode/acMode) as the manager's own control, so they aren't silently ignored when the device has dropped out of smart mode.
⚙️ Manager
- Pass through available solar in MATCHING_DISCHARGE by @igosoft in #1408 — smart-discharge now passes all available solar to the house and uses the battery only to cover remaining demand (never draining for export). Folds the "solar pass-through" use case into the existing mode, so no separate mode is needed.
🔧 Build / dependencies
- Bump ruff from 0.15.20 to 0.15.21 (#1509)
Full Changelog: 1.4.2...1.4.3