Оглавление:

Виниловый эмулятор Sonos Spotify: 26 шагов
Виниловый эмулятор Sonos Spotify: 26 шагов

Видео: Виниловый эмулятор Sonos Spotify: 26 шагов

Видео: Виниловый эмулятор Sonos Spotify: 26 шагов
Видео: Демо-версия винилового эмулятора (ЗВУК ВКЛЮЧЕН!) 2024, Июль
Anonim
Image
Image
Виниловый эмулятор Sonos Spotify
Виниловый эмулятор Sonos Spotify

Обратите внимание, что это не последний набор инструкций для этого проекта:

Посетите https://www.hackster.io/mark-hank/sonos-spotify-vinyl-emulator-3be63d, чтобы получить последний набор инструкций и поддержку

Слушать музыку на виниле - это здорово. Это физически и тактильно. Вы слушаете целый альбом, а не случайные треки. Вы замечаете, когда все закончилось, и сознательно выбираете что-то другое. Вы можете создать коллекцию и просматривать ее, вместо того, чтобы искать именно то, что вам нужно.

Это также дорого и громоздко, особенно если учесть, что любые деньги, которые вы тратите на винил, скорее всего, являются копией музыки, к которой у вас уже есть доступ через потоковую службу, на которую вы подписаны.

В этом проекте предпринимается попытка воспроизвести тактильные аспекты виниловых пластинок и создание коллекций, в то же время полагаясь на Spotify для доставки музыки. Размещение физического объекта на считывающем устройстве NFC, подключенном к Raspberry Pi (оба из которых могут быть скрыты), начнет воспроизведение альбома, связанного с этим тегом.

Я проведу вас через все шаги - от настройки Raspberry Pi до кодирования тегов NFC. Это мой самый первый проект Raspberry Pi и мой первый код Python, поэтому я изучил оба, разрабатывая его. Таким образом, эти инструкции предполагают буквально нулевые предыдущие знания и рассказывают вам на каждом этапе.

Общая стоимость основных компонентов для его сборки составляет приблизительно 50-60 фунтов стерлингов.

Я бы хотел посмотреть, что вы построите!

Шаг 1: Необходимые материалы 1: Raspberry Pi

Серверная часть, которая взаимодействует с вашей сетью, Sonos и Spotify, будет управляться Raspberry Pi. На самом деле вам очень мало нужно, чтобы это заработало.

Существенный:

Raspberry Pi: я использовал Raspberry Pi 3 Model B +, но он также будет работать с Raspberry Pi 3 Model A + (23 фунта стерлингов)

Источник питания USB: у меня был один валяется - есть официальный доступный, если у вас его нет (9 фунтов стерлингов)

Карта Micro SD: у меня на Amazon есть карта емкостью 32 ГБ, которой достаточно для этого приложения (6 фунтов стерлингов).

Некоторое оборудование Sonos работает в вашей сети (я предполагаю, что оно у вас уже есть, если вы здесь…)

Аккаунт Spotify Premium

Рекомендуемые:

Случай для Pi: есть много вариантов, начиная с 5 фунтов стерлингов.

Бутылка приличного калифорнийского зинфанделя: рекомендую Ridge, но есть и другие.

Шаг 2: Необходимые расходные материалы 2: Устройство чтения NFC

Необходимые расходные материалы 2: считыватель NFC
Необходимые расходные материалы 2: считыватель NFC
Необходимые расходные материалы 2: считыватель NFC
Необходимые расходные материалы 2: считыватель NFC

Эти инструкции предназначены для считывателя ACR122U NFC, который подключается через USB.

ACR122U

Я купил этот на Amazon за 38 фунтов стерлингов (в основном потому, что у него была первоклассная доставка), но есть более дешевые варианты купить этот же ридер.

Что сбивает с толку, ACR122U, кажется, продается под разными торговыми марками (моя продавалась под далеко не обнадеживающим брендом «Yosoo»), но насколько я могу судить, все они одинаковы и созданы American Card Systems.

Самый дешевый, который я нашел, рекламируемый ACR122U стоит 21 фунт стерлингов, включая доставку, но он идет прямо из Китая, поэтому вам, возможно, придется немного подождать.

Другие варианты

Этот проект основан на библиотеке Python под названием nfcpy, которая поддерживает список поддерживаемых устройств здесь:

Теоретически этот проект должен работать с любым из тех, что в этом списке, с небольшой интеграцией.

Одним из заманчивых вариантов является Adafruit PN532, плата, которая должна подключаться напрямую к Raspberry Pi с помощью соединительных кабелей. Я попробовал и убедился, что это настоящая ошибка. Например, требуется пайка.

Одним из преимуществ этого является, на первый взгляд, то, что он меньше, но на самом деле плата примерно такого же размера, как внутренности ACR122U. Если вам действительно не хватает места для вашего приложения, вы можете снять пластик с ACR122U и просто использовать плату.

Шаг 3: Необходимые расходные материалы 3: Метки NFC

Требуемые расходные материалы 3: метки NFC
Требуемые расходные материалы 3: метки NFC

Для каждого альбома, который вы хотите создать, вам понадобится тег NFC, соответствующий стандарту NTAG213.

Их можно купить во многих местах.

Я купил свою первую партию на Amazon, где получил упаковку из 10 штук за 9 фунтов стерлингов (включая доставку Prime).

Лучше всего, что я нашел здесь, в Великобритании, - это Seritag - у них действительно широкий выбор разных стилей, отличные советы на их веб-сайте, вы точно знаете, что получаете (не всегда так на Amazon). У них нет минимального размера заказа и тонны опций. Теги начинаются с 27 пунктов за тег

Шаг 4: Загрузите ОС Raspberry Pi на SD-карту

Загрузите ОС Raspberry Pi на SD-карту
Загрузите ОС Raspberry Pi на SD-карту
Загрузите ОС Raspberry Pi на SD-карту
Загрузите ОС Raspberry Pi на SD-карту

На своем ПК или Mac загрузите и запустите приложение Raspberry PI imager.

Вставьте SD-карту, на которую хотите установить операционную систему Raspberry Pi.

Нажмите ВЫБРАТЬ ОС и выберите Rasbian по умолчанию.

Нажмите ВЫБРАТЬ SD-КАРТУ и выберите SD-карту, которую вы вставили.

Нажмите НАПИСАТЬ. Это может занять некоторое время.

Как только это будет сделано, вам будет предложено удалить SD-карту, что вы должны сделать. Но затем подключите его снова, так как в первую очередь вам нужно выполнить несколько операций по уборке.

Шаг 5. Включите SSH в образе ОС Raspberry Pi

Включите SSH в образе ОС Raspberry Pi
Включите SSH в образе ОС Raspberry Pi

После того, как ОС была записана на SD-карту, вам необходимо выполнить несколько дополнительных задач.

Мы хотим получить доступ к Raspberry Pi без подключения клавиатуры или монитора (также известного как «безголовый»), что мы можем сделать через нашу локальную сеть с помощью нашего ПК или Mac по протоколу SSH. Однако по соображениям безопасности SSH по умолчанию отключен. Нам нужно включить это.

Мы можем сделать это, создав пустой файл с именем:

ssh

на только что созданной SD-карте. Важно, чтобы у него не было никакого расширения (например,.txt). Сам файл не обязательно должен содержать какой-либо контент - просто его наличие включит SSH при загрузке Pi.

Шаг 6. Необязательно: настройте Wi-Fi на Raspberry Pi

Необязательно: настройте Wi-Fi на Raspberry Pi
Необязательно: настройте Wi-Fi на Raspberry Pi
Необязательно: настройте Wi-Fi на Raspberry Pi
Необязательно: настройте Wi-Fi на Raspberry Pi

Вы можете пропустить этот шаг, если планируете подключить Raspberry Pi к маршрутизатору через Ethernet. (Хотя вы, возможно, захотите хорошенько подумать над этим решением - если он будет работать через Wi-Fi, жизнь станет намного проще с точки зрения размещения этого)

Создайте простой текстовый файл с именем wpa_supplicant.conf в корневом каталоге SD-карты.

Вставьте в файл следующий текст:

country = gb

update_config = 1 ctrl_interface = / var / run / wpa_supplicant network = {scan_ssid = 1 ssid = "MyNetworkSSID" psk = "MyPassword"}

При необходимости измените страну (GB - Великобритания, US - США, DE - Германия и т. Д.)

Измените там учетные данные Wi-Fi, чтобы они соответствовали вашим фактическим данным маршрутизатора Wi-Fi.

