Решил я тут переделать уведомления о повышении влажности или температуры в ванной и на кухне. Раньше уведомления срабатывали при превышении определенного порогового значения, но интеграция
Trend Home Assistant позволяет сделать более правильный и логичный триггер для такого уведомление - резкое возрастание или понижение значения сенсора..
Уведомления отправляются в Телеграм и через приложение Home Assistant на телефоне и выглядят вот так:
Уведомление сенсора trend HA о скачке температуры влажности в Telegram и home assistant companion Создадим сенсоры тренда в конфигурации Home Assistant:
binary_sensor:
- platform: trend
sensors:
### ванная ####
bathroom_temp_sharp_jump:
entity_id: sensor.0x1************a_temperature
friendly_name: "Скачок температуры в ванной"
sample_duration: 300 # 5 минут = 300 сек
max_samples: 15 # 5 минут, 3 изменения в минуту, то 300/20 = 15
min_gradient: 0.017 # 5 градусов в 5 минут, то 5/5*60 = 0,0166666666666667
device_class: heat
bathroom_humidity_sharp_jump:
entity_id: sensor.0x1************a_humidity
friendly_name: "Скачок влажности в ванной"
sample_duration: 300 # 5 минут = 300 сек
max_samples: 15 # 5 минут, 3 изменения в минуту, то 300/20 = 15
min_gradient: 0.03 # 10% в 5 минут, то 10/5*60 = 0,03(3)
device_class: moisture
### кухня ####
kitchen_temp_sharp_jump:
entity_id: sensor.0x1************b_temperature
friendly_name: "Скачок температуры на кухне"
sample_duration: 300 # 5 минут = 300 сек
max_samples: 15 # 5 минут, 3 изменения в минуту, то 300/20 = 15
min_gradient: 0.017 # 5 градусов в 5 минут, то 5/5*60 = 0,0166666666666667
device_class: heat
kitchen_humidity_sharp_jump:
entity_id: sensor.0x1************b_humidity
friendly_name: "Скачок влажности на кухне"
sample_duration: 300 # 5 минут = 300 сек
max_samples: 15 # 5 минут, 3 изменения в минуту, то 300/20 = 15
min_gradient: 0.03 # 10% в 5 минут, то 10/5*60 = 0,03(3)
device_class: moisture
Для моей конфигурации аларм будет формироваться при резком возрастании температуры на 5 градусов, а влажности на 10% за 5 минут. В этом случае когда сенсор заметит такой тренд он меняет состояние с
off на
on. На графиках это выглядит вот так:
Lovelace график влажности и сенсора trend home assistantLovelace график температуры и сенсора trend home assistant Код автоматизации довольно простой, триггер - изменение состояния сенсоров, потом c помощью
choose и
trigger id формируем текст уведомления:
automation:
- id: alarm_trends
alias: alarm trends t_h
description: Уведомление о скачке температуры или влажности
mode: single
trigger:
- platform: state
entity_id:
- binary_sensor.bathroom_temp_sharp_jump
- binary_sensor.bathroom_humidity_sharp_jump
- binary_sensor.kitchen_temp_sharp_jump
- binary_sensor.kitchen_humidity_sharp_jump
- binary_sensor.serverroom_temp_sharp_jump
- binary_sensor.serverroom_humidity_sharp_jump
from: 'on'
to: 'off'
id: trends_alarms_off
- platform: state
entity_id: binary_sensor.bathroom_temp_sharp_jump
from: 'off'
to: 'on'
id: bathroom_temp_jump
- platform: state
entity_id: binary_sensor.bathroom_humidity_sharp_jump
from: 'off'
to: 'on'
id: bathroom_humidity_jump
- platform: state
entity_id: binary_sensor.kitchen_temp_sharp_jump
from: 'off'
to: 'on'
id: kitchen_temp_jump
- platform: state
entity_id: binary_sensor.kitchen_humidity_sharp_jump
from: 'off'
to: 'on'
id: kitchen_humidity_jump
- platform: state
entity_id: binary_sensor.serverroom_temp_sharp_jump
from: 'off'
to: 'on'
id: serverroom_temp_jump
- platform: state
entity_id: binary_sensor.serverroom_humidity_sharp_jump
from: 'off'
to: 'on'
id: serverroom_humidity_jump
condition: []
action:
- choose:
- conditions:
- condition: trigger
id: bathroom_temp_jump
sequence:
- service: notify.me
data:
title: "Trends alarm"
message: |
{{"\U0001F4B9"}} bathroom_temp_sharp_jump = {{ states('binary_sensor.bathroom_temp_sharp_jump') }}
{{"\U00002139"}} {{ states('sensor.0x1************a_temperature') }}°C
- service: notify.mobile_app_mi_9_lite
data:
title: "Trends alarm"
#channel: "alarm_stream"
message: |
{{"\U0001F4B9"}} bathroom_temp_sharp_jump = {{ states('binary_sensor.bathroom_temp_sharp_jump') }}
{{"\U00002139"}} {{ states('sensor.0x1************a_temperature') }}°C
- conditions:
- condition: trigger
id: bathroom_humidity_jump
sequence:
- service: notify.me
data:
title: "Trends alarm"
message: |
{{"\U0001F4B9"}} bathroom_humidity_sharp_jump = {{ states('binary_sensor.bathroom_humidity_sharp_jump') }}
{{"\U00002139"}} {{ states('sensor.0x1************a_humidity') }}%
- service: notify.mobile_app_mi_9_lite
data:
title: "Trends alarm"
#channel: "alarm_stream"
message: |
{{"\U0001F4B9"}} bathroom_humidity_sharp_jump = {{ states('binary_sensor.bathroom_humidity_sharp_jump') }}
{{"\U00002139"}} {{ states('sensor.0x1************a_humidity') }}%
- conditions:
- condition: trigger
id: kitchen_temp_jump
sequence:
- service: notify.me
data:
title: "Trends alarm"
message: |
{{"\U0001F4B9"}} kitchen_temp_sharp_jump = {{ states('binary_sensor.kitchen_temp_sharp_jump') }}
{{"\U00002139"}} {{ states('sensor.0x1************b_temperature') }}°C
- service: notify.mobile_app_mi_9_lite
data:
title: "Trends alarm"
#channel: "alarm_stream"
message: |
{{"\U0001F4B9"}} kitchen_temp_sharp_jump = {{ states('binary_sensor.kitchen_temp_sharp_jump') }}
{{"\U00002139"}} {{ states('sensor.0x1************b_temperature') }}°C
- conditions:
- condition: trigger
id: kitchen_humidity_jump
sequence:
- service: notify.me
data:
title: "Trends alarm"
message: |
{{"\U0001F4B9"}} kitchen_humidity_sharp_jump = {{ states('binary_sensor.kitchen_humidity_sharp_jump') }}
{{"\U00002139"}} {{ states('sensor.0x1************b_humidity') }}%
- service: notify.mobile_app_mi_9_lite
data:
title: "Trends alarm"
#channel: "alarm_stream"
message: |
{{"\U0001F4B9"}} kitchen_humidity_sharp_jump = {{ states('binary_sensor.kitchen_humidity_sharp_jump') }}
{{"\U00002139"}} {{ states('sensor.0x1************b_humidity') }}%
- conditions:
- condition: trigger
id: serverroom_temp_jump
sequence:
- service: notify.me
data:
title: "Trends alarm"
message: |
{{"\U0001F4B9"}} serverroom_temp_sharp_jump = {{ states('binary_sensor.serverroom_temp_sharp_jump') }}
{{"\U00002139"}} {{ states('sensor.0x1************c_temperature') }}°C
- service: notify.mobile_app_mi_9_lite
data:
title: "Trends alarm"
#channel: "alarm_stream"
message: |
{{"\U0001F4B9"}} serverroom_temp_sharp_jump = {{ states('binary_sensor.serverroom_temp_sharp_jump') }}
{{"\U00002139"}} {{ states('sensor.0x1************c_temperature') }}°C
- conditions:
- condition: trigger
id: serverroom_humidity_jump
sequence:
- service: notify.me
data:
title: "Trends alarm"
message: |
{{"\U0001F4B9"}} serverroom_humidity_sharp_jump = {{ states('binary_sensor.serverroom_humidity_sharp_jump') }}
{{"\U00002139"}} {{ states('sensor.0x1************c_humidity') }}%
- service: notify.mobile_app_mi_9_lite
data:
title: "Trends alarm"
#channel: "alarm_stream"
message: |
{{"\U0001F4B9"}} serverroom_humidity_sharp_jump = {{ states('binary_sensor.serverroom_humidity_sharp_jump') }}
{{"\U00002139"}} {{ states('sensor.0x1************c_humidity') }}%
- conditions:
- condition: trigger
id: trends_alarms_off
sequence:
- service: notify.me
data:
title: "Trends alarm"
message: |
{{"\U0001F4B9"}} serverroom_humidity_sharp_jump = {{ states('binary_sensor.serverroom_humidity_sharp_jump') }}
{{"\U0001F4B9"}} binary_sensor.bathroom_humidity_sharp_jump = {{ states('binary_sensor.bathroom_humidity_sharp_jump') }}
{{"\U0001F4B9"}} binary_sensor.kitchen_temp_sharp_jump = {{ states('binary_sensor.kitchen_temp_sharp_jump') }}
{{"\U0001F4B9"}} binary_sensor.kitchen_humidity_sharp_jump = {{ states('binary_sensor.kitchen_humidity_sharp_jump') }}
{{"\U0001F4B9"}} binary_sensor.serverroom_temp_sharp_jump = {{ states('binary_sensor.serverroom_temp_sharp_jump') }}
{{"\U0001F4B9"}} binary_sensor.serverroom_humidity_sharp_jump = {{ states('binary_sensor.serverroom_humidity_sharp_jump') }}
# - service: notify.mobile_app_mi_9_lite
# data:
# title: "Trends alarm"
# message: |
# {{"\U0001F4B9"}} serverroom_humidity_sharp_jump = {{ states('binary_sensor.serverroom_humidity_sharp_jump') }}
Все это я собрал в пакет
Trends alarms, полный код доступен на
GitHub-е