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>
19 lines
1023 B
Markdown
19 lines
1023 B
Markdown
# 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.
|