VPS-90: hass 预测电费 Block D 并入 Block C,修 Core 重启后 unknown

csg_predicted_cost_ladder 唯一触发源 csg_predicted_usage 的首次渲染事件
先于其触发器挂载,homeassistant start 触发器在 running 后 attach 不再
触发,重启后该实体直到下一次上游轮询/00:05 都不渲染。并入 Block C 同批
渲染消除竞态;调价改 Block B + Block C 两处 variables(文件不再有 D)。
重启后 15 个 csg_* 全部数值(158.98 元,与手算一致),备份
csg_sensors.yaml.bak-20260923-pre-blockd-merge;Plane VPS-90 已记录。
This commit is contained in:
windyboy
2026-09-24 07:35:54 +08:00
parent d6fbbe13c5
commit 1512dde3ec
+27
View File
@@ -414,6 +414,33 @@ live state 完全一致(`csg_30d_avg` 9.07 / `csg_predicted_usage` 268.45 /
`states_raw` 08:17:04Z 158.54 → 08:17:10Z 157.19)。**注意**`w` 的爬升窗口 `states_raw` 08:17:04Z 158.54 → 08:17:10Z 157.19)。**注意**`w` 的爬升窗口
(14 天)是回测选出来的单月参数,属弱证据,换季/换季后值得复看。 (14 天)是回测选出来的单月参数,属弱证据,换季/换季后值得复看。
**`csg_sensors.yaml` 预测电费 Block D 并入 Block C2026-09-24,修重启后 unknown:**
症状:`dashboard-unknown/power-monitor` 的「预计本月电费(估算)」=
`sensor.csg_predicted_cost_ladder` 在 2026-09-23 22:09 CST Core 重启(2026.9.3)后卡
`unknown`,其余 14 个 `csg_*` 正常;同一 state 模板经 REST `/api/template` 手动渲染出
158.98,计算本身无错。根因是**启动渲染竞态**:Block D 唯一的动态触发源是
`csg_predicted_usage` 的 state 变化,而该实体由 Block C 在启动时渲染出首次值
unknown→269.14),这次变化先于 Block D 触发器挂载约 25 ms,被错过;
`homeassistant start` 触发器在 HA 已进入 running 后才 attach 就不再触发
`helpers/triggers/homeassistant.py` 源码注释明示),于是重启后 Block D 不再渲染,
直到下一次上游轮询或 00:05 time_pattern。修复:删 Block D
`csg_predicted_cost_ladder` 定义原样并入 Block C 的 `sensor:` 列表末尾
`csg_prediction_progress` 同款位置——同一 coordinator 批次渲染、列于
`csg_predicted_usage` 之后,读到的必是新值),阶梯常量 `variables:` 随之补进
Block C。**文件里不再有 Block D**:调价改 Block B 与 Block C 两处 variables
(上文 W1N-239 段落里 "Block B + Block D" 的说法已过时)。实体/unique_id 不变,
面板 22 个实体引用无需改。备份
`/homeassistant/.csg-backups/csg_sensors.yaml.bak-20260923-pre-blockd-merge`
(改前 live SHA-256
`86c7187168c293548059518bfd6d0f32bd05287b48c79046994728c49bc84341`)。
验证(2026-09-24 07:05 CST,重启后未经上游轮询):`ha core check` OKCore 重启
约 90 s15 个 `csg_*` 全部数值——`csg_predicted_cost_ladder` 158.98 元
= 269.14 kWh 阶梯递进手算一致;269.14 / 73.3% / 116.25 / -20.3 / 198.65 与改前
一致);Core 日志仅剩已知的 CSG 营销系统 `get_month_daily_cost_detail` 上游错误,
无模板错误。诊断路径备注:trigger 模板实体 unknown(而非 unavailable=
state 模板渲染异常或**从未渲染**;后者查实体 `last_changed` 是否等于重启时刻、
再对照同块兄弟实体的渲染时刻即可锁定挂载竞态。
> **季节 gauge** 不要手改 max/segments。`binary_sensor.csg_summer_tariff` > **季节 gauge** 不要手改 max/segments。`binary_sensor.csg_summer_tariff`
> (`on` = 510 月)切换夏季 `650 / 260 / 600` 与冬季 `450 / 200 / 400` > (`on` = 510 月)切换夏季 `650 / 260 / 600` 与冬季 `450 / 200 / 400`
> 见上方 VPS-90 v4。`automation.csg_mian_ban_qie_dong_ji_dang_ti_xing`10-25 > 见上方 VPS-90 v4。`automation.csg_mian_ban_qie_dong_ji_dang_ti_xing`10-25