Vai al contenuto
Home » Domotica Fai da te » Raspberry Pi » Aggiornare Home Assistant Core su Raspberry Pi – guida completa

Aggiornare Home Assistant Core su Raspberry Pi – guida completa

    Aggiornare Home Assistant Core su Raspberry Pi

    Guida completa in italiano per aggiornare Home Assistant Core in modo da mantenere stabile e sicuro il nostro sistema di domotica basato su Raspberry Pi.

    Home Assistant Updater

    Mantenere costantemente aggiornata una qualsiasi applicazione software è buona norma per poter usufruire di tutte le correzioni di bug, in particolare di sicurezza, e di eventuali nuove funzionalità che potrebbero essere di interesse.

    Per facilitarci questo compito, Home Assistant ci aiuta col sensore binario Updater che verifica giornalmente la presenza di nuove versioni di Home Assistant Core con le quali potremmo decidere di aggiornare il nostro sistema.

    Lo stato del sensore Home Assistant Updater sarà:

    • “on” in corrispondenza di un nuovo aggiornamento disponibile
    • “off” nel caso il nostro sistema sia già aggiornato all’ultima versione disponibile
    Aggiornare Home Assistant Updater
    Home Assistant Updater

    Tra gli attributi del sensore binario Updater troverete la nuova versione ed il link alle relative note di rilascio.

    Vi raccomando almeno una rapida lettura prima di aggiornare Home Assistant per verificare che non ci siano delle breaking changes rispetto alla versione correntemente installata.

    Volendo potremmo anche creare un’automazione per inviare una notifica che ci ricordi la possibilità di aggiornare Home Assistant.

    Aggiornare Home Assistant Updater
    Home Assistant Updater

    La lettura attenta delle release note può evidenziare delle breaking changes importanti: ad esempio dalle versioni 2022 è stato rimosso il supporto a Python 3.8 ed è quindi necessario utilizzare Python 3.9 per aggiornare Home Assistant Core.

    Nel caso non lo avessi ancora fatto, leggi la mia guida per installare Home Assistant su Raspberry Pi.

    Verificare la versione corrente di Home Assistant Core

    Per poter gestire eventuali problemi che richiedano un ripristino, il passo preliminare è quello di verificare, prima di aggiornare, quale sia la versione di Home Assistant attualmente installata.

    Per farlo andate sull’interfaccia web di Home Assistant alla voce Impostazioni del menù di sinistra e poi su Informazioni:

    In questo esempio la versione corrente di Home Assistant Core è la 2021.10.6:

    Aggiornare Home Assistant - verifica versione corrente
    Aggiornare Home Assistant – verifica versione corrente

    Potete ottenere la medesima informazione dalla linea di comando:

    hass – version

    Prendiamone nota sperando che non ci serva nei passi successivi.

    Aggiornare Python per Home Assistant Core

    Home Assistant per il suo funzionamento ha come prerequisito la presenza di Python 3.x.

    Le versioni da Home Assistant Core 2022 in poi hanno introdotto una breaking change molto importante: la versione di Python 3.9 diventa il pre-requisito per installazione ed aggiornamento.

    Se utilizzaste la versione Docker, oppure Home Assistant OS, questa necessità di aggiornamento manuale scompare.

    Vediamo come aggiornare la versione di Python su Raspberry Pi a supporto di Home Assistant Core.

    Verifica versione corrente di Python

    Se siete fermi a Python 3.8 o versioni precedenti, è quindi necessario aggiornare il vostro Raspberry Pi prima di poter aggiornare Home Assistant all’ultima versione disponibile.

    Partiamo verificando la versione di Python 3.x installata su Raspberry Pi:

    python3 – version

    Download nuova versione Python

    Nel mio caso è quindi necessario aggiornare Python su Raspberry Pi; andate sulla pagina di download del sito di Python ed identificate l’ultima minor version disponibile:

    Aggiornare Python su Raspberry Pi
    Aggiornare Python su Raspberry Pi

    Cliccateci sopra per arrivare alla pagina dove troverete il link effettivo al file binario binario compresso “Gzipped source tarball”:

    Aggiornare Python su Raspberry Pi

    Potete ora effettuarne il download sul Raspberry Pi:

    wget https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tgz
    

    Ed estrarre il file binario compresso:

    tar -zxvf Python-3.9.10.tgz
    

    Installazione Python

    Possiamo ora eseguire l’installazione procedendo con la compilazione di Python munendoci di tanta pazienza, soprattutto nel caso avessimo un modello di Raspberry Pi non proprio recentissimo:

    cd Python-3.9.10
    ./configure – enable-optimizations
    sudo make altinstall

    Il risultato è quello di aggiungere il nuovo eseguibile di Python all’interno della directory /usr/local/bin.

    Potrete verificare tutte le versioni di Python attualmente installate nel sistema. Nel mio caso sono a questo punto le seguenti:

    pi@raspberrypi:~ $ whereis python
    python: /usr/bin/python3.8 /usr/bin/python /usr/bin/python3.7m-config /usr/bin/python2.7 /usr/bin/python3.7 /usr/bin/python3.7m /usr/bin/python3.8-config /usr/bin/python3.7-config /usr/lib/python3.8 /usr/lib/python2.7 /usr/lib/python3.7 /etc/python /etc/python2.7 /etc/python3.7 /usr/local/bin/python3.9-config /usr/local/bin/python3.10 /usr/local/bin/python3.9 /usr/local/bin/python3.10-config /usr/local/lib/python2.7 /usr/local/lib/python3.7 /usr/local/lib/python3.10 /usr/local/lib/python3.9 /usr/include/python3.8 /usr/include/python3.7 /usr/include/python3.7m /usr/share/python /usr/share/man/man1/python.1.gz
    

    In particolare il link simbolico a python3 punta ancora ad una versione precedente:

    pi@raspberrypi:~ $ ls -latr /usr/bin/python3
    lrwxrwxrwx 1 root root 9 Mar 26  2019 /usr/bin/python3 -> python3.7
    

    Prima di aggiornare il ink simbolico, dobbiamo estrarre la lista dei package Python che dovremo reinstallare sulla nuova versione:

    pip3 freeze > reqs.txt

    Occorre aggiornare il link simbolico alla versione appena installata:

    cd /usr/bin
    sudo rm python3
    sudo ln -s /usr/local/bin/python3.9 python3

    Ed il gioco è quasi fatto:

    pi@raspberrypi:/usr/bin $ python3 – version
    Python 3.9.10

    E’ ora necessario reinstallare l’elenco di package Python salvati in precedenza, questa noiosa attività potrebbe richiedere parecchio tempo:

    pip3 install -r reqs.txt

    Raccomando assolutamente di verificare di non aver fatto danni collaterali su altre applicazioni che ne facciano uso. Ci potrebbero essere dei casi incompatibilità con la nuova versione di Python.

    Personalmente ho anche riscontrato un errore su pip che ho corretto col comando seguente:

    ln -s /usr/share/pyshared/lsb_release.py /usr/local/lib/python3.9/site-packages/lsb_release.py

    Aggiornamento ambiente virtuale Python

    Quasi sicuramente il vostro Home Assistant gira su un ambiente virtuale Python che dobbiamo aggiornare (direi ricreare).

    Backup package correnti

    Entrate nella directory di installazione di Home Assistant:

    cd /home/homeassistant/

    Passante all’utente con il quale viene eseguito Home Assistant:

    sudo -u homeassistant -H -s

    Attivate l’ambiente virtuale Python all’interno del quale gira Home Assistant:

    source /srv/homeassistant/bin/activate

    Esportate l’elenco dei pacchetti Python installati nell’ambiente virtuale:

    pip3 freeze –local > requirements.txt
    

    Uscite disattivando l’ambiente virtuale:

    deactivate

    Verificate che l’elenco sia stato stato esportato correttamente:

    cat requirements.txt

    Cancellazione e ricreazione ambiente virtuale

    Ritornate all’utenza di sistema ed interrompete l’esecuzione di Home Assistant:

    exit
    sudo systemctl stop home-assistant@homeassistant.service

    Cancellate e ricreate la directory di installazione di Home Assistant con l’ownership corretta:

    sudo rm -rf /srv/homeassistant
    sudo mkdir /srv/homeassistant
    sudo chown homeassistant:homeassistant /srv/homeassistant

    Rientrate con l’utente Home Assistant:

    sudo -u homeassistant -H -s

    Create ed attivate il nuovo ambiente virtuale Python:

    cd /srv/homeassistant
    python3 -m venv .
    source bin/activate

    Giusto per scrupolo verificate che nel nuovo ambiente virtuale Python ci sia effettivamente la nuova versione attesa:

    (homeassistant) homeassistant@raspberrypi:/srv/homeassistant $ python3 – version
    Python 3.9.10

    Reinstallazione pacchetti Python

    Ora non dovrete faro altro che installare sul nuovo ambiente virtuale wheel e tutti i package Python di cui avevate esportato l’elenco in precedenza:

    pip3 install wheel
    pip3 install -r /home/homeassistant/requirements.txt

    Non preoccupatevi se l’operazione dovesse durare molti minuti, è normale.

    Riavvio Home Assistant

    Dopo aver finito di aggiornare Python potete finalmente tornare all’utenza principale e riavviare Home Assistant:

    exit
    sudo systemctl restart home-assistant@homeassistant.service

    Aspettate qualche minuto per controllare che il servizio di Home Assistant sia ripartito senza errori particolari:

    sudo systemctl status home-assistant@homeassistant.service

    Nel caso non resistiate all’ansia dell’attesa potete andare in diretta sul file di log applicativo:

    tail -100f /home/homeassistant/.homeassistant/home-assistant.log

    Con questa operazione avete aggiornato Python ripristinando la medesima versione di Home Assistant presente in precedenza. Per aggiornare Home Assistant, partendo da una versione di Python aggiornata, proseguite nella lettura della guida.

    Risoluzione errore libffi.so.7: cannot open shared object file

    Nel caso molto probabile che siate ancora sulla versione di Raspberry Pi OS Buster (Debian 10) potreste riscontrare questo errore nei log di Home Assistant:

    2022-02-14 18:02:51 ERROR (MainThread) [homeassistant.auth.providers] Unable to load auth provider homeassistant: libffi.so.7: cannot open shared object file: No such file or directory
    

    Per risolverlo potrete installare la libreria libffi7.so Raspberry Pi OS nella maniera seguente:

    wget "https://github.com/libffi/libffi/releases/download/v3.3/libffi-3.3.tar.gz"
    tar zxf libffi-3.3.tar.gz
    cd libffi-3.3
    ./configure
    sudo make install
    sudo ldconfig

    Riavviando Home Assistant l’errore dovrebbe scomparire.

    Aggiornare Home Assistant Core

    Nel caso abbiate la versione corretta di Python, per aggiornare Home Assistant Core procedete passando all’utente con il quale viene eseguito Home Assistant:

    sudo -u homeassistant -H -s

    Attivate l’ambiente virtuale Python all’interno del quale gira Home Assistant:

    source /srv/homeassistant/bin/activate

    Per scaricare, installare ed aggiornare Home Assistant all’ultima versione lanciate infine questo comando:

    pip3 install ‐‐upgrade homeassistant

    Non preoccupatevi se l’operazione dovesse durare molti minuti, è normale.

    Tornate all’utenza di default e riavviate il servizio di Home Assistant in modo che la nuova versione diventi attiva:

    exit
    sudo systemctl restart home-assistant@homeassistant.service

    Aspettate qualche minuto per controllare che il servizio di Home Assistant sia ripartito senza errori particolari:

    sudo systemctl status home-assistant@homeassistant.service

    Nel caso non resistiate all’ansia dell’attesa potete andare in diretta sul file di log applicativo:

    tail -100f /home/homeassistant/.homeassistant/home-assistant.log

    Con i suoi consueti tempi di ravvio, anche l’interfaccia web di Home Assistant tornerà disponibile per confermare l’avvenuto aggiornamento con successo:

    Aggiornare Home Assistant

    Non è però detto che abbiate finito con gli aggiornamenti, perché potreste “aver sbloccato” una ulteriore possibilità per aggiornare Home Assistant, l’Updater si ricorda subito il nostro dovere:

    Aggiornare Home Assistant Updater

    Munitevi di santa pazienza e ripetete i passi appena visti in precedenza per ottenere un sistema aggiornato, stabile e sicuro.

    Nel caso abbiate la necessità di aggiornare Home Assistant ad una versione specifica, come ad esempio fare rollback in caso di problemi insormontabili, il comando completo è il seguente:

    pip3 install homeassistant==XXXX.Y.Z

    Ricordate sempre di eseguirlo con l’utente di Home Assistant attivando il relativo virtual environment Python.

    Warning versione di pip

    Non preoccupatevi di un eventuale messaggio di warning alla conclusione della procedura di aggiornamento relativo alla versione di pip presente nel virtual environment Python:

    WARNING: You are using pip version 20.2.4; however, version 22.0.3 is available.
    You should consider upgrading via the '/srv/homeassistant/bin/python3.8 -m pip install – upgrade pip' command.

    Se infatti procedeste all’aggiornamento del gestore di pacchetti pip alla sua ultima versione otterreste quest’altro messaggio (più preoccupante):

    homeassistant 2021.12.10 requires pip<20.3,>=8.0.3, but you'll have pip 22.0.3 which is incompatible.

    Nel caso, rilanciando il comando di aggiornamento di Home Assistant verrebbe comunque ripristinata la versione corretta di pip.

    Leggi tutti i miei articoli su Raspberry Pi:

    Iscriviti alla nostra newsletter per rimanere sempre aggiornato

    Ultimo aggiornamento Amazon Affiliate 2022-11-23 at 20:38

    Lascia un commento

    Il tuo indirizzo email non sarà pubblicato.

    Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

    La mia Casa Elettrica

    GRATIS
    VISUALIZZA