Um componente para gerenciar o yandex.t. e outros dispositivos de uma casa inteligente com Alice da Home Assistant.

O texto geralmente usa os termos coluna local, modo local e controle local (eles carregam o mesmo significado). Estude cuidadosamente quais colunas o apóiam. As funções e capacidades do controle local são muito superiores ao gerenciamento da nuvem. O gerenciamento da nuvem é suportado em todas as colunas, mas não é suportado em módulos. O modo local é ativado automaticamente em colunas suportadas.
O controle da nuvem não tem feedback da coluna. Não se sabe se a coluna toca algo ou permanece em uma pausa e qual é o seu volume atual. Portanto, o estado da coluna no assistente doméstico pode diferir do estado atual da coluna, se você forneceu os comandos dela não do componente.
As possibilidades do gerenciamento local e de nuvem:
Recursos adicionais do controle local:
As possibilidades de todas as colunas
As possibilidades de falantes locais
Outras funções
Nem todos esses componentes por trás da minha autoria!
Método 1. HACS> Integração> Adicionar> Yandex.Station> Instalar
Método 2. Copie manualmente a pasta yandex_station da versão mais recente para o diretório /config/custom_components .
ATENÇÃO: Para cada uma de suas colunas no aplicativo Yandex Mobile, um cenário de serviço será criado. Não toque. Se você se removeu acidentalmente, reinicie o assistente doméstico.
Método 1. GUI (recomendado)
Configurações> Integração> Adicionar integração> Estação Yandex
Se não houver integração na lista, limpe o cache do navegador.
Existem várias maneiras de autorizar:
Como resultado, o componente receberá o token Yandex e o preservará, sua senha não será para permanecer em lugar algum.
Método 2. Yaml (desatualizado)
yandex_station :
username : myuser
password : mypassO texto geralmente fornece exemplos diferentes de scripts e automação. Eles podem ser usados:
A condição completa e os atributos disponíveis de seus alto -falantes podem ser vistos aqui.
Alguns exemplos usam event_type . O disparo deles pode ser monitorado aqui.
Em caso de erros, sua lista e descrição podem ser visualizadas aqui.
Esta documentação não foi projetada para ensinar a você o básico de trabalhar com assistente doméstico.
Funciona em todas as colunas
Atenção . A equipe sempre passa pela nuvem, mesmo nos alto -falantes locais, para que a estação não continue ouvindo depois do TTS.
Existem duas restrições no modo de nuvem:
O componente removerá automaticamente os caracteres proibidos do texto e limitará o comprimento do texto ao permitido.
script :
yandex_tts1 :
sequence :
- service : media_player.play_media
entity_id : media_player.yandex_station # замените на вашу колонку
data :
media_content_id : ' Температура в комнате {{ states("sensor.temperature_hall")|round }} градуса '
media_content_type : text Suportado:
Os seguintes efeitos, uma biblioteca de sons, configuração da fala e voz estão disponíveis:
Configurando a geração de fala
media_content_id : смелость sil <[500]> город+а берётEfeitos de voz
media_content_id : <speaker effect="megaphone">Ехал Грека через реку <speaker effect="-">видит Грека в реке ракSussurrar
media_content_id : <speaker is_whisper="true">Хозяин, уже утро, пора вставать!Biblioteca de sons
media_content_id : <speaker audio="alice-sounds-game-win-1.opus"> У вас получилось!Você pode fazer upload de seus arquivos de áudio para 120 segundos . Para reproduzir um arquivo de áudio carregado, não há necessidade de usar o yandex.dialog, no contexto do qual o arquivo é carregado.
media_content_id : <speaker audio="dialogs-upload/5d77ecc4-b781-4baa-abdd-bd0127553b97/081b7f9e-e708-499c-a907-264e33f28ecd.opus">Vozes diferentes podem ser vistas aqui. Nem todas as vozes funcionam. Se você especificar a voz errada, a coluna está estourando. Então você precisa enviar um comando Stop ou reiniciá -lo.
media_content_id : <speaker voice="zahar">Всем привет. Меня зовут Захар... script :
yandex_tts :
alias : TTS c эффектами
sequence :
- service : media_player.play_media
entity_id : media_player.yandex_station # замените на вашу колонку
data :
media_content_id : <speaker audio="alice-sounds-game-win-1.opus"> sil <[500]> Объявление погоды на сегодня...
media_content_type : dialog # работает только на локальной колонке As frases em sinos com Alice podem ser enviadas da Automação e da interface do assistente doméstico. Começando com a versão V2022.3 O menu TTS foi transferido para a seção de mídia , antes disso, estava na janela do media player.
Se desejar, você pode configurar esta seção através da YAML:
Se a equipe contiver media_content_id ou no template não haverá message do Word - a janela de entrada da mensagem será perdida.
Aqui estão alguns exemplos:
yandex_station :
media_source :
- title : Произнеси текст # обязательное поле
media_content_type : text # обязательное поле
thumbnail : https://brands.home-assistant.io/_/tts/icon.png
- title : Выполни команду
media_content_type : command
thumbnail : https://brands.home-assistant.io/_/automation/icon.png
- title : Включи любимое
media_content_id : Включи моё любимое вперемешку
media_content_type : command
- title : Произнеси шепотом
template : ' <speaker is_whisper="true">{{ message }} '
media_content_type : dialog
extra :
volume_level : 0.2
- title : Статус эквалайзера
template : ' Эквалайзер установлен на {{ states("select.yandex_station_equalizer") }} '
media_content_type : text 
Um exemplo de uma carta de jogador. ATENÇÃO : Este cartão não está no assistente doméstico por padrão. É facilmente colocado através de HACs. Se você tiver dificuldades na instalação, basta usar um cartão padrão. Ela também trabalha.
Os ícones bonitos de dispositivos Yandex também podem ser instalados através de HACs.
Funciona em todas as colunas
script :
yandex_command : # работает и в локальном и в облачном режиме
alias : Выполнить команду
sequence :
- service : media_player.play_media
entity_id : media_player.yandex_station # замените на вашу колонку
data :
media_content_id : Включи мою любимую музыку вперемешку
media_content_type : command As equipes de várias estações são suportadas ao mesmo tempo (TTS e Media_Player).
Funciona em todas as colunas
script :
yandex_volume_set : # в локальном или облачном режиме
alias : Меняем громкость нескольких станций
sequence :
- service : media_player.volume_set
data :
entity_id :
- media_player.yandex_station_12345678901234567890
- media_player.yandex_station_98765432109876543210
volume_level : 0.5Apenas para o regime local!
script :
yandex_play_album : # только в локальном режиме!!!
alias : Включить Би-2 на Станции
sequence :
- service : media_player.play_media
entity_id : media_player.yandex_station # замените на вашу колонку
data :
media_content_id : 60062 # ID альбома в Яндекс.Музыка
media_content_type : album # album, track or playlist Funciona em todas as colunas
Em seguida, você pode escolher "Responder a pergunta ou completar o comando", "Leia o texto em voz alta", "Perca o som" e assim por diante.
Se você deseja que a equipe silenciosamente vá para HA - indique para executar a equipe ничего не делай .
Quando a coluna executa esse cenário, dois eventos com parâmetros adicionais aparecerão no Ha ::
yandex_speaker - funciona apenas na "execução do comando" e pode não funcionar se o beta yandexgpt 2 estiver ativado instance : text_action
value : ничего не делай # фраза колонке из раздела То
entity_id : media_player.station_mini # ID колонки в ХА
name : Яндекс Мини # имя колонки в ХАyandex_scenario - funciona para quase qualquer ação em "então" instance : sound_play
value :
sound : boot-1
sound_name : Загрузка (8 бит)
entity_id : media_player.station_mini # ID колонки в ХА
name : Яндекс Мини # имя колонки в ХА
scenario_name : Тест # имя сценария в ЯндексеPara qualquer um dos eventos, você pode criar automação:
automation :
- alias : Расскажи шутку
trigger :
- platform : event
event_type : yandex_speaker
event_data :
value : ничего не делай # фраза из Сценария Яндекса (раздел То)
action :
- service : media_player.play_media
target :
entity_id : ' {{ trigger.event.data.entity_id }} ' # ответить той же колонкой
data :
media_content_type : text
media_content_id : ' {{ ["На связи", "Смольный слушает", "Тут я"]|random }} '
mode : singleInfelizmente, você não pode descobrir a frase que a coluna disse. Você pode descobrir apenas a frase que a coluna concluiu.
Para criar vários cenários com uma "execução frenética", use sinais de pontuação -,!.:=? E ничего не делай???!!! . O efeito não mudará e, em ha, você pode distinguir a que frase a reação ocorreu.
No trigger: > event_data: você pode filtrar os alto -falantes para executar automação diferente para diferentes salas na mesma frase.
Atenção! O TTS chama do HA também ativa esses eventos.
Para depurar os eventos, acesse o desenvolvedor do seu HA em http://192.168.1.123:8123/developer-tools/event , no "Inscreva-se no evento" indica yandex_speaker e clique em "Inscreva-se".
Ps. Há também uma maneira teimosa de obter comandos apenas para usuários avançados!
O componente suporta integração com meu outro componente - yandexdialogs. Se você tiver, as funções estão disponíveis para você:
Funciona em todas as colunas
Suporta efeitos especiais do TTS. Não há restrição a 100 caracteres. A postagem TTS não ouve o usuário.
Em media_content_type você deve indicar o nome do seu yandex.dialogo através de um cólon sem lacunas. O registro não é importante.
script :
yandex_tts3 :
sequence :
- service : media_player.play_media
entity_id : media_player.yandex_station_irbis
data :
media_content_id : <speaker is_whisper="true">Хозяин, пора бы спать
media_content_type : text:умный домFunciona em todas as colunas
Você pode iniciar um diálogo com o usuário, obter uma resposta e executar as ações necessárias, dependendo da resposta do usuário.
Em media_content_type você deve indicar o nome do seu yandex.dialogo através de um cólon sem lacunas. O registro não é importante. E através do segundo cólon, uma certa "tag" do diálogo, a fim de entender na automação, à qual você respondeu.
script :
yandex_dialog :
sequence :
- service : media_player.play_media
entity_id : media_player.yandex_station_mini
data :
media_content_id : <speaker is_whisper="true">Хозяин, уже утро, пора вставать!
media_content_type : dialog:умный дом:утроUm exemplo de reação à resposta do usuário pode ser visualizado aqui. Essa abordagem é fácil de usar tanto na automação de assistente doméstica quanto no Node-C.
O componente suporta notificações e avisos.
As notificações são uma maneira alternativa de chamar TTS. As notificações são configuradas no configuration.yaml . Mínimo, você deve indicar o nome da nova notificação e a lista das colunas onde ela deve soar. Um serviço separado será criado para cada notificação. Em seguida, você precisa chamar este serviço com o parâmetro message .
Opcionalmente as notificações suportam o parâmetro title . Para apoiá -lo, você pode usar um modelo de um exemplo abaixo.
Ao definir notificações, media_content_id e media_content_type são opcionais.
As notificações podem ser usadas em avisos. Por exemplo, se você esqueceu de fechar a porta de saída, o aviso enviará uma notificação com um determinado intervalo até que o problema seja resolvido.
notify :
- name : alice_alert # любое название
platform : yandex_station
data :
entity_id : media_player.yandex_station_mini # замените на вашу колонку
media_content_id : >-
{% if title is defined %}<speaker effect="megaphone">{{ title }}<speaker effect="-"> sil <[200]>{% endif %}{{ message }}
media_content_type : dialog
input_boolean : # просто для примера
garage_door :
name : Дверь гаража
alert :
garage_door :
name : Гараж открыт
done_message : Гараж закрыт
entity_id : input_boolean.garage_door
state : " on " # опционально, потому что "on" это значение по умолчанию
repeat : 5 # как часто повторять, в минутах
can_acknowledge : true # разрешить выключить уведомления вручную
skip_first : true # пропустить первое (мгновенное) уведомление
notifiers :
- alice_alert # название, которые указали выше O gerenciamento do despertador instalado nas estações é suportado.
Apenas para o regime local!
Continua a ouvir depois de pronunciar o texto! Mas não há restrição ao número de caracteres. Suporta efeitos especiais.
script :
yandex_tts4 :
alias : TTS только для локального режима
sequence :
- service : media_player.play_media
entity_id : media_player.yandex_station # замените на вашу колонку
data :
media_content_id : <speaker effect="megaphone">Объявление погоды на сегодня...
media_content_type : dialog Apenas para o regime local!
A coluna pronunciará um texto com um determinado volume e retornará o volume ao nível anterior.
script :
alice_custom_volume1 :
sequence :
- service : tts.yandex_station_say
entity_id : media_player.yandex_station # замените на вашу колонку
data :
message : Внимание! Важное сообщение...
options :
volume_level : 0.8Ou assim
script :
alice_custom_volume2 :
sequence :
- service : media_player.play_media
entity_id : media_player.yandex_station # замените на вашу колонку
data :
media_content_id : Внимание! Важное сообщение...
media_content_type : text # поддерживается text и dialog
extra :
volume_level : 0.8 Apenas para o regime local!
O streaming (transmissão) de música da coluna Yandex para alto -falantes inteligentes de outros fabricantes é suportado. As condições são:
sync_volume: False )sync_volume: "{{ volume_level / 2 }}" )O suporte de integração foi testado:
media_content_type: urlAtenção. Para a operação correta de algumas integrações, seu servidor HA deve estar disponível na rede local no endereço HTTP e IP:
Configurações> Geral> URL for Home Network> http://192.168.1.123:8123/
Deve -se entender que, com a configuração correta do acesso externo através de vários addons, você pode usar o HA no endereço https://myhome.duckdns.org/ . E com as configurações adequadas, esse link funcionará na rede externa e local. E o link do tipo HTTP/IP será usado apenas pelos players de mídia local.
O componente encontrará automaticamente todo o media_player teoricamente adequado e os adicionará à lista source_list da coluna. Se desejar, você pode indicar manualmente a lista de alto -falantes na configuration.yaml :
yandex_station :
media_players :
- entity_id : media_player.yas_306
name : Yamaha
- entity_id : media_player.mpd
name : MPD
speaker_id : [media_player.yandex_station] # опциональная привязка к конкретным колонкам Яндекса
- entity_id : media_player.yas_306
name : Yamaha (no sync)
sync_volume : False # опциональное отключение синхронизации громкости звука
- entity_id : media_player.yas_306
name : Yamaha (no sync)
sync_volume : " {{ volume_level / 2 }} " # использование Jinja2 для синхронизации громкости
- entity_id : media_player.samsung
name : SamsungTV
media_content_type : url # важно для интеграции SamsungTV из HACS
- entity_id : edia_player.nest_hub
name : Chromecast
quality : lossless # варианты качества - lossless / nq / lq
codecs : flac,mp3 # поддерживаемые кодеки - flac,aac,mp3 Escolhendo a qualidade da transmissão:
lossless + mp3 = 320 kbpm foi selecionadaflac - nem todas as músicas estão neste formatoVocê pode mudar a transmissão:
source no Mini Media Player Cardsource na janela padrão da coluna de mídia playerApenas para o regime local!
Para cada coluna, camera é criada (desligada por padrão), que pode exibir o texto da música atual no modo de karaokê.
O fluxo com o texto pode ser enviado para a TV, por exemplo, Chromecast:
alias : Включить караоке на ТВ
sequence :
- service : media_player.play_media
target :
entity_id : media_player.mibox
data :
media_content_id : >-
http://192.168.1.123:8123/api/camera_proxy_stream/camera.hall_speaker_lyrics?token={{ state_attr('camera.hall_speaker_lyrics', 'access_token') }}
media_content_type : image/jpeg Apenas para o regime local!
Apenas links que os dispositivos Yandex são capazes!
Somente em dispositivos com uma tela (estação grande ou módulo)
Isso funciona, inclusive da GUI, se você inserir um link no campo "Play text".
script :
yandex_play_url :
alias : Проигрывание медиа по ссылке
sequence :
- service : media_player.play_media
entity_id : media_player.yandex_station # замените на вашу колонку
data :
media_content_id : https://music.yandex.ru/album/2150009/track/19174962
media_content_type : xxx # тип не важен, но должен быть! Apenas para o regime local!
ATENÇÃO: Por volta do verão de 2024, a coluna retornou a resposta do texto a qualquer solicitação. Após a próxima atualização em Yandex, a coluna começou a devolver a resposta do texto apenas a uma lista limitada de frases (clima, tempo, casa inteligente etc.).
Opção 1. Através yandex_station.send_command .
script :
example1 :
sequence :
- action : yandex_station.send_command
data :
entity_id : media_player.yandex_station # замените на вашу колонку
text : какая погода?
response_variable : response
- action : notify.persistent_notification
data :
message : " {{ response }} " Opção 2. Via Conversation Entity .
script :
example2 :
sequence :
- action : conversation.process
data :
agent_id : conversation.yandex_station_mini # замените на вашего агента
text : какая погода?
response_variable : response
- action : notify.persistent_notification
data :
message : " {{ response }} " Apenas para o regime local!
Você pode se comunicar com sua Alice através do Telegram. E ela vai te responder no telegrama! Você pode perguntar ao tempo, chamar um táxi, ligar a música, tocar cidades ou gerenciar sua casa inteligente (se você sintonizou a integração com a Yandex Smart House). Nenhum Comando de Slash Telegram, comunique -se com Alice com o texto usual.
Ao mesmo tempo, o Home Assistant não precisa "jogar" na Internet. O telegrama no modo polling pode funcionar sem acesso externo.
Ao mesmo tempo, tocar a mídia por links também funcionará. Basta compartilhar com o seu telegrama um link para o filme Kinopoisk, vídeo do YouTube ou música/álbum/playlist na Yandex Music - e eles começarão na sua coluna!
telegram_bot :
- platform : polling
api_key : TELEGRAM_BOT_API_KEY # создайте своего Телеграм бота
allowed_chat_ids :
- TELEGRAM_USER1_ID # укажите ID своего аккаунта
- TELEGRAM_USER2_ID # при желании, поддерживается несколько аккаунтов
automation :
- trigger :
platform : event
event_type : telegram_text
action :
- service : conversation.process
data :
agent_id : conversation.yandex_station_mini # замените на вашу станцию
text : " {{ trigger.event.data.text }} "
conversation_id : " {{ trigger.event.data.chat_id }} "
response_variable : response
- service : telegram_bot.send_message
data :
target : " {{ trigger.event.data.chat_id }} "
message : " {{ response.response.speech.plain.speech }} "Enviar mensagens de telegrama para várias estações @Prostomakss ofereceu essa solução.
Apenas para o regime local!
A sincronização dupla da lista de compras da Alice e o componente da lista de compras padrão é suportado. Você pode adicionar e excluir os elementos da lista do HA e da voz da coluna.

