Skip to content

Instantly share code, notes, and snippets.

  • Save vvv279/3e4c1843ee541dc31c5d6e7511065e18 to your computer and use it in GitHub Desktop.
Save vvv279/3e4c1843ee541dc31c5d6e7511065e18 to your computer and use it in GitHub Desktop.
Home Assistant. Яндекс колонка. Диалог. Скрипт для взаимодействия пользователя с колонкой.
# Скрипт создан AlexOwl. Страница автора https://gist.github.com/AlexOwl
# Чтобы скрипт работал, обязательно создаем вспомогательный элемент "текст" и создаем с именем "yandex_station_dialog_tag"
alias: Яндекс колонка. Диалог
mode: single
variables:
yandex_station_entity: здесь указываем либо переменную последней активной колонки '{{ states.input_text.active_station.state }}' либо конкретную колонку media_player.yandex_station_00000000000000000000
dialog_tag_entity: input_text.yandex_station_dialog_tag
fields:
message:
name: Message
description: Голосовое сообщение от колонки Яндекс
example: Включить свет на кухне? или Что будем делать?
required: true
volume:
name: Volume
description: Громкость колонки Яндекс (0...10)
example: 5
selector:
number:
mode: slider
min: 0
max: 10
ask:
name: Ask
description: >-
Ждать ответа от пользователя? Если нужно, чтобы колонка ждала ответ,
указываем True. Если не хотите, чтобы колонка ждала ответа, указываем
False
example: True или False
selector:
boolean: null
default: false
tag:
name: Tag
description: >-
Метка для определения ответа. Можно указать просто script или указывайте
что-то конкретное по желанию. Например turn-on-kitchen-light
example: turn-on-kitchen-light
sequence:
- choose:
- conditions:
- condition: template
value_template: '{{ ask|d(false) }}'
sequence:
- service: input_text.set_value
target:
entity_id: '{{ dialog_tag_entity }}'
data:
value: '{{ tag|d(none) }}'
- service: media_player.play_media
target:
entity_id: здесь указываем либо переменную последней активной колонки '{{ states.input_text.active_station.state }}' либо конкретную колонку media_player.yandex_station_00000000000000000000
data:
media_content_id: '{{ message|d(none) }}'
media_content_type: '{{ ''dialog'' if ask|d(false) else ''text'' }}'
extra:
volume_level: '{{ volume|d(none) and volume|int / 10 }}'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment