Multiroom audio (Spotify) sử dụng Raspberry, Snapcast và Mopidy

Written by Admin on March 15, 2021 Categories: Sunshine Sliving

Cài đặt Snapcast server và Snapcast client

Tải Snapserver và Snapclient từ github.com/badaix/snapcast/releases/latest. Ở đây ta cài đặt cho Raspberry nên sẽ tải các file có định dạng snapserver_<version>_armhf.debsnapclient_<version>_armhf.deb.

sudo wget <download_link_snapserver hoặc download_link_snapclient>
Snapcast download

Cài đặt Snapserver

  • Bước 1: Cài đặt Snapserver

sudo dpkg -i snapserver_<version>_armhf.deb
snapserver install
  • Bước 2: Chạy Snapserver.

snapserver
snapserver run
  • Bước 3: Hiển thị IU của Snapserver ở local.
    Địa chỉ mặc định của Snapserver là 0.0.0.0:1780.

snapserver web

Hoặc có thể xem địa chỉ của Snapserver bằng cách xem log.

snapserver ip

Cài đặt Snapclient (Không bắt buộc)

Snapclient chỉ cần thiết nếu ta muốn dùng Raspberry như một client có thể phát nhạc, nếu không ta có thể dùng app Snapcast có sẵn trong CH Play.

snapcast app
  • Bước 1: Cài đặt Snapclient

sudo dpkg -i snapclient_<version>_armhf.deb
snapclient install
  • Bước 2: Chạy Snapclient.

snapclient
snapclient run

Cài đặt Mopidy, các extension cần thiết

wget -q -O - https://apt.mopidy.com/mopidy.gpg | sudo apt-key add -
sudo wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/buster.list
sudo apt update
sudo apt install mopidy
mopidy install
sudo python3 -m pip install Mopidy-Spotify
sudo python3 -m pip install mopidy-mopify

Chỉnh sửa file cấu hình của Mopidy

File cấu hình của Mopidy mopidy.conf nằm tại đường dẫn ~/.config/mopidy. Để mở file, ta dùng lệnh:

sudo nano ~/.config/mopidy/mopidy.conf
  • Ở phần ta thêm giá trị:

output = audioresample ! audioconvert ! audio/x-raw,rate=48000,channels=2,format=S16LE ! filesink location=/tmp/snapfifo
audio conf
  • Có thể chỉnh sửa lại giá trị hostname trong phần [Http] thành localhost hoặc 127.0.0.1 hoặc IP của Rapberry (không bắt buộc).

Sau khi đã cài đặt các extension ở phần trên, ta cần khai báo extension đó cùng các giá trị của nó trong file cấu hình mopidy.

  • Mopidy-Spotify:

 [spotify]
 username =
 password =
 client_id =
 client_secret =
  • username: có thể tìm thấy trong phần Tổng quan về tài khoản trong Spotify

spotify username
  • password: mật khẩu đăng nhập vào Spotify.

  • client_idclient_secret: Vào mopidy.com/ext/spotify/ và nhấn vào Authenticate Mopidy with Spotify. Sau khi đăng nhập vào Spotify cá nhân, client_idclient_secret sẽ được tạo ra.

spotify idsecret
spotify conf
  • Mopidy-Mopify:

[mopify]
enabled = true
debug = false

Chạy Mopidy và thiết lập Mopify để phát nhạc

Chạy Mopidy và truy cập Mopify

  • Khởi động Mopidy.

mopidy
mopidy run
  • Truy cập vào Mopify: địa chỉ truy cập của mopify tùy vào giá trị hostnameport tại phần [Http] của file cấu hình Mopidy.

mopify web

Thiết lập Mopify để phát nhạc

Trong mục Service, chọn kết nối Spotify và đăng nhập tài khoản Spotify giống với tài khoản đã khai báo trong file cấu hình của Mopidy. Sau khi kết nối, các thông tin trên Spotify đã được đồng bộ với Mopify và có thể bắt đầu phát nhạc bằng Mopify.

mopify music

Các lỗi thường gặp và cách giải quyết

  1. dpkg frontend is locked by another process: lỗi có thể gặp phải khi cài đặt Snapserver và Snapclient bằng dpkg.

Các giải quyết:

  • Bước 1: Tìm PID của tiến trình đang giữ file lock.

 lsof /var/lib/dpkg/lock-frontend
  • Bước 2: Tiến hành kill tiến trình đó bằng PID tìm được.

 sudo kill -9 <PID>
  • Bước 3: Xóa file lock và cấu hình lại dpkg.

 sudo rm /var/lib/dpkg/lock-frontend
 sudo dpkg --configure -a
  1. Không thể phát nhạc bằng Mopify hoặc các bài hát chỉ nằm ở QueuePlaylist dù đã nhấn Play.

