Статья

Home-assistant кликабельные уведомления в IOS. Полуавтоматизация.

Кое что из моих сочинений на свободную тематику:

Мультирум из подручных средств, и добавление всего этого в Home-assistant

Делаем дашборд из планшета. Опять же для Home-assistant

Умный дом, муки выбора. Или мое предвзятое мнение о системах.

В прошлый раз мнения разделились, поэтому  статья будет без юмора, и полная серьезности. То есть сухая и техническая.

Кто первый пошутит про цифры на скрине? 

Вводная. 

Итак, стратегия умного дома (на бумаге) подразумевает, что система сама знает, что нужно пользователю в данный момент и делает его жизнь лучше и удобней без его участия. 

Система сама знает, что, когда я подхожу к дому, нужно включить чайник, за час до срабатывания будильника надо включить теплый пол, когда все ушли из дома, пора запустить пылесос, и тд

Но по факту - полная домашняя автоматизация — это идея, которая еще слишком далека от идеальной реализации. Сразу оговорюсь и выведу за скобки функции безопасности, их автоматизировать можно и нужно.  Условно говоря, даже если бы я жил один, система все равно не могла бы предусмотреть, что я хочу от нее в данный момент. А когда в доме живет семья с детьми, то вся автоматизация, которая отвечает за удобство - начинает спотыкаться об тщетность бытия. А пылесос об разбросанные игрушки. Да и чай я сегодня не хочу.

Поэтому я пришел к тому, что автоматизация должна давать мне право выбора. Например, если упала влажность - то включить увлажнитель сейчас, или включить, когда я поеду домой. Или вообще на час - и хватит. Когда все ушли из дома, пылесос должен спросить, стоит убраться или нет. Ведь умный дом не знает, разбросаны игрушки по всей квартире или нет. Или, например, в пятницу, обычно, я езжу на дачу, и неплохо бы поднять температуру до комфортной к моему приезду. Но зачем топить, если вдруг я поеду на дачу, но не на свою? Правильно, для этого перед выходом нужно спросить у меня куда я еду, когда, сажусь в машину. 

Практическая часть

На данный момент, есть два основных варианта, чтобы удобно это реализовать. (По факту больше, но это уже совсем вкусовщина, и предположу, что она не носит массовый характер)

1. Телеграмм (Но он же заблокирован, хаха)

2. Push в IOS

С телегой я игрался, но она не зашла настолько, насколько понравился нативный пуш на яблочных устройствах.

Дальше будет все совсем сухо.

Ставим Home Assistant Companion

И настраиваем подключение к HA 

(*То приложение что сейчас находиться в эпл сторе, может подключаться только через Legacy API Password. Если вы используете авторизацию по логину и паролю, то варианта 2. Первый: включить Legacy API Password, второй: поставить бету через TestFlight, а заодно и стать бета тестером)

Далее идем в Notification settings, и там жмем update push settings.

Рассмотрим на примере автоматизации для увлажнителя. Здесь смысл следующий, если влажность опускается ниже 20%, то нам приходит уведомление с вариантами действия: Включить и включить на 1 час. 

Теперь перейдем к конфигам ассистента. 

configuration.yaml

ios: push: categories: - name: humidifier identifier: humidifier actions: - identifier: HUMIDIFIERON title: "Вкл увлажнитель" activationMode: 'background' authenticationRequired: no destructive: no behavior: 'default' - identifier: HUMIDIFIER1H title: "Включить на 1 час" activationMode: 'background' authenticationRequired: no destructive: no behavior: 'default' - name: alarm

Разберем этот пример. 

  • name: humidifier - это название группы. 
  • identifier: humidifier - это идентификатор. Он указывается в автоматизации, как меню выбора. Все что в этой группе есть, то и будет выводиться под уведомлением. Ни больше ни меньше. 
  • actions: и под ним уже идет перечисление возможных действий. После него следует еще раз
  •  identifier: HUMIDIFIERON Это конкретный пункт меню Его пишем БОЛЬШИМИ БУКВАМИ что бы не путаться. 
  • activationMode: 'background' Это мы использовать не будем, но по названию вы сами догадались что это отображение уведомления в фоне. 
  • authenticationRequired: no - требовать авторизацию на телефона (отпечаток) что бы открыть уведомление. 
  • destructive: no выделять красным 
  • behavior: 'default' - что это?