Сохраните файл.

Осторожно извлеките SD-карту.

Шаг 7: включите Raspberry Pi

Включите Raspberry Pi
Включите Raspberry Pi

Вставьте только что созданную SD-карту в Raspberry Pi.

Подключите Raspberry Pi к источнику питания через USB-кабель. Подождите, пока он загрузится.

Шаг 8: Найдите IP-адрес вашего Raspberry Pi

Теперь вам нужно найти IP-адрес Raspberry Pi, чтобы вы могли подключиться к нему. Сделать это можно двумя способами:

  • через страницу настройки роутера - если у вас современный роутер, такой как eero, это очень просто;
  • или через приложение для смартфонов под iOS и Android под названием «fing» - загрузите его, подключитесь к маршрутизатору и просканируйте устройства - одно из них должно называться «Raspberry» - это будет нужный вам IP-адрес.

Шаг 9: подключитесь к командной строке Raspberry Pi

Подключитесь к командной строке Raspberry Pi
Подключитесь к командной строке Raspberry Pi

Откройте Терминал на своем Mac (или, если вы используете Windows, загрузите и используйте Putty).

Введите следующую команду:

ssh pi @ [IP-адрес вашего Pi]

Примите любые предупреждения системы безопасности, которые вы получите. Вам будет предложено ввести пароль для пользователя pi по умолчанию, который

малина

Шаг 10: Настройте графический интерфейс Raspberry Pi OS

Настройте графический интерфейс Raspberry Pi OS
Настройте графический интерфейс Raspberry Pi OS
Настройте графический интерфейс Raspberry Pi OS
Настройте графический интерфейс Raspberry Pi OS

Теперь вы подключены к своему Pi через командную строку, что прекрасно, но вы также хотите настроить его, чтобы вы могли получить доступ к графическому пользовательскому интерфейсу, к которому мы будем обращаться через VNC (виртуальные сетевые вычисления). Как и ожидалось, нам также нужно включить это.

Прежде всего убедитесь, что ваше программное обеспечение Pi обновлено, введя следующие две команды (каждая с последующим вводом) в командную строку:

sudo apt update

sudo apt установить realvnc-vnc-server realvnc-vnc-viewer

Затем откройте меню настроек Raspberry Pi, введя:

sudo raspi-config

Перейдите в Параметры интерфейса> VNC> Да.

Выйдите из приложения конфигурации, нажав клавишу ESC, и перезагрузите Pi из командной строки, набрав:

перезагрузка sudo

Шаг 11: Подключитесь и настройте графический интерфейс Raspberry Pi

Подключитесь и настройте графический интерфейс Raspberry Pi
Подключитесь и настройте графический интерфейс Raspberry Pi
Подключитесь и настройте графический интерфейс Raspberry Pi
Подключитесь и настройте графический интерфейс Raspberry Pi

Загрузите и откройте VNC Viewer.

Введите IP-адрес своего Raspberry Pi и нажмите «Подключиться». Вам будет предложено ввести имя пользователя и пароль, которые:

Имя пользователя = пи

Пароль = малина

Это должно загрузить вас до графического интерфейса.

Вам будет предложено подтвердить географию и раскладку клавиатуры.

Затем он предложит вам сменить пароль (хорошая идея).

Он попросит вас указать данные о Wi-Fi, но вы можете пропустить это, поскольку они уже работают. (Хотя, если вы работаете в сети Ethernet и задумываетесь, то сейчас у вас есть шанс … но учтите, что ваш IP-адрес может измениться)

Затем он проверит наличие, загрузит и установит обновления (это может занять некоторое время).

После того, как вы пройдете через мастер настройки, я бы порекомендовал изменить разрешение экрана, так как по умолчанию оно довольно мало. Вы можете сделать это, щелкнув Raspberry в левом верхнем углу> Настройки> Конфигурация Raspberry Pi> Дисплей> Установить разрешение.

Вам нужно будет перезагрузить Pi еще раз, чтобы это вступило в силу.

Шаг 12: Установите Node.js и NPM

Установите Node.js и NPM
Установите Node.js и NPM

Затем вы хотите загрузить командную строку Raspberry Pi для установки необходимых нам зависимостей.