Anteriormente, você precisa adicionar um componente padrão através da GUI ou YAML.
Para sincronização de listas, é necessário ligar para o próximo serviço. Se desejar, a chamada deste serviço pode ser executada em voz a partir da coluna através de comandos de recebimento da estação.
script :
update_shopping_list :
alias : Обновить список покупок
sequence :
- service : media_player.play_media
entity_id : media_player.yandex_station_mini # замените на вашу колонку
data :
media_content_id : update
media_content_type : shopping_listApós a sincronização, você pode remover os elementos com uma voz na coluna. Esses elementos serão removidos do HA para a próxima sincronização, mesmo que não se destacem.
Ou você pode observar os elementos conforme concluído na interface HA. Tais elementos serão removidos do Yandex na próxima sincronização. Apenas não limpe manualmente a lista de elementos concluídos no HA antes da sincronização! Caso contrário, a sincronização será perturbada.
A sincronização ocorre de acordo com as seguintes regras:
Deve -se ter em mente que alguns nomes que Yandex não pode adicionar à sua lista. Portanto, eles podem desaparecer sem vestígios.
Apenas para o regime local!
A maneira mais fácil de verificar o trabalho do modo local é iniciar uma música na coluna e ver se a capa é exibida no assistente doméstico.
Os dispositivos locais são buscados automaticamente através do protocolo MDNS (Zeroconf). Ele não funcionará se você abriu apenas um porto para assistente doméstico. Por exemplo, a instalação no Docker (no Hass.io está bem) sem definir network=host ou uma máquina virtual com NAT.
Se você tiver algum problema com isso, poderá especificar um endereço IP estático no roteador e na configuração do assistente doméstico. device_id Sua coluna pode ser visualizada no aplicativo Yandex Mobile.
yandex_station :
devices :
12345678901234567890 : # device_id вашей колонки
host : 192.168.1.123
name : Яндекс Станция # имя можно задать и тутswitch , sensor , select , number )Como IR, você pode usar uma versão remota do Yandex ou uma versão mais barata da Tuya (adicionada diretamente como um controle remoto de Yandex nativo).
Na configuração, você precisa listar os nomes de seus dispositivos:
yandex_station :
include :
- Кондиционер # добавить ВСЕ устройства с этим именем
- name : Очиститель Xiaomi
properties : [ "temperature", "humidity", "pm2.5_density" ] # опционально создать сенсоры
- name : Чайник Polaris
capabilities : [ "mute", "keep_warm" ] # опционально создать контролы
- name : Увлажнитель Polaris
capabilities : [ "mute", "controls_locked", "ionization", "backlight" ] # опционально создать контролы
properties : [ "temperature","humidity" ] # опционально создать сенсоры
- name : Кондиционер
room_name : Зал # опционально указать комнату
capabilities : [ "temperature", "fan_speed", "thermostat" ] # опционально создать контролы
current_temperature : " {{ states('sensor.temperature') }} " # опционально указать сенсор температуры
- name : Увлажнитель
current_humidity : " {{ states('sensor.humidity') }} " # опционально указать сенсор влажности
- room_name : Ванная # добавить ВСЕ устройства из этой комнаты
- type : devices.types.sensor # добавить ВСЕ устройства такого типа
- id : 96581cf1-dad4-4329-bbe9-0c843128f60a # добавить устройство по IDO ar condicionado será adicionado como termostato:

