
Однажды сидя за работой и параллельно слушая музыку на своей Яндекс станции, я обнаружил для себя интересную вещь - я не могу просто взять и переключить трек. Вы спросите: "Как так могло получится?", а я отвечу - вчера я сорвал голос в ожесточенной политической баталии, а телефон, как назло, лежал дальше, чем я мог бы дотянутся. В итоге такая неудачная ситуация побудила меня к созданию очередного велосипеда.
Взаимодействие со станцией
Первым делом я, как думаю и любой другой на моем месте, пошел гуглить. Я искал информацию как по уже существующим решениям, так и по всевозможным документациям и описаниям API. В итоге поиски привели меня лишь к модулю для Home Assistant, которым я, к своему сожалению, не пользуюсь. Однако данная реализация в значительной степени помогла понять как управлять станцией из кода. Во первых, есть два способа взаимодействия:
- Не самый удобный (ИМХО) websocket API 
- Закрытый и почти не задокументированный HTTP API 
По итогу размышлений мною был выбран HTTP API, поскольку он проще в реализации и может работать из любой сети.
Собственно реализация
Дальше не было ничего особенно сложного, как и с любым другим закрытым API пришлось сделать вход через логин и пароль, с последующим вытаскиванием cookie из сессии. После входа доставался список устройств и для выбранной колонки создавалась пачка сценариев для дальнейшего взаимодействия. В итоге на данный момент возможен вызов нескольких базовых действий:
- Старт (запуск избранной музыки) 
- Стоп 
- Следующий трек 
- Предыдущий трек 
- Тише 
- Громче 
- Включи песню (включает песню после ввода названия) 
В планах добавление некоторого функционала, на который не способна даже сама станция - например очередь воспроизведения. Исходный код вы можете найти на github
Комментарии (12)
 - Dzenses27.03.2022 17:54- github.com/AlexxIT/YandexStation - взгляните, возможно какой-то функционал окажется полезен. 
 - teuchezh28.03.2022 08:20- У меня нет станции (пока что, надеюсь), но схоронил статью до лучших времен. Спасибо. 
 - StepanCheltsov28.03.2022 11:09- А не заметили ли вы в коде/методах возможности управлять дисплеем? Чтобы туда что-то свое выводить? - Поддержка отнекивается который год, хотя, казалось бы, ничего хитрого не должно быть.  - dimabelousov1 Автор28.03.2022 11:20- Я работал со станцией мини первой версии, так что до дисплея не добрался 
 
 - AndryPetrov28.03.2022 11:09+2- Отличная статья! Особенно мне понравилось: ".....а телефон, как назло, лежал дальше, чем я мог бы дотянутся.")  - 1eonov28.03.2022 20:37- «Выберете устройство» вас не смутило?  - dimabelousov1 Автор28.03.2022 20:43- Ну от "очепяток" никто не застрахован, исправил  - 1eonov28.03.2022 21:05- «-Тся» из комментария выше тоже исправьте тогда.  - fedcka29.03.2022 14:20- Есть хороший ресурс для автора. Много времени не займет, но грамотность улучшиТСя. https://tsya.ru/ 
 
 
 
 
 
           
 
Latrommy
Yandex api возвращает пустой список устройств.
dimabelousov1 Автор
Скорее всего станция не привязана к аккаунту, она должна быть в списке на https://yandex.ru/quasar/iot