Вы можете сделать это, подключившись через VNC и нажав кнопку вверху, которая выглядит как командная строка; или вы можете подключиться напрямую со своего Mac / ПК, используя Терминал и Шпатлевку, как мы это делали ранее. Если вы менее привыкли работать с Raspberry Pi, то проще сделать первое.

(Совет: вы можете скопировать текст со своего Mac / ПК и вставить его в Raspberry Pi через VNC, нажав CONTROL-V, но если вы пытаетесь вставить в Терминал, вам нужно нажать CONTROL-SHIFT-V)

Первая задача - еще раз проверить актуальность вашего программного обеспечения, введя следующие две команды. Их загрузка и установка может занять некоторое время.

sudo apt-get update

sudo apt-get upgrade

Затем вы хотите загрузить и установить node.js и NPM (не слишком беспокойтесь о том, что они собой представляют, они полезны и необходимы для наших следующих задач), набрав следующее:

sudo apt-get install nodejs npm

Он спросит вас пару раз, если вы счастливы занять дисковое пространство с ними - вы так что нажмите Y

Шаг 13: Установите SONOS HTTP API

Установите SONOS HTTP API
Установите SONOS HTTP API
Установите SONOS HTTP API
Установите SONOS HTTP API

Основой серверной части нашего проекта является пакет node-sonos-http-api, созданный jishi. Вы можете прочитать все об этом здесь:

Мы загрузим это с github с помощью следующей команды, введенной в командную строку:

git clone

и мы установим его с помощью следующих команд

cd node-sonos-http-api

npm install --production

Затем мы можем запустить его с помощью следующей команды:

npm start

Как только это будет сделано, мы должны проверить, что он работает.

Прежде всего, откройте интернет-браузер на Raspberry Pi и перейдите по адресу https:// localhost: 5005 /. Приятный интерфейс должен открываться с логотипом Sonos и некоторой документацией о том, как работает API.

Затем давайте проверим, работает ли это из более широкой сети, используя браузер на другом ПК или Mac в той же сети, перейдя по адресу https:// [theIPaddressofyourPi]: 5005 / и посмотрим, получим ли мы тот же результат. Мы должны.

Теперь мы фактически заставим систему что-нибудь делать. Используйте браузер и перейдите к:

192.168.4.102:5005/Столовая / playpause

Вы должны заменить указанный выше IP-адрес на адрес вашего Raspberry Pi, а «Столовую» - на одно из названий ваших зон Sonos. Он должен либо воспроизвести, либо приостановить (в зависимости от того, играет музыка уже или нет) музыку в этой комнате. Очевидно, что что-то должно быть в очереди Sonos, чтобы это работало.

В дальнейшем я собираюсь использовать приведенный выше IP-адрес и Столовую в качестве примеров в этом руководстве. Очевидно, вам следует каждый раз заменять их своим IP-адресом и названием зоны.

Шаг 14: Сделайте так, чтобы HTTP API Sonos работал постоянно

Сделайте так, чтобы HTTP API Sonos работал постоянно
Сделайте так, чтобы HTTP API Sonos работал постоянно

Здорово, что у нас запущен HTTP API Sonos, но что, если он выйдет из строя? Или вы теряете питание или вам нужно перезагрузить Raspberry Pi?

Вы можете увидеть эффект, закрыв окно терминала и повторив то, что мы только что попробовали. Это не сработает, потому что HTTP API остановился вместе с окном терминала.

На самом деле мы хотим, чтобы это работало постоянно, и делаем это каждый раз при запуске. Мы делаем это с помощью классной штуки под названием PM2.

В новом окне терминала установите и запустите его следующим образом:

sudo npm install -g pm2

статус pm2

Теперь давайте запустим наш HTTP API Sonos:

cd node-sonos-http-api

pm2 start npm - запуск pm2 запуск systemd

Эта последняя команда генерирует что-то похожее на:

sudo env PATH = $ PATH: / usr / bin / usr / local / lib / node_modules / pm2 / bin / pm2 startup systemd -u pi --hp / home / pi

Скопируйте то, что генерирует ваш Pi (не точный текст выше - ваш может быть другим), и введите его в командную строку. Это дает системе указание запускать PM2 каждый раз при загрузке.

Наконец, введите:

pm2 сохранить

что экономит все.

Теперь проверьте, сработало ли это, перезагрузив Raspberry Pi с помощью команды