O dispositivo IR configurado manualmente será adicionado como remoto. As equipes são enviadas pelo serviço remote.send_command . Você pode enviar algumas equipes por vez, configurar o atraso e o número de repetições. Um exemplo de chamada.
script :
change_settings :
alias : Изменение настроек Алисы
sequence :
- service : media_player.play_media
data :
entity_id : media_player.yandex_station # замените на любую вашу колонку
media_content_id : ' без лишних слов: да ' # пробел после двоеточия
media_content_type : settingsValores suportados:
без лишних слов: да/нетответить шепотом: да/нетанонсировать треки: да/нетскрывать названия товаров: да/нетзвук активации: да/нетодним устройством: да/нетпонимать детей: да/нетрассказывать о навыках: да/нетвзрослый голос: умеренный/семейный/безопасный/без ограниченийдетский голос: безопасный/семейныйимя: алиса/яндексадаптивная громкость: да/неткроссфейд: да/нет Alterar a coluna selecionada para outros idiomas. Começa a responder a Yasmin!
action : media_player.play_media
target :
entity_id : media_player.hall_speaker # замените на вашу колонку
data :
media_content_type : locale
media_content_id : ru-RU # ru-RU en-US ar-SA kk-KZ tr-TR Se vários serviços TTS estiverem conectados ao assistente doméstico-o primeiro deles será chamado da carta do Media Player (classificando pelo nome). Por exemplo, tts.google_translate_say será mais prioritário tts.yandex_station_say . E tts.yandex_station_say terão mais prioridade tts.yandextts_say .
O componente do yandex.tan é capaz de suportar outros TTs, mas outros alto -falantes podem não suportar TTS yandex_station_say . Se necessário, você pode:
yandex_station :
tts_service_name : alice_say Apenas para estações com HDMI
A função da saída de som de comutação está no Yandex na versão beta. Somente o som do vídeo (por exemplo, YouTube) é exibido na TV. O som da música e a voz de Alice permanecem na estação.
Anteriormente, a função foi incluída na configuração. Agora está ativado por padrão para todos os proprietários de grandes estações.
script :
yandex_hdmi_sound :
alias : Звук Станции на HDMI
sequence :
- service : media_player.select_source
entity_id : media_player.yandex_station # поменяйте на вашу станцию
data :
source : HDMI Somente para Yandex.Mation Maks
script :
yandex_brightness :
sequence :
- service : media_player.play_media
entity_id : media_player.yandex_station_max
data :
media_content_id : 0.5 # допустимые значения от 0 до 1, или -1 для включения авто режима
media_content_type : brightness #257 #263 #518 #552
Usando outro domínio Yandex
yandex_station :
domain : yandex.comConexão HTTP Proxy
yandex_station :
proxy : http://username:[email protected]:3128Certificado HTTPS de diagonal
yandex_station :
ssl : False Pesquise e eliminação de problemas
logger:
default: info
logs: { custom_components.yandex_station: debug }