Leave out unusable rooms instead of pausing; add keep-last-value option
A single stale, unavailable, missing or invalid room sensor paused learning and forecasts for every room. That is not acceptable once the MPC may control heating. Now such a room is left out: the weighted temperature, learning and the optimizer use the remaining rooms with their weights re-normalized, and a room learns only across poll pairs where it was usable at both ends. Readiness considers only the rooms used. Everything pauses only when no room is usable or a shared input (relay, thermostat, outdoor temperature) is missing. A new setup/Configure checkbox, room_stale_use_last_value (default off), keeps using a stale room sensor's last value instead, for sensors that report only on change. It never applies to unavailable or invalid sensors, or to a sensor silent for more than 24 hours. Status adds excluded_rooms, weight_coverage and a per-room "used" flag. English and Romanian labels and help text added. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
cd8b65ac2f
commit
3076beebfb
10 files changed
+184
-34
No files matched your search
@@ -74,7 +74,10 @@ is available only while it is `ready`. Useful attributes:
|
||||
`invalid_timestamp`, `future_timestamp` or `invalid_value_or_unit`),
|
||||
`age_seconds` (time since the sensor last reported to HA) and
|
||||
`max_age_seconds_24h` (largest age seen at polls in the last 24 hours; resets on
|
||||
reload and can read up to one poll, 5 minutes, low).
|
||||
reload and can read up to one poll, 5 minutes, low). Rooms also have `used`:
|
||||
whether that room's reading was used in this poll.
|
||||
- `excluded_rooms` and `weight_coverage` — rooms left out of this poll, and the
|
||||
share of the total comfort weight still covered by the rooms used (1.0 = all).
|
||||
- `heat_lag` and `heat_lag_uncertainty` — the radiator-lag estimate (0 cold, 1 fully
|
||||
warm) and its error bound. Learning waits while the bound is above 0.1, for
|
||||
example for about 30 minutes after an HA restart.
|
||||
@@ -91,18 +94,31 @@ written to the Recorder; the other attributes are.
|
||||
### Choosing freshness limits
|
||||
|
||||
Room and weather report-age limits are set during setup and in **Configure**
|
||||
(5–1440 minutes; defaults 30 for rooms and 120 for weather). A room sensor older
|
||||
than its limit pauses learning and forecasts for **all** rooms until it reports
|
||||
again. A stale outdoor source falls back to the next one in its list; optional
|
||||
weather metrics never block. Recovery starts a new sampling interval, so nothing is
|
||||
learned across an outage.
|
||||
(5–1440 minutes; defaults 30 for rooms and 120 for weather).
|
||||
|
||||
Within the limit, the last reading counts as current, so a too-generous limit lets
|
||||
a frozen value be learned for a while. A too-tight limit pauses the integration
|
||||
whenever a sensor is quietly between reports. Freshness uses HA's `last_reported`:
|
||||
the time a sensor last reported to HA, even with an unchanged value. It is not the
|
||||
age of the physical measurement, so a provider re-publishing cached data looks
|
||||
fresh, and sensors that report only on change can look stale in a steady room.
|
||||
A room sensor that is older than its limit, unavailable, missing or invalid is
|
||||
**left out**: the weighted temperature, learning and forecasts continue with the
|
||||
other rooms, whose weights are re-normalized. Status shows it in `excluded_rooms`.
|
||||
Learning and forecasts pause only when no room is usable, or when the relay,
|
||||
thermostat or outdoor temperature is missing. A room that reports again learns
|
||||
from its second poll onwards, so nothing is learned across its gap.
|
||||
|
||||
The checkbox **Keep using the last value of a room sensor that stopped reporting**
|
||||
changes this for stale sensors: their last value is still used, for up to 24 hours
|
||||
without a report. Use it for sensors that report only when the value changes.
|
||||
Unavailable or invalid sensors are always left out, and so is any sensor silent
|
||||
for more than 24 hours, since it is most likely dead.
|
||||
|
||||
A stale outdoor source falls back to the next one in its list; optional weather
|
||||
metrics never block.
|
||||
|
||||
Within the limit (or with the checkbox on), the last reading counts as current,
|
||||
so a frozen value can be learned for a while. A too-tight limit (with the checkbox
|
||||
off) drops a room whenever its sensor is quietly between reports. Freshness uses
|
||||
HA's `last_reported`: the time a sensor last reported to HA, even with an unchanged
|
||||
value. It is not the age of the physical measurement, so a provider re-publishing
|
||||
cached data looks fresh, and sensors that report only on change can look stale in
|
||||
a steady room.
|
||||
|
||||
After a day of running, set each limit comfortably above (about 1.5–2×) the largest
|
||||
`max_age_seconds_24h` among the sensors it covers. The relay and thermostat have no
|
||||
|
||||
Reference in new issue
Block a user