Skip to content

Instantly share code, notes, and snippets.

@AlexxIT
Created September 14, 2020 07:56
Show Gist options
  • Star 12 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save AlexxIT/c275ee512bef01ed4d3b0aebc12caef4 to your computer and use it in GitHub Desktop.
Save AlexxIT/c275ee512bef01ed4d3b0aebc12caef4 to your computer and use it in GitHub Desktop.
Отображаем статус Яндекс Станции с помощью умных ламп
yandex_station:
username: myuser
password: mypass
sensor:
- platform: template
sensors:
alice_state:
value_template: "{{ state_attr('media_player.yandex_station_mini', 'alice_state') }}"
script:
listening:
mode: queued
sequence:
- service: light.turn_on
entity_id: light.lamp1, light.lamp2
data:
rgb_color: [36, 36, 255]
transition: 1
- delay: '00:00:01'
- service: light.turn_on
entity_id: light.lamp1, light.lamp2
data:
rgb_color: [103, 57, 204]
transition: 1
- delay: '00:00:01'
- service: script.turn_on
entity_id: script.listening
speaking:
mode: queued
sequence:
- service: light.turn_on
entity_id: light.lamp1, light.lamp2
data:
brightness: 100
transition: 1
- delay: '00:00:01'
- service: light.turn_on
entity_id: light.lamp1, light.lamp2
data:
brightness: 255
transition: 1
- delay: '00:00:01'
- service: script.turn_on
entity_id: script.speaking
automation:
- trigger:
platform: state
entity_id: sensor.alice_state
to: LISTENING
action:
- service: script.turn_off
entity_id: script.speaking
- service: light.turn_on
entity_id: light.lamp1, light.lamp2
data:
rgb_color: [103, 57, 204]
brightness: 255
- service: script.turn_on
entity_id: script.listening
- trigger:
platform: state
entity_id: sensor.alice_state
to: SPEAKING
action:
- service: script.turn_off
entity_id: script.listening
- service: light.turn_on
entity_id: light.lamp1, light.lamp2
data:
rgb_color: [103, 57, 204]
brightness: 255
- service: script.turn_on
entity_id: script.speaking
- trigger:
platform: state
entity_id: sensor.alice_state
to: IDLE
action:
- service: script.turn_off
entity_id: script.listening, script.speaking
- service: light.turn_off
entity_id: light.lamp1, light.lamp2
yeelight:
devices:
192.168.1.123:
name: lamp1
use_music_mode: True
192.168.1.124:
name: lamp2
use_music_mode: True
@annikovk
Copy link

Супер! Алиса стоит под телевизором, поэтому ничего не слышит когда он включен.
Сделал чтобы телик ставился на mute когда алиса говорит. User Experience улучшился в разы!
Спасибо!

@NMGAndy
Copy link

NMGAndy commented Nov 13, 2020

