Приручи Home Assistant. Сигнализация

06 мая 2021, 12:11

Данная тема будет рубрикой. Буду обновлять и добавлять разные темы. Мне кажется, много возможностей Home Assistant не раскрываются и многие не используют этих фишек. Это мой опыт, я делюсь им и предполагаю, что в какой-то момент вы, как и я, скажете: "Вот, вот этого мне не хватало!"

Отображение в Home Assistant

Сигнализация

Как это работает:
  • Шлюз Aqara в качестве сирены, голосовых уведомлений (фразы записаны через Yandex диалог и вшиты в качестве рингтонов приложением Mi Home).

Механика: 

  • Я использую роутер Keenetic, для него в HA можно использовать интеграцию NDMS2, которая каждые 30 секунд сканирует сеть и отображает подключенные устройства. К таким устройствам я отнес телефоны обитателей квартиры. Также с этой интеграцией можно мониторить подключение всех устройств в сети и вывести их статус. 
  • Если мы все уходим, телефон отключается от локальной сети и через 30 минут сигнализация ставится под охрану, о чем сообщает Telegram всем пользователям. 
  • Когда кто-то приходит домой первым, срабатывают датчик открытия двери или движения, происходят следующие события: 

  1. Если NDMS2 успел найти телефон (пока я иду от лифта) - сигнализация снимается автоматически, воспроизводится сообщение о снятии. 
  2. Если NDMS2 не успел найти телефоны и датчики сработали, дается 2 минуты, за которые телефон обнаружит сеть и сигнализация снимается. Если нет, необходимо снять сигнализацию вручную. 
  3. Идет сработка, шлюз неистово шумит, отправляются уведомления в Телеграм.

Реализация:
У меня нет цифровой клавиатуры, поэтом пароль закоменчен. 

Вся документация по интеграции находиться тут: Manual alarm control panel.

Задействовано:
В интеграции нет ни одной специализированной охранной системы.
  • В качестве логики сигнализации используется штатная Manual alarm control panel HA.
  • Датчики открытия двери и движения Xiaomi.
  • Телефоны на базе Android, iOS - как ключи доступа.
  • Интеграция NDMS2 для поиска устройств в локальной сети.
  • Телеграм для уведомлений на телефон.

alarm_control_panel:
  - platform: manual
    name: HA Alarm
#    code: '0713'
    arming_time: 10
    delay_time: 180
    trigger_time: 120


automation:

#СНЯТИЕ/ПОСТАНОВКА

#Воспроизводим на Шлюзе сообщение о снятии
  - alias: Сигнализация, снятие
    trigger:
      - platform: state
        entity_id: alarm_control_panel.ha_alarm
        to: 'disarmed'
    action:
      - service: xiaomi_aqara.play_ringtone
        data:
          gw_mac: 04:cf:8c:b8:8c:95
          ringtone_id: 10004
          ringtone_vol: 80

#Воспроизводим на Шлюзе сообщение о постановке
  - alias: Сигнализация, постановка
    trigger:
      - platform: state
        entity_id: alarm_control_panel.ha_alarm
        to: 'armed_away'
    action:
      - service: xiaomi_aqara.play_ringtone
        data:
          gw_mac: 04:cf:8c:b8:8c:95
          ringtone_id: 10005
          ringtone_vol: 80

#Ставим сигнализацию. Воспроизводим на Шлюзе сообщение о постановке. Со стороны входной двери стоит кнопка Aqara, Одно нажатие - звонок, двойное - постановка сигнализации.
  - alias: Сигнализация, постановка клавишей
    trigger:
      platform: event
      event_type: xiaomi_aqara.click
      event_data:
        entity_id: binary_sensor.switch_158d0002330465
        click_type: double
    condition:
      - condition: state
        entity_id: alarm_control_panel.ha_alarm
        state: 'disarmed'
    action:
      - service: alarm_control_panel.alarm_arm_away
        entity_id: alarm_control_panel.ha_alarm
      - service: xiaomi_aqara.play_ringtone
        data:
          gw_mac: 04:cf:8c:b8:8c:95
          ringtone_id: 10005
          ringtone_vol: 80



