Dall’introduzione delle sorgenti multimediali (Media Source) all’interno di Home Assistant, non è ancora stato introdotto alcun componente ufficiale per poter integrare i contenuti multimediali condivisi all’interno propria rete locale, come ad esempio le risorse SMB derivanti dal nostro NAS o altri dispositivi.
In questo articolo vedremo come ovviare a questa mancanza.
Sommario
Gli elementi
Per poter integrare una risorsa SMB all’interno del browser multimediale, è necessario disporre di un NAS o di predisporre una risorsa condivisa all’interno della rete locale, come indicato ad esempio in questo articolo dove viene spiegato come condividere gli eventi registrati dal proprio NVR creato tramite ZoneMinder.
Vi è inoltre la possibilità di crearsi un NAS in totale autonomia tramite l’utilizzo di un hardware generico, come il Raspberry Pi, ed il software open source OpenMediaVault, che rispecchia esattamente la configurazione adottata in questo articolo.
Alcuni dei componenti consigliati:
- NAS Synology Base: Amazon
- NAS Synology Performante: Amazon
- Raspberry Pi 4 Kit: Amazon
- Hard Disk Enclosure: Amazon
- Hard Disk 4 TB per NAS: Amazon
- Hard Disk 8 TB per NAS: Amazon
Le risorse condivise andranno configurate con un accesso protetto tramite utente e password ed associati i corretti permessi, di fatto la seguente procedura è stata testata con molteplici dispositivi e risultata funzionante. Eventuali problemi sono da ritenersi relativi ad una non corretta configurazione della condivisione.
Materiale necessario
Per eseguire questa integrazione è necessario aver strutturato il proprio sistema per la gestione dei packages come indicato in questo articolo.
Una volta predisposto il sistema, scarichiamo questo pacchetto contenente il materiale che utilizzeremo nei vari passaggi:
Preparazione
Prima di eseguire la configurazione di Home Assistant, preparare all’interno del proprio NAS tutte le condivisioni SMB/CIFS, e nel caso si voglia gestire una condivisione degli eventi di ZoneMinder, predisporla come indicato in questo articolo.
Per quanto riguarda il NAS, nella gestione fornita vi sono predisposte le seguenti condivisioni:
Procediamo dichiarando nel file secrets.yaml le seguenti chiavi:
# Media Sources
# NAS
media_sources_smb_nas_music_mount_folder_shell_command: 'mount -t cifs -o username=Vito,password=topolino1234,domain=WORKGROUP //192.168.0.10/MUSICA "/config/media/SMB/NAS/Musica"'
media_sources_smb_nas_pictures_mount_folder_shell_command: 'mount -t cifs -o username=Vito,password=topolino1234,domain=WORKGROUP //192.168.0.10/IMMAGINI "/config/media/SMB/NAS/Immagini"'
media_sources_smb_nas_movies_mount_folder_shell_command: 'mount -t cifs -o username=Vito,password=topolino1234,domain=WORKGROUP //192.168.0.10/FILM "/config/media/SMB/NAS/Film"'
media_sources_smb_nas_tv_shows_mount_folder_shell_command: 'mount -t cifs -o username=Vito,password=topolino1234,domain=WORKGROUP //192.168.0.10/SERIE_TV "/config/media/SMB/NAS/Serie TV"'
media_sources_smb_nas_recordings_mount_folder_shell_command: 'mount -t cifs -o username=Vito,password=topolino1234,domain=WORKGROUP //192.168.0.10/REGISTRAZIONI "/config/media/SMB/NAS/Registrazioni"'
media_sources_smb_nas_videos_mount_folder_shell_command: 'mount -t cifs -o username=Vito,password=topolino1234,domain=WORKGROUP //192.168.0.10/VIDEO "/config/media/SMB/NAS/Video"'
media_sources_smb_nas_temp_mount_folder_shell_command: 'mount -t cifs -o username=Vito,password=topolino1234,domain=WORKGROUP //192.168.0.10/TEMP "/config/media/SMB/NAS/Temp"'
# NVR
media_sources_smb_nvr_events_mount_folder_shell_command: 'mount -t cifs -o username=Vito,password=topolino1234,domain=WORKGROUP //192.168.0.223/EVENTI "/config/media/SMB/NVR/Eventi"'
# -------------------------------------------------------------------------------------------------------------------
Ogni chiave di configurazione comprende l’intero comando di montaggio (mount) della relativa condivisione.
Vediamo quindi come è composto il comando:
- mount -t cifs -o: Il comando mount al quale fornire i parametri;
- username=Vito: L’utente per l’accesso protetto;
- password=topolino1234: La password per l’acesso protetto;
- domain=WORKGROUP: Il gruppo di lavoro o il dominio della propria rete;
- //192.168.0.10/MUSICA: Il percorso della condivisione da montare;
- “/config/media/SMB/NAS/Musica”: Il percorso locale dove la condivisione verrà montata.
Ovviamente le condivisioni montate non occuperanno in alcun modo la memoria locale.
Le medesime condivisioni andranno configurate all’interno del file configuration.yaml:
Sotto è disponibile il codice da aggiungere all’interno del file, ma come mostrato nell’immagine è necessario disabilitare temporaneamente tutte le chiavi funzionali poiché le cartelle verranno create solo successivamente, e senza queste disponibili Home Assistant genererebbe un errore nella fase di verifica della configurazione.
Attenzione: Per abilitare il browser multimediale è necessario che vi sia abilitata la voce “media_source:” come indicato nella documentazione ufficiale. Se avete la voce “default_config:” o se avete seguito questo articolo, questo risulterà già attivo, in caso contrario abilitarlo manualmente.
# Configuration
# Home Assistant
homeassistant:
...
# Media Sources Directories
media_dirs:
# Media Sources
# Generico
# Locale
locale: '/config/media/Locale'
# Montaggio Condivisioni
# NAS
# Musica
musica: '/config/media/SMB/NAS/Musica'
# Immagini
immagini: '/config/media/SMB/NAS/Immagini'
# Film
film: '/config/media/SMB/NAS/Film'
# Serie TV
serie_tv: '/config/media/SMB/NAS/Serie TV'
# Registrazioni
registrazioni: '/config/media/SMB/NAS/Registrazioni'
# Video
video: '/config/media/SMB/NAS/Video'
# Temp
temp: '/config/media/SMB/NAS/Temp'
# NVR
# Eventi
eventi: '/config/media/SMB/NVR/Eventi'
# -------------------------------------------------------------------------------------------------------------------
Per avere un’interfaccia utente ordinata consiglio l’installazione della card fold-entity-row tramite HACS, che è possibile installare come indicato in questo articolo.
La gestione
Predisposto il sistema, caricare il package media_sources.yaml fornito nella sezione materiale necessario, quindi riavviare Home Assistant ed aggiungere le card lovelace disponibili all’interno del file Lovelace Cards.txt.
Il risultato dovrebbe essere il seguente:
L’interfaccia di gestione permette “a scaletta” di disabilitare il montaggio di ogni singola condivisione.
Nella sezione generica è possibile disabilitare l’intera gestione delle sorgenti multimediali, oppure la singola gestione SMB/CIFS, rendendola modulare e ad esempio permettendo in parallelo anche il montaggio di eventuali condivisioni NFS o di altri protocolli supportati.
Vi è la possibilità di gestire “a scaletta” anche i vari dispositivi come il NAS o il nostro NVR creato tramite ZoneMinder, permettendo la disabilitazione di ogni singola condivisione precedentemente configurata.
Il selettore di ritardo montaggio permette di indicare dopo quanto, successivamente all’avvio di Home Assistant, verranno montate le condivisioni.
A corredo della gestione automatizzata vi sono i comandi manuali per la creazione delle cartelle e montaggio delle condivisioni.
Dopo aver caricato il package, al riavvio di Home Assistant verranno automaticamente creati tutti i percorsi necessari per il montaggio, ed all’interno della cartella config è possibile notare la presenza della sottocartella media con all’interno la seguente struttura:
Come è possibile notare dall’immagine, vi è la predisposizione anche di un percorso Locale nel quale caricare manualmente dei contenuti, mentre nella cartella SMB vi è una suddivisione dei percorsi in base ai vari dispositivi gestiti con questo protocollo, ovvero il nostro NAS e la condivisione degli eventi del nostro NVR creato tramite ZoneMinder.
Attenzione: Esclusa la cartella Locale in cui è possibile caricare manualmente dei contenuti, tutte le altre cartelle sembreranno sempre vuote ma i contenuti saranno correttamente accessibili dal browser multimediale.
Verificata la corretta creazione delle cartelle e configurati tutti i parametri della gestione, abilitare il codice precedentemente disabilitato all’interno del file configuration.yaml e riavviare Home Assistant.
Al riavvio è possibile notare che all’interno del browser multimediale sono presenti le varie condivisioni con all’interno i contenuti.
Questi possono essere riprodotti (se compatibili) direttamente dal browser oppure dai media player che ne supportano la riproduzione.
Allo stesso modo è possibile visionare gli eventi del nostro NVR creato tramite ZoneMinder:
Conclusione
In questo articolo non mi sono soffermato sul codice della gestione poiché molto basilare e ripetitivo per le varie suddivisioni “a scaletta”, ma consiglio la lettura della documentazione relativa agli Shell Command, poiché proprio loro permettono la creazione delle cartelle e montaggio delle condivisioni su queste.
Attenzione: Faccio presente che in caso di errori il comando risulterà in chiaro, contenente utente e password, nei registri di sistema ed in tal caso sarà necessario riavviare Home Assistant o eseguire il montaggio manuale per poter visualizzare nuovamente il contenuto.
7 commenti
E’ possibile montare delle cartelle di un nas remoto? quale sarebbe la stringa esatta da inserire?
Ciao, cosa intendi di preciso con “remoto”?
che non si trova nella stessa lan di HA, che è accessibile da un ip pubblico.
Sto provando varie soluzioni per montare sia cartelle di un nas locale:
Error running command: `mount -t cifs -o username=xxx,password=xxxxx,domain=WORKGROUP //192.168.5.xxx/Volume_1/P2P/complete “/config/media/SMB/NAS/Musica”`, return code: 255
sia cartelle di un nas remoto accessibile tramite link web:
Error running command: `mount -t cifs -o username=xxxxxx,password=xxxxxx,domain=https://qlink.to/xxxxxxx/Multimedia/Movies “/config/media/SMB/NAS/Film”`, return code: 1
però ricevo continuamente errori, dove può essere il problema?
Il progetto nasce per risorse SMB o simili tipo NFS. Fuori dalla LAN dovresti accedere via internet e non so se il sistema HassOS gestisce risorse di quel genere (presumo tipo webdav), vanno eseguite prove ma io eviterei. con HA Core forse c’è maggiore possibilità. ma il comando predisposto permette solo il mount di risorse SMB locali in LAN.
ti ringrazio per la risposta, però anche montando cartelle di un nas sulla stessa LAN il risultato è return code: 255. come posso risolvere?
Error running command: `mount -t cifs -o username=xxx,password=xxxxx,domain=WORKGROUP //192.168.5.xxx/Volume_1/P2P/complete “/config/media/SMB/NAS/Musica”`, return code: 255
Lo vedi nei log o tenti il mount manuale eseguendo il comando?
In ogni caso ti assicuro che il comando funziona, è però necessario che il NAS sia configurato adeguatamente per il mount con quei parametri. ho provato sia con openmediavault che synology che qnap e ha funziona correttamente, ti consiglio di guardare bene la parametrizzazione lato nas della condivisione, che abbia i diritti lettura e scrittura per l’utente scelto e che sia abilitata a SMB\CIFS. inoltre verifica che il percorso di mount sia stato correttamente creato nella tua cartella config.