Ich hatte bislang Home Assistant in einem Python virtual environment zu laufen — warum? Nun, es gibt wohl ein Image auf SD-Karte: Einschieben, booten, HA läuft. Allerdings ist ein Pi viel zu potent, als daß man ihn mit einer einzigen Aufgabe beleidigend unterfordern wollte.
Da kam die venv-Variante gerade recht: Man kann rumschweinen, Python-Packages nachinstallieren nach Gusto, ohne das system-Python anfassen zu müssen. Mit einer Einschränkung: Man ist an das System-Python(3) gebunden, und das ist bei einem aktuellen Raspbian 3.7.3 — und HA mault das seit Monaten als deprecated an.
Ein neueres Python gibt es aber nicht als Paket (jedenfalls habe ich nichts gefunden). Also ich bin ja ein uberhero, habe viele viele Jahre sendmail aus den Quellen übersetzt und meine allererste sendmail.cf tatsächlich selber geschrieben (und danach m4 entdeckt), also so ein popliges Python selber bauen, ist ja wohl keine Herausfoderung! Stellt sich raus: In der Tat, ist es nicht, geht ganz smooth. Also schnell noch Aliase gesetzt und los: python-venv gestartet, HA gestartet.
Welcome tot the dependencies hell!¹
Ach was da alles nicht verfügbar ist! xz
,sqlite3
— danach habe ich aufgegeben.
Die Lösung?
systemctl stop home-assistant@homeassistant.service systemctl disable home-assistant@homeassistant.service docker run --init -d --name="home-assistant" -e "TZ=Europe/Berlin" -v /home/homeassistant/.homeassistant:/config/ --net=host --restart=always homeassistant/raspberrypi4-homeassistant:stable
Löppt. So einfach kann es sein!
root@r4:~# python3 --version Python 3.7.3 root@r4:~# docker exec -ti home-assistant python3 --version Python 3.8.7 root@r4:~#
Dann will man natürlich gleich Watchtower haben. Das meckert zwar beim Starten, läuft dann aber wohl doch:
root@r4:~# docker run -d --name watchtower --restart always -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm/v7) and no specific platform was requested 33f87b78d1ba24793b0272db247f7f4fc9315e0e4aee335128e1049db6fe3aa3 root@r4:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 33f87b78d1ba containrrr/watchtower "/watchtower" 13 seconds ago Up 11 seconds 8080/tcp watchtower bfebd671b8fd homeassistant/raspberrypi4-homeassistant:stable "/init" 43 minutes ago Up 43 minutes home-assistant root@r4:~#
Wunderbar! Warum habe ich das nicht seit langem so???
¹ OK, wer schon mal Ruby Dependencies hinbekommen hat, der wird dasselbe bei Python noch volltrunken hinbekommen.