#ОТКРЫТИЕ ДВЕРИ. ПРЕДУПРЕЖДЕНИЯ.
#Кто-то открывает дверь, воспроизводим сообщение с предупреждением о необходимости снятии сигнализации
  - alias: Сигнализация, предупреждение дверь
    trigger:
      - platform: state
        entity_id: binary_sensor.mi_door_sensor_contact
        to: 'on'
    condition:
      - condition: state
        entity_id: 'alarm_control_panel.ha_alarm'
        state: 'armed_away'
      - condition: and
        conditions:
          - condition: state
            entity_id: 'device_tracker.redminote9pro_niro'
            state: 'not_home'
          - condition: state
            entity_id: 'device_tracker.iphoneelizaveta'
            state: 'not_home'
    action:
      - service: xiaomi_aqara.play_ringtone
        data:
          gw_mac: 04:cf:8c:b8:8c:95
          ringtone_id: 10006
          ringtone_vol: 80


#ОТКРЫТИЕ ДВЕРИ. ОПРЕДЕЛЕНИЕ ПОЛЬЗОВАТЕЛЕЙ, СНЯТИЕ.
#NDMS2 нашел телефоны пока сигнализация в режиме ожидания снятия - state: 'pending'. Снимаем сигнализацию, воспроизводим сообщение.
  - alias: Сигнализация. Опр.польз., снятие
    trigger:
      platform: state
      entity_id:
        - device_tracker.redminote9pro_niro
        - device_tracker.iphoneelizaveta
      to: 'home'
    condition:
      - condition: state
        entity_id: 'alarm_control_panel.ha_alarm'
        state: 'pending'
    action:
      - service: xiaomi_aqara.play_ringtone
        data:
          gw_mac: 04:cf:8c:b8:8c:95
          ringtone_id: 10007
          ringtone_vol: 80
      - service: alarm_control_panel.alarm_disarm
        entity_id: alarm_control_panel.ha_alarm

#NDMS2 нашел телефоны пока мы идем от лифта и при открытии двери, просто снимет сигнализацию.
  - alias: Сигнализация. Опр.польз. дверь, снятие
    trigger:
      - platform: state
        entity_id: binary_sensor.mi_door_sensor_contact
        to: 'on'
    condition:
      - condition: state
        entity_id: 'alarm_control_panel.ha_alarm'
        state: 'armed_away'
      - condition: or
        conditions:
          - condition: state
            entity_id: 'device_tracker.redminote9pro_niro'
            state: 'home'
          - condition: state
            entity_id: 'device_tracker.iphoneelizaveta'
            state: 'home'
    action:
      - service: xiaomi_aqara.play_ringtone
        data:
          gw_mac: 04:cf:8c:b8:8c:95
          ringtone_id: 10007
          ringtone_vol: 80
      - service: alarm_control_panel.alarm_disarm
        entity_id: alarm_control_panel.ha_alarm

#NDMS2 нашел телефоны пока мы идем от лифта и при срабатывании датчика движения, просто снимет сигнализацию.
  - alias: Сигнализация. Опр.польз. движение, снятие
    trigger:
      - platform: state
        entity_id: binary_sensor.aqara_motion_occupancy
        to: 'on'
    condition:
      - condition: state
        entity_id: 'alarm_control_panel.ha_alarm'
        state: 'armed_away'
      - condition: or
        conditions:
          - condition: state
            entity_id: 'device_tracker.redminote9pro_niro'
            state: 'home'
          - condition: state
            entity_id: 'device_tracker.iphoneelizaveta'
            state: 'home'
    action:
      - service: xiaomi_aqara.play_ringtone
        data:
          gw_mac: 04:cf:8c:b8:8c:95
          ringtone_id: 10007
          ringtone_vol: 80
      - service: alarm_control_panel.alarm_disarm
        entity_id: alarm_control_panel.ha_alarm

#ПЕРЕВОД НА СРАБАТЫВАНИЕ