перезагрузка sudo

Надеюсь, что после перезагрузки Pi он также запустит PM2 и, в свою очередь, HTTP API Sonos. Вы можете проверить это, перейдя с помощью браузера в той же сети к адресу, который мы использовали ранее, и увидеть логотип Sonos и инструкции:

192.168.4.102:5005/

это то, что есть для меня, но ваше будет зависеть от IP-адреса.

Шаг 15: поиграйте в Spotify

Давайте проверим, есть ли у сервиса доступ к Spotify.

Откройте браузер и перейдите по следующему адресу (очевидно, заменив его своим IP-адресом и названием комнаты):

192.168.4.102:5005/Столовая / spotify / now / spotify / spotify: альбом: 2dfTV7CktUEBkZCHiB7VQB

Вы должны послушать Джона Гранта. Наслаждаться.

Шаг 16. Найдите URI Spotify

Найти URI Spotify
Найти URI Spotify

Странно, я знаю, но не всем нравится Джон Грант. Может вы хотите что-нибудь послушать?

Вы можете получить ссылки Spotify из настольных, веб-или мобильных приложений, но рабочий стол, безусловно, самый простой, поскольку он предоставляет URI именно в том формате, который вы хотите, так что начните с этого.

В настольном приложении Spotify перейдите к альбому, который вы хотите послушать (может быть, Lemonade by Beyonce?)

Нажмите на три маленькие точки рядом с кнопкой в виде сердца.

Спуститесь в меню, чтобы поделиться, и выберите Копировать Spotify URI.

Это скопирует что-то вроде

spotify: альбом: 7dK54iZuOxXFarGhXwEXfF

в буфер обмена, который является URI Spotify для альбома Lemondade Бейонсе.

Снова запустите браузер и перейдите по следующему адресу (очевидно, заменив IP-адрес и комнату и вставив только что скопированный URI):

192.168.4.102:5005/Dining Room / spotify / now / [Spotify URI, который вы хотите воспроизвести]

Вы должны услышать свой выбор.

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

open.spotify.com/album/7dK54iZuOxXFarGhXwEXfF

вам нужно преобразовать его в формат spotify: album: code, указанный выше, чтобы он работал.

Шаг 17: примечание об URI Spotify

URI Spotify и способ их взаимодействия с node-sonos-http-api по большей части интуитивно понятны.

Вы можете напрямую ссылаться на альбомы, треки и плейлисты.

URI альбома выглядит так:

spotify: альбом: 6agCM9GJcebduMddgFmgsO

URI дорожки выглядит так:

spotify: трек: 4fNDKbaeEjk2P4GrRE1UbW

Плейлисты работают немного иначе. Когда вы копируете URI из Spotify, он будет выглядеть примерно так:

spotify: плейлист: 5huIma0YU4iusLcT2reVEU

Однако, чтобы заставить его работать с API, вам нужно добавить spotify: user: в начало вышеупомянутого. Это применимо даже к публичным плейлистам и, да, это означает, что вы дважды говорите spotify.

Чтобы быть очень ясным, user не обязательно должно быть именем конкретного пользователя, только текстовый пользователь. Итак, правильный URI для приведенного выше плейлиста, чтобы заставить его работать, будет:

spotify: пользователь: spotify: список воспроизведения: 5huIma0YU4iusLcT2reVEU

Шаг 18: Настройте Raspberry Pi для отправки

Настройте Raspberry Pi для отправки HTTP-запросов
Настройте Raspberry Pi для отправки HTTP-запросов

Вместо того, чтобы вручную вводить HTTP-запросы в веб-браузер, мы хотим автоматизировать его, чтобы Raspberry Pi делал это сам при предъявлении определенного стимула (запускается считыватель NFC).

Мы будем использовать библиотеку под названием requests, чтобы позволить нашему Raspberry Pi делать это. Давайте проверим, что он установлен.

Откройте терминал на своем Pi и введите следующее:

запросы на установку sudo pip

Вполне вероятно, что он вернется и скажет, что он уже установлен, и в этом случае отлично. Если нет, он его установит.

Шаг 19: Создайте тег (ы) NFCC с данными Spotify

