peak_forecast_entity is read through pv.watts() by its unit_of_measurement; the abs(raw) < 50 size rule is gone. No unit or a non-power unit means the forecast is not used, with one warning per cause. The validator no longer claims a kW sensor is taken as watts for this entity. Co-Authored-By: Claude <noreply@anthropic.com>
1018 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, was 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.