#Телефоны не подключились к сети, срабатывание сигнализации от двери.
  - alias: Сигнализация. Перевод на срабатывание дверь
    trigger:
      - platform: state
        entity_id: binary_sensor.mi_door_sensor_contact
        to: 'on'
    condition:
      - condition: state
        entity_id: 'alarm_control_panel.ha_alarm'
        state: 'armed_away'
      - condition: and
        conditions:
          - condition: state
            entity_id: 'device_tracker.redminote9pro_niro'
            state: 'not_home'
          - condition: state
            entity_id: 'device_tracker.iphoneelizaveta'
            state: 'not_home'
    action:
      - service: alarm_control_panel.alarm_trigger
        entity_id: alarm_control_panel.ha_alarm

#Телефоны не подключились к сети, срабатывание сигнализации от движения.
  - alias: Сигнализация. Перевод на срабатывание движение
    trigger:
      - platform: state
        entity_id: binary_sensor.aqara_motion_occupancy
        to: 'on'
    condition:
      - condition: state
        entity_id: 'alarm_control_panel.ha_alarm'
        state: 'armed_away'
      - condition: and
        conditions:
          - condition: state
            entity_id: 'device_tracker.redminote9pro_niro'
            state: 'not_home'
          - condition: state
            entity_id: 'device_tracker.iphoneelizaveta'
            state: 'not_home'
    action:
      - service: alarm_control_panel.alarm_trigger
        entity_id: alarm_control_panel.ha_alarm

#СРАБАТЫВАНИЕ СИГНАЛИЗАЦИИ. ПАРАМЕТРЫ
  - alias: Сигнализация. Срабатывание. Уведомления в телеграм
    trigger:
      platform: state
      entity_id: alarm_control_panel.ha_alarm
      to: 'triggered'
    condition:
      condition: time
      after: '09:00:00'
      before: '00:00:00'
    action:
      - service: xiaomi_aqara.play_ringtone
        data:
          gw_mac: 04:cf:8c:b8:8c:95
          ringtone_id: 10008
          ringtone_vol: 80
      - service: notify.telegram_nikita
        data_template:
          title: '*?ОПОВЕЩЕНИЕ СИГНАЛИЗАЦИИ:*'
          message: "Срабатывание датчиков, несанкционированное проникновение."
      - service: notify.telegram_liza
        data_template:
          title: '*?ОПОВЕЩЕНИЕ СИГНАЛИЗАЦИИ:*'
          message: "Срабатывание датчиков, несанкционированное проникновение."
      - delay: '00:05:00'
      - service: notify.telegram_nikita
        data_template:
          title: '*?ОПОВЕЩЕНИЕ СИГНАЛИЗАЦИИ:*'
          message: "Срабатывание датчиков, несанкционированное проникновение."
      - service: notify.telegram_liza
        data_template:
          title: '*?ОПОВЕЩЕНИЕ СИГНАЛИЗАЦИИ:*'
          message: "Срабатывание датчиков, несанкционированное проникновение."
      - delay: '00:05:00'
      - service: notify.telegram_nikita
        data_template:
          title: '*?ОПОВЕЩЕНИЕ СИГНАЛИЗАЦИИ:*'
          message: "Срабатывание датчиков, несанкционированное проникновение."
      - service: notify.telegram_liza
        data_template:
          title: '*?ОПОВЕЩЕНИЕ СИГНАЛИЗАЦИИ:*'
          message: "Срабатывание датчиков, несанкционированное проникновение."


