Додаємо Zigbee сирену в Home Assistant
Сирена, з якою ми сьогодні працюватимемо, призначена для екосистеми Tuya Smart, додається до “рідного” хабу і працює з ним абсолютно нормально. Але сьогодні ми зробимо так, щоб вона працювала з альтернативною системою керування розумним будинком, а саме Home Assistant.
Для початку, коротко про її можливості:
Сирена може програвати 18 різних мелодій, серед них 4 поліфонічні, декілька гудків і сирен. В якості однієї з мелодій записаний “гавкіт” собак. Не жартую. Девайс має три ступені гучності. Додатково пристрій вміє вимірювати температуру і вологість повітря. Є можливість встановити дві батареї CR123A, (зверніть увагу, батареї в комплект не входять). Також є роз’єм Micro USB, який, скоріше за все, стане основним джерелом живлення, адже батареї не заряджаються, і тут зазвичай будуть використовуватись в якості аварійного джерела. Поруч з місцем для батарей є кнопка, якою при довгому натисканні сирену скидають до заводських налаштувань після чого вона перейде в режим з’єднання. Також необхідно буде час від часу робити по п’ять коротких натискань, щоб сирена передчасно не заснула під час з’єднання з хабом чи координатором. Звичайно, коли девайс вже з’явиться в списку під’єднаних пристроїв, цього робити не треба.
Підключаємо новий датчик до Home Assistant
Отже, того, щоб сирена мала змогу працювати в Home Assistant переконайтеся в тому, що у вас встановлений zigbe2mqtt не старіший версії 1.17.0, саме в ній було додано підтримку цієї моделі. Щоб ZigBee координатор почав пошук нового пристрою, перейдіть в інтерфейс плагіну zigbe2mqtt і натисніть кнопку “Permit join”.
Підключить сирену до живлення. Скиньте налаштування сирени, затиснувши кнопку що під кришкою, до гучного сигнала. Сирена перейшла в режим з’єднання. Через декілька секунд 5 разів натисніть на ту саму кнопку, цією дією ви не дасте їй заснути.
Через 5-10 секунд “розбудіть” девайс ще раз. Робіть це до тих пір, поки в інтерфейсі zigbe2mqtt не з’явиться повідомлення про те, що пристрій під’єднано. Якщо ви не плануєте зараз додавати ще один девайс, можете натиснути “Disable join” і координатор припинить пошук нових пристроїв. Отже, сирену додано, тепер можемо перейти до налаштувань з її участю. Але, щоб ми могли працювати зі зрозумілими назвами, а не набором символів, давайте перейменуємо девайс: клікніть по “незрозумілій” назві девайсу поруч з піктограмою, а на новій сторінці – по піктограмі “Rename device”. Давайте назвемо пристрій “siren”. Нашу сирену можемо знайти в “інтеграціях” (Configuration – integration – MQTT – список девайсів – сирена), і тут же дізнатися ідентифікатор необхідного об’єкту (entity) сирени.
Налаштовуємо автоматизацію
Сирена може відтворювати звуки мелодій, сирен та дверного дзвінка. Тому, давайте налаштуємо автоматизацію, коли будинок під охороною, то під час проникнення на територію буде відтворюватися сирена (1хв, голосно), а коли будинок не під охороною, при натисканні кнопки буде відтворюватися звук дверного дзвінка (2с, з середньою гучністю).
Для початку створимо панель керування сигналізацією в configuration.yaml
alarm_control_panel: !include 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
- 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 !!!
тепер в автоматизацію додамо ще один файл, він буде відправляти команду сирені при натисканні кнопки біля вхідних дверей, і лише тоді, коли будинок не під охороною
- 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'
На сьогодні все, побачимось