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

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.
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:

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:
Cliccateci sopra per arrivare alla pagina dove troverete il link effettivo al file binario binario compresso “Gzipped source tarball”:

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:

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:

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:
Ultimo aggiornamento Amazon Affiliate 2025-05-16 at 10:03