From 1512dde3ec53c617a2a15f7a6df1cab0d20e9ef7 Mon Sep 17 00:00:00 2001 From: windyboy Date: Thu, 24 Sep 2026 07:35:54 +0800 Subject: [PATCH] =?UTF-8?q?VPS-90:=20hass=20=E9=A2=84=E6=B5=8B=E7=94=B5?= =?UTF-8?q?=E8=B4=B9=20Block=20D=20=E5=B9=B6=E5=85=A5=20Block=20C=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=20Core=20=E9=87=8D=E5=90=AF=E5=90=8E=20unknown?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 已记录。 --- hosts/hass.windy.lan.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/hosts/hass.windy.lan.md b/hosts/hass.windy.lan.md index 60b8b62..fd39a18 100644 --- a/hosts/hass.windy.lan.md +++ b/hosts/hass.windy.lan.md @@ -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` 的爬升窗口 (14 天)是回测选出来的单月参数,属弱证据,换季/换季后值得复看。 +**`csg_sensors.yaml` 预测电费 Block D 并入 Block C(2026-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` OK;Core 重启 +约 90 s;15 个 `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` > (`on` = 5–10 月)切换夏季 `650 / 260 / 600` 与冬季 `450 / 200 / 400`, > 见上方 VPS-90 v4。`automation.csg_mian_ban_qie_dong_ji_dang_ti_xing`(10-25)