Управление домофоном через Телеграм
xakepShilo opened this issue · 0 comments
Так как предыдущая версия автоматизации малость устарела, то новая - рабочая.
Создаем файл с именем "telegram_smartintercom.yaml" и в него записываем следующий ниже код.
В принципе файл может иметь и другое имя.
Если все автоматизации у вас в одном файле указанном в настройке "automation: !include automations.yaml", то самую первую строку кода "automation:" удалить.
Первая автоматизация "- id: 'telegram_smartintercom'" используется только если вам нужно вызвать меню домофона напрямую командой "/smartintercom". Если нет, то тоже можно удалить.
Вторая автоматизация "- id: 'telegram_smartintercom_callback'" используется, если вызов идет непосредственно из меню верхнего уровня.
Две строки меню в обеих автоматизациях:
- '{{"\U000021A9"}} Назад:/hallway' - возвращает в предыдущее меню. (У меня в меню управления устройствами в прихожей)
- '{{"\U0001F4DC"}} Главное меню:/menu' - возврат в главное меню. (У вас может быть другая команда - меняем на свою)
automation:
- id: 'telegram_smartintercom'
alias: Telegram (домофон - menu)
description: ''
trigger:
- platform: event
event_type: telegram_command
event_data:
command: '/smartintercom'
action:
- service: telegram_bot.send_message
data:
target: '{{ trigger.event.data.user_id }}'
title: '{{"\U0001F5DD"}} Домофон'
message: ''
disable_notification: true
inline_keyboard:
- '{% set mode = states("select.smartintercom_modes") %}
{% if mode == "Не активен" %}
{{"\U0001F7E2"}}
{% else %}
{{"\U0001F534"}}
{% endif %}
Не активен:/smartintercom_not_active,
{% set mode = states("select.smartintercom_modes") %}
{% if mode == "Открывать всегда" %}
{{"\U0001F7E2"}}
{% else %}
{{"\U0001F534"}}
{% endif %}
Открывать всегда:/smartintercom_open_always'
- '{% if is_state("switch.smartintercom_accept_call", "on") %}
{{"\U0001F7E2"}}
{% else %}
{{"\U0001F534"}}
{% endif %}
Открыть:/smartintercom_accept_call,
{% set mode = states("select.smartintercom_modes") %}
{% if mode == "Сброс вызова" %}
{{"\U0001F7E2"}}
{% else %}
{{"\U0001F534"}}
{% endif %}
Сброс вызова:/smartintercom_reset'
- '{% if is_state("switch.smartintercom_sound", "on") %}
{{"\U0001F7E2"}}
{% else %}
{{"\U0001F534"}}
{% endif %}
Звук:/smartintercom_sound,
{% if is_state("switch.smartintercom_mute", "on") %}
{{"\U0001F7E2"}}
{% else %}
{{"\U0001F534"}}
{% endif %}
Mute:/smartintercom_mute'
- '{{"\U000021A9"}} Назад:/hallway'
- '{{"\U0001F4DC"}} Главное меню:/menu'
- id: 'telegram_smartintercom_callback'
alias: Telegram (домофон - callback)
description: ''
trigger:
- platform: event
event_type: telegram_callback
event_data: {}
action:
- choose:
- conditions:
- condition: template
value_template: '{{ trigger.event.data.command == "/smartintercom" }}'
sequence:
- service: telegram_bot.edit_message
data:
message_id: '{{ trigger.event.data.message.message_id }}'
chat_id: '{{ trigger.event.data.chat_id }}'
callback_query_id: '{{ trigger.event.data.id }}'
title: '{{"\U0001F5DD"}} Домофон'
message: ''
- service: telegram_bot.edit_replymarkup
data:
message_id: '{{ trigger.event.data.message.message_id }}'
chat_id: '{{ trigger.event.data.chat_id }}'
callback_query_id: '{{ trigger.event.data.id }}'
inline_keyboard: &keyb
- '{% set mode = states("select.smartintercom_modes") %}
{% if mode == "Не активен" %}
{{"\U0001F7E2"}}
{% else %}
{{"\U0001F534"}}
{% endif %}
Не активен:/smartintercom_not_active,
{% set mode = states("select.smartintercom_modes") %}
{% if mode == "Открывать всегда" %}
{{"\U0001F7E2"}}
{% else %}
{{"\U0001F534"}}
{% endif %}
Открывать всегда:/smartintercom_open_always'
- '{% if is_state("switch.smartintercom_accept_call", "on") %}
{{"\U0001F7E2"}}
{% else %}
{{"\U0001F534"}}
{% endif %}
Открыть:/smartintercom_accept_call,
{% set mode = states("select.smartintercom_modes") %}
{% if mode == "Сброс вызова" %}
{{"\U0001F7E2"}}
{% else %}
{{"\U0001F534"}}
{% endif %}
Сброс вызова:/smartintercom_reset'
- '{% if is_state("switch.smartintercom_sound", "on") %}
{{"\U0001F7E2"}}
{% else %}
{{"\U0001F534"}}
{% endif %}
Звук:/smartintercom_sound,
{% if is_state("switch.smartintercom_mute", "on") %}
{{"\U0001F7E2"}}
{% else %}
{{"\U0001F534"}}
{% endif %}
Mute:/smartintercom_mute'
- '{{"\U000021A9"}} Назад:/hallway'
- '{{"\U0001F4DC"}} Главное меню:/menu'
# режим not active
- conditions:
- condition: template
value_template: '{{ trigger.event.data.command == "/smartintercom_not_active" }}'
sequence:
- service: select.select_option
entity_id: select.smartintercom_modes
data:
option: Не активен
- delay:
milliseconds: 500
- service: telegram_bot.edit_replymarkup
data:
message_id: '{{ trigger.event.data.message.message_id }}'
chat_id: '{{ trigger.event.data.chat_id }}'
callback_query_id: '{{ trigger.event.data.id }}'
disable_notification: true
inline_keyboard: *keyb
# открывать всегда
- conditions:
- condition: template
value_template: '{{ trigger.event.data.command == "/smartintercom_open_always" }}'
sequence:
- service: select.select_option
entity_id: select.smartintercom_modes
data:
option: Открывать всегда
- delay:
milliseconds: 500
- service: telegram_bot.edit_replymarkup
data:
message_id: '{{ trigger.event.data.message.message_id }}'
chat_id: '{{ trigger.event.data.chat_id }}'
callback_query_id: '{{ trigger.event.data.id }}'
disable_notification: true
inline_keyboard: *keyb
# открыть один раз
- conditions:
- condition: template
value_template: '{{ trigger.event.data.command == "/smartintercom_accept_call" }}'
sequence:
- service: switch.toggle
entity_id: switch.smartintercom_accept_call
- delay:
milliseconds: 500
- service: telegram_bot.edit_replymarkup
data:
message_id: '{{ trigger.event.data.message.message_id }}'
chat_id: '{{ trigger.event.data.chat_id }}'
callback_query_id: '{{ trigger.event.data.id }}'
disable_notification: true
inline_keyboard: *keyb
# сброс вызова
- conditions:
- condition: template
value_template: '{{ trigger.event.data.command == "/smartintercom_reset" }}'
sequence:
- service: select.select_option
entity_id: select.smartintercom_modes
data:
option: Сброс вызова
- delay:
milliseconds: 500
- service: telegram_bot.edit_replymarkup
data:
message_id: '{{ trigger.event.data.message.message_id }}'
chat_id: '{{ trigger.event.data.chat_id }}'
callback_query_id: '{{ trigger.event.data.id }}'
disable_notification: true
inline_keyboard: *keyb
# sound
- conditions:
- condition: template
value_template: '{{ trigger.event.data.command == "/smartintercom_sound" }}'
sequence:
- service: switch.toggle
entity_id: switch.smartintercom_sound
- delay:
milliseconds: 500
- service: telegram_bot.edit_replymarkup
data:
message_id: '{{ trigger.event.data.message.message_id }}'
chat_id: '{{ trigger.event.data.chat_id }}'
callback_query_id: '{{ trigger.event.data.id }}'
disable_notification: true
inline_keyboard: *keyb
# mute
- conditions:
- condition: template
value_template: '{{ trigger.event.data.command == "/smartintercom_mute" }}'
sequence:
- service: switch.toggle
entity_id: switch.smartintercom_mute
- delay:
milliseconds: 500
- service: telegram_bot.edit_replymarkup
data:
message_id: '{{ trigger.event.data.message.message_id }}'
chat_id: '{{ trigger.event.data.chat_id }}'
callback_query_id: '{{ trigger.event.data.id }}'
disable_notification: true
inline_keyboard: *keyb
mode: restart
Будут какие-то вопросы - задавайте. По мере возможности отвечу и помогу.