Перейдем к самим автоматизациям

- alias: 'Notify bedroom hum' ############Влажность в спальне с управлением через уведомления initial_state: 'on' trigger: - platform: numeric_state entity_id: sensor.humidity below: 20 action: - service: notify.notify data: title: Датчик влажности message: "{{ '\ud83d\udca7' }} Влажность в спальне опустилась меньше 20%, и составляет: {{ states('sensor.humidity') }} процентов." data: push: badge: 0 category: "humidifier"

Ну тут все просто,  category: "humidifier" как раз и есть тем самым идентификатором, который предоставляет выбор.

А далее следует как раз 2 автоматизации которая как раз и соответствуют включение увлажнителя, и включению на 1 час.

- id: push_notify_hum_on #Вкл увлажнитель по ссылке в уведомлении alias: 'Push Notify Hum ON' initial_state: 'on' trigger: - platform: event event_type: ios.notification_action_fired event_data: actionName: HUMIDIFIERON action: service: homeassistant.turn_on entity_id: switch.plug - id: push_notify_hum_on1h #Вкл увлажнитель на 1 час по ссылке в уведомлении alias: 'Push Notify Hum ON 1H' initial_state: 'on' trigger: - platform: event event_type: ios.notification_action_fired event_data: actionName: HUMIDIFIER1H action: - service: homeassistant.turn_on entity_id: switch.plug - delay: '01:00:00' - service: switch.turn_off entity_id: switch.plug

В общем-то, все предельно просто и, как обычно, вступление заняло больше строк чем реализация. 


норм статья, годно

А я по трЭЭЭшу скучаю )))) подписался жду продолжения )))

Спасибо за статью, очень понравилась. Шутка с цифрами удалась, а в чем секрет. Вроде по коду все Ок и должно быть значение влажности меньше 20.

Буду ждать продолжения ....

Да там нет секрета, событие (триггер) можно вызвать принудительно в любой момент :) 

а как оно с Deep sleep ? выводит? может лучше через Homebridge сделать? для себя любимой эппл нормальный сертификат пользуют и пуш пробуждает телефон.

ЗЫ просто коллеги долго мучались с одной домофонной поделкой, которая не выводила телефон из спячки из-за чего пропускались звонки в дверь.

Кого, телефон? Конечно, это же нативный пуш. Через хом-бридж я себе слабо представляю как сделать подобное. 

Для ЗЫ можно попробовать pushbullet. С ним раньше тоже работал, никакх проблем

это не нативный, это от ассистента. поэтому и спросил. проверьте, если можно. для коллег было очень неприятно - продать недешевый домофон и потом плясать с бубном.

Я этим каждый день пользуюсь, можно не проверять )

Почему от ассистента не может быть нативным? и чем он отличается от других приложений (в том числе тех, что установлены по умолчанию)? 

ну если эппл его купит - будет, а пока приходится писателям софта покупать сертификат.

ЗЫ Я Вас услышал, хорошо что работает. Но я все равно противник сторонних софтин. Все должно быть в приложении дом )))

Автоматизация "push_notify_hum_on1h" не содержит никакой информации о том, что увлажнитель будет включен на 1 час. Где это указывается?

Да, спасибо. Поправил.

Сервер с HA обязательно должен иметь белый IP?

Нет конечно

тогда как авторизоваться в приложении не имея выделенного ip?

По внутреннему внутри сети

А я правильно понимаю, что если влажность стала допустим 16, а датчик обновляется раз в 2 минуты, то будет сыпаться куча push каждые 2 минуты пока увлажнитель не поднимет влажность до 20?  

Нет, тригером является снижение ниже 20. Пока не поднимется до 20 - это уведомление приходить не будет. Датчики температуры сяоми, передают значения сразу после изменения.

Вопрос такой, а как сделать уведомление на несколько телефонов. Отдельными автоматизациями или можно в одну перечислить?

Добрый день. возможно ли тоже самое реализовать только через Node-red?


Вернуться назад
Вернуться назад