Home Assistant- Integrazione schede Arylic con custom component Linkplay
di Luigi Duchi
21 Novembre 2020
Home Assistant
Lo ammetto, sono un po' di parte, ma da quando ho recensito i dispositivi audio Arylic me ne sono innamorato.
Arylic si occupa di produrre e distribuire dispositivi audio plug and play adatti allo streaming musicale Multiroom.
Abbiamo più volte in passato proposto contenuti dedicati a questi dispositivi, qui di seguito alcuni link:
https://www.vincenzocaputo.com/audio_video/arylic-a50-non-chiamatelo-semplicemente-amplificatore-285
Oltre a prodotti per così dire "finiti", Arylic propone anche schede adatte al mondo DIY (fai da te).
Anche in questo caso abbiamo proposto contenuti interessanti in passato che potete eventualmente consultare ai seguenti link:
... e nella loro versione aggiornata qui di seguito:
Queste schede sono compatibili con i più diffusi servizi di streaming musicali quali Spotify, TuneIn, Deezer, Qobuz, Napster, Tidal, IHeartRadio, QQmusic.
Quelli non raggiungibili direttamente possono essere utilizzati mediante la connessione bluetooth.
I dispositivi Arylic hanno anche la caratteristica di poter leggere musica da memorie in rete quali hard disk, oppure NAS.
... oltre a poter utilizzare gli indirizzi http delle web radio.
Sono compatibili anche con i principali protocolli di comunicazione:
WIFI, bluetooth, Airplay (mi pare di ricordare solo la prima generazione), DLNA e UPnP.
Ma la caratteristica più interessante (almeno per noi smanettoni) è la disponibilità di API pubbliche.
Proprio sfruttando le API pubbliche in passato ho mostrato come creare una card (in Home Assistant) che sfrutta varie chiamate http per comandare le schede.
La stessa cosa è possibile farla da qualsiasi software che possa effettuare un HTTP Post come ad esempio Tasker.
Come primo approccio era un po' rudimentale ma funzionale, anche se avere il supporto completo è tutt'altra cosa.
In ogni caso ho scritto anche un articolo a riguardo che potrete eventualmente consultare al seguente link:
... ve lo dicevo che abbiamo prodotto diversi contenuti con queste schede!
Effettuando varie ricerche ho scoperto che le schede Arylic aderiscono allo standard Link play, una sorta di "consorzio" che permette l'interazione tra dispositivi di vari marchi e prodotti che aderiscono a tale protocollo.
maggiori informazioni le potrete trovare sulla pagina ufficiale di Link play qui di seguito.
Una volta entrato in possesso di questa notizia mi sono messo a cercare la possibilità di integrare questo protocollo in Home Assistant.
La ricerca è durata veramente poco, infatti mi sono imbattuto in un custom component che funziona in maniera ottimale.
Il link al github di questo progetto lo potrete trovare al seguente link:
https://github.com/nagyrobi/home-assistant-custom-components-linkplay
Per installare il custom component la procedura è la medesima di sempre tramite hacs
Per chi non si ricorda come installare hacs vi rimando a questa guida sul nostro Blog:
Dopo aver installato l'integrazione, dovrete inserire la configurazione in configuration.yaml (oppure nel file mediaplayer.yaml se lo avete creato precedentemente).
Guardiamo un esempio:
media_player:
- platform: linkplay
host: 192.168.1.11
name: Sound Room1
icecast_metadata: 'StationNameSongTitle'
multiroom_wifidirect: False
sources:
{
'optical': 'TV sound',
'line-in': 'Radio tuner',
'bluetooth': 'Bluetooth',
'udisk': 'USB stick'
'http://94.199.183.186:8000/jazzy-soul.mp3': 'Jazzy Soul',
}
Osserviamo le variabili:
HOST: andrà inserito l'indirizzo ip della scheda ARYLIC
NAME: sarà il nome assegnato alla scheda che creerà anche il nome dell'entità, sarà quindi obbligatorio.
SOURCES:(elenco) (facoltativo) un elenco con gli ingressi sorgente disponibili sul dispositivo. Se non specificato, l'integrazione presupporrà che tutti i tipi di input sorgente supportati siano presenti su di esso:
'bluetooth': 'Bluetooth',
'line-in': 'Line-in',
'line-in2': 'Line-in 2',
'optical': 'Optical',
'co-axial': 'Coaxial',
'HDMI': 'HDMI',
'udisk': 'USB disk',
'TFcard': 'SD card',
'RCA': 'RCA',
'XLR': 'XLR',
'FM': 'FM',
'cd': 'CD'
Come si nota dall'esempio poco sopra, le resources possono essere rinominate come preferiamo in modo che da Home Assistant si visualizzi il nome scelto per le varie risorse selezionabili.
Ecco un esempio di quello che descrivevo sopra.
Ma le sorprese non finiscono qui, infatti oltre alle uscite o agli ingressi della scheda Arylic sarà possibile inserire nelle resources anche indirizzi di web radio
'http://1.2.3.4:8000/your_radio': 'Your Radio',
'http://icecast.streamserver.tld/mountpoint.aac': 'Another radio',
Oltre ad inserirli, come per le fonti, sarà possibile rinominarle in modo da avere una lista delle nostre radio preferite direttamente dal menù a tendina come nell'immagine sottostante.
Su questo sito potrete trovare i più recenti streaming delle web radio italiane
ICECAST_METADATA:
Si potrà scegliere tra tre opzioni per questa voce, questa voce ci servirà per vedere i metadati delle web radio.
Le tre opzioni saranno appunto:
'StationName' per il solo nome della stazione radio, non vi aspettate miracoli spesso e volentieri compare una serie di codici dopo il nome che probabilmente non riescono ad essere interpretati a dovere.
'StationNameSongTitle' Molto simile al precedente con l'aggiunta dell'eventuale titolo della canzone in riproduzione dalla radio. Anche qui ci potrebbe essere un codice abbastanza incomprensibile o comunque altri dati oltre al titolo della canzone.
'Off' Come dice il nome stesso disattiva il servizio, personalmente lo tengo disattivato non essendo soddisfatto del risultato delle altre due opzioni.
LASTFM_API_KEY:
è un altra opzione per utilizzare le API del servizio LASTFM (che potrete trovare su https://www.last.fm/it/home)
per ottenere le copertine dell'album (funziona solo con fonti provenienti da file musicali e non con le web radio)
MULTIROOM_WIFIDIRECT:
Può essere impostato tra True o False
Qui è obbligatoria un spiegazione.
I dispositivi Linkplay (quindi anche le schede Arylic) supportano il multiroom in due modalità:
Modalità WiFi direct, in cui il master si trasforma in un Access Point nascosto e gli slave si connettono direttamente ad esso. Il vantaggio è che si tratta di una connessione diretta dedicata tra gli altoparlanti, con parametri di rete ottimizzati dalla fabbrica per lo streaming. Lo svantaggio è che la commutazione del flusso è più lenta, inoltre la copertura può essere limitata a causa delle specifiche dell'edificio. Questo è il metodo predefinito utilizzato dall'app Android per creare multiroom.
Modalità router, in cui master e slave si connettono tra loro tramite la rete locale (dal firmware v4.2.8020 in poi). Il vantaggio è che tutti gli altoparlanti rimangono collegati alla rete esistente, la commutazione del flusso avviene più velocemente e la copertura può essere maggiore essendo garantita dall'infrastruttura di rete dell'edificio (funziona attraverso più AP e switch interconnessi). Lo svantaggio è che la rete non è dedicata ed è responsabilità dell'utente fornire un'infrastruttura di rete adeguata per uno streaming affidabile.
Questa integrazione rileverà automaticamente la versione del firmware in esecuzione sul lettore e sceglierà la modalità multiroom di conseguenza. Le unità con versione firmware inferiore a v4.2.8020 possono connettersi al multiroom solo in modalità wifi diretta. Il numero di versione del firmware può essere visualizzato negli attributi del dispositivo. Se l'utente dispone di un mix di dispositivi che eseguono firmware vecchio e nuovo, il rilevamento automatico può essere sovrascritto con l'opzione multiroom_wifidirect: True, ed è necessario solo per le unità con versioni più recenti, per costringerli a passare al multiroom diretto wifi.
Per fare in modo di abilitare il servizio multi room si deve avviare un servizio che potrà essere inserito tranquillamente in uno script oppure in un automazione.
Ad esempio per connettere due media player ipoteticamente chiamati sound_room1 e sound_room2 (ovviamente dovrete sostituire con il nome dei vostri mediaplayer Arylic) dovrete lanciare questo servizio.
- service: linkplay.join
data:
entity_id: media_player.sound_room2
master: media_player.sound_room1
per fare l'unlink dei due device vi basterà lanciare questo servizio.
- service: linkplay.unjoin
data:
entity_id: media_player.sound_room1
Questi servizi sono compatibili immediatamente con l'oggetto gruppo di altoparlanti nella scheda Mini Media Player di @kalkih per l'interfaccia utente Lovelace. (magari un giorno approfondiremo quest'altro custom component che è veramente ben fatto)
Suggerimento: se si verifica uno stato Unavailable temporaneo sugli slave dopo la disconnessione da un gruppo multi room in modalità router, eseguite una volta il comando specifico di Linkplay RouterMultiroomEnable ...ulteri dettagli più avanti nella guida.
PRESET:
I dispositivi Linkplay consentono di salvare, tramite l'app di controllo sul telefono/tablet, i preset musicali (ad esempio le playlist di Spotify) da richiamare per un ascolto successivo. Richiamo di un preset da Home Assistant:
- service: linkplay.preset
data:
entity_id: media_player.sound_room1
preset: 1
Il numero di preset varia da dispositivo a dispositivo, di solito l'app mostra il numero massimo di preset che possono essere memorizzati. L'integrazione rileva il numero massimo e il comando accetta solo numeri dall'intervallo consentito. Puoi specificare più ID entità separati da virgola o utilizzarli tutti per eseguire il servizio.
BROWSER MULTIMEDIALE:
Per i dispositivi con una porta USB, dopo essersi assicurati di aver specificato una udisk nella configurazione delle sorgenti. Potrete collegare una chiavetta USB con MP3 e passando a quella sorgente in Home Assistant (alcuni modelli passano automaticamente a USB non appena colleghi un'unità USB), il Media Browser si popolerà con l'elenco dei file presenti sulla chiavetta, cliccando su un file inizierà la sua riproduzione.
Questa è una funzione che fino ad ora non avevo visto in nessun media player integrato in Home Assistant.
I dispositivi Linkplay supportano alcuni comandi tramite l'API, che è un pò quello che avevo fatto io con la precedente integrazione.
Vediamo come usarli in Home Assistant.
- service: linkplay.command
data:
entity_id: media_player.sound_room1
command: Reboot
notify: False
di seguito tutti i comandi utilizzabili
- Rescan - non attende il ciclo di 60 secondi per riconnettersi ai dispositivi non disponibili, avvia immediatamente il test di disponibilità
- PromptEnable e PromptDisable - abilitare o disabilitare i messaggi audio riprodotti attraverso gli altoparlanti quando ci si collega alla rete o ci si unisce al multi room ecc.
- "WriteDeviceNameToUnit: My Device Name"- modifica il nome descrittivo del dispositivo sia nel firmware che in Home Assistant.
- "SetApSSIDName: NewWifiName"- modificare il nome SSID dell'AP creato dall'unità per le connessioni multi room wifi direct.
- SetRandomWifiKey- si potrebbe usare come caratteristica di sicurezza extra, si potrebbe fare un'automazione per cambiare periodicamente le chiavi sugli AP in alcuni valori casuali.
- TimeSync- serve per le unità su reti non connesse a Internet per compensare un server NTP non raggiungibile. È necessario il tempo corretto per la funzionalità della sveglia (non ancora implementata qui)
- Reboot - come suggerisce il nome (un soft-reboot, sembra solo riavviare il ciclo principale nel modulo Linkplay, non MCU o altra parte).
- RouterMultiroomEnable- La modalità router è disponibile di default nei firmware sopra v4.2.8020, ma c'è anche una logica inclusa per costruirla, questo comando assicura di impostare la buona priorità. Utilizzare solo in caso di problemi con il multi room in modalità router, come nel caso che abbiamo visto prima (dispositivi Unavailable dopo un unlink del multi room).
A parte l'ultimo comando non sempre necessario (personalmente non mi è mai capitato di usarlo) sconsiglio l'utilizzo degli altri comandi se non siete pienamente consapevoli di quello che state facendo.
Sulla pagina github ufficiale di questo custom component ci sono molte automazioni di esempio dalle quali potrete prendere spunto.
Non avevo dubbi sulla qualità dei dispositivi Arylic, con questo custom component diventano di sicuro i migliori media player che si possono implementare in Home Assistant fino ad ora in circolazione.
Vi lascio ad un video dove mostrerò cosa sia possibile ottenere con questa integrazione.
Produrre e aggiornare contenuti su vincenzocaputo.com richiede molto tempo e lavoro. Se il contenuto che hai appena letto è di tuo gradimento e vuoi supportarmi, clicca uno dei link qui sotto per fare una donazione.