#ПОСТАНОВКА СИГНАЛИЗАЦИИ, КОГДА ВСЕ УХОДЯТ.
  - alias: Сигнализация. Телеграм. Забыли поставить?
    trigger:
    - platform: state
      entity_id: 'device_tracker.redminote9pro_niro'
      to: 'not_home'
      for: "00:30:00"
    - platform: state
      entity_id: 'device_tracker.iphoneelizaveta'
      to: 'not_home'
      for: "00:30:00"
    condition:
      - condition: state
        entity_id: alarm_control_panel.ha_alarm
        state: 'disarmed'
      - condition: and
        conditions:
          - condition: state
            entity_id: 'device_tracker.redminote9pro_niro'
            state: 'not_home'
          - condition: state
            entity_id: 'device_tracker.iphoneelizaveta'
            state: 'not_home'
    action:
      - service: alarm_control_panel.alarm_arm_away
        entity_id: alarm_control_panel.ha_alarm
      - service: notify.telegram_nikita
        data_template:
          title: '*?ОПОВЕЩЕНИЕ СИГНАЛИЗАЦИИ:*'
          message: "Похоже дом опустел, ставлю на сигнализацию."
          data:
            inline_keyboard:
              - 'Отменить постановку на сигнализацию:/alarm3'
      - service: notify.telegram_liza
        data_template:
          title: '*?ОПОВЕЩЕНИЕ СИГНАЛИЗАЦИИ:*'
          message: "Похоже дом опустел, ставлю на сигнализацию."
          data:
            inline_keyboard:
              - 'Отменить постановку на сигнализацию:/alarm3'


#реакция на выбор в телеграм. Кнопка - 'Отменить постановку на сигнализацию:/alarm3'


  - alias: Сигнализация. Телеграм, отмена.
    trigger:
      platform: event
      event_type: telegram_callback
      event_data:
        command: '/alarm3'
    action:
      - service: alarm_control_panel.alarm_disarm
        entity_id: alarm_control_panel.ha_alarm
      - service: notify.telegram_nikita
        data_template:
          title: '*?ОПОВЕЩЕНИЕ СИГНАЛИЗАЦИИ:*'
          message: "Получена команда. Отменить постановку на сигнализацию."
      - service: notify.telegram_liza
        data_template:
          title: '*?ОПОВЕЩЕНИЕ СИГНАЛИЗАЦИИ:*'
          message: "Получена команда. Отменить постановку на сигнализацию."
1600x_image.png?1620225999Оповещение в Телеграм. Сработка.
1600x_image.png?1620225998
Оповещение в Телеграм. Автоматическая постановка.

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


Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @SprutAI

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. (hamper)
    (hamper) месяц назад

    А как же способ отключить сигнализацию если у телефона сел аккумулятор?

  2. (NoMAD525)
    (NoMAD525) месяц назад

    Тоже использую подобную схему охраны и  Шлюз Aqara в качестве сирены. Не сильно устраивает такая сирена. Не чётко срабатывает, если начал проигрывать - то пока не доиграет - следующую мелодию (снятие с охраны) - не начнёт проигрывать. Хорошо бы снаружи дома уведомлять об аларме. 

    Может кто применял для подобных уведомлений - например Bluetooth- колонку - или что-то подобное?

  3. Никита Романенко (dr3men)

    Все что угодно можно воспроизвести через внешнее устройство с джека 2.5

    Я для данных целей использую интеграцию Mopidy

  4. (Ostoja)
    (Ostoja) отредактировано 29 дней назад

    Благодарю!!! Именно это и хотел сделать, но только разбираюсь с НА, а Ваши примеры ОЧЕНЬ помогли!!!

    Все настроил, все работает!


К списку статей
Россия, г. Санкт-Петербург

Тематические чаты

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

17 декабря 2019, 17:49
Универсальный привод для автоматического удаленного открытия окон с простой интеграцией в умные дома.
15 ноября 2018, 09:42
Способы автоматизации механических ворот
25 сентября 2020, 11:49
Сенсорный монитор для управления умным домом. Настройка и использование.
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется
30 августа 2019, 07:28
Несколько нетривиальных способов использования датчика открытия окон/дверей от Xiaomi/Aqara.
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
28 августа 2018, 09:48
От голого Raspbian до веб-интерфейса homebridge за четыре команды в терминале.
27 августа 2018, 10:14
Интегрируем ХА в HomeKit
03 октября 2018, 22:03
Как собрать и настроить Hyperion Ambilight - адаптивную подсветку ТВ.