Home Assistant: Integrare condivisioni SMB di un NAS all’interno del Media Browser

Autore: Vito
3,3K visite
Home Assistant SMB Media Browser - Featured Image

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:

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.

Se ti è stato utile, perché non...
Mi offri un caffè?

Post correlati

7 commenti

Cristian 7 Marzo 2022 - 17:57

E’ possibile montare delle cartelle di un nas remoto? quale sarebbe la stringa esatta da inserire?

Rispondi
Vito 8 Marzo 2022 - 22:33

Ciao, cosa intendi di preciso con “remoto”?

Rispondi
Cristian 9 Marzo 2022 - 09:07

che non si trova nella stessa lan di HA, che è accessibile da un ip pubblico.

Rispondi
Cristian 9 Marzo 2022 - 09:43

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?

Rispondi
Vito 9 Marzo 2022 - 09:47

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.

Rispondi
Cristian 9 Marzo 2022 - 09:58

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

Vito 9 Marzo 2022 - 10:03

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.

Lascia un commento

* Utilizzando questo modulo accetti la memorizzazione e la gestione dei tuoi dati da questo sito web.