Я продолжу очернять в глазах общественности домотикз, и восхвалять home-assistant, как лучшее, рукотворное решение для домашней автоматизации.
И так, написав пару статей, я провел некоторую диванную аналитику, выводы следующие: статьи нужны для совсем новичков, кто в теме - все обосрут сами разберутся
Собственно, статья будет стоять из примеров полезных (на мой взгляд) автоматизаций, тесно связанных с уведомлениями и кое чего еще (интрига). В этой статье конечно будет больше первого, потому что второе это картинка в конце поста (интрига разрушена).
Что интересно - все эти автоматизации настраиваются, без малейшего использования командной строки. Если вы используете что-то отличное от home-assistant, скорее всего вы будете ощущать легкое раздражение, в области.. Стоп, а зачем Вы это вообще читаете?
Что важно - кликабельные уведомления, настроены под нативный пуш iOS, о чем подробнее можно почитать здесь. Собственно не что не мешает переделать их под телегу, но я об этом рассказывать не буду, потому что это незаконно. ахаха.
В первой части, пробежимся по системным.
И такккккк. Первые два, банальные, и скорее всего вы ими уже пользуетесь. Если нет, то чего же вы ждете???
Уведомлении о включении
- alias: Hass Startup Notification #Уведомление о включении процесса
initial_state: 'on'
trigger:
- platform: homeassistant
event: start
action:
service: notify.notify #здесь подставляем свое
data:
title: "{{ '\ud83c\udd97' }} Системное уведомление"
message: "{{ '\ud83c\udfc1' }} Cервер запущен в {{ states('sensor.time') }}. Адрес сервера {{ states('sensor.external_ip') }}"
Тут, как мы видим, в уведомлении прилетает еще ip адрес. Для него мы подключили следующий сенсор. И сенсор time
############# Внешний ip адрес ###########
- platform: rest
resource: http://ip.jsontest.com
name: External IP
value_template: '{{ value_json.ip }}'
############ Сенсор времени ############
- platform: time_date
display_options:
- "time" #Это время
- "date" # Это ставим если нужен отдельно сенсор даты
Уведомление о выключении
- alias: Home Assistant Stop - Notify #Уведомление - о остановке процесса HA
initial_state: 'on'
trigger:
platform: event
event_type: homeassistant_stop
action:
- service: notify.notify
data:
title: Home Assistant
message: "{{ '\u2757\ufe0f' }} Сервер остановлен в {{ states('sensor.time') }}"
Дальше пробежимся по безопасности.
Уведомление о неудачной попытке авторизации.
- alias: Login Failure #Уведомление о неверном вводе логина и пароля
initial_state: 'on'
hide_entity: false
trigger:
- platform: state
entity_id: persistent_notification.http_login
condition:
- condition: template
value_template: "{{ trigger.to_state.state != off }}"
action:
- service: notify.notify
data:
title: "{{ '\u26a0\ufe0f' }}Системное уведомление {{ '\ud83c\udf88' }}"
message: "{{ '\ud83d\udcbb' }} Warning - Не удачная попытка подлючения. Не верно введен пароль. Всего попыток зафиксировано: {{ states('sensor.badlogin') }} {{ states.persistent_notification.http_login.attributes.message }}"
data:
push:
sound: "wrong.mp3" #Это, опять же звуки которые мы подгрузили заранее в приложение Home-assistant companion
badge: 0
category: "hastop"
- service: persistent_notification.dismiss
data:
notification_id: http_login
По сколько у меня сервер с НА смотрит наружу, и добавил в уведомление возможность выключить сервер (Для конкретно этой реализации используется Docker, dockermon)
#Это в автоматизацию
- id: push_notify_ha_stop #Выкл HA по ссылке в уведомлении
alias: 'Push Notify HA STOP'
initial_state: 'on'
trigger:
- platform: event
event_type: ios.notification_action_fired
event_data:
actionName: HA_STOP
action:
- service: notify.notify
data:
title: Выключение!
message: "{{ '\u26a0' }} Home-assistant выключен удаленно из соображений безопасности."
- service: switch.turn_off
entity_id: switch.homeassistant
#Это в configuration.yaml
ios:
push:
categories:
- name: hastop
identifier: hastop
actions:
- identifier: HA_STOP
title: "Выключить Home-assistant"
activationMode: 'background'
authenticationRequired: yes
destructive: yes
behavior: 'default'
switch.homeassistant это собственно включатель, из docker-mon. Который позволяет отдельно включать и выключать процессы.
Как его установить? Я это делаю через docker-compose (архитектура под raspberry pi)
# docker-compose.yml
docker_mon:
image: tribunex/ha-dockermon-pi
container_name: ha_dockermon
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./dockermon/config:/config
ports:
- 8126:8126
#Это добавляем в switches
- platform: rest
name: Home-assistant
resource: http://192.168.1.1:8126/container/homeassistant #Важно, путь у вас будет другой. Вставляем свой ip и имя контейнера
body_on: '{"state": "start"}'
body_off: '{"state": "stop"}'
is_on_template: '{{ value_json is not none and value_json.state=="running" }}'
#В sensors
- platform: command_line
name: badlogin
command: grep -c 'Login attempt' /config/home-assistant.log
value_template: '{{ value | int - 1 }}'
Новое устройство в сети
- id: New Device Connected
alias: New Device Connected
initial_state: 'on'
trigger:
- platform: event
event_type: device_tracker_new_device
action:
- service: notify.notify
data_template:
title: "Системное уведомление"
message: 'В сети появилось новое устройство'
Уведомление о доступных обновлениях
- alias: 'Update Available Notifications' #Уведомление о наличии обновлений
initial_state: 'on'
trigger:
platform: state
entity_id: updater.updater
action:
service: notify.notify
data:
title: Системное уведомление
message: '{{ "\ud83c\udf0d" }} Update? Доступно новое обновление. Подробности на офциальном сайте.'
Ну и вместо заключения. Будет полезно сразу обозначить те уведомления, в которых есть кликабельные варианты выбора. Я это делаю смайликом шарика в title сообщения. А вы?
Ну и не правда ли приятно, если у каждой категории уведомлений будет свой звук. Это делаем так:
Подключаем телефон к айтюнс (о да, я знаю, как вы это любите)