Cách giả quyết:
Hãy chắc chắn rằng tài khoản Spotify được khai báo trong file cấu hình Mopidy và tài khoản được kết nối vào Mopify đều giống nhau và là tài khoản Premium.

  1. Nhạc ở các Snapclient được phát quá nhanh và có nhiều tạp âm.

Cách giải quyết:
Không được chạy Snapserver bằng cả hai cách là dùng lệnh:

 snapserver

Và sử dụng service snapserver.service cùng một lúc với nhau mà chỉ được chọn một trong hai.

  1. Khi chạy Mopidy bằng cách chạy mopidy.service thì bị bị báo lỗi thiếu các phần cấu hình dù đã cấu hình trước đó.

Cách giải quyết:
mopidy.service sử dụng file cấu hình nằm ở đường dẫn /etc/mopidy/mopidy.conf còn khi chạy Mopidy bằng lệnh mopidy file cấu hình được dùng nằm ở ~/.config/mopidy/mopidy.conf.

Quản lý Multiroom Audio bằng HASS

Cài đặt Hass trên Docker

Cài đặt Docker

  • Bước 1: Cài đặt Docker.

sudo apt-get update && sudo apt-get upgrade
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
docker install
  • Bước 2: Thêm non-root User vào group Docker (không bắt buộc).
    Mặc định của Docker là chỉ các root user mới có thể khởi chạy các container. Nếu không sử dụng root user thì khi khởi chạy các container phải dùng sudo. Việc thêm các non-root user vào group Docker giúp ta chạy cách lệnh của Docker mà không phải làm các việc trên.

sudo usermod -aG docker <user_name>

Ví dụ, nếu muốn thêm user pi vào group Docker:

sudo usermod -aG docker pi

Sau bước này ta tiến hành reboot lại trước khi tiếp tục.

sudo reboot
  • Bước 3: Cài đặt Docker Compose (không bắt buộc).
    Docker Compose dùng để định nghĩa và chạy multi-container.

sudo pip3 -v install docker-compose
  • Bước 4: Kiểm tra các thông tin và phiên bản Docker đã cài đặt.

docker info
docker info
docker version
docker version
  • Bước 5: Chạy container mẫu Hello World để kiểm tra xem Docker có bị lỗi trong quá trình thiết lập hay không.

docker run hello-world
docker test

Cài đặt HASS trên Docker

  • Bước 1: Cài đặt HASS.

docker run --init -d --name="home-assistant" -e "TZ=<YOUR_TIME_ZONE>" -v <CONFIG_LOCATION>:/config --net=host homeassistant/raspberrypi3-homeassistant:stable
hass install

TZ (Time Zone) có thể được tìm thấy bằng lệnh:

timedatectl list-timezones
hass tz
  • Bước 2: Kiểm tra thông tin của HASS.

docker ps -a
hass run
  • Bước 3: Sử dụng trình duyệt để hiện thị HASS.
    Truy cập địa chỉ <IP_Raspberry_contains_HASS>:8123 bằng trình duyệt để sử dụng HASS.

hass UI
hass dashboard

Thêm Multiroom Audio vào HASS

  • Bước 1: Vào thư mục chứa file cấu hình configuration.yaml, chỉnh sửa và thêm cấu hình của Snapcast.

media_player:
 - platform: snapcast
   host: <ip_of_snapserver>
hass snapcast
  • Bước 2: Thêm script để định nghĩa và hiển thị các client.
    Chọn Edit Dashboard -> Raw configuration editor

hass edit
hass edit2
hass edit3
- type: media-control
  entity: <id_of_snapclient>
  name: <optional_name_for_entity>

Nhấn SAVE để lưu lại.

hass snapclient
hass clientUI
  • Bước 3: Thêm script định nghĩa và hiển thị giao diện của mopify để điều khiển việc phát nhạc.
    Chọn Edit Dashboard -> Raw configuration editor

- type: iframe
  url: 'http://<IP_of_mopidy>:<port_of_mopidy>/mopify'
  aspect_ratio: <optional_aspect_ratio>
  title: <optional_title>

Nhấn SAVE để lưu lại.

hass mopify
hass mopifyUI
No Comments on Multiroom audio (Spotify) sử dụng Raspberry, Snapcast và Mopidy

Leave a Reply

Your email address will not be published. Required fields are marked *