Open instingt opened 3 years ago
Есть проблема - она остановит музыку, если та игралась в данный момент
Этот набор позволяет сохранять статус колонки (громкость, проигрывание музыки), останавливать музыку, проговаривать сообщение с необходимой громкостью и возвращать все обратно (громкость и музыку)
input_number:
yandex_volume_report:
name: "Громкость TTS уведомлений"
icon: mdi:volume-vibrate
min: 0
max: 100
step: 5
#-------------------------------------------------------------------------------
variable: # Хранилище для переменных
storage:
value:
attributes:
friendly_name: "Хранитель"
secure: 'on'
yandex_volume1:
yandex_volume2:
yandex_status1:
yandex_status2:
icon: mdi:database
script:
save_yandex_sound: # Скрипт сохраняет в Хранилище статус и громкость станций
alias: Сохранить громкость колонки
icon: mdi:progress-wrench
sequence:
- service: variable.set_variable
data:
variable: storage
attributes: >-
{"yandex_volume1": {{state_attr('media_player.yandex_box_1', 'volume_level')|float|round(3)}},
"yandex_volume2": {{state_attr('media_player.yandex_box_2', 'volume_level')|float|round(3)}},
"yandex_status1": "{{states('media_player.yandex_box_1')}}",
"yandex_status2": "{{states('media_player.yandex_box_2')}}" }
- service: media_player.media_pause # Пауза на колонках
entity_id:
- media_player.yandex_box_1
- media_player.yandex_box_2
- delay:
milliseconds: 350
- service: script.set_yandex_sound # Устанавливаем громкость на колонках из слайдера TTS Уведомлений
mode: queued
#-------------------------------------------------------------------------------
load_yandex_sound:
alias: Восстановить громкость колонки
icon: mdi:progress-wrench
sequence:
- delay:
milliseconds: 200 # Ожидаем статус простаивания колонок, когда заканчивает говорить #
- wait_template: '{{ is_state_attr("media_player.yandex_box_1", "alice_state", "IDLE") and is_state_attr("media_player.yandex_box_2", "alice_state", "IDLE") }}'
- service: media_player.volume_set # Восстанавливаем громкость на 1 колонке из Хранилища
entity_id: media_player.yandex_box_1
data_template:
volume_level: '{{ ( state_attr("variable.storage", "yandex_volume1")|float )|round(3) }}'
- service: media_player.volume_set # Восстанавливаем громкость на 2 колонке из Хранилища
entity_id: media_player.yandex_box_2
data_template:
volume_level: '{{ ( state_attr("variable.storage", "yandex_volume2")|float )|round(3) }}'
- wait_template: >
{{ is_state_attr("media_player.yandex_box_1", "volume_level", state_attr("variable.storage", "yandex_volume1"))
and is_state_attr("media_player.yandex_box_2", "volume_level", state_attr("variable.storage", "yandex_volume2")) }}
- service_template: >
{% if is_state_attr("variable.storage", "yandex_status1", "playing") %}
media_player.turn_on
{% else %}
media_player.media_pause
{% endif %}
entity_id: media_player.yandex_box_1 # Восстанавливаем статус на 1 колонке из Хранилища
- service_template: >
{% if is_state_attr("variable.storage", "yandex_status2", "playing") %}
media_player.turn_on
{% else %}
media_player.media_pause
{% endif %}
entity_id: media_player.yandex_box_2 # Восстанавливаем статус на 2 колонке из Хранилища
mode: queued
#-------------------------------------------------------------------------------
set_yandex_sound:
alias: Установить громкость колонки # Устанавливаем громкость на колонках из слайдера TTS Уведомлений
icon: mdi:progress-wrench
sequence:
- service: media_player.volume_set
data_template:
entity_id:
- media_player.yandex_box_1
- media_player.yandex_box_2
volume_level: '{{ ( states("input_number.yandex_volume_report")|int /100 )|round(3) }}'
mode: queued
automation:
- alias: TTS Погода за окном
trigger:
- platform: event
event_type: state_changed
event_data:
entity_id: sensor.gismeteo_current_weather
action:
- service: script.save_yandex_sound
- service: tts.yandex_station_say
entity_id:
- media_player.yandex_box_1
- media_player.yandex_box_2
data_template:
message: >
За окном {{ states("sensor.gismeteo_current_weather") }}.
- service: script.load_yandex_sound
mode: queued
Скажите, нет ли возможности имплементировать какой-то из этих вариантов в интеграцию?
Нашел способ, что бы колонка перестала слушать после сообщения со спецэффектами в локальном режиме. Для этого сразу после отправки спецэффектов вызываю команду "хватит". Тем самым колонка перестает слушать.
Пока работает отлично. Можно пользоваться.