Home AssistantНалаштуванняОхорона

Додаємо Zigbee сирену в Home Assistant

Сирена, з якою ми сьогодні працюватимемо, призначена для екосистеми Tuya Smart, додається до “рідного” хабу і працює з ним абсолютно нормально. Але сьогодні ми зробимо так, щоб вона працювала з альтернативною системою керування розумним будинком, а саме Home Assistant.

Для початку, коротко про її можливості:

Сирена може програвати 18 різних мелодій, серед них 4 поліфонічні, декілька гудків і сирен. В якості однієї з мелодій записаний “гавкіт” собак. Не жартую. Девайс має три ступені гучності. Додатково пристрій вміє вимірювати температуру і вологість повітря. Є можливість встановити дві батареї CR123A, (зверніть увагу, батареї в комплект не входять). Також є роз’єм Micro USB, який, скоріше за все, стане основним джерелом живлення, адже батареї не заряджаються, і тут зазвичай будуть використовуватись в якості аварійного джерела. Поруч з місцем для батарей є кнопка, якою при довгому натисканні сирену скидають до заводських налаштувань після чого вона перейде в режим з’єднання. Також необхідно буде час від часу робити по п’ять коротких натискань, щоб сирена передчасно не заснула під час з’єднання з хабом чи координатором. Звичайно, коли девайс вже з’явиться в списку під’єднаних пристроїв, цього робити не треба.siren reset button

Підключаємо новий датчик до Home Assistant

Отже, того, щоб сирена мала змогу працювати в Home Assistant переконайтеся в тому, що у вас встановлений zigbe2mqtt не старіший версії 1.17.0, саме в ній було додано підтримку цієї моделі. Щоб ZigBee координатор почав пошук нового пристрою, перейдіть в інтерфейс плагіну zigbe2mqtt і натисніть кнопку “Permit join”.

Zigbee Permit join

Підключить сирену до живлення. Скиньте налаштування сирени, затиснувши кнопку що під кришкою, до гучного сигнала. Сирена перейшла в режим з’єднання. Через декілька секунд 5 разів натисніть на ту саму кнопку, цією дією ви не дасте їй заснути.

Через 5-10 секунд “розбудіть” девайс ще раз. Робіть це до тих пір, поки в інтерфейсі zigbe2mqtt не з’явиться повідомлення про те, що пристрій під’єднано. Якщо ви не плануєте зараз додавати ще один девайс, можете натиснути “Disable join” і координатор припинить пошук нових пристроїв. Отже, сирену додано, тепер можемо перейти до налаштувань з її участю. Але, щоб ми могли працювати зі зрозумілими назвами, а не набором символів, давайте перейменуємо девайс: клікніть по “незрозумілій” назві девайсу поруч з піктограмою, а на новій сторінці – по піктограмі “Rename device”.  Давайте назвемо пристрій “siren”. Нашу сирену можемо знайти в “інтеграціях” (Configuration – integration – MQTT – список девайсів – сирена), і тут же дізнатися ідентифікатор необхідного об’єкту (entity) сирени.

mqtt integration entity id

Налаштовуємо автоматизацію

Сирена може відтворювати звуки мелодій, сирен та дверного дзвінка. Тому, давайте налаштуємо автоматизацію, коли будинок під охороною, то під час проникнення на територію буде відтворюватися сирена (1хв, голосно), а коли будинок не під охороною, при натисканні кнопки буде відтворюватися звук дверного дзвінка (2с, з середньою гучністю).
Для початку створимо панель керування сигналізацією в configuration.yaml

alarm_control_panel: !include includes/alarm_control_panel.yaml
файл /config/includes/alarm_control_panel.yaml

- platform: manual
  name: Home Alarm
  delay_time: 10
  trigger_time: 10
  disarmed:
    trigger_time: 0

Робимо картку в інтерфейсі lovelace:

Код картки

type: alarm-panel
states:
  - arm_home
  - arm_away
entity: alarm_control_panel.home_alarm

Покищо наша панель нічого не вміє, тому створимо для неї декілька правил автоматизації в configuration.yaml:

automation: !include_dir_merge_list automations
Файл /config/automations/security.yaml

- alias: 'Trigger alarm while disarmed'
  initial_state: true
  # знімаємо з охорони
  trigger:
  - platform: state
    entity_id: alarm_control_panel.home_alarm
    to: 'disarmed'
  action:
    - service: mqtt.publish
      data_template:
        topic: zigbee2mqtt/siren/set
        payload: '{"melody": 18}'
        retain: true
        qos: 1
    - delay:
        milliseconds: 500
    - service: mqtt.publish
      data_template:
        topic: zigbee2mqtt/siren/set
        payload: '{"volume": "medium"}'
        retain: true
        qos: 1
    - delay:
        milliseconds: 500
    - service: mqtt.publish
      data_template:
        topic: zigbee2mqtt/siren/set
        payload: '{"duration": 2}'
        retain: true
        qos: 1
- alias: 'Trigger alarm while armed away'
  initial_state: true
  # ставимо на away охорону
  trigger:
    - platform: state
      entity_id: alarm_control_panel.home_alarm
      to: 'armed_away'
  action:
    - service: mqtt.publish
      data_template:
        topic: zigbee2mqtt/siren/set
        payload: '{"melody": 6}'
        retain: true
        qos: 1
    - delay:
      milliseconds: 500
    - service: mqtt.publish
      data_template:
        topic: zigbee2mqtt/siren/set
        payload: '{"volume": "high"}'
        retain: true
        qos: 1
    - delay:
      milliseconds: 500
    - service: mqtt.publish
      data_template:
        topic: zigbee2mqtt/siren/set
        payload: '{"duration": 60}'
        retain: true
        qos: 1
- alias: 'Trigger alarm while armed home'
  initial_state: true
  # ставимо на home охорону
  trigger:
    - platform: state
      entity_id: alarm_control_panel.home_alarm
      to: 'armed_home'
  action:
    - service: mqtt.publish
      data_template:
        topic: zigbee2mqtt/siren/set
        payload: '{"melody": 6}'
        retain: true
        qos: 1
    - delay:
      milliseconds: 500
    - service: mqtt.publish
      data_template:
        topic: zigbee2mqtt/siren/set
        payload: '{"volume": "low"}'
        retain: true
        qos: 1
    - delay:
      milliseconds: 500
    - service: mqtt.publish
      data_template:
        topic: zigbee2mqtt/siren/set
        payload: '{"duration": 30}'
        retain: true
        qos: 1
##################################################
############### Вмикаємо сигнал ##################
##################################################
############### intruder detection ###############
- alias: armed away intruder detection
  initial_state: true
  trigger:
  # Нижче перелік сенсорів, при спрацюванні яких спрацює сирена
  # у вас звичайно він буде свій
  - platform: state
    entity_id: binary_sensor.kidsroom_window_sensor_contact
    to: 'on'
  - platform: state
    entity_id: binary_sensor.livingroom_window_sensor_contact
    to: 'on'
  - platform: state
    entity_id: binary_sensor.kitchen_window_sensor_contact
    to: 'on'
  - platform: state
    entity_id: binary_sensor.frontdoor_sensor_contact
    to: 'on'
  - platform: state
    entity_id: binary_sensor.0x286d9700010450de_occupancy
    to: 'on'
  condition:
  - condition: state
    entity_id: alarm_control_panel.home_alarm
    state: 'armed_away'
  action:
    # - delay: '00:00:45'
    #чекаємо 45с для вводу коду зняття з охорони
    - service: mqtt.publish
      data_template:
        topic: zigbee2mqtt/siren/set
        payload: '{"alarm": true}'
        retain: true
        qos: 1
    # ADD NOTIFICATION !!!!!!!!!!!!!!!!!
    # Сюди можемо добавити сервіс сповіщень на ваш мобільний
################### dorbell btn ##################
#    >>>>>>>>>>>>>>>>>      see doorbell.yaml  !!!

тепер в автоматизацію додамо ще один файл, він буде відправляти команду сирені при натисканні кнопки біля вхідних дверей, і лише тоді, коли будинок не під охороною

Файл: /config/automations/doorbell.yaml

- alias: doorbell_ring
  initial_state: true
  trigger:
  - platform: state
    entity_id: sensor.0x00158d00016d922e_click
    to: 'single'
  - platform: state
    entity_id: sensor.0x00158d00016d922e_click
    to: 'double'
  - platform: state
    entity_id: sensor.0x00158d00016d922e_click
    to: 'long'
  condition:
    - condition: state
      entity_id: alarm_control_panel.home_alarm
    state: 'disarmed'
  action:
    - service: mqtt.publish
      data_template:
        topic: zigbee2mqtt/siren/set
        payload: '{"alarm": true}'
        retain: true
        qos: 1
    #нижче директиви, що не стосуються сирени, їх можна пропустити
    # - service: media_player.volume_set
    #   data:
    #     entity_id: all
    #     volume_level: '0.5'
    # - service: media_player.play_media
    #   data:
    #     entity_id: media_player.kitchen_display
    #     media_content_id:/local/doorbell.mp3
    #     media_content_type: 'audio/mp3'
    # - service: media_player.play_media
    #   data:
    #     entity_id: media_player.living_room_speaker
    #     media_content_id:/local/doorbell.mp3
    #     media_content_type: 'audio/mp3'
    # - service: media_player.play_media
    #   data:
    #     entity_id: media_player.hallway_speaker
    #     media_content_id:/local/doorbell.mp3
    #     media_content_type: 'audio/mp3'
    - delay: '00:00:02'
      #тут розумна колонка (google home) промовляє задану фразу
    - service: tts.google_say
      data:
        entity_id: "all"
        message: "Сова, відкриваай! Ведмідь прийшоов."
        language: 'uk'

На сьогодні все, побачимось

2 thoughts on “Додаємо Zigbee сирену в Home Assistant

  • Ще не розібрались із питанням щоб в одній mqtt команді послати всі 4 параметри?
    Бо дуже багато (delay: milliseconds: 500) що викликає шалені затримки при різних подіях коли потрібні різні мелодії із різним часом та гучністю.
    Поточна реалізація дуже не досконала..

    Відповідь
    • Насправді, цього девайсу не маю вже досить давно, він у мене прожив менше року, потім переств під’єднуватися до мережі. До речі, схожа проблема була раніше і з z-wave версією. На скільки я пам’ятаю, всі параметри передавати одним пакетом не можна було, девайс бачив лише перший. Але тут можу помилятися

      Відповідь

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *