AlexxIT / YandexStation

Управление Яндекс.Станцией и другими устройствами умного дома с Алисой из Home Assistant
https://t.me/AlexxIT_SmartHome
MIT License
1.37k stars 125 forks source link

Обновлять список покупок молча #229

Open faustlab opened 2 years ago

faustlab commented 2 years ago

Было бы хорошо если бы можно было обновлять список покупок с отключенным звуком. Дома народ пугается если я обновляю список покупок. попытался обновлять список покупок с параметром extra

service: media_player.play_media
target:
  entity_id: media_player.yandex_station_мояколонка
data:
  media_content_id: update
  media_content_type: shopping_list
  extra:
    volume_level: 0.1

громкость не поменяла. пока остановился на последовательности: media_player.volume_set - 0.1 громкость пауза 3 секунды media_player.play_media - обновляю список пауза 60 секунд media_player.volume_set - 0.8 громкость

chertvl commented 2 years ago

Как временное и аналогичное решение, могу предложить сделать самостоятельно аналогичный функционал с помощью input_number и скрипта. Громкость запоминается в инпут, алисе отправляется "стоп" как только она начинает озвучивать список, после чего громкость восстанавливается. Этот вариант выполняется за 1-2 сек, и фактически слышно только щелчок восстановления громкости, больше ничего.

Параметры input_number: min: 0 max: 1 step: 0.01

alias: (Алиса) Обновить список покупок
icon: mdi:cart-arrow-up
sequence:
  - service: input_number.set_value
    target:
      entity_id: input_number.volume_alice
    data:
      value: '{{ state_attr(''media_player.alice'', ''volume_level'')}}'
  - service: media_player.volume_set
    target:
      entity_id: media_player.alice
    data:
      volume_level: 0.01
  - delay:
      milliseconds: 300
  - service: media_player.play_media
    data:
      media_content_id: update
      media_content_type: shopping_list
    target:
      entity_id: media_player.alice
  - delay:
      milliseconds: 300
  - service: media_player.play_media
    target:
      entity_id: media_player.alice
    data:
      media_content_type: command
      media_content_id: стоп
  - delay:
      milliseconds: 300
  - service: media_player.volume_set
    target:
      entity_id: media_player.alice
    data:
      volume_level: '{{ states(''input_number.volume_alice'')}}'
mode: single
mad0k commented 2 years ago

Пока я сделал так. Но если слушаете музыку, она затихнет на время обновления списка.

update_shopping_list:
  alias: Обновить список покупок
  sequence:
    - service: media_player.volume_mute
      data:
        entity_id: media_player.yandex_station_XXX
        is_volume_muted: true
    - service: media_player.play_media
      entity_id: media_player.yandex_station_XXX
      data:
        media_content_id: update
        media_content_type: shopping_list
    - wait_template: "{{ is_state_attr('media_player.yandex_station_XXX', 'alice_state', 'LISTENING') }}"
    - service: media_player.volume_mute
      data:
        entity_id: media_player.yandex_station_XXX
        is_volume_muted: false
alphasixtyfive commented 2 years ago

Я рандомно выбираю из всех станций, на которых ничего не играет:

update_shopping_list:
  alias: Update shopping list
  sequence:
    - variables:
        station: >-
          {{ states.media_player | selectattr('attributes.alice_state', 'eq', 'IDLE') | selectattr('state', 'in', ['paused', 'idle']) | map(attribute='entity_id') | list | random }}
    - service: media_player.volume_mute
      data:
        entity_id: "{{ station }}"
        is_volume_muted: true
    - service: media_player.play_media
      data:
        entity_id: "{{ station }}"
        media_content_id: update
        media_content_type: shopping_list
    - delay:
        milliseconds: 300
    - service: media_player.play_media
      data:
        entity_id: "{{ station }}"
        media_content_id: "стоп"
        media_content_type: command
    - service: media_player.volume_mute
      data:
        entity_id: "{{ station }}"
        is_volume_muted: false