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

15 янв. 2019 г.

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

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

Вводная. 

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

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

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

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

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

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

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

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


Мы в Telegram - t.me/soprut
  1. Сергей Сафронов (deda)
    Сергей Сафронов (deda) месяц назад

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

    • Олег Челбаев (sprut)
      Олег Челбаев (sprut) месяц назад

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

  2. Евгений Лузин (EvLuz)
    Евгений Лузин (EvLuz) месяц назад

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

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

    • Белояр Иван (Ivan711)
      Белояр Иван (Ivan711) месяц назад

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

  3. Алексей Костаков (partizan) месяц назад

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

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

    • Белояр Иван (Ivan711)
      Белояр Иван (Ivan711) месяц назад

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

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

      • Алексей Костаков (partizan) месяц назад

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

    • Белояр Иван (Ivan711)
      Белояр Иван (Ivan711) месяц назад

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

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

      • Алексей Костаков (partizan) отредактировано месяц назад

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

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

  4. Владислав Сябрук (setem)
    Владислав Сябрук (setem) месяц назад

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

    • Белояр Иван (Ivan711)
      Белояр Иван (Ivan711) месяц назад

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

К списку статей

Похожие статьи

15 нояб. 2018 г.
Xiaomi Mi Remote 360 добавляем Apple HomeKit
15 нояб. 2018 г.
Способы автоматизации механических ворот
15 июн. 2018 г.
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
27 авг. 2018 г.
Интегрируем ХА в HomeKit
28 авг. 2018 г.
От голого Raspbian до веб-интерфейса homebridge за четыре команды в терминале.
24 авг. 2018 г.
Пошаговая установка HomeAssistant
25 нояб. 2018 г.
Умное зеркало добавляем модули Airplay и Google Calendar
1 нояб. 2018 г.
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации
30 июн. 2018 г.
Добавляем устройства управляемые по ИК через Broadlink RM3 Mini на примере кондиционера.
25 сент. 2018 г.
Делаем умный замок с интеграцией в HomeKit