Содержание
Оповещения в Home Assistant — это просто готовые автоматизации, которые могут доставлять уведомления. И они позволяют вам быстро создать автоматизацию, которая срабатывает при определенном условии, а затем может отправлять уведомления с динамическими или статическими интервалами, пока это условие не исчезнет. Они также могут отправлять сообщение о том, что условие исчезло, так что вы узнаете, когда событие закончилось.
Единственная проблема с оповещениями заключается в том, что их нельзя настроить через пользовательский интерфейс, как в некоторых версиях Assistant 2022.03, поэтому нам нужно будет сделать это в формате YAML. В настоящее время я предпочитаю использовать надстройку Studio Code Server для редактирования YAML, но вы можете выбрать другой метод. Единственное требование — у вас должна быть возможность редактировать файлы YAML Home Assistant.
Если вы хотите скачать файлы, вы можете найти их на GitHub по адресу https://github.com/thejeffreystone/SlackerLabVideoExamples/tree/main/2022-04-Home_Assistant_Alerts
Включение оповещений
Сначала нам нужно включить оповещения, внеся небольшое изменение в наш файл configuration.yaml. Вы можете сделать это одним из двух способов.
Сначала вы можете добавить один файл ко всем вашим оповещениям, добавив его в файл configuration.yaml:
alert: !include alerts.yaml
Для этого вам также потребуется создать файл с именем alerts.yaml.
Или вы можете определить свои оповещения прямо в файле configuration.yaml:
Так:
alert:
garage_open:
name: Garage Open
message: Someone left the garage open. You Should Close it.
done_message: Garage is closed
entity_id: binary_sensor.garage_door
state: "on"
repeat: 5 # This will repeat every 5 minutes
can_acknowledge: false
skip_first: False
notifiers:
- mobile_app_jeffreys_iphone_8
another_alert:
name: ...
Оба варианта будут работать, так что решать вам. Что касается того, какие оповещения вы хотите добавить, давайте рассмотрим несколько примеров:
Предупреждение о хорошем
Базовое оповещение выглядит так:
simple_garage_after_dark:
name: Garage Open After Dark
message: Кто-то оставил гараж открытым. Вам следует его закрыть.
done_message: Гараж закрыт
entity_id: binary_sensor.garage_door
state: "on"
repeat: 5 # Повторять каждые 5 минут
can_acknowledge: false
skip_first: False
notifiers:
- mobile_app_gendom_iphone_66
Первая строка — это entity_id
оповещение. Затем, поскольку это YAML, нам нужно сделать отступ для следующих строк.
Name
это имя вы увидите на панели управления Lovelace.
Message
— это сообщение, которое вы хотите отправить с помощью оповещения.
done_message
является необязательным и если включен, то при устранении условия вы получите сообщение.
Каждое оповещение должно отслеживать одну сущность, которая ищет определенное состояние. Так что в этом случае entity_id
это имя сущности, которую вы хотите, чтобы это оповещение отслеживало, а state
под ним — состояние, за которым нужно следить. Так что в этом случае, когда включен бинарный датчик, отслеживающий дверь гаража, это оповещение сработает.
Repeat
это количество минут, в течение которых вы хотите, чтобы это уведомление повторялось до тех пор, пока не будет очищено. И это может быть постоянным, как это, то есть каждые 5 минут отправлять уведомление. Или это может быть динамическим, когда у вас есть несколько вариантов, например
repeat:
- 5
- 10
- 15
Это значит, что уведомления будут приходить через 5 минут, затем через 10 минут после этого, а затем через 15 минут после этого. И как только они достигнут этих последних 15 минут, они будут повторяться каждые 15 минут.
can_acknowledge
Предполагается, что это означает, что вы можете отключить уведомления, даже если состояние не исчезло, но я пока не разобрался, как это сделать.
skip_first
позволяет пропустить первое уведомление, которое придет сразу после срабатывания оповещения.
И, наконец, notifiers
список служб уведомлений, которым вы хотите отправить оповещение. Это может быть также список, но это должны быть службы уведомлений.
Ограничения оповещений
Одним из ограничений оповещений является то, что вы не можете отслеживать несколько условий, например, солнце зашло, а гараж открыт. В таких случаях вам нужно будет создать шаблон датчика или использовать что-то вроде автоматизации, и input_boolean
— мой типичный шаблон.
Таким образом, вы можете создать входной логический параметр с именем garage_open_after_dark
, а затем использовать автоматизацию для определения того, когда следует включить этот входной логический параметр.
Например, такая автоматизация:
- id: close_garage_lights_out
alias: Close Garage at lights out
initial_state: true
trigger:
- platform: time
at: "22:30:00"
condition:
- condition: state
entity_id: binary_sensor.garage_door
state: "on"
action:
- service: input_boolean.turn_on
entity_id: input_boolean.garage_after_dark
Эта автоматизация будет помещена в ваш файл automations.yaml и будет запускаться в 10:30 вечера каждый вечер. И мы используем условие для проверки, открыт ли гараж. Если да, то мы включаем наш входной логический параметр.
Затем мы можем использовать это входное логическое значение в качестве сущности, которую отслеживает наше оповещение.
slackerlabs_garage_after_dark:
name: Garage Open After Dark
message: >
{{ [
'Я заметил, что гараж все еще открыт.',
'Почему гараж все еще открыт?',
'Кто-то забыл закрыть гараж.'
] | random }}
{{ [
'Ночь темна и полна ужасов, поэтому закрытие кажется хорошим вариантом.',
'Ты ждал, что я его закрою?',
'Пора закрыть проход комарам.',
'Прекратите делать то, что вы делаете, и закройте его. Пожалуйста.'
] | random }}
done_message: Garage is closed
entity_id: input_boolean.garage_after_dark
state: "on"
repeat: 5
can_acknowledge: false
skip_first: False
notifiers:
- mobile_app_gendom_iphone_66
В этом случае я добавил в сообщение немного сарказма и веселья, чтобы рандомизировать уведомление.
Но вы могли бы просто использовать обычное сообщение. Однако входной логический параметр дает нам возможность легко отключить это оповещение, поэтому я обычно использую входной логический параметр вместо датчика шаблона.
Тест речевых уведомления
Хотя я обычно использую оповещения для отправки уведомлений на наши мобильные устройства через приложение-компаньон Home Assistant, вы также можете использовать уведомление с преобразованием текста в речь. Единственная проблема здесь в том, что ваши интеграции с преобразованием текста в речь должны быть службами уведомлений. Но это достаточно легко сделать.
Для этого нам нужно перейти в файл configuration.yaml и создать раздел уведомлений, если у вас его еще нет.
notify:
- name: living_room # Имя
platform: tts
tts_service: tts.google_translate_say # The TTS service
# tts_service: tts.cloud_say # Nabu Casa TTS
# tts_service: tts.amazon_polly_say #for those rocking the Amazon Polly
media_player: media_player.ha_blue #media player
Затем ниже notify:
нам просто нужно определить нашу службу уведомлений. К сожалению, это будет основано на динамиках. Так что если у вас нет системы для всего дома, которая играет во всех комнатах, если у вас несколько динамиков, вам понадобится по одному для каждого динамика, которому вы также хотите отправлять уведомления.
name
как вы хотите назвать эту службу уведомлений
platform
будет ТТС.
Тогда tts_service
будет ваш сервис Text to Speech. Я включил три общих примера, но вы также можете использовать Amazon Media player.
Затем, чтобы использовать эту службу уведомлений, нам просто нужно добавить ее в список уведомителей для любого оповещения, для которого вы хотите использовать функцию преобразования текста в речь. Вот так:
notifiers:
- mobile_app_jeffreys_iphone_8
- living_room # A TTS Service?
Затем после внесения изменений в configuration.yaml и определения оповещений, а также любых автоматизаций, необходимых для критериев оповещений, перезапустите Home Assistant. С этого момента Home Assistant будет уведомлять вас каждый раз, когда одна из этих сущностей оповещений находится в состоянии, определенном в ваших оповещениях.
Даже просто подбор, перевод и оформление статей требуют времени. А самостоятельный обзор устройств требует еще и финансовых вложений. Если Вы хотите больше обзоров, Вы можете помочь автору.