Что-то не работает :(
Сам компонент уже был установлен и работает нормально.
Добавил в configuration.yaml:
sensor:

  • platform: template
    sensors:
    alice_state:
    value_template: "{{ state_attr('media_player.yandex_station_mini', 'alice_state') }}"

Скопипастил только свою станцию. Перезагрузил HA.
Захожу в Entities, вижу там сенсор alice_state. Только он всегда None.
Что не так?

@AlexxIT
Copy link
Author

AlexxIT commented Nov 13, 2020

Не включился локальный режим. Можно роутер и саму станцию перезагрузить

@NMGAndy
Copy link

NMGAndy commented Nov 14, 2020

Не включился локальный режим. Можно роутер и саму станцию перезагрузить

Перезагрузил и то и другое несколько раз. Не помогает :(

@AlexxIT
Copy link
Author

AlexxIT commented Nov 14, 2020

Обложка текущей песни отображается в ХА?

@NMGAndy
Copy link

NMGAndy commented Nov 14, 2020

Обложка текущей песни отображается в ХА?

Все, разобрался. Mdns надо было настроить...

@AlexxIT
Copy link
Author

AlexxIT commented Nov 14, 2020

Как именно вы его настроили? Может другим поможет

@NMGAndy
Copy link

NMGAndy commented Nov 14, 2020

Как именно вы его настроили? Может другим поможет

6CB6AFED-FC90-4913-A4C1-9CC485868DC8

У меня HA в докере. Просто галочку нужно поставить внизу.

@AlexxIT
Copy link
Author

AlexxIT commented Nov 15, 2020

Точно. Вечные проблемы людей, кто не поставил себе hass.io :)

@Wain-PC
Copy link

Wain-PC commented Nov 25, 2020

Если у вас, как у меня, HA в докере и использовать net=host нет желания или возможности (например, он находится за reverse proxy), можно достаточно просто ретранслировать mdns через avahi-daemon.
Вот статья, которая мне помогла. Нужно всего 3 шага:

  1. Установить на хосте avahi-daemon.
  2. В конфиге avahi-daemon добавить интерфейсы, для которых будет включена ретрансляция, и включить reflector.
  3. Перезапустить avahi-daemon.

После этого mdns отлично прокидывается в VLAN докера и все девайсы обнаруживаются (не только колонка).

@butalex11
Copy link

Супер! Алиса стоит под телевизором, поэтому ничего не слышит когда он включен.
Сделал чтобы телик ставился на mute когда алиса говорит. User Experience улучшился в разы!
Спасибо!

Есть возможность поделиться кодом?

@annikovk
Copy link

@butalex11
В configurations.yaml:

# Телевизор на Android TV:
media_player:
  - platform: androidtv
    device_class: androidtv
    name: TV
    host: 192.168.1.72
#Yandex станция
yandex_station:
  username: !secret yandex_user
  password: !secret yandex_pw
  tts_service_name: alice_say

#включение файлов из других дирректорий
sensor: !include_dir_merge_list includes/sensor
automation: !include_dir_merge_list includes/automation

В includes/sensor/yandex_state.yaml:

- platform: template
  sensors:
    alice_state:
      value_template: "{{ state_attr('media_player.yandex_station_<ваш ID>', 'alice_state') }}"

В includes/automation/tv.yaml:

- alias: "mute when alice is listening"
  initial_state: 'on'
  trigger:
    platform: state
    entity_id: sensor.alice_state
    from: IDLE
    to: LISTENING
  action:
    service: androidtv.adb_command
    data_template:
      entity_id: media_player.oetv
      command: 'sendevent /dev/input/event3 4 4 786658 && sendevent /dev/input/event3 1 113 1 && sendevent /dev/input/event3 0 0 0 && sendevent /dev/input/event3 4 4 786658 && sendevent /dev/input/event3 1 113 0 && sendevent /dev/input/event3 0 0 0'
- alias: "unmute when alice is not listening"
  initial_state: 'on'
  trigger:
    platform: state
    entity_id: sensor.alice_state
    to: IDLE
  action:
    service: androidtv.adb_command
    data_template:
      entity_id: media_player.oetv
      command: 'sendevent /dev/input/event3 4 4 786665 && sendevent /dev/input/event3 1 115 1 && sendevent /dev/input/event3 0 0 0 && sendevent /dev/input/event3 4 4 786665 && sendevent /dev/input/event3 1 115 0 && sendevent /dev/input/event3 0 0 0'

В последнем файле команда MUTE отправляется на телевизор с помощью ADB (Android Debug Bridge), т.к. у меня телевизор на Android TV.
Возможно, у вас не такой телевизор и вам нужно посылать ему MUTE каким-то другим образом (через ИК повторитель итд).

@butalex11
Copy link

butalex11 commented Jan 19, 2021

@annikovk
Спасибо, всё получилось. У меня Samsung Smart TV, в action получилось вот так:

   action:
     service: media_player.volume_mute  
     data_template:  
       entity_id: media_player.televizor_kukhnia  
       is_volume_muted: true

Единственное, что возможно лучше было бы условие добавить, включен ли телевизор в данный момент. Но и так работает :)

@ARNik
Copy link

ARNik commented Feb 13, 2021

У меня сенсор alice_state обновляется с задержкой 5-10 секунд. Можно как-то уменьшить это время?
От чего оно зависит?

@annikovk
Copy link

У меня сенсор alice_state обновляется с задержкой 5-10 секунд. Можно как-то уменьшить это время?
От чего оно зависит?

Убедитесь что Яндекс станция в локальном режиме работает.

@AlexxIT
Copy link
Author

AlexxIT commented Feb 14, 2021

У меня сенсор alice_state обновляется с задержкой 5-10 секунд. Можно как-то уменьшить это время?
От чего оно зависит?

Прошивка на всех станциях поломана на стороне Яндекса. Теперь, к сожалению, так

