SCOPI DELLA GUIDA:
CONCETTI AFFRONTATI:
|
COMPONENTI SOFTWARE UTILIZZATE:
PREREQUISITI (alternative):
DISPOSITIVI FISICI UTILIZZATI:
|
GUIDA DEDICATA A utenti: |
|
NOTE E DISCLAIMER
|
|
Revisione guida: 1.1 |
Abstract
Shairport Sync è un software che rende il computer sul quale è in esecuzione ricevitore per qualsiasi stream audio inviato da un emettitore Apple AirPlay/AirPlay 2 compatibile, vale a dire dispositivi Apple oppure Google Android che utilizzino applicazioni in grado di effettuare streaming in questo senso (per esempio l’app AirMusic, o altre).
Collegare questo computer così configurato ad un amplificatore o a delle casse acustiche lo rende quindi implicitamente compatibile Apple AirPlay/AirPlay 2, standard particolarmente apprezzato perché a differenza di altri utilizza come mezzo di trasmissione il Wi-Fi piuttosto che, per esempio, il Bluetooth, oltre ad presentare un livello qualitativo nettamente superiore.
A differenza della prima versione di AirPlay, AirPlay 2 garantisce non sono una qualità complessiva ancora migliorata, ma anche un buffering maggiore (non più solo pochi secondi, ma ben di più, anche fino al minuto) nonché una funzione particolarmente apprezzata, ovvero l’audio multistanza.
In pratica, disponendo di una cassa compatibile AirPlay2 (oppure collegata con un computer con in esecuzione Shairport Sync come spiegato in questa guida) è possibile riprodurre contemporaneamente musica su altre casse analogamente compatibili in modo completamente sincronizzato, permettendo agli utenti di riprodurre musica da più speaker contemporaneamente.
Scopo della presente guida è quindi quello di installare e configurare Shairport Sync istanziato come container Docker presso il sistema operativo Linux Debian installato su Mini PC/Intel NUC , su Raspberry Pi dotato di sistema operativo Raspberry Pi OS o comunque su computer tradizionale in grado di eseguire Docker.
Si parte
- Assunti
- Installare Docker
- Istanziare Shairport Sync
- Perfezionamento della qualità audio
- Volume di output
- MQTT
- Uso
Assunti
Questa guida è dedicata a chi abbia già un computer con sistema operativo Linux Debian. Per coloro che non abbiano ancora provveduto e si trovino ad avere un Mini PC/Intel NUC oppure un Raspberry Pi, magari acquistati appositamente per realizzare la propria domotica, allora questo passo della guida va smarcato seguendo prima questa guida nel caso del Mini PC (che spiega passo passo come configurare il sistema operativo Linux Debian) oppure questa, in caso di Raspberry Pi.
Una volta terminata la configurazione del mini/micro computer inclusa la possibilità di collegarvisi tramite SSH nonché aver effettuato il perfezionamento – vedi guide per Mini PC (o computer generico) su Linux Debian oppure per Raspberry Pi – è possibile procedere nella presente guida.
Installare Docker
Installare Docker è piuttosto semplice, esistono infatti una procedura completamente automatica oppure una manuale. Entrambe sono illustrate in dettaglio in questa breve guida per Mini PC (o computer generico) con Linux Debian oppure questa per Raspberry Pi OS.
Se si ha già provveduto all’installazione di Docker, va da sé che questo passaggio possa essere saltato.
ATTENZIONE: affinché i comandi a seguire funzionino, è necessario aver aggiunto Docker al gruppo sudoers, come spiegato in guida per Mini PC/Intel NUC su Debian oppure in quella per Raspberry Pi OS. |
Istanziare Shairport Sync
A questo punto è possibile provvedere all’istallazione di Shairport Sync, il quale viene eseguito come container Docker tramite un’istanza specifica.
In ambito Docker, l’istanziamento dell’applicazione può essere effettuato tramite esecuzione di un comando manuale (più immediato) oppure tramite una configurazione del tool di gestione Docker Compose, approccio inizialmente più ostico ma che consigliamo per tutta una serie di motivi. Entrambe le scelte sono valide, ma in prospettiva (specie in ottica di aggiornamento) imparare ad usare Docker Compose è altamente consigliato.
Tramite comando “docker run”
Istanziamo dunque Shairport Sync su Docker tramite il comando che segue via terminale (da CLI o via SSH):
docker run -d --name shairport --net host --device /dev/snd --restart always mikebrady/shairport-sync:development
Si noti come il campo “device” vada a indicare al software di utilizzare il device “/dev/snd“, ovvero la scheda audio del computer. Tale parametro, come molti altri, può essere variato per ottenere eventualmente configurazioni diverse e particolari, per esempio in presenza di schede audio esterne particolari.
Al termine, verifichiamo che tutto sia andato per il verso giusto:
docker logs shairport
nel log dovremmo trovare qualcosa come:
0.003431802 "shairport.c:1729" Started!
0.000097499 "shairport.c:1756" software version: "x.x.x-libdaemon-OpenSSL-Avahi-ALSA-pipe-soxr-convolution-metadata-mqtt-dbus-sysconfdir:/etc"
0.000041302 "shairport.c:1762" log verbosity is 1.
Congratulazioni: Shairport Sync è ora operativo.
Tramite Docker Compose
Se astutamente si sceglie di utilizzare Docker Compose, allora è semplicemente necessario aggiungere al proprio file docker-compose.yaml la seguente configurazione (sotto il bocco services):
shairport:
container_name: shairport
restart: always
image: mikebrady/shairport-sync:development
network_mode: host
devices:
- "/dev/snd"
Si noti come il campo “device” vada a indicare al software di utilizzare il device “/dev/snd“, ovvero la scheda audio del computer. Tale parametro, come molti altri, può essere variato per ottenere eventualmente configurazioni diverse e particolari, per esempio in presenza di schede audio esterne particolari.
Una volta salvato il file docker-compose.yaml, eseguire il comando:
docker compose up -d shairport
il quale provvederà a istanziare il container.
N.b. In caso il comando “docker compose” dovesse dare errore, verificare di non aver installata la versione applicativa di Docker Compose anzichè la versione plug-in alla quale il comando sopra fa riferimento. In tal caso, adeguare il comando da “docker compose” a “docker-compose” (col trattino in mezzo). |
Al termine, verifichiamo che tutto sia andato per il verso giusto:
docker logs shairport
nel log dovremmo trovare qualcosa come:
0.003431802 "shairport.c:1729" Started!
0.000097499 "shairport.c:1756" software version: "x.x.x-libdaemon-OpenSSL-Avahi-ALSA-pipe-soxr-convolution-metadata-mqtt-dbus-sysconfdir:/etc"
0.000041302 "shairport.c:1762" log verbosity is 1.
Congratulazioni: Shairport Sync è ora operativo.
Perfezionamento della qualità audio
Prima di iniziare ad utilizzare Shairport Sync, provvediamo a perfezionare la configurazione in modo da ottenere la massima resa acustica possibile.
Andiamo a modificare il range in db del volume del segnale in uscita. Entriamo sul terminale del container appena creato col comando:
docker exec -it shairport sh
Entriamo in edit nel file “/usr/local/etc/shairport-sync.conf”:
cd etc
vi shairport-sync.conf
e andiamo a cercare la voce:
// volume_range_db = 60 ;
sostituendola quindi (premendo sulla tastiera la lettera “i” per entrare in modalità edit) con:
volume_range_db = 30 ;
Cerchiamo poi la voce “name” impostando in quella voce il nome che vorremo visualizzare come outpout sui dispositivi Apple, per esempio:
name = "SALA" ;
Usciamo salvando premendo ESC, poi “:wq”, infine invio.
Effettuare infine un riavvio dell’istanza:
docker restart shariport
Volume di output
Il volume di output del computer ospitante influenza anche l’output di Shairport Sync. Si consiglia di impostarlo a 95%-100% tramite il comando:
sudo alsamixer
regolare quindi il volume con le freccette della tastiera e poi uscire tramite ESC.
MQTT
Opzionalmente, Shairport Sync prevede l’utilizzo di MQTT come veicolo per produrre telemetrie e ricevere comandi specifici.
N.b. Per chiarimenti sul tema MQTT si consiglia di leggere la guida dedicata alla configurazione del protocollo MQTT per la propria domotica. Ovviamente, per procedere nelle configurazioni proposte in questo paragrafo si assume che sulla rete locale sia già stato presente un broker MQTT (eg. Eclipse Mosquitto). |
Per attivare tale supporto è necessario modificare ulteriormente il file di configurazione del software:
docker exec -it shairport sh cd etc vi shairport-sync.conf
recandosi sul fondo del file, si troveranno delle voci raggruppate sotto il blocco “mqtt“:
mqtt =
{
// enabled = "no"; // set this to yes to enable the mqtt-metadata-service
// hostname = "iot.eclipse.org"; // Hostname of the MQTT Broker
// port = 1883; // Port on the MQTT Broker to connect to
// username = NULL; //set this to a string to your username in order to enable username authentication
// password = NULL; //set this to a string you your password in order to enable username & password authentication
// capath = NULL; //set this to the folder with the CA-Certificates to be accepted for the server certificate. If not set, TLS is not used
// cafile = NULL; //this may be used as an (exclusive) alternative to capath with a single file for all ca-certificates
// certfile = NULL; //set this to a string to a user certificate to enable MQTT Client certificates. keyfile must also be set!
// keyfile = NULL; //private key for MQTT Client authentication
// topic = NULL; //MQTT topic where this instance of shairport-sync should publish. If not set, the general.name value is used.
// publish_raw = "no"; //whether to publish all available metadata under the codes given in the 'metadata' docs.
// publish_parsed = "no"; //whether to publish a small (but useful) subset of metadata under human-understandable topics
// Currently published topics:artist,album,title,genre,format,songalbum,volume,client_ip,
// Additionally, empty messages at the topics play_start,play_end,play_flush,play_resume are published
// publish_cover = "no"; //whether to publish the cover over mqtt in binary form. This may lead to a bit of load on the broker
// enable_remote = "no"; //whether to remote control via MQTT. RC is available under `topic`/remote.
// Available commands are "command", "beginff", "beginrew", "mutetoggle", "nextitem", "previtem", "pause", "playpause", "play", "stop", "playresume", "shuffle_songs", "volumedown", "volumeup"
};
le voci da attivare e configurare (come minimo) sono le seguenti:
enabled | Impostare a yes per attivare il supporto MQTT |
hostname | Indicare l’hostname o l’IP del proprio broker (eg. 192.168.1.100) |
port | Indicare la porta del servizio MQTT (solitamente 1883) |
username / password | Indicare le eventuali credenziali d’accesso al broker MQTT |
topic | Il topic MQTT presso il quale telemetrie e comandi faranno capo (lasciare shariport in caso ci sia una sola istaza del software sulla rete domestica, altrimenti personalizzarlo con un distintivo (eg. shaiport-sala) |
publish_parsed | Impostare a yes. Necessario affinché i payload delle telemetrie siano intelleggibili |
enable_remote |
Impostare a yes. Necessario affinché Shairport-Sync possa ricevere comandi via MQTT. |
Per farlo ovviamente è necessario modificare il file rimuovendo i due caratteri di commento in testa ad ogni riga “//“, oltre a modificare il testo come da proprie esigenze. Per entrare in editing del file, premere la lettera “i”.
Al termine della configurazione, usciamo salvando premendo ESC, poi “:wq”.
infine riavviamo il servizio con:
docker container restart shairport
Da qui in poi, telemetrie e comandi verranno rispettivamente inviate ed eseguite da Shairport-Sync.
HOME ASSISTANT
Dopo l’avvenuta configurazione di MQTT, volendo è pensabile di integrare le funzioni AirPlay sull’HUB per domotica personale Home Assistant (o altri dotati di supporto MQTT).
Uso
Ora sarà possibile, collegandosi alla Wi-Fi e durante l’esecuzione di flussi audio (Spotify, messaggi vocali, qualsiasi cosa all’infuori dei suoni di sistema) cliccare sull’icona così fatta:
per elencare tutti i dispositivi AirPlay presenti nella rete locale, incluso il nostro mini/micro computer reso ricevitore AirPlay 2 compatibile.
Sui dispositivi Android tramite specifiche app oppure sui server streaming in grado di erogare flussi AirpPlay, basterà “puntare” al nome assegnato all’istanza Shairport Sync e la riproduzione si avvierà automaticamente.
MULTISTANZA
Come illustra l’immagine a seguire:
più casse compatibili AirPlay 2, quindi anche computer con in esecuzione Shairport Sync, (nel caso sopra, “Sala” e “Camera”), possono riprodurre, automaticamente e in modo perfettamente sincronizzato, il medesimo flusso audio. Inoltre, è persino possibile regolare in modo discreto il volume di ogni singolo output: basta premere sul device corrispondente e regolarne l’emissione sonora.
Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. Se ti sei perso, a tua disposizione c'è la mappa. |