GithubHelp home page GithubHelp logo

n0name45 / node-red-contrib-yandex-station-management Goto Github PK

View Code? Open in Web Editor NEW
24.0 1.0 6.0 3.23 MB

Модуль node-red-contrib-yandex-station-management для управления умными колонками от Яндекс

HTML 48.30% JavaScript 51.70%
node-red homekit tts alice yandex-station

node-red-contrib-yandex-station-management's People

Contributors

andreypopov avatar n0name45 avatar twocolors avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

node-red-contrib-yandex-station-management's Issues

Не отображается список станций

Здравствуйте.
Токен успешно получил прям из node red.
Проверил через music-yandex-bot.ru токен верный.
node red подключен к ioBroker
Стоит всё на убунте, файрвол и selinux отключены.
Станции с сервера пингуются нормально.
Докер не используется.
Но в списке станций пусто.
Станции и сервер в одной подсети.
В чём я неправ ? Как поправить ?

http://192.168.2.5:1880/mdns/7754cb02f52c7b12
// 20230113000415
// http://192.168.2.5:1880/mdns/7754cb02f52c7b12

{
"SearchResult": [

]
}

http://192.168.2.5:1880/stations/7754cb02f52c7b12
Cannot GET /stations/7754cb02f52c7b12

http://192.168.2.5:1880/yandexdevices_7754cb02f52c7b12
Cannot GET /yandexdevices_7754cb02f52c7b12

Очередь для TTS

Доброго времени суток!
Огромное спасибо, за Ваш труд!!!
Никак не могу сообразить, как заставить Алису произносить сообщения по порядку, чтобы она не перебивала сама себя?
Т.е. при поступлении нескольких сообщений на TTS она лепит всё в подряд не закончив предыдущее сообщение - получается каша. Предусмотреть это не возможно, т.к. сообщения поступают по событию, события могут произойти в любой момент времени.
До этого пользовался другим контрибом (не локальным) и там такой проблемы не возникало - проговаривала всё по очереди.
Спасибо!

Передача команд в массиве mgs.payload

Колонка: Яндекс.Мини первого поколения.

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

msg.payload = [
{ "command": "stop" }.
"command": "start" }
]

То они не отрабатывают. В дебаг приходит массив.

Не находится колонка.

Спасибо большое за Вашу работу. Пытаюсь подключится к колонке через Токен. Токен от Яндекс музыки получил.
В логах вижу ошибки:
8 May 11:25:25 - [info] [yandex-login:loft] Starting server with id d157a59f52db894c
8 May 11:25:25 - [info] [alice-local-out:53a431c2f9e15303] undefined
8 May 11:25:25 - [info] [alice-local-out:53a431c2f9e15303] Status: {"color":"red","text":"disconnected"}
8 May 11:25:25 - [info] Started flows
Catching error on address already in use: {"errno":-98,"code":"EADDRINUSE","syscall":"addMembership"}
Catching error on dropMembership: {"errno":-99,"code":"EADDRNOTAVAIL","syscall":"dropMembership"}

crash node-red - [error] Error: setMulticastLoopback EBADF

repeats at intervals ~ 1h

node-red  | 23 Sep 04:15:52 - [red] Uncaught Exception:
node-red  | 23 Sep 04:15:52 - [error] Error: setMulticastLoopback EBADF
node-red  |     at Socket.setMulticastLoopback (node:dgram:821:11)
node-red  |     at Socket.<anonymous> (/data/node_modules/node-dns-sd/lib/dns-sd.js:513:14)
node-red  |     at Object.onceWrapper (node:events:627:28)
node-red  |     at Socket.emit (node:events:525:35)
node-red  |     at startListening (node:dgram:181:10)
node-red  |     at node:dgram:366:7
node-red  |     at processTicksAndRejections (node:internal/process/task_queues:84:21)
node-red  | 23 Sep 04:15:53 - [info]
node-red  |
node-red  | Welcome to Node-RED
node-red  | ===================
node-red  |
node-red  | 23 Sep 04:15:53 - [info] Node-RED version: v3.1.0
node-red  | 23 Sep 04:15:53 - [info] Node.js  version: v16.20.2
node-red  | 23 Sep 04:15:53 - [info] Linux 5.10.0-25-amd64 x64 LE
node-red  | 23 Sep 04:15:53 - [info] Loading palette nodes

Список покупок

Есть какая-нибудь возможность запросить у Алисы список покупок и получить его в node-red?

Поддержка 2FA

У меня на почте настроена двухфакторная аутентификация и мне не хочется её отключать, всё-таки это безопасность.

Есть ли возможность использовать модуль со включённой двухфакторной аутентификацией?

Не отображается Исполнитель в web интерфейсе

Здравствуйте!
Есть две Алисы: Макс и Мини. Модуль установил, прописал обе Алисы, web интерфейс управляет двумя колонками и отображает информацию с них корректно, за исключением того, что на плеере Алиса Макс не отображается "Исполнитель" (subtitle) при проигрывании музыки с Яндекс Моя Волна.
Если запускаю фильм, то этот параметр отображается. На плеере Алиса Мини "Исполнитель" (subtitle) отображается корректно. Пробовал по-всякому (тупо копировал все ноды с Мини и потом изменял IN, Player, Raw command и Voice параметр Station на Алису Макс) - не помогает.
Нодой Debug отлавливал что выдаёт IN с Алисы Макс по параметру subtitle.
Так вот с Мини debug получает информацию об исполнителе, а с Макс debug выдаёт "subtitle":"". Вот развёрнутый debug с Макс:

{"aliceState":"IDLE","canStop":false,"hdmi":{"capable":true,"present":false},"playerState":{"duration":254.17,"entityInfo":{"description":"","id":"","shuffled":false,"type":""},"extra":{"coverURI":"avatars.yandex.net/get-music-content/163479/9377d220.a.8693174-1/%%","requestID":"7f1c2386-d519-4c40-9481-21357f0af6ff","stateType":"music"},"hasNext":true,"hasPause":false,"hasPlay":false,"hasPrev":true,"hasProgressBar":true,"id":"57702358","liveStreamText":"","playerType":"music_thick","playlistDescription":"","playlistId":"","playlistType":"","progress":79,"showPlayer":true,"subtitle":"","title":"Катя-Катерина","type":"track"},"playing":false,"timeSinceLastVoiceActivity":24,"volume":0.4}

Но когда запускаю фильм "Сталкер" Тарковского, то web плеер Макс выдаёт "Исполнитель" корректно:

{"aliceState":"IDLE","canStop":false,"hdmi":{"capable":true,"present":false},"playerState":{"duration":9312,"entityInfo":{"description":"","id":"","type":""},"extra":null,"hasNext":false,"hasPause":false,"hasPlay":true,"hasPrev":false,"hasProgressBar":true,"id":"408aee64973a858ea2aaf6b9582b4f90","liveStreamText":"","playerType":"ru.yandex.quasar.app","playlistDescription":"","playlistId":"","playlistType":"","progress":28,"showPlayer":true,"subtitle":"фантастика, драма, детектив, приключения, 12+, 1979","title":"Сталкер","type":""},"playing":false,"timeSinceLastVoiceActivity":1580,"volume":0.7}

И ещё, отображение обложки payload.playerState.extra.coverURI при проигрывании радио (любого). В начале на полсекунды появляется обложка радиостанции и потом меняется на дефолтный сиреневый. Если играет музыку, то обложка остаётся на месте. Нашёл временное решение - через ноду RBE получаю первое payload.playerState.extra.coverURI и потом блокирую. Помогло пока.

Ошибка ноды Station

При использовании ноды Station и указания там IP адреса яндекс станций Node-Red при деплое ругается, что флоу содержит некорректно настроенные узлы (см. скриншот).

Могу ошибаться, но началось после обновления Node-Red с 3.1.0 до 3.1.3.

Пробовал пересоздавать, не помогает. Ошибка пропадает, если убрать IP адрес и указать режим Auto, но в такой конфигурации у меня не коннектится к станциям.

Снимок экрана 2023-12-18 в 00 32 19 Снимок экрана 2023-12-18 в 00 28 30 Снимок экрана 2023-12-18 в 00 32 31
node-red-contrib-yandex-station-management
0.3.10

Node-RED version: v3.1.3
Node.js  version: v20.9.0
Windows_NT 10.0.22631 x64 LE

Не видит третью станцию

Добрый день!
Столкнулся с тем, что подключаются только две станции из трех (есть одна Mini2 и две штуки Lite). IP адреса прописаны напрямую, но подключаются только две ноды Station из трех - одна нода для Mini2 и вторая для Lite. Третья нода упорно не подключается - у нее даже не загорается флажок Connecting/Connected/Disconnected (просто его нет). Все станции находятся, если изменять настройки ноды (выбрать другую станцию и указать ее IP), то можно подключиться к любой станции Lite - т.е. с самими станциями проблемы нет. Но заставить подключиться к двум станциям Lite не удается - работает только Mini и одна из двух Lite.
Nodered работает в docker, в логах от модуля есть только строки "Send registration to ...." для всех трех станций в первый раз и следом опять "Send registration to ...." для двух станций, которые в итоге и остаются работать

Краш Node Red

Добрый день!
Использую только Yandex OUT узел. Переодически раз в день node red падает, я логирую это событие.
Не знаю, какая информация конфиденциальна, буду вместо потенциально не нужной информации вставлять прочерки.
Примерно начинается все с такого:

8 Jun 13:48:38 - [info] [yandex-login:Яндекс Станция] Status update event: {"color":"yellow","text":"connecting..."} for ______
8 Jun 13:48:38 - [info] [yandex-login:Яндекс Станция] Connecting to wss://192.168.1.63:1961
8 Jun 13:48:38 - [info] [yandex-login:Яндекс Станция] Connected to 192.168.1.63, data: undefined
8 Jun 13:48:38 - [info] [yandex-login:Яндекс Станция] Status update event: {"color":"green","text":"connected"} for ______
8 Jun 13:48:38 - [info] [yandex-login:Яндекс Станция] connection of ______ success!
8 Jun 13:48:51 - [info] [yandex-login:Яндекс Станция] Status update event: {"color":"red","text":"disconnected"} for ______
8 Jun 13:48:51 - [info] [yandex-login:Яндекс Станция] Closed connection code 1000 with reason . Reconnecting...
8 Jun 13:48:51 - [info] [yandex-login:Яндекс Станция] Connecting to device ______. ws is {"_events":{},"_eventsCount":4,"_binaryType":"nodebuffer","_closeCode":1000,"_closeFrameReceived":true,"_closeFrameSent":true,"_closeMessage":"","_closeTimer":{"_idleTimeout":-1,"_idlePrev":null,"_idleNext":null,"_idleStart":99865414,"_onTimeout":null,"_repeat":null,"_destroyed":true},"_extensions":{},"_protocol":"","_readyState":3,"_receiver":{"_writableState":{"objectMode":false,"highWaterMark":16384,"finalCalled":false,"needDrain":false,"ending":true,"ended":true,"finished":true,"destroyed":false,"decodeStrings":true,"defaultEncoding":"utf8","length":0,"writing":false,"corked":0,"sync":false,"bufferProcessing":false,"writecb":null,"writelen":0,"afterWriteTickInfo":null,"bufferedRequest":null,"lastBufferedRequest":null,"pendingcb":0,"prefinished":tr

Там очень длинная простыня такого лога строчного лога, затем после него идет

8 Jun 13:48:51 - [info] [yandex-login:Яндекс Станция] ws.state: 3
8 Jun 13:48:51 - [info] [yandex-login:Яндекс Станция] Status update event: {"color":"yellow","text":"connecting..."} for 643078f6401c5c2904d0
8 Jun 13:48:51 - [info] [yandex-login:Яндекс Станция] Connecting to wss://192.168.1.63:1961
8 Jun 13:48:51 - [info] [yandex-login:Яндекс Станция] Connected to 192.168.1.63, data: undefined
8 Jun 13:48:51 - [info] [yandex-login:Яндекс Станция] Status update event: {"color":"green","text":"connected"} for 643078f6401c5c2904d0
8 Jun 13:48:51 - [info] [yandex-login:Яндекс Станция] connection of 643078f6401c5c2904d0 success!
8 Jun 13:49:04 - [info] [yandex-login:Яндекс Станция] Status update event: {"color":"red","text":"disconnected"} for 643078f6401c5c2904d0
8 Jun 13:49:04 - [info] [yandex-login:Яндекс Станция] Lost server, reconnect in 60 seconds...1006 +
8 Jun 13:49:04 - [info] [yandex-login:Яндекс Станция] Status update event: {"color":"red","text":"disconnected"} for 643078f6401c5c2904d0
8 Jun 13:49:04 - [info] [yandex-login:Яндекс Станция] Closed connection code 1000 with reason . Reconnecting...
8 Jun 13:49:04 - [info] [yandex-login:Яндекс Станция] Connecting to device 643078f6401c5c2904d0. ws is {"_events":{},"_eventsCount":4,"_binaryType":"nodebuffer","_closeCode":1000,"_closeFrameReceived":true,"_closeFrameSent":true,"_closeMessage":"","_closeTimer":{"_idleTimeout":-1,"_idlePrev":null,"_idleNext":null,"_idleStart":99878571,"_onTimeout":null,"_repeat":null,"_destroyed":true},"_extensions":{},"_protocol":"","_readyState":3,"_receiver":{"_writableState":{"obje

Т.е история с реконнектом продолжается.
Затем происходит еще один реконнект и идут вот такие логи , если я пришлю все я положу гит)

"encoding":"buffer","next":{"chunk":{"type":"Buffer","data":[88,15,172,83,77,91,170,78,80,76,187,85,76,67,155,83,72,72,161,30,25,15,170,69,105,69,173,123,64,68,128,85,105,100,154,70,106,28,129,85,106,94,134,82,113,24,172,127,106,27,134,87,83,117,153,127,105,20,225,89,90,103,167,88,116,124,166,115,74,103,161,94,100,107,161,94,17,90,166,112,96,103,163,89,107,108,166,115,73,104,253,113,73,96,182,113,89,120,252,113,119,78,188,117,78,65,181,95,90,100,249,117,77,107,254,101,123,99,167,95,74,28,166,101,116,99,189,102,116,24,164,117,74,90,166,95,100,85,255,117,73,66,166,89,116,107,186,102,100,123,251,95,16,127,167,88,100,65,185,94,74,100,188,117,77,99,254,101,74,100,249,117,73,116,255,113,89,108,252,115,100,116,253,114,103,108,183,101,89,123,165,113,73,70,184,114,100,124,184,117,77,29,225,81,70,85,185,14,79,84,162,104,21,101,174,102,81,91,157,72,113,103,149,113,97,73,139,85,102,116,152,123,19,105,129,88,14,114,185,82,98,68,253,84,109,94,237,16,1,68,171,30,25,15,249,8,16,29,248,4,69,27,251,12,18,78,250,95,17,20,255,8,71,29,237,16,1,93,174,69,79,66,174,88,1,23,180,30,64,66,162,81,66,67,171,30,25,15,191,85,77,74,237,65,15,15,188,89,77,89,155,85,78,72,237,6,18,27,253,15,18,25,246,15,23,28,250,10,21,80]},"encoding":"buffer","next":{"chunk":{"type":"Buffer","data":[129,254,1,74,26,187,21,55]},"encoding":"buffer","next":{"chunk":{"type":"Buffer"

Прямо перед смертью Node Red он присылает вот это:

e,"parser":null,"_httpMessage":null,"timeout":0},"_bufferedAmount":0,"_isServer":false,"_redirects":0,"_url":"wss://192.168.1.63:1961","_req":null}
8 Jun 13:59:38 - [info] [yandex-login:Яндекс Станция] ws.state: 3
8 Jun 13:59:38 - [info] [yandex-login:Яндекс Станция] Status update event: {"color":"yellow","text":"connecting..."} for _______
8 Jun 13:59:38 - [info] [yandex-login:Яндекс Станция] Connecting to wss://192.168.1.63:1961
8 Jun 13:59:38 - [info] [yandex-login:Яндекс Станция] Connected to 192.168.1.63, data: undefined
8 Jun 13:59:38 - [info] [yandex-login:Яндекс Станция] Status update event: {"color":"green","text":"connected"} for _____
8 Jun 13:59:38 - [info] [yandex-login:Яндекс Станция] connection of ______ success!
8 Jun 13:59:46 - [red] Uncaught Exception:
8 Jun 13:59:46 - RangeError: Maximum call stack size exceeded
at JSON.stringify ()
at Timeout.connect [as _onTimeout] (/home/pi/.node-red/node_modules/node-red-contrib-yandex-station-management/nodes/yandex-login.js:204:79)
at listOnTimeout (internal/timers.js:556:17)
at processTimers (internal/timers.js:497:7)
nodered.service: Main process exited, code=exited, status=1/FAILURE
nodered.service: Failed with result 'exit-code'.
nodered.service: Service RestartSec=20s expired, scheduling restart.
nodered.service: Scheduled restart job, restart counter is at 8.
Stopped Node-RED graphical event wiring tool.
Started Node-RED graphical event wiring tool.
8 Jun 14:00:08 - [info]
Welcome to Node-RED
8 Jun 14:00:08 - [info] Node-RED version: v1.2.9
8 Jun 14:00:08 - [info] Node.js version: v12.22.1
8 Jun 14:00:08 - [info] Linux 5.10.17-v7l+ arm LE
8 Jun 14:00:08 - [info] Loading palette nodes
Initializing HAP-NodeJS v0.9.4...
8 Jun 14:00:12 - [info] Settings file : /home/pi/.node-red/settings.js
8 Jun 14:00:12 - [info] Context store : 'default' [module=localfilesystem]
8 Jun 14:00:13 - [info] User directory : /home/pi/.node-red
8 Jun 14:00:13 - [warn] Projects disabled : editorTheme.projects.enabled=false
8 Jun 14:00:13 - [info] Flows file : /home/pi/.node-red/flows_raspberrypi.json
8 Jun 14:00:13 - [info] Server now running at http://127.0.0.1:1880/
8 Jun 14:00:13 - [warn]

Не находит станцию

Добрый день. Присоединяюсь в первый очередь к благодарностям за вашу работу. Использую ваши ноды для того чтобы Алиса озвучивала презентации. Но столкнулся с проблемой.
У нас сеть на базе роутера Микротик. Две колонки одна яндекс станция мини (первая версия), вторая колонка тоже мини второй версии подключены по вайфаю к микроту. Нод ред установлен на сервер с хоум асистант сам сервер подключен по ethernet.
изначально обе колонки нод ред видит хорошо, все команюы с нод реда поступают отлично на колонку. Затем мы в отдельную подсеть в микротике подключаем третью станцию яндекс мини 2, в этой же подсети отдельный нод ред и клонока в нем не находится, пробовал прописать айпишник, вроде как после кнопки обновления рядом со станциями колонка появляется ее выбираю но она не сохраняется и не работает, пробовал нод ред ставить на разные устройства не помогло.
Затем я яндекс мини первой версии с перевожу в подсеть там где была проблема и она без проблем находится.
А ту которую колонку не мог найти я переношу в первую подсеть она тоже находтися.
Ну вроде все проблемы решились сами по себе.
Сегодня там где у меня работали две колонки начинаются проблемы, на колонку по сценарию отправляются определенные голосовые сценарии и вместо нужного текста колонка периодически произносила чтото другое по типу: "не хочу" и так далее...., я попробовал перезапустить нод-ред, и сейчас вообще обе колонки не определяются.
В чем может быть проблема? Задавал вопросы в техническую поддержку яндекса они советуют обратиться к разработчикам.
Могу предоставить все нужные коментарии по данному вопросу, для оперативности оставлю свой телеграмм @rominon
Готов оплатить за решение нашей проблемы.

Перезагрузка NR

Несколько раз в день ловлю в логах такое:

`Dec 06 16:46:57 raspberrypi Node-RED[7310]: 6 Dec 16:46:57 - [error] TypeError: Cannot read property 'readyState' of undefined
Dec 06 16:46:57 raspberrypi Node-RED[7310]: at WebSocket.close (/home/pi/.node-red/node_modules/node-red-contrib-yandex-station-management/nodes/yandex-login.js:326
Dec 06 16:46:57 raspberrypi Node-RED[7310]: at WebSocket.emit (events.js:400:28)
Dec 06 16:46:57 raspberrypi Node-RED[7310]: at WebSocket.emitClose (/home/pi/.node-red/node_modules/ws/lib/websocket.js:246:10)
Dec 06 16:46:57 raspberrypi Node-RED[7310]: at TLSSocket.socketOnClose (/home/pi/.node-red/node_modules/ws/lib/websocket.js:1063:15)
Dec 06 16:46:57 raspberrypi Node-RED[7310]: at TLSSocket.emit (events.js:412:35)
Dec 06 16:46:57 raspberrypi Node-RED[7310]: at net.js:686:12
Dec 06 16:46:57 raspberrypi Node-RED[7310]: at TCP.done (_tls_wrap.js:564:7)
Dec 06 16:46:58 raspberrypi systemd[1]: nodered.service: Main process exited, code=exited, status=1/FAILURE
Dec 06 16:46:58 raspberrypi systemd[1]: nodered.service: Failed with result 'exit-code'.
Dec 06 16:47:18 raspberrypi systemd[1]: nodered.service: Service RestartSec=20s expired, scheduling restart.
Dec 06 16:47:18 raspberrypi systemd[1]: nodered.service: Scheduled restart job, restart counter is at 2.
Dec 06 16:47:18 raspberrypi systemd[1]: Stopped Node-RED graphical event wiring tool.
Dec 06 16:47:18 raspberrypi systemd[1]: Started Node-RED graphical event wiring tool.
Dec 06 16:47:19 raspberrypi Node-RED[7813]: 6 Dec 16:47:19 - [info]
Dec 06 16:47:19 raspberrypi Node-RED[7813]: Welcome to Node-RED
Dec 06 16:47:19 raspberrypi Node-RED[7813]: ===================

`

по моим наблюдениям ошибка появляется когда инет пропадает

[info] Node-RED version: v2.1.4 [info] Node.js version: v14.18.2 [info] Linux 5.10.63-v7l+ arm LE

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.