在花粉计数飙升前抢先关窗的花粉锁定
结合本地花粉传感器与 3 小时预报,自动化在预测峰值到来前 40 分钟关闭窗户,把通风交给 HEPA 送风机组,待室外计数降至 20 粒/m³ 以下并持续 30 分钟后再开窗。
# HearthNodes recipe 15 - pollen lockout
alias: "Climate - pollen lockout with lead time"
id: hn_climate_pollen_lockout
description: "Close 40 minutes before a predicted spike, HEPA supplies positive pressure"
mode: restart
max_exceeded: silent
trigger:
- platform: numeric_state
entity_id: sensor.outdoor_pollen_grains
above: 50
- platform: numeric_state
entity_id: sensor.pollen_forecast_3h_peak
above: 80
- platform: event
event_type: mobile_app_notification_action
event_data:
action: HAY_FEVER_BUTTON
variables:
all_windows: "{{ states.cover | selectattr('entity_id','search','_window$') | map(attribute='entity_id') | list }}"
saved_positions: "{{ dict(all_windows | zip(all_windows | map('state_attr','current_position'))) }}"
condition:
- condition: state
entity_id: input_boolean.pollen_sensitivity
state: "on"
- condition: numeric_state
entity_id: sensor.hepa_filter_life
above: 10
action:
- service: input_text.set_value
target:
entity_id: input_text.window_positions_before_lockout
data:
value: "{{ saved_positions | to_json }}"
- service: cover.close_cover
target:
entity_id: "{{ all_windows }}"
- service: fan.turn_on
target:
entity_id: fan.hepa_supply
data:
percentage: 60
- service: input_boolean.turn_on
target:
entity_id: input_boolean.pollen_lockout
- wait_for_trigger:
- platform: numeric_state
entity_id: sensor.outdoor_pollen_grains
below: 20
for: "00:30:00"
timeout: "24:00:00"
continue_on_timeout: true
- service: script.restore_window_positions
data:
saved: "{{ states('input_text.window_positions_before_lockout') }}"
quiet_hours_defer: true
# Pollen sensor offline -> falls back to the coarser cloud forecast rather than
# dropping the lockout. HEPA exhausted -> partial unlock, bedrooms only, because
# a flat with neither ventilation nor filtration is worse than pollen.
触发器 · numeric_state
sensor.outdoor_pollen_grains
室外花粉计数超过 50 粒/m³,或 3 小时预报显示 40 分钟内将出现高于 80 粒/m³ 的峰值。
分步说明
- cover.*_window关闭所有由执行器控制的窗户;手动窗不做处理,但发送通知并明确列出是哪几扇。
set_cover_position · 0 - fan.hepa_supply把 HEPA 送风机组切到中档,让全屋保持正压,花粉就不会从缝隙渗入。
turn_on · speed medium · filter class H13 - cover.*_window重新开启时恢复到锁定前记录的位置,而不是固定值。
return to previous position when outdoor < 20 grains/m³ for 30 min - input_boolean.pollen_lockout用单个布尔量表示锁定状态,让其他配方(卧室夜间降温)直接让位,而不必各自实现一套检查。
keep on until 30 quiet minutes
在峰值之前锁定,而不是峰值之中
已经进入室内的花粉会在空气中悬浮 30–60 分钟。在计数达到峰值时才关窗,全屋其实已经「装满」了。预报给出的 40 分钟提前量,正是舒适下午与症状发作下午之间的差别。
正压,而不只是过滤
循环式净化器清洁了空气,但对从窗缝渗入的 0.4 次/小时未过滤空气毫无办法。让 HEPA 送风机组以中档运行,可把全屋维持在 +5 Pa,从而让这股渗入气流反向。对花粉症家庭来说,这是最有效的一步。
恢复之前的位置,而不是全开
解除锁定后把所有窗都开到最大,会丢弃全家人此前设定好的百叶与窗户位置。锁定前记录位置、解除后恢复;只需四行代码,就能消掉一整类烦人问题。
硬件
| 型号 | 协议 | 连接 | 在本链路中的作用 |
|---|---|---|---|
| Laser particle counter configured for pollen-sized fractions | wifi |
无线 | 上报 PM2.5 与 10–40 µm 粒径段;粗粒径段才是与花粉相关、而非与交通相关的部分。 |
| HEPA supply unit with a motorised damper | wifi |
有线 | 维持正压;循环式净化器无法像正压那样把花粉挡在漏风的公寓之外。 |
| Window actuators (same as the night-cooling recipe) | wifi |
有线 | 与夜间降温配方共用硬件;锁定布尔量是两者之间的仲裁者。 |
失效时怎么办
如果花粉传感器离线,自动化回退到云端预报——精度更粗,但锁定仍能工作;通知会说明使用的是哪个来源。如果 HEPA 机组停机或滤网耗尽,锁定会部分解除——只保持卧室窗关闭,因为一个既无通风又无过滤的公寓比花粉更糟。