diff --git a/ge1mer/homeassistant/domofon.yaml b/ge1mer/homeassistant/domofon.yaml index c1f2ecb..07e4f44 100644 --- a/ge1mer/homeassistant/domofon.yaml +++ b/ge1mer/homeassistant/domofon.yaml @@ -4,58 +4,122 @@ automation: - alias: Domofon incoming call notification initial_state: true trigger: - platform: state - entity_id: binary_sensor.domofon_incoming_call - to: 'on' + # Обнаружен звонок + - platform: state + entity_id: binary_sensor.domofon_incoming_call + to: 'on' action: - service: notify.telegram - data_template: - message: "Звонок в домофон {% if is_state('switch.domofon_automatically_open', 'on') or is_state('switch.domofon_automatically_open_once', 'on') %}(откроется автоматически){% endif %}" - data: - inline_keyboard: - - "{{ '-' if is_state('switch.domofon_automatically_open', 'on') or is_state('switch.domofon_automatically_open_once', 'on') else 'Открыть:/domofon_open, Отклонить:/domofon_reject' }}" + - choose: + # Включён режим авто-открыть или авто-открыть-один-раз + - conditions: + - condition: or + conditions: + - condition: state + entity_id: switch.domofon_automatically_open + state: 'on' + - condition: state + entity_id: switch.domofon_automatically_open_once + state: 'on' + sequence: + # Отправить уведомление + - service: notify.telegram + data: + message: "Звонок в домофон (откроется автоматически)" + # Включён режим авто-отклонить + - conditions: + - condition: state + entity_id: switch.domofon_automatically_reject + state: 'on' + sequence: + # Отправить уведомление + - service: notify.telegram + data: + message: "Звонок в домофон (отклонится автоматически)" + default: + # Отправить уведомление с кнопками Открыть/Отклонить + - service: notify.telegram + data: + message: "Звонок в домофон" + data: + inline_keyboard: + - "{{ 'Открыть:/domofon_open, Отклонить:/domofon_reject' }}" - alias: Telegram /domofon_open callback initial_state: true trigger: - platform: event - event_type: telegram_callback - event_data: - data: '/domofon_open' + # Из телеграмма пришла команда Открыть + - platform: event + event_type: telegram_callback + event_data: + data: '/domofon_open' action: - - service: telegram_bot.answer_callback_query - data_template: - callback_query_id: "{{ trigger.event.data.id }}" - message: "{{ 'Открываю...' if is_state('binary_sensor.domofon_incoming_call', 'on') else 'Нет входящего звонка' }}" - - service: switch.turn_on - entity_id: switch.domofon_accept_call + - choose: + # Идет звонок + - conditions: + - condition: state + entity_id: binary_sensor.domofon_incoming_call + state: 'on' + sequence: + # Отправить подтверждение о намерении открыть + - service: telegram_bot.answer_callback_query + data_template: + callback_query_id: "{{ trigger.event.data.id }}" + message: "Открываю..." + # Открыть + - service: switch.turn_on + entity_id: switch.domofon_accept_call + default: + # Отправить ответ, что нету звонка + - service: telegram_bot.answer_callback_query + data_template: + callback_query_id: "{{ trigger.event.data.id }}" + message: "Нет входящего звонка" - alias: Telegram /domofon_reject callback initial_state: true trigger: - platform: event - event_type: telegram_callback - event_data: - data: '/domofon_reject' + # Из телеграмма пришла команда Отклонить + - platform: event + event_type: telegram_callback + event_data: + data: '/domofon_reject' action: - - service: telegram_bot.answer_callback_query - data_template: - callback_query_id: "{{ trigger.event.data.id }}" - message: "{{ 'Отклоняю...' if is_state('binary_sensor.domofon_incoming_call', 'on') else 'Нет входящего звонка' }}" - - service: switch.turn_on - entity_id: switch.domofon_reject_call + - choose: + # Идет звонок + - conditions: + - condition: state + entity_id: binary_sensor.domofon_incoming_call + state: 'on' + sequence: + # Отправить подтверждение о намерении отклонить + - service: telegram_bot.answer_callback_query + data_template: + callback_query_id: "{{ trigger.event.data.id }}" + message: "Отклоняю..." + # Открыть + - service: switch.turn_on + entity_id: switch.domofon_reject_call + default: + # Отправить ответ, что нету звонка + - service: telegram_bot.answer_callback_query + data_template: + callback_query_id: "{{ trigger.event.data.id }}" + message: "Нет входящего звонка" - alias: Domofon opened by button notification initial_state: true trigger: - platform: state - entity_id: binary_sensor.domofon_button - to: 'on' + # Нажата кнопка на плате + - platform: state + entity_id: binary_sensor.domofon_button + to: 'on' condition: + # Идет звонок - condition: state entity_id: binary_sensor.domofon_incoming_call state: 'on' action: - service: notify.telegram - data: - message: "Домофон открыт кнопкой" + # Отправить уведомление + - service: notify.telegram + data: + message: "Домофон открыт кнопкой"