В данной статье будет рассмотрен процесс создания автоматизаций в Home Assistant. Все будем делать через файлы конфигурации, вручную прописывая все условия и действия.
Для начала убедитесь, что Вы вынесли все файлы конфигурации в отдельную папку (строчка automation: !include_dir_merge_list имя_папки/automation в configuration.yaml). Подробнее про вынос в отдельные файлы и папки я писал в самой первой статье по настройке Home Assistant.
Далее в папке automation нужно создать файл с любым названием и расширением .yaml. Например, можно создать файл light.yaml и прописывать туда все сценарии, касающиеся освещения.
Из чего состоит автоматизация в Home Assistant
Запись автоматизаций в Home Assistant выглядит следующим образом:
— alias: имя автоматизации trigger: триггер condition: условие action: действие
Рассмотрим каждый из элементов.
Trigger
Триггер — событие, при наступлении которого автоматизация будет срабатывать. Например, в качестве триггера может выступать время, изменение состояния устройства, событие в системе (тот же запуск Home Assistant) и т д.
Home Assistant. Урок 11.1 Уведомления Telegram — создание бота, отправка сообщений, прием команд
Триггер — обязательный элемент автоматизации. А еще их может быть несколько, при этом автоматизация будет запущена при наступлении любого из них.
Время в качестве триггера
— platform: time at: «10:00:00»
platform: time позволяет запускать автоматизацию в определенное время. В примере выше — в 10 часов.
— platform: time_pattern minutes: 5
platform: time_pattern позволяет запускать автоматизацию через указанный интервал времени. В примере выше запуск будет происходить каждый час, когда будет наступать 5 минут. В 13:05, в 14:05, в 15:05 и т д.
Если написать minutes : «/5», то автоматизация будет срабатывать каждые 5 минут. Аналогично можно написать и hours : «/5» для срабатывания автоматизации каждые 5 часов. seconds: /5 — каждые 5 секунд.
Состояние устройства
— platform: state entity_id: ID сущности to: «unavailable»
В данном примере автоматизация сработает, когда устройство, вписанное в entity_id: перейдет в состояние «недоступно». Если же вместо to: написать from:, то наоборот, при переходе из «недоступно» в любое другое состояние.
— platform: state entity_id: ID сущности from: «not_home» to: «home»
А тут автоматизация запустится в момент изменения состояния с not_home в home. Т е когда кто-то появится дома. Можно заменить на off и on, т е на переход устройства из состояния «выключено» в состояние «включено».
— platform: state entity_id: ID сущности to: «on» for: «00:00:30»
В данном примере для срабатывания автоматизации, устройство должно перейти в статус «On» и находиться в нем в течение 30 секунд. Также можно вместо to написать from. Например from: off с указанием времени (for: «00:00:30») запустит автоматизацию, если устройство перешло из состояния «выключено» в любое другое и находится в нем 30 секунд.
Температура, влажность и другие цифровые значения
— platform: numeric_state entity_id: ID сущности above: выше указанного значения below: ниже указанного значения
Используя данный триггер можно запускать автоматизацию, когда значение указанной сущности пересечет заданную цифру. Можно использовать above и below как вместе, так и что-то одно.
Платформа event для устройств, подключенных через шлюз Xiaomi
Есть еще и платформа event, которая, помимо прочего, используется для отслеживания состояния подключенных к шлюзу Xiaomi кнопок и беспроводных выключателей:
— platform: event event_type: xiaomi_aqara.click event_data: entity_id: ID сущности click_type: тип клика: single, double, long и т д
— platform: event event_type: xiaomi_aqara.cube_action event_data: entity_id: ID сущности action_type: действие: flip90, flip180, move и т д
Condition
Condition — условие для срабатывания автоматизации. После того, как сработает триггер, система проверяет, выполняется ли указанное в condition условие и если да, то запускает автоматизацию. Это не обязательный элемент в автоматизациях Home Assistant.
В отличие от trigger, для срабатывания автоматизации в condition можно указать как обязательное выполнение всех условий, так и выполнение любого из перечисленных:
#Выполнение любого из условий condition: — condition: or conditions: — condition: state entity_id: ID сущности state: состояние — condition: state entity_id: ID сущности state: состояние
#Выполнение одного из условий condition: — condition: state entity_id: ID сущности state: состояние — condition: state entity_id: ID сущности state: состояние
Несколько возможных вариантов Condition:
- state — состояние устройства. Можно, например, проверять есть ли кто дома, или включено ли определенное устройство.
- numeric_state, как и в случае с триггером позволяет задать цифровое значение. Например, указать, что автоматизация должна запускаться только если температура выше / ниже определенного значения.
— condition: numeric_state entity_id: ID сущности above: выше данного значения below: ниже данного значения
— condition: time after: ’18:30:00′ before: ’23:59:59′
Action
Action — действие, которое выполнит автоматизация. Например, включит свет, отправит уведомление, выключит розетку и т д. Тут можно записать как одно действие, так и несколько, в том числе и добавить паузу между ними.
Простой блок Action выглядит следующим образом:
action: — service: запуск сервиса entity_id: ID сущности
В качестве сервиса может быть, например:
- light.turn_on —включение света.
- light.turn_off — выключение света.
- light.toggle — изменение состояния светильника. Из включенного в выключенное и наоборот.
- switch.turn_on, switch.turn_off, switch.toggle — аналогично для выключателей и реле.
Если действий несколько и нужно сделать задержку между их выполнением, то добавляем между ними следующую строчку:
— delay: 00:01:00
Еще, при включении света, можно передать дополнительные параметры:
action: service: light.turn_on entity_id: light.yeelight_650 data_template: brightness_pct: 1 kelvin: 3200
В данном примере при срабатывании триггера включается лампа Yeelight 650 с 1% яркости и цветовой температурой 3200К. Если вместо цветовой температуры лампочка поддерживает изменение цвета, то меняем строчку на rgb_color:.
Вам также может понравиться
Добавляем робот-пылесос Xiaomi Vacuum Cleaner 1C в Home Assistant
13.06.2021
Умный дом на Home Assistant. Установка и настройки на русском
30.11.2019
Добавляем Aqara M1S в Home Assistant
24.06.2022
Aqara D1 и Home Assistant. Запуск сценария при нажатии на кнопку
26.12.2021
Примеры автоматизаций в Home Assistant
20.11.2021
Установка HACS в Home Assistant OS
У этой записи один комментарий
Антон 25.08.2023 Ответить
Спасибо за статью.
Скажите, как указать несколько условий:
Например: открылась дверь с датчиком открытия и в течение 10 секунд сработал датчик движения, а Action: включить свет в прихожей. Если датчик движения не сработал после открытия двери, то ничего не происходит ?
Источник: smarthomeinfo.ru
Отправка файла с сервера себе в Telegram
Я использую Telegram по назначению. Но иногда, опираясь на крутые возможности его Bot API, невозможно обойти стороной облегчения своей жизни. Как-то уже в блоге я писал пост про скрипты резервного копирования в Telegram, которые у нас крутятся на небольших проектах и уже несколько раз конкретно спасали наши жизни и жизни наших проектов.
Мне очень часто приходится выдергивать какие-нибудь файлы с серверов (своих и клиентских) и передавать дальше через телеграм. Например дампы тестовых БД, docker-compose файлы и многое другое. Долгое время я качал файлы через winscp и перекладывал в телеграм кому надо. Но когда файл большой это неудобно — пока скачаешь, пока закинешь.
Небольшая история
С клиентом покупали https сертификат ему на проект и надо было передавать с сервера csr файл, для последующей его обработки. Сервер находится за vpn, ходить напрямую через WinSCP было неудобно и лень. И я решил попробовать отправить файл через телеграм сам себе. Сработало:)
Также, пару месяцев назад я таким образом передавал дамп тестовой базы данных новому разработчику и понял что способ реально рабочий и начал пользоваться им регулярно. Я даже сначала начал писать бинарник на Go, но на полпути понял, что вопрос решается простым BASH скриптом на 5 строк с использованием curl. Сам скрипт можно увидеть ниже.
Сам скрипт
Для его работы вам необходимо указать свой Bot Token и Chat Id, куда отправлять сам файл. На этом все:)
Дальше, для удобства, можно сделать alias
alias tgsender=»/home/zvinger/tgsender.sh»
И отправлять файлы можно простой командой
tgsender filename.json
И файл окажется у вас в личке от вашего бота!
Источник: amorev.ru
Настройка Telegram в Hass.io через Tor
- Home Assistant
- man1ac
- 23 Июн 2019
После обновления, в hass.io появился штатный инструмент polling для использования прокси в настройках telegram_bot. (Официальная инструкция по его настройке бота в НА находится здесь)
Вкратце основные действия которые нужно совершить для создания собственного бота заключаются в следующих шагах:
Далее мы идем в браузер и вводим следующий текст в адресную строку: https://api.telegram.org/botТОКЕН_КОТОРЫЙ_ВЫ_ПОЛУЧИЛИ_ОТ_BotFather/getUpdates Получаете ответ в виде:
< «ok»: true, «result»: [< «update_id»: 254199982, «message»: < «message_id»: 27, «from»: < «id»: 123456789, «first_name»: «YOUR_FIRST_NAME YOUR_NICK_NAME», «last_name»: «YOUR_LAST_NAME», «username»: «YOUR_NICK_NAME» >, «chat»: < «id»: 123456789, «first_name»: «YOUR_FIRST_NAME YOUR_NICK_NAME», «last_name»: «YOUR_LAST_NAME», «username»: «YOUR_NICK_NAME», «type»: «private» >, «date»: 1678292650, «text»: «test» > >] >
Где id: в разделе «chat» и есть искомый «chat_id» необходимый для конфигурирования бота.
Однако есть ряд особенностей.
Для того чтобы у вас открылась эта строка в браузере, нужно чтобы ваш браузер обходил блокировки телеграма. Для этого можно поставить браузерный прокси, например Proxy SwitchyOmega для Google Chrome. (Это кстати решит и проблему постоянного отваливания официального сайта Home Assistant)
Далее приступим к настройке
Чтобы быть последовательным, приведу базовую конфигурацию бота, которая проверена и работает:
telegram_bot: — platform: polling proxy_url: socks5h://127.0.0.1:9050 api_key: !secret telegram_bot_api_key allowed_chat_ids: — !secret telegram_bot_chat_id notify: — name: telegram platform: telegram chat_id: !secret telegram_bot_chat_id
Данная конфигурация содержит в себе ссылки на разные данные хранящиеся в файле secrets.yaml, инструкцию по использованию которого можно прочитать в официальной документации.
В файл Secrets.yaml мы вносим все полученные ранее данные (API Key и chat_id)
Устанавливаем аддон Tor
В его настройки заменяем на эти:
В файл Secrets.yaml в параметр proxy_url: !secret telegram_proxy_url добавляем:
socks5h://127.0.0.1:9050
Проверка работы
После того как мы все настроили, нужно проверить работоспособность бота. Для этого мы идем в раздел Инструменты разработчика -> Службы
Далее выбираем службу notify.telegram и вводим следующий текст: и отправляем.
После всех этих этапов все должно заработать.
Источник: man1ac.ru