Schlagwort-Archive: Raspberry Pi

Wir haben Server zuhause

Irgendwann habe ich geseufzt und mir eingestanden: Okay, es ist soweit.

Angefangen hatte das alles ganz harmlos. Im Maerz 2020, kurz bevor das alles ganz anders wurde, hatte ich mir einen Raspberry Pi 4 gekauft. Ich kann mittlerweile gar nicht mehr nachvollziehen, wie viele RasPis in welchen Varianten ich ueber die Jahre wann besessen habe und vor allem wo manche davon seither hingewandert sind. Die waren auch super, als vertiefender Einstieg in den Umgang mit Linux und Hardware, um mal testweise einen Miniserver fuer ein Projekt zu haben, oder (meistens) um irgendwas mit Digital Signage zu machen.

Die anderen Pis, die seither bei mir herumlagen, waren auch vorwiegend Reserve, um einen Node fuer info-beamer als Digital-Signage-Loesung zu haben, ganz sporadisch habe ich sie als Retrospielekonsole oder andere Sachen benutzt. Die meiste Zeit lagen sie aber einfach herum.

Mit diesem Pi sollte das aber anders werden. Ich wollte endlich mal Home Assistant als selbst betriebene (und kontrollierbare) Heimautomatisierungsplattform ausprobieren. Zunaechst nur fuer ein bisschen Sensorik fuer die Temperatur in der alten WG, dann kamen ein billiger Zigbee-Stick (den ich erst einmal umflashen musste) und IKEA-Zigbee-Leuchten dazu, dann Bewegungsmelder und erste Automatisierungen, dann Stromverbrauchsmessung mit Shelly, der Drucker im Netzwerk kann auch irgendwie gemanaged werden… man kennt das ja. Jedenfalls hatte ich auf dem Pi Home Assistant OS fuer Raspberry Pi installiert und dann lag der irgendwo und hing an Strom und Netzwerk (und ich kann mich ehrlich gesagt gar nicht mehr erinnern, wo in der WG der rumhing) und machte einfach, 24/7.

In die neue WG in Neu-Ulm habe ich einfach 1:1 das meiste umgezogen und immer wieder was dazugebaut, zum Beispiel „smarte“ Heizkoerperthermostate zum Gas sparen, weil ich damals noch nicht wusste, dass der viel ausschlaggebendere Part die richtige Einstellung der Brennwerttherme ist – aber das waere etwas fuer einen anderen Post.

Es fing mit Home Assistant an und dann baut man eine Kuechen-Arbeitsflaechenbeleuchtung mit der Fraese, LED-Streifen und WLED. Wer kennt es nicht.

So haette das eigentlich weitergehen koennen mit dem Pi, auf dem Home Assistent vor sich hin werkelt, wenn ich nicht irgendwann das Dokumentenverwaltungssystem paperless-ngx kennengelernt haette. Wobei das vermutlich gar nicht stimmt – ich kann gar nicht mehr sagen, wann ich das kennengelernt hatte, es muss spaetestens im Spaetsommer 2023 gewesen sein und es blieb erst einmal bei Neugier und Interesse. Der ausschlaggebende Faktor war eher, dass ich irgendwann beschlossen habe, dass ich das haben will. Eventuell endgueltig ausgeloest durch den Vortrag auf der MRMCD2024, eventuell durch Berichte, wie man sich mit ausgedienten Thin Clients einen kleinen Server aufbaut, der aehnlich viel/wenig Energie wie ein Raspberry braucht, aber gleich mehrere Dienste auf einmal fahren kann – also beispielsweise auch paperless-ngx parallel zu Home Assistant, alle in ihrer eigenen Virtualisierung.

Im November letzten Jahres habe ich also nach einer unnoetig intensiven Recherchephase 50 Euro in die Hand genommen, und mir einen gebrauchten Dell Wyse 5070 Thin-Client gekauft. Dass ich das hier schreibe, traegt vermutlich nur weiter dazu bei, dass die Teile stark nachgefragt und die Preise relativ hoch bleiben. Andererseits erhaelt man hier fuer einen vergleichbaren Preis eines RasPi 4 ein Geraet, das:

  1. sein eigenes Gehaeuse mitbringt
  2. eventuell sogar ein Netzteil
  3. je nach Angebot von Haus aus mit mehr RAM als der preisaehnliche Pi daherkommt, den man aber bis 32 GB erweitern kann
  4. bei minimal mehr Energiekonsum deutlich mehr Rechenpower hat
  5. passiv gekuehlt ist – das ist der Pi natuerlich auch, die meisten „kleinen“ Rechner haben aber aktive Belueftung
  6. eine x86-Architektur hat, d.h. da laeuft einfach „normales“ Linux drauf, ohne irgendwelche Architekturbesonderheiten beruecksichtigen zu muessen

Eine schoene Uebersicht, wie man RAM erweitern, eine andere SSD einbauen und das BIOS auf den aktuellen Stand bringen kann, hatte ich vorher schon bei Heckpiet gefunden. Mein Angebot kam ohne Netzteil, aber da ich irgendwann mal keine Lust mehr hatte, fuer mein altes Dell-Arbeitsnotebook und mein persoenliches Thinkpad je ein Netzteil mitzuschleppen, hatte ich mir bereits passende USB-PD-Adapter zugelegt, so dass ich die Kiste einfach mit einem USB-C-Netzteil testen konnte.

Die ersten Wochen habe ich mich einfach an Proxmox als Host-System herangetastet und Dinge ausprobiert. Durch ein weihnachtliches Schrottwichteln und noch herumliegende Sachen kam ich an eine passendere groessere M2-SATA-SSD und 16 GB RAM (also nochmal deutlich mehr als der groesste Pi 4), so dass ich mich nach der Eingewoehnungszeit daran machte, Home Assistant auf die neue alte Maschine umzuziehen und parallel mit ein paar anderen Diensten zu spielen – durch die Proxmox Helper Scripts hat man ganz schnell mal eben testweise nicht nur paperless installiert, sondern nach was einem sonst noch der Sinn ist.

Und dann war auch der Moment gekommen, um die „alte“ Installation vom Pi auf den neuen Server umzuziehen… und dann natuerlich laengere Zeit Fehler auszubuegeln, weil nicht alles so reibungslos ging wie erhofft (ich hatte beispielsweise den Billig-Zigbee-Stick durch einen moderneren ersetzt – das bedeutete aber wohl auch, das ganze Zigbee-Netz mit allen Geraeten neu einzurichten).

Nun bin ich also offiziell einer dieser Menschen, die „einen Server betreiben“. Also einen obsoleten Thin Client im Wohnzimmerschrank. Mit Proxmox-Virtualisierung drauf. Von dem man aber immerhin einfach gar nichts mitbekommt, weil er keine Geraeusche macht und einfach nur laeuft, so wie der Pi vorher. Das mit dem „Server betreiben“ fuehlt sich immer noch seltsam an. Aber seither habe ich tatsaechlich auch paperless-ngx, um meinen Papierkram besser zu ordnen. Und mittlerweile auch noch ein paar Sachen mehr. Und das fuehlt sich ehrlich gesagt wirklich zufriedenstellend an!

(Das illustrierende Artikelbild ist gar nicht der 5070, sondern ein Fujitsu Esprimo Q920. Ich hatte die letzten Tage festgestellt, dass es auf Wikimedia Commons kaum Fotos der aktuellen Thin Clients gibt und dachte, ich fotografiere mal welche. Ich kam nicht dazu, „meinen“ zu fotografieren, aber habe wenigstens gestern als Commons-Objektfotografie ein paar Fotos eines im temporaerhaus liegenden Q920 gemacht – nur um dann festzustellen, dass das genau genommen gar kein Thin Client ist, sondern ein nochmal deutlich leistungsfaehigerer Mini-PC, dafuer eben mit mehr Energieverbrauch und aktiver Lueftung. Auf meinen Aufruf von heute morgen hin haben aber Menschen sogleich neue Fotos u.A. der kleineren Variante 3040 hochgeladen. Vielen Dank dafuer!)

info-beamer-nodes auf dem Raspberry Pi laufen lassen

Schon eine ganze Weile lang steht im Verschwoerhaus mein alter Fernseher, der per HDMI und info-beamer-pi mit Inhalten beschickt wird – bisher fast nur Platzhalter, ein paar Bilder, die Uhrzeit.

Das wollte ich schon lange mal huebscher machen. So wie die Infoscreens beim Congress zum Beispiel. Mit kommenden Veranstaltungen. Und was da alles dazugehoert. Wann immer ich da aber eingestiegen bin, kam ich mir wie beim wildesten Yak Shaving vor: Die neueren Beispiele fuer info-beamer-Displays sind allesamt Packages fuer info-beamer-hosted, und so einfach laufen die nicht auf einem Pi, wenn man die Architektur von -hosted nicht kennt.

Nachdem ich aber heute ein paar der Fallstricke herausgefunden habe, hier mal fuer die Nachwelt erhalten:

In der Regel gibt es zwei bis drei Dinge zu beachten. Erstens: Beim Start von python2 service bricht der Prozess mit folgender Fehlermeldung ab:

[hosted.py] updated config
initialized hosted.py
Traceback (most recent call last):
  File "service", line 11, in <module>
    from hosted import CONFIG, NODE
  File "/home/pi/package-gpn15/hosted.py", line 184, in <module>
    NODE = Node(os.environ['NODE'])
  File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__
    raise KeyError(key)
KeyError: 'NODE'

Hier fehlt die Umgebungsvariable, wie der node heisst, an den die Uhrzeit geschickt werden soll. Das ist der root-node, der sich ueber die Konsole recht leicht ermitteln laesst:

In diesem Fall hilft ein vorheriges export NODE=package-gpn15 und alles funktioniert.

Zweitens: Die Config-Dateien. Die muessen aus den meist vorhandenen config.example.json angepasst werden. Was fuer den Fahrplan hilft ist ein Link auf ein frab-XML(!) in schedule_url in der config.json. Entweder ein kommendes Event aussuchen, das seinen Fahrplan ueber frab ausspielt, oder selber eins bauen. Das service-Script laedt das dann herunter und baut es in das etwas eigene json-Format um. Im package-conference-room-Readme ist das tatsaechlich beschrieben, das muss man aber erstmal finden 😉

Die 33c3-Infoscreens habe ich so leider trotzdem nicht zum Laufen bekommen, da ist die Konfiguration wohl noch ein wenig anstrengender. Aber immerhin verstehe ich jetzt ein wenig besser, wie info-beamer funktioniert. Jetzt muss ich nur noch herausfinden, warum der Bildschirminhalt trotz aller Overscan-Einstellungen ueber den Bildschirmrand hinauslaeuft (also keine schwarzen Rahmen, die gibts allenfalls in der Konsole, sondern abgeschnittene Raender rundum)

/edit: Rausgefunden, wie das mit den Raendern geht: X- und Y-Nullpunkt und dann die horizontale und vertikale Skalierung anpassen. In unserem Fall:


export INFOBEAMER_TARGET_X=50
export INFOBEAMER_TARGET_Y=30
export INFOBEAMER_TARGET_W=94%
export INFOBEAMER_TARGET_H=94%

Lebenszeichen

Wer hier mitliest, koennte meinen, ich existiere gar nicht mehr – ich kann wahlweise beruhigen oder enttaeuschen, dem ist nicht so.

Die letzten Monate waren ein wenig turbulent: Diplomarbeitsendspurt und -abschlussvortrag, nahtloser Uebergang in SoNaFe-Hilfsorganisatortaetigkeit wider Willen, parallel Arbeit im Mobilitaetsreferat, der datalove-Arbeitsgruppe, ein Open-Data-Workshop beim SWR in Stuttgart… was man eben so tut 😉

Die kommenden Wochen bleiben voller spannender Projekte: Ab Freitag abend bin ich in Berlin zum offiziellen Start von Code for Germany, ausserdem habe ich einige Texte zu Open Data und Nahverkehr auf dem Backburner, und Dominik und ich prototypen gerade Libraries fuer neue Busabfahrtsdisplays auf GTFS-Basis. Da Farnell element 14 uns hier freundlicherweise mit Hardware unterstuetzt, gibt’s bald auch eine Variante zum einfach-nur-installieren-und-verwenden – aber erstmal klinke ich mich nun in Richtung Berlin aus 🙂

Bis dahin ein Sneak Peak:

Jahresendloeten

Vermutlich haben mich die Twitter-Mitlese und die sporadisch geschauten Streams des 29C3 endgueltig aufgerafft: Ich habe jetzt endlich ein serielles Konsolenkabel fuer meinen Raspberry PI.

Wenn ich den an der Uni an eine Public-Access-LAN-Dose haenge, koennte ich zwar aus dem Uni-WLAN heraus auch per SSH auf den Pi, so geht’s nun aber auch ganz ohne Netzwerk. Vorausschauenderweise hatte ich mir vor ewigen Zeiten mal bei lipoly ein FTDI-Breakout-Board von DFRobot gekauft, dessen Signalpegel per Jumper von 5V auf (PI-kompatible) 3,3V umgestellt werden koennen.

Wenn man nun noch weiss, dass die TX- und RX-Pins des Boards falsch beschriftet ist und man nicht TX mit RX und RX mit TX verbinden muss, sondern TX/TXO und RX/RXI (sic), hat man mit drei Draehtchen (RX, TX und Masseleitung fuer stoerungsfreie Kommunikation) und einem

screen /dev/ttyUSB0 115200

einen Shell-Login auf dem Pi 😉