Создание тегов NFCC с данными Spotify
Создание тегов NFCC с данными Spotify
Создание тегов NFCC с данными Spotify
Создание тегов NFCC с данными Spotify
Создание тегов NFCC с данными Spotify
Создание тегов NFCC с данными Spotify
Создание тегов NFCC с данными Spotify
Создание тегов NFCC с данными Spotify

Теперь мы хотим записать URI альбома Spotify в тег NFC. Каждый из этих тегов - это то, что вы будете использовать, чтобы указать Raspberry Pi воспроизвести определенный альбом.

Вы можете записать в тег NFC с помощью телефона Android, но я считаю, что проще всего сделать это через Mac или ПК, так как тогда вы можете легко получить URI Spotify из настольного приложения Spotify.

Подключите USB-ридер NFC к ПК или Mac. Я использую ACR122U от American Card Systems.

Загрузите инструменты NFC на свой ПК или Mac. Установите и откройте его.

Иногда подключение к считывателю может быть немного медленным, и может быть сказано, что он вообще не может найти его. Перейдите на вкладку «Другое» в инструментах NFC и периодически нажимайте кнопку «Подключенное устройство чтения NFC». Возможно, вам придется несколько раз отключить и снова подключить считыватель, прежде чем он его найдет.

В конце концов, это даст вам возможность выбрать читателя из списка и сказать, что он подключен. Перейдите на вкладку «Информация», на которой ничего не будет отображаться, кроме «Ожидание тега NFC».

Возьмите пустую метку NFC. Наденьте на ридер и оставьте там. NFC Tools отобразит информацию о теге.

Перейдите на вкладку «Запись» и нажмите «Добавить запись»> «Текст». (Будьте осторожны, чтобы не выбирать URL-адрес или URI - я знаю, что это заманчиво, потому что вы копируете URI, но вам нужен текст)

Получите URI из Spotify, используя метод, который мы использовали ранее. Если вам нужен простой пример, то ниже представлен наш предыдущий альбом Джона Гранта.

spotify: альбом: 2dfTV7CktUEBkZCHiB7VQB

Нажмите «ОК», а затем нажмите «Записать» (не забудьте этот последний шаг - на самом деле он не записывается, пока вы не нажмете на него). Он сообщит вам, что тег успешно записан.

Снимите бирку с ридера

Шаг 20. Настройте устройство чтения NFC на Raspberry Pi

Настройте считыватель NFC на Raspberry Pi
Настройте считыватель NFC на Raspberry Pi

Подключите устройство чтения NFC к одному из портов USB на Raspberry Pi.

Мы будем использовать библиотеку Python nfcpy для связи с устройством чтения NFC. Установите его, набрав в командной строке Pi следующее:

pip install -U nfcpy

Затем мы можем проверить, может ли эта библиотека видеть наш считыватель NFC, набрав следующее:

Python -m NFC

Если это сработало, вы увидите следующее:

Это версия 1.0.3 nfcpy, запущенная в Python 2.7.16 на Linux-4.19.97-v7 + -armv7l-with-debian-10.3

Сейчас я ищу в вашей системе бесконтактные устройства ** нашел ACS ACR122U PN532v1.6 на usb: 001: 011 Я не пробую последовательные устройства, потому что вы мне не сказали - добавьте параметр --search-tty чтобы я посмотрел - но будьте осторожны, это может сломать других серийных разработчиков

Однако есть большая вероятность, что вы получите сообщение об ошибке, в котором говорится, что программа для чтения найдена, но у вашего пользователя (pi) нет разрешения на доступ к ней. Если вы все же получили это сообщение об ошибке, в нем также будет объяснено, как решить проблему, а именно путем ввода двух команд, которые выглядят примерно так:

sudo sh -c 'echo SUBSYSTEM == / "usb \", ACTION == / "add \", ATTRS {idVendor} == / "04e6 \", ATTRS {idProduct} == / "5591 \", GROUP = / "plugdev \" >> /etc/udev/rules.d/nfcdev.rules '

sudo udevadm control -R

Скопируйте и выполните обе команды, которые он вам дает (не совсем то, что указано выше, поскольку ваша может быть другой), затем отключите и снова подключите устройство чтения NFC к USB-порту.

Попробуйте снова выполнить команду проверки:

Python -m NFC

На этот раз он должен сказать, что нашел его без сообщений об ошибках.

Шаг 21: установите скрипты Python Vinylemulator

