feat(plant): temperature RECOVERY alerts - tiered clear notifications [#344]
Recovery twin of the high-temperature alert: per-tier below-triggers (fire-line minus 5F, held 10 min), from_state guard against restart false-positives, peak-value reporting. Matches existing notify targets; UPS on-battery already had its restored twin. Detail: https://projects.knownelement.com/issues/344
This commit is contained in:
@@ -371,3 +371,139 @@
|
||||
pulled. Restarting HA core (webhook re-registration) - back in
|
||||
~1 min.
|
||||
- action: homeassistant.restart
|
||||
- id: pfv_plant_temperature_recovered
|
||||
alias: PFV plant - temperature recovered
|
||||
description: >-
|
||||
Recovery twin of the high-temperature alert [#344 ask 2026-09-03]:
|
||||
notify when a sensor that was OVER its tier drops back below
|
||||
(fire-line minus 5F hysteresis) and HOLDS there for 10 minutes.
|
||||
from_state guard prevents spurious fires at HA restart; the tier
|
||||
map mirrors the high-temperature automation thresholds exactly.
|
||||
triggers:
|
||||
- trigger: numeric_state
|
||||
entity_id:
|
||||
- sensor.pfv_tsys3_nvme_temperature
|
||||
- sensor.pfv_tsys5_nvme_temperature
|
||||
below: 145
|
||||
for: 00:10:00
|
||||
- trigger: numeric_state
|
||||
entity_id:
|
||||
- sensor.pfv_tsys4_dimm_18_temperature
|
||||
- sensor.pfv_tsys4_dimm_19_temperature
|
||||
- sensor.pfv_tsys4_dimm_1a_temperature
|
||||
- sensor.pfv_tsys4_dimm_1b_temperature
|
||||
below: 135
|
||||
for: 00:10:00
|
||||
- trigger: numeric_state
|
||||
entity_id:
|
||||
- sensor.pfv_tsys1_drive_temperature
|
||||
- sensor.pfv_tsys4_drive_0_0_temperature
|
||||
- sensor.pfv_tsys4_drive_0_10_temperature
|
||||
- sensor.pfv_tsys4_drive_1_0_temperature
|
||||
- sensor.pfv_tsys4_drive_1_10_temperature
|
||||
- sensor.pfv_tsys5_drive_1_0_temperature
|
||||
- sensor.pfv_tsys5_drive_4_10_temperature
|
||||
- sensor.pfv_tsys5_drive_4_20_temperature
|
||||
- sensor.pfv_tsys5_drive_4_30_temperature
|
||||
- sensor.pfv_tsys9_drive_temperature
|
||||
below: 135
|
||||
for: 00:10:00
|
||||
- trigger: numeric_state
|
||||
entity_id:
|
||||
- sensor.pfv_tsys3_gpu_temperature
|
||||
- sensor.pfv_jetson_gpu_temperature
|
||||
below: 180
|
||||
for: 00:10:00
|
||||
- trigger: numeric_state
|
||||
entity_id:
|
||||
- sensor.pfv_tsys3_pch_temperature
|
||||
- sensor.pfv_tsys9_pch_temperature
|
||||
below: 155
|
||||
for: 00:10:00
|
||||
- trigger: numeric_state
|
||||
entity_id:
|
||||
- sensor.pfv_tsys3_cpu_temperature
|
||||
- sensor.pfv_tsys6_cpu_temperature
|
||||
- sensor.pfv_tsys7_cpu_temperature
|
||||
- sensor.pfv_tsys9_cpu_temperature
|
||||
- sensor.pfv_tsys7_drac_cpu1
|
||||
- sensor.pfv_tsys7_drac_cpu2
|
||||
- sensor.pfv_jetson_temperature
|
||||
- sensor.pfv_svrpi_temperature
|
||||
- sensor.pfv_subopi3_temperature
|
||||
- sensor.pfv_subopi_dev_3_temperature
|
||||
- sensor.pfv_subopi_dev_4_temperature
|
||||
below: 171
|
||||
for: 00:10:00
|
||||
- trigger: numeric_state
|
||||
entity_id:
|
||||
- sensor.pfv_artroom_temperature
|
||||
- sensor.pfv_garage_temperature
|
||||
- sensor.pfv_tsys1_rack_temperature
|
||||
- sensor.pfv_tsys4_ambient_temperature
|
||||
- sensor.pfv_tsys5_ambient_temperature
|
||||
- sensor.pfv_tsys6_drac_ambient
|
||||
- sensor.pfv_tsys7_drac_inlet
|
||||
- sensor.pfv_tsys7_drac_exhaust
|
||||
below: 99
|
||||
for: 00:10:00
|
||||
actions:
|
||||
- variables:
|
||||
fire_lines:
|
||||
sensor.pfv_tsys3_nvme_temperature: 150
|
||||
sensor.pfv_tsys5_nvme_temperature: 150
|
||||
sensor.pfv_tsys4_dimm_18_temperature: 140
|
||||
sensor.pfv_tsys4_dimm_19_temperature: 140
|
||||
sensor.pfv_tsys4_dimm_1a_temperature: 140
|
||||
sensor.pfv_tsys4_dimm_1b_temperature: 140
|
||||
sensor.pfv_tsys1_drive_temperature: 140
|
||||
sensor.pfv_tsys4_drive_0_0_temperature: 140
|
||||
sensor.pfv_tsys4_drive_0_10_temperature: 140
|
||||
sensor.pfv_tsys4_drive_1_0_temperature: 140
|
||||
sensor.pfv_tsys4_drive_1_10_temperature: 140
|
||||
sensor.pfv_tsys5_drive_1_0_temperature: 140
|
||||
sensor.pfv_tsys5_drive_4_10_temperature: 140
|
||||
sensor.pfv_tsys5_drive_4_20_temperature: 140
|
||||
sensor.pfv_tsys5_drive_4_30_temperature: 140
|
||||
sensor.pfv_tsys9_drive_temperature: 140
|
||||
sensor.pfv_tsys3_gpu_temperature: 185
|
||||
sensor.pfv_jetson_gpu_temperature: 185
|
||||
sensor.pfv_tsys3_pch_temperature: 160
|
||||
sensor.pfv_tsys9_pch_temperature: 160
|
||||
sensor.pfv_tsys3_cpu_temperature: 176
|
||||
sensor.pfv_tsys6_cpu_temperature: 176
|
||||
sensor.pfv_tsys7_cpu_temperature: 176
|
||||
sensor.pfv_tsys9_cpu_temperature: 176
|
||||
sensor.pfv_tsys7_drac_cpu1: 176
|
||||
sensor.pfv_tsys7_drac_cpu2: 176
|
||||
sensor.pfv_jetson_temperature: 176
|
||||
sensor.pfv_svrpi_temperature: 176
|
||||
sensor.pfv_subopi3_temperature: 176
|
||||
sensor.pfv_subopi_dev_3_temperature: 176
|
||||
sensor.pfv_subopi_dev_4_temperature: 176
|
||||
sensor.pfv_artroom_temperature: 104
|
||||
sensor.pfv_garage_temperature: 104
|
||||
sensor.pfv_tsys1_rack_temperature: 104
|
||||
sensor.pfv_tsys4_ambient_temperature: 104
|
||||
sensor.pfv_tsys5_ambient_temperature: 104
|
||||
sensor.pfv_tsys6_drac_ambient: 104
|
||||
sensor.pfv_tsys7_drac_inlet: 104
|
||||
sensor.pfv_tsys7_drac_exhaust: 104
|
||||
fire: "{{ fire_lines.get(trigger.entity_id, 0) | int }}"
|
||||
- condition: template
|
||||
value_template: >-
|
||||
{{ trigger.from_state is not none
|
||||
and trigger.from_state.state not in ['unavailable', 'unknown', 'none']
|
||||
and trigger.from_state.state | float(-1) >= fire }}
|
||||
- action: notify.send_message
|
||||
target:
|
||||
entity_id:
|
||||
- notify.ultix_sidecar_new
|
||||
- notify.allthes_ipad
|
||||
data:
|
||||
title: TEMPERATURE RECOVERED
|
||||
message: >-
|
||||
{{ state_attr(trigger.entity_id, 'friendly_name') | default(trigger.entity_id) }}
|
||||
back to {{ states(trigger.entity_id) }}°F and holding — was
|
||||
{{ trigger.from_state.state }}°F when the alert cleared (tier fire line {{ fire }}°F).
|
||||
mode: single
|
||||
|
||||
Reference in New Issue
Block a user