Затем заходим в приложение на ios - настройки, notification - import sounds.
Ну все, дальше уже сами!
UPD: Подкорректировал автоматизацию об безуспешной авторизации. Спасибо acidquest
О, новая статейка - отлично ;) спасибо за труды праведные )
Хороший пример, но как же убого в 21 веке писать скрипты =( о прогресссссс
ПС надеюсь доживём до тимплейтов которые можно подгрузить в один клик )))
Ты как всегда в точку (ну разве что с колобком не удобно получилось, ахаха).
Про скрипты я выскажу такую аллегорию - если долго кушать какашки, то они потихоньку начинают нравиться, так и тут - когда есть понимание, то с написанием проблем нет. К слову в HA уже довольно давно прикрутили некое подобие настройки автоматизаций через интерфейс, но мне оно уже не зашло. Хотя для новичков - я думаю это будет гораздо проще. Проще даже чем blockly который я когда-то нахваливал :)
А что там неудобного ?)
Ну человек ко всему привыкает, кто-то до сих пор подходит к выключателю что-бы выключить свет =DDDD
Пока лучшая реализация пресетов для сценариев была замечена в смарсинке от гнуса
Что куча народу его накупила, а теперь спрашивают как его в HA прокинуть :)
Я сам пользуюсь включателем)
Годная статья! Утащу себе пару вещей)
Благодарю.
Уведомления это конечно не плохо, лишним не будет. Давай продолжение про автоматизации с сервисами или системами или устройствами.
У меня была мысль сделать цикл статей по автоматизации (собственно в названии так и появилась часть 1), но понял, что прям сложных и интересных у меня то и не много, все совсем банально: про свет, да вентиляцию.
Но если ты приведешь конкретные примеры чего хотелось бы, я думаю озадачусь написанием )
Статья классная, стиль, вообще, огонь...даже не понимая о чём речь, то всё-равно не оторваться! ;)
И понял, что нужно поднять свой уровень знаний по Home Assistant до уровня новичка 😎
Ай спасибо!
Спасибо за статью. Взял пару автоматизаций себе. Пара замечаний по уведомлению о неудачной авторизации:
- здесь title: "{{ '\u26a0\ufe0f' }}Системное уведомление {{ '\ud83c\udf88' }" забыта вторая фигурная скобка, без нее не работает, по крайней мере, нотификация на телеграм.
- предлагаю добавить еще одно действие в action, удаление уведомления, так как пока оно висит, нотификация больше не приходит. А если будет реальная атака с перебором паролей Вы и не узнаете об этом, так как автоматизация сработает только один раз.
Да, верно. Просто в этом уведомлении title я не пользовался, собственно он даже сюда попал закомментированный. Щас поправлю.
По второму пункту - прям в точку, добавил себе, и с твоего позволения и в статью это тоже добавлю)
У меня была мысль отслеживать изменение sensor.badlogin, но в итоге не стал заморачиваться, потому что 3 не верных попытки и ip баниться.
А под андроид как сделать?
Я думаю, что лучше всего через телеграм