Теперь у нас есть все строительные блоки:

  • Наш Raspberry Pi может прослушивать вход NFC
  • Наш Raspberry Pi может указывать Sonos воспроизводить плейлисты Spotify при наличии Spotify URI.
  • У нас есть тег NFC с сохраненным на нем URI Spotify.

Теперь нам нужно превратить все эти строительные блоки во что-нибудь полезное. Это делается с помощью написанного мной короткого скрипта на Python (с большой помощью из предыдущих проектов NFC / Spotify / Sonos), который называется vinylemulator.

Вы можете просмотреть исходный код файлов на github:

Чтобы установить это на наш Raspberry Pi, нам нужно клонировать его из github с помощью следующей команды:

git clone

Шаг 22: Настройте винилэмулятор

Настроить винилэмулятор
Настроить винилэмулятор
Настроить винилэмулятор
Настроить винилэмулятор

Откройте файловый менеджер Raspberry Pi и перейдите на главную> pi> vinylemulator.

Откройте файл usersettings.py

Одна из строк в этом файле будет гласить:

sonosroom = "Столовая"

Измените «Столовую» на любое имя комнаты Sonos, которым вы хотите управлять.

В этом файле также есть параметр, позволяющий настроить IP-адрес файла sonos-http-api. Вы можете оставить это без изменений как «localhost», что означает, что он будет использовать Raspberry Pi, на котором он работает.

Сохраните файл и закройте его.

Шаг 23: протестируйте винилемулятор

Тестовый винилемулятор
Тестовый винилемулятор
Тестовый винилемулятор
Тестовый винилемулятор

Перейдите в командную строку Raspberry Pi.

Введите следующую команду:

python vinylemulator / readnfc.py

Если все в порядке, это загрузит скрипт и сообщит, что читатель готов. Индикатор на считывателе должен загореться зеленым.

Поместите метку NFC на считыватель, который подаст звуковой сигнал.

Терминал покажет, что он прочитал из тега NFC, и покажет адрес HTTP-запроса, который он отправил. Выбранный вами альбом должен воспроизводиться через динамики Sonos.

Этот сценарий будет работать до тех пор, пока вы не закроете окно терминала. Вы можете нажать разные теги NFC для альбома, и он переключится на этот альбом.

Шаг 24: заставьте Vinylemulator работать постоянно и при запуске

Как и sonos-http-api, мы хотим, чтобы vinylemulator работал постоянно, а не только тогда, когда мы его вызываем. Мы можем использовать pm2, чтобы сделать это снова.

Сначала закройте все запущенные вами экземпляры vinylemulator, закрыв их окна терминалов.

Затем откройте новое окно терминала и введите следующие две команды:

pm2 запустить vinylemulator / readnfc.py

pm2 сохранить

Давайте проверим, сработало ли это, перезагрузив Raspberry Pi. (Вы можете ввести sudo reboot или сделать это с помощью мыши в меню Raspberry.

Подождите, пока Pi снова запустится, и убедитесь, что он работает, нажав тег NFC на считывателе. Вы должны получить музыку.

Шаг 25: поздравьте себя

Теперь все работает. Вы можете переместить Raspberry Pi туда, где вы планируете его разместить. Он перезапустится и будет работать так, как вы его настроили, каждый раз, когда вы его подключаете.

Следующие ваши задачи - веселые: сделать все красиво.

Шаг 26: Сделайте это красивым - спрячьте своего читателя

Сделайте это красиво - спрячьте своего читателя
Сделайте это красиво - спрячьте своего читателя
Сделайте это красиво - спрячьте своего читателя
Сделайте это красиво - спрячьте своего читателя
Сделайте это красиво - спрячьте своего читателя
Сделайте это красиво - спрячьте своего читателя
Сделайте это красиво - спрячьте своего читателя
Сделайте это красиво - спрячьте своего читателя

Первое, что нужно сделать, чтобы сделать его красивым, - это спрятать где-нибудь неприятный белый пластиковый считыватель NFC.

Я выбрал решительно низкотехнологичный вариант - приклеил его к нижней стороне стойки рядом с моим Sonos Play: 5. Древесина счетчика достаточно тонкая, чтобы пропускать NFC, поэтому я включаю музыку, нажимая метку NFC на волшебном и невидимом месте.

Рекомендуемые: