이 모듈을 사용하면 Yandex 장치의 로컬 API에서 API를 제어 할 수 있습니다.
작업은 동시에 다음과 같은 장치에서만 가능합니다.
이 작업에는 Yandex.music의 토큰이 필요합니다. 모듈에서, 실험 모드에서, 로그인-파라일에서 토큰을 얻을 수있는 가능성 (여기서 보내기 감사)이 구현됩니다. 토큰 수령이 작동하지 않으면 Yandex 설정에서 2 단계 인증을 켜고 비활성화해야합니다. 원천. 코드를 보면 회계 데이터 사용의 안전을 확인할 수 있습니다.
영수증의 두 번째는 FAQ에 설명되어 있습니다.
토큰을 얻는 옵션 중 세 번째는 여기에 설명되어 있습니다.
여러 장치 (테스트) 및 여러 계정 (테스트)에서 작업 할 수 있습니다.
자동화를 유연하게 조정하고 음성 알림을 사용할 수있는 4 개의 끄덕임으로 구성됩니다.
설치는 Node-Red의 관리 팔레트 섹션 또는 NPM을 사용하여 수행됩니다. 명령을 실행하기 위해 Node-Red (일반적으로 ~/.node-red )가있는 카탈로그에서 :
npm i node-red-contrib-yandex-station-management
설치 후 작업을 시작하려면 노드를 추가하고 회계 데이터 (토큰)를 로그인 섹션에 입력하고 저장 및 배포를 누르십시오 (필수!). 토큰을 얻는 방법 - FAQ로 작성되었습니다.
스테이션 필드의 NODA 설정에서 랩 후 스테이션을 제어 할 수 있습니다.
스테이션이 목록에 나타나지 않으면 몇 분 동안 기다리거나 노드 레드를 다시 시작할 수 있습니다.
스테이션에 대한 추가 설정. 선택 사항, 즉 모든 것이이 노드 없이는 작동하지만 더 가로 채울 수 있습니다. 노드는 흐름 외부에 배치되며 입구와 출력이 없습니다.
역에 드레싱. 어떤 이유로 든 연결이 이루어지지 않도록해야합니다. 비활성화하십시오.
수동 상태에서는 스테이션 주소와 연결 용 포트를 수동으로 표시 할 수 있습니다. Docker, Homeassistant 및 연결을위한 네트워크 세부 사항을 자동으로 결정하지 않는 다른 경우가 사용되는 경우 권장됩니다.
노래, 라디오, 동화를들을 수있는 제 시간에 제한 가능성이 구현되어 야간 이야기의 작은 연인이 가능한 빨리 잠들 수 있습니다. 그것은 매주 매일 조정됩니다. Active of Active의 비용이 들지 않으면 오늘날 제한이 작동하지 않습니다. 말할 문구는 앨리스가 음악 대신에 말할 문구입니다.
흐름 시작시 배치되며 "치즈"형식과 홈 키트로 열의 현재 상태에 대한 데이터를 자동으로 보냅니다.
변환없이 데이터를 발행합니다. 즉, 장치에서 수신 된 형태입니다. 메시지 구조 :
{ "aliceState" : " IDLE " ,
"canStop" : false ,
"hdmi" :
{ "capable" : true ,
"present" : false },
"playerState" :
{ "duration" : 180.91 ,
"extra" :
{ "coverURI" : " avatars.yandex.net/get-music-content/2383988/de45408f.a.9039208-1/%% " ,
"stateType" : " music " },
"hasNext" : true ,
"hasPause" : false ,
"hasPlay" : false ,
"hasPrev" : true ,
"hasProgressBar" : true ,
"liveStreamText" : " " ,
"progress" : 20 ,
"showPlayer" : true ,
"subtitle" : " Крематорий " ,
"title" : " Мусорный ветер " },
"playing" : false ,
"timeSinceLastVoiceActivity" : 30454 ,
"volume" : 0 }장치의 메시지는 초당 여러 조각으로 올 수 있으므로 내용 (Payload.playerstate.title), Performer의 이름 (Payload.playerstate.subtitle)에 따라 표준 rbe 노드를 필터 복제 할 필요성에 대해 생각해야합니다.
내부에서, Homekit 및 NODA에서 발행 된 형식의 변환은 HomeKit-Noda와 직접 결합 될 수 있으며, 그 결과 흐름이 상당히 단순화됩니다. 위즈 케는 문서 끝에서 찾을 수 있습니다.
HomeKit 형식에 대한 옵션이 있습니다.
HomeKit 형식 - 스마트 스피커 :
{ "CurrentMediaState" : 0 , "ConfiguredName" : " International String Trio - Tarantella " }Homekit 형식 - 텔레비전 :
{ "Active" : 1 }텔레비전 장치를 사용할 때 iOS에서 "원격 제어"를 사용할 수 있습니다.
유량의 중간에 배치되며 들어오는 메시지와 함께 장치의 마지막 상태를 페이로드로 보냅니다. 발행의 구조는 전체 상태 메시지 노드와 유사합니다.
흐름 끝에 배치되어 장치에 메시지를 보내는 데 사용됩니다. 동일한 장치에 대해 여러 끄덕임을 사용할 수 있으며, 장치와 하나의 연결을 통해 데이터가 전송됩니다.
열의 재생산 관리. 노드는 한 줄로 페이로드를 기다립니다. 다음 명령 중 하나가 올 것입니다 : Play, Spec, Next, Prev, Forward (10 초 앞서), 뒤로 (10 초 뒤로), VolumeUp, Volumedown
"빛을 켜기", "음악을 켜기", "내 재생 목록 켜기", "15 분 만에 분리"등을 목소리로 말하는 대신 팀을 보내십시오.
보낸 문구의 목소리로 재생산 - 사양에 대한 텍스트. 기호 제한이 없습니다. TTS 매개 변수는 설정에서 설정할 수 있으며 일부 매개 변수는 들어오는 메시지로 재정의 할 수 있습니다.
여러 옵션이 있습니다.
필요한 경우 단어의 충격 모음은 예를 들어 다음과 같습니다.
остр+ота
м+ука
긴 단어는 단어로 나뉘어 지고이 짧은 단어 각각에 대한 스트레스로 나눌 수 있습니다.
MN+WOW PR+장교 C+EMI PAL+ATINSK
일부 단어는들을 때 쓸 수 있습니다.
«ненастный» — нен+асный
«пожалуйста» — пож+алуста
단어 사이를 일시 중지하려면 siltax <[number_millisect]>를 사용하십시오. 예를 들어:
смелость sil <[500]> город+а берёт
공간으로 분리 된 각 구두점 마크는 50-100ms의 일시 정지로 표시됩니다.
<speaker audio="alice-sounds-game-win-1.opus"> У вас получилось!
NRCHB 모듈의 SmartSpeaker 장치 (VCL/OKL) 및 TV (VCL/OFF + 리모컨)의 HomeKit의 출력을 포착합니다. hap.context verification function이 구축되어 팽만감을 방지합니다. HomeKit 노드와 직접 결합됩니다. "기본 명령"옵션은 재생 시작을위한 현재 트랙이 없으면 어떤 음성 명령을 시작할지 표시하지만 무언가를 재생해야합니다. 예를 들어, "내 음악을 켜십시오"또는 "어린이 노래 켜기".
그는 페이로드 내부의 JSON 형식의 메시지를 받고 처리없이 열로 전송합니다. 배열 형식으로 페이로드로 한 메시지로 여러 메시지를 보낼 수 있습니다. 유명한 팀 :
{
"command" : " rewind " ,
"position" : 120
}{
"command" : " play "
}{
"command" : " stop "
}{
"command" : " prev "
}{
"command" : " next "
}{
"command" : " playMusic " ,
"id" : " 2 " ,
"type" : " artist "
}{
"command" : " playMusic " ,
"id" : " 44731403 " ,
"type" : " track "
}{
"command" : " playMusic " ,
"id" : " 44731403:1234556 " ,
"type" : " playlist "
}{
"command" : " setVolume " ,
"volume" : 0.2
}{
"command" : " playRadio " ,
"id" : " detskoe "
}{
"command" : " repeat " ,
"mode" : " One "
}{
"command" : " shuffle " ,
"enable" : true
}{
"command" : " showAliceVisualState " ,
"aliceStateName" : " LISTENING " ,
"recognizedPhrase" : " "
}{
"command" : " sendText " ,
"text" : " Повторяй за мной 'Текст' "
}{
"command" : " sendText " ,
"text" : " Включи музыку "
}{
"command" : " serverAction " ,
"serverActionEventPayload" : {
"type" : " server_action " ,
"name" : " on_suggest "
}
}{
"command" : " serverAction " ,
"serverActionEventPayload" : {
"type" : " server_action " ,
"name" : " update_form " ,
"payload" : {
"form_update" : {
"name" : " personal_assistant.scenarios.repeat_after_me " ,
"slots" : [
{
"type" : " string " ,
"name" : " request " ,
"value" : " <speaker effect='megaphone'>Ехал Грека через реку <speaker effect='-'>видит Грека в реке рак "
}
]
},
"resubmit" : true
}
}
} "value" : " <speaker voice='kostya'>смелость sil <[500]> город+а берёт "지원하는 목소리 : Jane, Oksana, Omazh, Zahar, Ermil, Levitan, Ermilov, Silaerkan, Kolya, Kostya, Nastya, Sasha, Nick, Erkanyavas, Zhenya, Tanya, Anton_samokhvalov, Tatyana_abramova, Voicesessearch, ermil_with _with _ with _ with _ with _ with _ with _ with eurge 좀비, 스모키, Alyss, Nick. (목록은 여기에서 찍은 것입니다)
"value" : " смелость sil <[500]> город+а берёт " "value" : " <speaker effect='megaphone'>Ехал Грека через реку <speaker effect='-'>видит Грека в реке рак " "value" : " <speaker audio='alice-sounds-game-win-1.opus'>У вас получилось! " "value" : " <speaker is_whisper= " true"'>Я говорю тихо-тихо!" "value" : " <speaker voice='kostya' audio='alice-sounds-game-win-1.opus' effect='megaphone'>добро пожаловать "{
"command" : " serverAction " ,
"serverActionEventPayload" : {
"type" : " server_action " ,
"name" : " update_form " ,
"payload" : {
"form_update" : {
"name" : " personal_assistant.automotive.greeting "
},
"resubmit" : true
}
}
}{
"command" : " serverAction " ,
"serverActionEventPayload" : {
"type" : " server_action " ,
"name" : " update_form " ,
"payload" : {
"form_update" : {
"name" : " personal_assistant.scenarios.bluetooth_on "
},
"resubmit" : true
}
}
}{
"command" : " serverAction " ,
"serverActionEventPayload" : {
"type" : " server_action " ,
"name" : " update_form " ,
"payload" : {
"form_update" : {
"name" : " personal_assistant.scenarios.bluetooth_off "
},
"resubmit" : true
}
}
}노드의 메시지와 함께 Alice의 "청각"을 강제로 중단합니다. 마찬가지로 이전 섹션의 12 팀
음악 연주를 중지하고 0.8의 볼륨으로 텍스트를 말하십시오.
[
{ "command" : " stop " },
{
"command" : " serverAction " ,
"serverActionEventPayload" : {
"type" : " server_action " ,
"name" : " on_suggest "
}
},
{ "command" : " setVolume " , "volume" : 0.8 },
{
"command" : " serverAction " ,
"serverActionEventPayload" : {
"type" : " server_action " ,
"name" : " update_form " ,
"payload" : {
"form_update" : {
"name" : " personal_assistant.scenarios.repeat_after_me " ,
"slots" : [
{
"type" : " string " ,
"name" : " request " ,
"value" : " <speaker effect='megaphone'>Ехал Грека через реку <speaker effect='-'>видит Грека в реке рак "
}
]
},
"resubmit" : true
}
}
}
]열에서 음악 재생을 관리하는 방법에는 여러 가지가 있습니다.



예제에는 @twocolors의 또 다른 옵션이 있습니다.
간단한 흐름으로 추가되고 멋지게 보입니다)


NRCHB 장치 목록에는 스마트 스피커가 있습니다. 간단한 흐름이있는 상자에서 보컬 재생의 상태를 제어하고 트랙의 이름을 볼 수 있습니다. iOS 14 또는 MacOS Big Sur에서만 작동합니다. HomeKit 내부의 관리 요소는 작동하지 않으며 아직 HomeKit 노드에 의해 가져 오지 않았습니다.
이전 버전의 iOS/MACOS에서 작업해야하거나 제어판에서 원격 제어의 표준 도구에서 재생산을 제어 해야하는 경우 HomeKit-NOD TV, 노드를 해당 형식 및 OUT의 노드를 기반으로 흐름을 조립할 수 있습니다. 동시에, 홈 키트 형식의 노다는 스마트 스피커, 텔레비전 및 둘 다에서 입구를 "이해하는"방법을 알고 있습니다. 조롱에 대한 메시지 확인은 Noda에 내장되어 있습니다. 

Q : Oauth-token을 얻는 방법?
A : 옵션 https : //music-yandex-bot.ru 중 하나입니다
Q : 트랙 커버를 얻는 방법?
A : 상태 메시지에서 Yandex Music Cover에 대한 링크를 가져갈 수 있습니다. Payload.playerstra.coveruri
처음에는 https : //를 추가하고 %% 대신 커버 크기 (예 : 600x600)를 추가하십시오. https://avatars.yandex.net/get-music-content/2383988/de45408f.a.9039208-1/600x600
Q : 스테이션의 역을 찾는 방법? 스테이션이없는 경우 스테이션을 구별하는 데 필요할 수 있습니다.
A : 전화의 Yandex 부록 - 장치 - 장치 관리 - 스테이션 선택 - 추가 정보
Q : HomeKit의 트랙 이름이 전환 직후에 바로 변경되지 않는 이유는 무엇입니까?
A : 장치 이름이 디스플레이에 사용되므로 HomeKit의 이름 변경이 상태 및 조건 이전에 가장 작은 우선 순위를 갖기 때문에 정상입니다.
Q : HomeKit 내부의 관리 요소는 "고정"되어 작동하지 않습니다.
A : 스마트 스피커 장치의 유형이 사용되면 예, 그곳에서 작동하지 않으며 활성화하는 방법을 찾지 못했습니다. 누군가가 그들을 활동적으로 만들 수 있다면, 문제를 만들면 나머지는 도움이됩니다. 이제 대안은 TV 장치와 원격 제어의 결합입니다. Appletv로 접수되었습니다. 예는 NRCHB 내부입니다
Q : 노드 레드를 시작한 후 장치/장치가 표시되지 않습니다.
A : 장치가 네트워크에서 찾을 수없는 경우 발생합니다. 검색에 사용되는 Zeroconf 프로토콜은 안정적인 결과를 제공하지 않는다는 것을 이해해야합니다. 발견 된 장치가없는 경우 5 개의 검색이 끝납니다. 해결책으로 - 몇 분만 기다리면 두 번째 검색은 레이더에서 실종 된 모든 사람들을 찾을 수 있습니다.
Q : 노드에서 예제를 추가하는 방법은 무엇입니까?
A : 노드 레드 메뉴에는 가져 오기 항목이 있으며 예제 섹션이 있습니다. 플러그인 이름이있는 폴더 안에는 모든 예가 있습니다.
스테이션 관리 팀이 여기에서 가져갑니다. 저자에게 감사합니다.
- Yandex Station(tested)
- Yandex Mini(tested)
- Yandex Station Max(tested)
- Yandex Module(not tested)
- JBL Link Music(not tested)
- JBL Link Portable(tested)
Run the following command in your Node-RED user directory - typically `~/.node-red`
npm i node-red-contrib-yandex-station-management
Yandex Music Token이 제시적으로 작동해야합니다.