@stilvoll2
Copy link

Да, теперь станции к сожалению отвратительно стали работать, гораздо хуже чем раньше, янедкс не на ту дорожку встали))

@stilvoll2
Copy link

Ещё вопрос есть, большая станция стала при активации голосом сразу выключается не дожидаясь команды, это тоже из за прошивок или это у меня какой-то глюк?))

@butalex11
Copy link

У меня сенсор alice_state обновляется с задержкой 5-10 секунд. Можно как-то уменьшить это время?
От чего оно зависит?

Прошивка на всех станциях поломана на стороне Яндекса. Теперь, к сожалению, так

А кто-то вообще туда пробовал обращаться? и куда вообще можно обратиться. Как вариант - составить текст и всем писать, хоть бы ответ какой получить, исправят ли они это вообще когда-либо.

@AlexxIT
Copy link
Author

AlexxIT commented Feb 14, 2021

Задачи сторонний умных домов у них точно не в приоритете.

@mihail4anov
Copy link

Станция обновилась, больше звук не выключается на телевизор, когда она слушает. Состояние всегда IDLE.

@AlexxIT
Copy link
Author

AlexxIT commented Feb 16, 2021

Может просто локальное подключение оборвалось и не восстановилось

@mihail4anov
Copy link

Может просто локальное подключение оборвалось и не восстановилось

Да, Спасибо. Ребут HA помог

@lordden89
Copy link

всем привет! Локальный режим работает у меня но почему то состояние всегда IDLE. Ребут ХА самой алисы не помогает. Где копать подскажите ?

@Aleksey2910
Copy link

@annikovk
Спасибо, всё получилось. У меня Samsung Smart TV, в action получилось вот так:

   action:
     service: media_player.volume_mute  
     data_template:  
       entity_id: media_player.televizor_kukhnia  
       is_volume_muted: true

Единственное, что возможно лучше было бы условие добавить, включен ли телевизор в данный момент. Но и так работает :)

Можете написать, что и куда прописывать в HA для реализации токового?

@byaaka
Copy link

byaaka commented Sep 16, 2021

@Aleksey2910
Я прописал в automations.yaml, работает.
Вот фрагмент:

- id: '1631776747736'
  alias: mute when alice is listening
  trigger:
    platform: state
    entity_id: sensor.alice_state
    from: IDLE
    to: LISTENING
  action:
    service: media_player.volume_mute
    data_template:
      entity_id: media_player.televizor
      is_volume_muted: true
  initial_state: 'on'
  mode: single
- id: '1631777034268'
  alias: unmute when alice is not listening
  trigger:
  - platform: state
    entity_id: sensor.alice_state
    to: IDLE
  action:
  - service: media_player.volume_mute
    data_template:
      entity_id: media_player.televizor
      is_volume_muted: false
  initial_state: 'on'


@dimokarz
Copy link

Джентльмены, хел ми плиз! Сделал mute через ИК, вот так:

- id: '1639938170789'
  alias: Приглушить звук
  description: ''
  trigger:
  - platform: state
    entity_id: sensor.alice_state
    from: IDLE
    to: LISTENING
  condition: []
  action:
  - service: script.1639937968824
  mode: single
- id: '1639938271133'
  alias: Восстановить звук
  description: ''
  trigger:
  - platform: state
    entity_id: sensor.alice_state
    to: IDLE
  condition: []
  action:
  - service: script.1639937968824
  mode: single

Работает, но есть одно НО... Если отправить текс на ЯС (например у меня чайник рапортует о том, что он вскипел), она отключает звук телевизора, но не возвращает его.
Вот.

@blakx87
Copy link

blakx87 commented Mar 18, 2022

111
Помогите пожалуйста, не могу понять. Я хочу сделать автоматизацию при включении станции мини сработали правила. Когда выставляю атрибуты без конкретных значений, автоматизация срабатывает. Но мне необходимо, что бы срабатывало при конкретных значениях. Какие конкретные бывают значенияу атрибутов для станции мини
Supported features
Alice state

@valbal89
Copy link

не пинайте, тока поствил хом асист супервизор. Куда вставлять этот код, станцию уже привязал к ха.

@beautyfree
Copy link

Я новый пользователь Home Assistant, правильно ли понимаю что на текущее время разбивка по файлам поменялась и нужно это учитывать?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment