Kategorie: Home Automation

Home Assistant auf Docker umgestellt

Ich hat­te bis­lang Home Assi­stant in einem Python vir­tu­al envi­ron­ment zu lau­fen — war­um? Nun, es gibt wohl ein Image auf SD-Kar­te: Ein­schie­ben, boo­ten, HA läuft. Aller­dings ist ein Pi viel zu potent, als daß man ihn mit einer ein­zi­gen Auf­ga­be belei­di­gend unter­for­dern wollte.
Da kam die venv-Vari­an­te gera­de recht: Man kann rum­schwei­nen, Python-Packa­ges nach­in­stal­lie­ren nach Gus­to, ohne das sys­tem-Python anfas­sen zu müs­sen. Mit einer Ein­schrän­kung: Man ist an das System-Python(3) gebun­den, und das ist bei einem aktu­el­len Raspbi­an 3.7.3 — und HA mault das seit Mona­ten als depre­ca­ted an.
Ein neue­res Python gibt es aber nicht als Paket (jeden­falls habe ich nichts gefun­den). Also ich bin ja ein uber­he­ro, habe vie­le vie­le Jah­re send­mail aus den Quel­len über­setzt und mei­ne aller­ers­te sendmail.cf tat­säch­lich sel­ber geschrie­ben (und danach m4 ent­deckt), also so ein pop­li­ges Python sel­ber bau­en, ist ja wohl kei­ne Her­aus­fo­de­rung! Stellt sich raus: In der Tat, ist es nicht, geht ganz smooth. Also schnell noch Alia­se gesetzt und los: python-venv gestar­tet, HA gestartet.

Wel­co­me tot the depen­den­ci­es hell!¹

Ach was da alles nicht ver­füg­bar 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 ein­fach 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ür­lich gleich Watch­tower haben. Das meckert zwar beim Star­ten, 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:~#

Wun­der­bar! War­um habe ich das nicht seit lan­gem so???


¹ OK, wer schon mal Ruby Depen­den­ci­es hin­be­kom­men hat, der wird das­sel­be bei Python noch voll­trun­ken hinbekommen.

Elektriker hier?

Von Strom weiß ich soviel, daß zuviel davon viel Aua macht.
Im Haus habe ich Außen­ja­lou­sien, die wer­den mit einem nor­ma­len Unter­putz-Schal­ter geschaltet:

Das schreit natür­lich danach, der Haus­au­to­ma­ti­sie­rung vor­ge­wor­fen zu wer­den, dabei muß es aber immer mög­lich blei­ben, die Jalou­sien wei­ter­hin mit klas­si­schen Schal­tern zu schalten.

Da bin ich auf Shel­ly gesto­ßen, das von HA unter­stützt wird.

Könn­te das was werden?

Zigbee: Reichweite?

Mein #HomeAs­si­stant redet nur über Ethernet/WLAN mit den Gerä­ten. Die­se sind fast alle IKEA Tråd­fri und wer­den von HomeAs­si­stant dann via IKEA-Bridge  ange­spro­chen, die­ses kom­mu­ni­ziert dann mit den Gerä­ten (Lam­pen, Fern­be­die­nun­gen, Schal­ter, Steck­do­sen) via #Zig­bee. Das funk­tio­niert wie es soll.
Nun ist es aber so, daß die Tråd­fri-Fern­be­die­nun­gen schon schick sind — nur lei­der las­sen sie sich von HomeAs­si­stant aus nicht anspre­chen, wahr­schein­lich gibt die Bridge das nicht her. Aber könn­te man sie aus­le­sen, dann lie­ße sich alles mög­li­che damit anstel­len — mein Schwa­ger ist schon ganz scharf darauf 😉
Also ist die Idee, die Fern­be­die­nun­gen direkt via Zig­bee anzu­spre­chen — dazu muß HomeAs­si­stant aber erst­mal Zig­bee spre­chen. Das läuft auf einem Raspi 4, und ich lieb­äug­le mit RaspBee II, schon weil der Preis über­schau­bar ist, so daß ein Fehl­kauf nicht schlimm wird.

Nun aller­dings ist der Raspi im Kel­ler, das nächs­te Zig­bee-Gerät (eine Tråd­fri-Lam­pe) ist ca. 6 Meter ent­fernt, getrennt durch eine Kel­ler­de­cke (Stahl­be­ton) und eine Mau­er (Hohl­zie­gel). Da Zig­bee ja ein Mesh-Netz­werk ist, soll­te ich nur einen Zugang benö­ti­gen, eben die­se Lam­pe. Hat jemand prak­ti­sche Erfah­run­gen mit Zig­bee durch Stahlbeton?

Und jährlich grüßt das Pythontier

Mein HomeAs­si­stant auf dem Raspi 4 beschwert sich. Der Raspi hat ein aktu­el­les Raspian:

pi@r4:~ $ python3 --version
Python 3.7.3
pi@r4:~ $ lsb_release  -a
No LSB modules are available.
Distributor ID:	Raspbian
Description:	Raspbian GNU/Linux 10 (buster)
Release:	10
Codename:	buster
pi@r4:~ $

Beim Sohn auf einem Odroid N2:

root@ULU:~# python3 --version
Python 3.8.5
root@ULU:~# lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.1 LTS
Release:	20.04
Codename:	focal
root@ULU:~#

Ich hab’ echt kei­nen Bock auf das Geham­pel mit selbst übersetzen 🙁

SD-Karten halten auch nicht ewig

und mei­ne in dem einen Pi natür­lich bis Sonn­abend, 3. 10., Fei­er­tag, kein Laden mit SD-Kar­ten hat offen.

Sym­ptom: Das Time­Ma­chi­ne-Back­up eines Mac hing. netatalk restar­tet, hing. Reboot ging. Danach ging/geht bis auf ping gar nichts mehr. Moni­tor krie­ge ich nicht dran, ich habe kein Kabel mit Micro-HDMI.
Es ist eine 32-GB-Kar­te. Woll­te mir die Kar­te als Image sichern — dd bricht nach ca. 8 GB mit Lese­feh­lern ab.
Wer­de ver­su­chen, die Kar­te neu zu bespie­len, so daß sie wenigs­tens bis nächs­te Woche noch funk­tio­niert. Betrof­fen sind die Back­ups der Macs und Home Assi­stant und die loka­le Musik­bi­blio­thek (wobei wir fast nur Spo­ti­fy hören, das fällt also kaum ins Gewicht)

Unschön.

PS:
dd:

root@odroidc2:~# dd if=/dev/sdb of=/usbplatte-1/sd-karte.r4.iso bs=100M status=progress
8182317056 bytes (8.2 GB, 7.6 GiB) copied, 490.146 s, 16.7 MB/s
dd: error reading '/dev/sdb': Input/output error
78+1 records in
78+1 records out
8182317056 bytes (8.2 GB, 7.6 GiB) copied, 527.358 s, 15.5 MB/s
root@odroidc2:~#

rsync:

root@odroidc2:~# rsync -avhHP --partial /mnt/ /usbplatte-1/sd-karte.r4/root/
sending incremental file list
var/log.old/syslog.1
        104.67M 100%    1.40MB/s    0:01:11 (xfr#1, to-chk=258/122668)
rsync: read errors mapping "/mnt/var/log.old/syslog.1": Input/output error (5)
WARNING: var/log.old/syslog.1 failed verification -- update discarded (will try again).
var/log.old/syslog.1
        104.67M 100%    2.69MB/s    0:00:37 (xfr#2, to-chk=258/122668)
rsync: read errors mapping "/mnt/var/log.old/syslog.1": Input/output error (5)
ERROR: var/log.old/syslog.1 failed verification -- update discarded.

sent 212.76M bytes  received 16.41K bytes  1.55M bytes/sec
total size is 18.28G  speedup is 85.89
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1196) [sender=3.1.2]
root@odroidc2:~#