Files
goodwe-addon/goodwe_controller/DECISIONS/SAFETY-118-peak-forecast-unit.md
T
glenn schrooyenandClaude 7d52dc1c0f
checks / unit (pull_request) Successful in 40m19s
infra-pin / fresh (pull_request) Successful in 1s
SAFETY-118: a missing peak forecast reading keeps the unit-fault state
A missing reading (unavailable, unknown, failed read, non-numeric) no longer
clears the fault: no false 'used again' INFO, no repeated WARNING, the status
row stays. Adds pv.has_reading(). DECISIONS wording fixed; tests added.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-16 18:19:44 +02:00

1023 B

SAFETY-118 - the peak forecast is read in its own unit

Status: for review. Tests: test_safety118.py.

peak_forecast_entity was read as a bare number, and anything under 50 was multiplied by 1000 ("accept kW or W"). A W sensor reading 17 to 45 W, which a real site did 430 times in one morning, would be taken as 17 to 45 kW. The validator also called a kW sensor wrong, which was false for this entity.

Decision: the size rule is gone. The entity is read through pv.watts(), the same unit table and reader as the solar entities, so W, kW, MW and the rest convert by the sensor's own unit_of_measurement. No unit, or a unit that is not power (kWh), means the forecast is not used, exactly as if the option were empty: the loop cap and every non-forecast peak step still apply. One WARNING per cause, and a status row and a settings note say the same.

No size rule can be right in both units: 30 W and 30 kW are both ordinary. The read is still one GET /api/states/<id> per cycle, as hass.number() made.