Wenn man seinen Raspberry Pi bei sich Zuhause für spezielle Dienste einsetzen möchte, ist es häufig sinnvoll, eine statische IP-Adresse zu vergeben. Man erreicht den Pi zwar in der Regel auch über den Hostnamen. Das ist unabhängig von seiner IP-Adresse, gelingt aber nicht immer. Manchmal muss man beispielsweise eine IP eingeben, oder der Hostname wird nicht korrekt aufgelöst.
Manchmal kann man über sein Netzwerk-Interface eine statische Adresse vergeben, wie etwa der Fritzbox. Ich möchte in dem heutigen Tipp aber zeigen, wie man das über den Raspberry einstellen kann.
Eigene IP-Adresse des Raspberry Pi herausfinden
Unter welchen internen IP-Adresse der Raspberry Pi erreichbar ist, sieht man am einfachsten mit folgendem Befehl. Meldet euch also entweder per SSH auf dem Pi an, oder öffnen ein Terminal auf der grafischen Oberfläche des Raspberry OS und gebt folgenden Befehl ein:
$ ifconfig
In der Ausgabe sieht man nun die Netzwerk-Schnittstellen sowie die jeweilige IP-Adresse.
Statische IP-Adresse am Raspberry Pi einstellen
Mit dem folgenden Befehl öffnet man den Netzwerkmanager von Raspberry OS. Dort kann man sich mit den Pfeiltasten durch das Menü bewegen, und am Ende die gewünsche IP-Adresse eingeben. Es ist hier besondere Vorsicht geboten, damit der Pi hinterher auch wieder im Netzwerk auftaucht. Ein Tippfehler könnte dazu führen, dass man ihn im Netzwerk nicht mehr findet und man per Monitor und Tastatur diesen Fehler korrigieren muss. Hab ich gehört….
$ sudo nmtui
Dort wählt man nun „Edit a connection“, wählt im folgenden Menü seine Schnittstelle aus (WLAN oder kabelgebundenes Netzwerk) und tippt dort seine Verbinungsdetails ein. Bei der IP sollte man hinten dran noch die Subnetzmaske angeben, also zum Beispiel 192.168.1.200/24 für die Subnetzmaske 255.255.255.0
Viele von uns kennen die Webseiten, auf denen man live den Flugverkehr beobachten kann. Das sind Karten, auf denen angezeigt wird, welche Flugzeuge sich gerade bewegen. Allein das reine Betrachten übt eine große Faszination aus. Egal auf welcher Zoomstufe man ist, überall gibt es etwas zu entdecken. Global etwa, wo befinden sich gerade die Flugrouten zwischen den Ländern oder Kontinenten. Man erkennt spielerisch die Ballungsräume der Menschheit, wo zieht es die Menschen hin. Oder man zoomt auf seinen eigenen Aufenthaltsort. Dort kann man dann mit dem „echten Himmel“ abgleichen, welche Flugzeuge sich gerade über einem befinden. Oder die Einzelansicht der Flugzeuge fasiziert mich. Wie schnell fliegt es, wie hoch ist es? Auch die Metadaten: Startflughafen, Ziel und Airline sind spannende Informationen, die ich mir gerne ansehe.
Wie spannend wäre das, wenn man das nicht nur über globale Webseiten sehen könnte? Ich möchte herausfinden, ob ich vielleicht mit einfachen Mitteln in der Lage bin, die Flugzeugdaten zu erhalten. Die erfreuliche Antwort vorneweg: Das geht tatsächlich, ist nicht kompliziert und die Hardware hierzu ist bezahlbar. Vielleicht habt ihr sie sogar schon zuhause!
Technischer Hintergrund: Was ist ADS-B?
ADS-B steht für Automatic Dependent Surveillance – Broadcast und ist ein modernes Überwachungsverfahren in der Luftfahrt. „Automatic“ bedeutet, dass die Aussendung ohne Eingriff des Piloten erfolgt, „Dependent“, dass das System auf bordeigene Navigationsdaten (meist GPS) angewiesen ist, und „Broadcast“, dass die Informationen ungezielt an alle Empfänger im Empfangsbereich gesendet werden.
Ein mit ADS-B ausgestattetes Luftfahrzeug überträgt in regelmäßigen Abständen unter anderem seine Position, Höhe, Geschwindigkeit, Flugrichtung und eine Kennung. Diese Daten werden typischerweise auf 1090 MHz ausgesendet und können sowohl von Flugsicherungsstellen als auch von anderen Flugzeugen und zivilen Empfängern am Boden empfangen werden.
Warum sind ADS-B-Signale unverschlüsselt?
ADS-B ist bewusst als offenes, unverschlüsseltes Broadcast-System konzipiert. Der Hauptgrund dafür liegt in der Flugsicherheit: Alle relevanten Teilnehmer – Bodenstationen, andere Flugzeuge, Kollisionswarnsysteme (TCAS), aber auch mobile oder kostengünstige Empfänger – müssen die Signale ohne vorherige Authentifizierung empfangen können. Eine Verschlüsselung würde zusätzliche Infrastruktur, Schlüsselverwaltung und Latenz erfordern und damit die Zuverlässigkeit und Interoperabilität des Systems beeinträchtigen.
Dieses offene Design ist kein Versehen, sondern ein zentraler Bestandteil des Konzepts. ADS-B soll klassische Radarsysteme ergänzen oder teilweise ersetzen und dabei weltweit einheitlich funktionieren – unabhängig von Hersteller, Staat oder Betreiber. Dass die Signale auch von Privatpersonen mit einfacher Hardware empfangen werden können, ist eine direkte Folge dieser Offenheit.
Seit wann gibt es ADS-B?
Die Grundlagen von ADS-B wurden bereits in den 1990er-Jahren entwickelt. Erste praktische Einführungen erfolgten Anfang der 2000er-Jahre, zunächst ergänzend zu Sekundärradar und Mode-S-Transpondern. Verbindliche Vorschriften kamen jedoch deutlich später:
USA: ADS-B-Out-Pflicht seit 1. Januar 2020
Europa: schrittweise Einführung, weitgehend verpflichtend für IFR-Verkehr und größere Luftfahrzeuge seit den späten 2010er-Jahren
weltweit: ICAO empfiehlt ADS-B als Standardüberwachungssystem, nationale Umsetzungen variieren
Welche Flugzeuge müssen ADS-B senden – und welche nicht?
Zur Aussendung von ADS-B-Signalen („ADS-B Out“) verpflichtet sind in der Regel:
Verkehrsflugzeuge (Airliner)
Gewerbliche Luftfahrzeuge
IFR-Flüge in kontrolliertem Luftraum
Flugzeuge oberhalb bestimmter Lufträume und Höhen
Nicht oder nur eingeschränkt verpflichtet sind dagegen:
Militärische und staatliche Luftfahrzeuge
Segelflugzeuge, Ballone, Ultraleichtflugzeuge
ältere allgemeine Luftfahrt (GA) ohne Nachrüstpflicht
Luftfahrzeuge in unkontrolliertem Luftraum (abhängig vom Land)
Vorbereitung: Die Hardware besorgen
Was man braucht, ist eine USB-Antenne. Es gibt von der Firma Realtek einen Chip, der sich RTL2832U nennt. Das ist im Wesentlichen ein Analog-Digital-Wandler, mit dem man das Antennensignal aufnehmen und am PC verarbeiten kannt. Das nennt sich dann SDR (Software Defined Radio). Also, besorgt euch so einen Stick. Es gibt mehrere Hersteller aber einer sticht in der Szene heraus, weil er wohl sehr weit verbreitet ist. Ich habe einen anderen bestellt, der ebenfalls gut funktioniert. Hauptsache er erhält den richtigen Chip RTL2832U – um den geht es.
Ich hatte in meiner Wühlkiste noch einen alten DVB-T-Stick für den Laptop. Der ist mehr als 10 Jahre alt, enhält aber den besagten Chip.
Ein DAB-T-Stick enthält meistens den Realtek RTL2832U-Chip und ist für dieses Projekt geeignet
Schritt 0: Treiber installieren mit Zadig
Es klingt etwas merkwürdig, aber unter Windows 11 wurde der Chip nicht erkannt. Wie bereits zur wilden Zeit von Windows XP muss man sich „irgendwo“ einen Treiber besorgen und diesen installieren. Ich bin auf die Software Zadig gestoßen, die mir für den USB-Stick einen allgemeinen Treiber installiert hat. Ich fand diese Aktion etwas shady, aber was soll ich sagen? – es hat funktioniert. Also, installiert den Treiber, falls der Stick nicht erkannt wird.
Mit der Software Zadig können USB-Treiber installiert werden. Bei meinem DAB-T-Stick war das notwendig. Hierzu wählt man im Dropdown-Menü den Eintrag aus und klickt auf „Install Driver“.
Schritt 1: Die Software SDRangel
Aus der großartigen Open Source-Community ist eine Software namens SDRangel hervorgegangen. Diese lässt sich unter Windows und Linux installieren und verwenden. Mit ihr kann man diesen Chip sehr ausführlich verwenden, denn sie stellt verschiedene Dekodierer zur Verfügung. Man kann auch Digitalradio dekodieren und viele anderen Dinge, mit denen ich mich nicht auskenne. Wer hier Lust hat, sich mal richtig nach Herzenslust auszutoben, dessen Herz wird höher schlagen!
Schritt 2: ADS-B empfangen mit SDRangel
Für den Empfang der Signale holt man sich zunächst einen Receiver Rx ins Programm. Oben auf das entsprechendes Symbol klicken und nach RTLSDR in der Liste suchen. Taucht dein Empfänger hier nicht auf? Dann nochmal unter Schritt 0 nachsehen, ob der Treiber installiert wurde.
Zum Hinzufügen eines Receivers wird der entsprechende Button angeklickt
Ist der richtige Receiver ausgewählt, kann jetzt der Empfang konfiguriert werden. Hierzu müssen folgende Werte eingestellt werden:
Frequenz: 1.090.000 Hz
Samplerate: 2.400.000 S/s
Verstärkung: automatisch (AGC)
In SDRangel müssen nach dem Hinzufürgen des Receivers verschiedene Einstellungen vorgenommen werden. Die Frequenz, Samplerate und Verstärkung (Gain) gehören dazu. Am Ende wird ein Demodulator hinzugefügt (Pfeil).
Über den kleinen Button, auf den der Pfeil im Screenshot zeigt, kann der Demodulator eingefügt werden. Es erscheint eine lange Liste, aus der man den richtigen Demodulator auswählen darf. Wir wählen ADS-B.
Um das Fenster noch ein bisschen aufzuräumen, können wir in der oberen Leiste noch die Ansicht anpassen. Für mich hat die Spaltenansicht ganz gut gepasst.
Es gibt vorgefertigte Ansichten, bei denen die Fenster angeordnet werden. Sie sind unterschiedlich gut geeignet, am Besten probiert es jeder einmal für sich aus, welche Ansicht am übersichtlichsten erscheint.
Die Vorbereitungen sind damit auch schon abgeschlossen. Durch klicken auf den Play-Button oben links können wir starten.
Schritt 3: Flugzeuge orten und Antennenposition varrieren
Mit etwas Glück sieht man jetzt schon die ersten Ergebnisse. Je nach Fluglage um euren Standort herum, füllt sich die Liste der Flugzeuge sofort oder nach ein paar Minuten. Die Fenster lassen sich nun natürlich noch ein bisschen verschieben und den persönlichen Wünschen anpassen. Über die kleinen Button oberhalb der Tabelle lässt sich das Verhalten auf der Karte steuern.
Sollte nach einiger Zeit weiterhin nichts kommen, obwohl auf einschlägigen Radarseiten zu sehen ist, dass Flugzeuge in unmittelbarer Nähe vorbeifliegen, muss noch etwas optimiert werden. Am häufigsten liegt es wohl an der Antenne bzw. deren Position. Verschiebt sie so gut es geht an ein Fenster, das freien Blick auf den Himmel hat. Die Antenne muss zwingend stehend (also vertikal ausgerichtet) sein, da die Signale polarisiert sind. Weiterhin kann man am Schwellwert (Threshold) oben rechts noch etwas verstellen.
Schritt 4: Was kann man sonst noch machen?
Es gibt Schnittstellen des Programms. Wer also Lust hat, seine gefundenen Flugzeuge an einen Dienst zu melden, hat hier die Möglichkeit dazu.
Außerdem gibt es eine ganz coole 3D-Ansicht. Oben in der Leiste müsst ihr dort auf „Add Feature“ klicken und die Map hinzufügen. Dort erhält man eine 2D-Karte von OpenStreetMap, und auch eine 3D-Karte, über die man auch die Höheninformation der Flugzeuge live verarbeitet sieht. Das ist ein richtig nices Feature!
1: zuerst muss das Feature „Map“ hinzugefügt werden. 2: Über die Einstellungen lassen sich die 3D-Daten herunterladen. 3: 3D-Daten müssen heruntergeladen werden.
Ausblick: Was kann man noch machen mit SDRangel?
Natürlich lassen sich jetzt noch viele weitere Signale empfangen und demodulieren. Ich habe beispielsweise Digitalradio empfangen. Hier muss man die Frequenz wieder anpassen und einen anderen Demodulator auswählen. Unter Preferences -> Configurations sind auch schon manche Dinge vorgefertigt. Für DAB gibt es bei mir beispielsweise schon eine fertige Ansicht. Man muss „nur noch“ in der rechten Spalte die „Channel“ durchgehen, und schon füllt sich die Liste der Programme.
In diesem Beitrag zeige ich dir Schritt für Schritt, wie du deinen Wasserverbrauch mit Home Assistant digitalisieren und automatisiert erfassen kannst. So hast du jederzeit den Überblick über deinen täglichen Wasserverbrauch, erkennst Lecks frühzeitig und kannst deinen Ressourcenverbrauch nachhaltig optimieren. Auch für diesen Zweck verwenden wir ein neues Tool. Es nennt sich AI on the Edge und ist – meiner Meinung nach – das mächtigste Tool in dieser Reihe. Es verwendet die ESP32-Cam und digitalisiert den Wasserzähler über Bilderkennung.
Die ESP32-CAM ist das Herzstück von diesem Projekt. Hierauf läuft die Software und die Datenverarbeitung.
Schritt 0: Die Einkaufsliste. Als Hardware benötigen wir den ESP32 mit Kamera. Diese gibt es oft als Paket zusammen und nennt sich dann ESP32-CAM. Mit ca. 10 Euro ist man am Start. Dann braucht ma neine Micro-SD-Karte mit max. 8 GB Speicher. Notfalls geht auch größer, man muss sie dann aber ggf. schrumpfen (siehe Schritt 2). Weiterhin benötigt man ein 5V-Netzteil, das vom Handy tut es hierbei auch schon.
Schritt 1: ESP32-CAM flashen. Das geht am über die Webconsole sehr einfach und schnell. Dazu den ESP mit USB-Kabel mit dem PC verbinden, mit Google Chrome oder Edge auf den Webseite der Konsole gehen und die Anweisung dort befolgen. Das ist gleich zu Beginn der kritische Punkt, da hier einiges nicht klappen kann.
Stolperstein 1: falscher COM-Port. Ich habe die Liste der verfügbaren COM-Ports beobachtet, während ich den ESP eingesteckt habe. COM11 kam neu hinzu –> das ist der richtige.
Stolperstein 2: Installation klappt nicht. Mögliche Ursachen, die bei mir auftragen: Falsches USB-Kabel. Ich hatte zuerst ein günstiges, das aber nur die Spannungsversorgung überträgt. Man braucht auch eines, das Daten Übertragen kann. Weitere Ursache für die nicht-funktionierende Installation: Der ESP ist schreibgeschützt. Entweder es gibt einen Button, den man während der Installation gedrückt halten muss, oder man muss GPIO 0 auf low ziehen. Glücklicherweise liegen GPIO 0 und GND direkt nebeneinander, sodass man einen Draht sehr einfach dagegen halten kann.
Schritt 2: Die SD-Karte vorbereiten. Dazu benötigt man eine SD-Karte mit max. 8 GB. Hatte ich nicht, darum habe ich – schweren Herzens – eine 64 GB Karte geopfert, und „geschrumpft“. Das geht unter Windows mit diskpart, bei Reddit gibt es eine gute Anleitung dafür. Auf die SD-Karte schiebt man nun die Daten aus Github und trägt in die wifi.ini seine Netzwerk-Zugangsdaten ein.
Schritt 3: Setup der Software. Was haben wir bisher? Firmware ist drauf, SD-Karte ist fertig und WLAN ist eingestellt. Wir können nun also auf die Weboberfläche zugreifen. Los gehts! Gib die IP-Adresse des Gerätes im Browser ein. (Schaut im Zweifel bei eurem Router nach, welche IP der ESP hat).
Der Setup ist sehr gut bebildert und erklärt. Es bleiben kaum Fragen offen. Und falls doch, gibt es einen Link zu weiteren Informationen.
Ein Setup begrüßt euch. Die Beschreibungen sind sehr ausführlich dort, darum beschränke ich mich auf ein paar Stichpunkte:
Anpassen von Fokus und Reflektionen. Hier sieht man live das Bild aus der Kamera. Stellt die Helligkeit des Lichts so ein, dass man alle Zahlen gut lesen kann. Den Fokus der Kamera kann man anpassen, muss vorher aber evtl. ein Stück Kleber von der Linse entfernen. Das geht leicht mit einem Teppichmesser. Anschließend kann man die Linse rein- oder rausschrauben und somit den Fuks anpassen.
Aufnahme eines Referenzfotos. Dieses Foto werden wir in den folgenden Schritten in seine Einzelteile zerlegen und die Software anlernen. Hier stellt sich heraus, ob das Bild geeignet ist. Dreht das Bild möglichst genau in die Horizontale, damit man alle Zahlen gut nebeneinander lesen kann. Das erleichtert später die Erkennung der Ziffern.
Definition von zwei Ausrichtungspunkten. Sie definieren sozusagen das Koordinatensystem.
ROI für Ziffern. Regions of Interest, so heißen die Bereiche, die später ausgelesen werden. Hier müssen also die Ziffern ausgewählt werden. Macht das sorgfältig!
ROI für analoge Zeiger. Wasseruhren haben häufig Analogzeiger. Falls man sie nicht hat, kann man diesen Schritt überspringen.
Zusätzliche Parameter, diese können später auch noch eingestellt werden.
Abschluss der Einrichtung. Dieser Schritt beendet das Setup und speichert die Werte.
Das Referenzbild muss gut ausgerichtet sein, damit die Ziffern gut erkannt werden.
Schritt 4: Überprüfen der Einstellung. Nach dem Reboot landet man automatisch auf der Überblickseite des Controllers. Dort sieht man sowohl ein Foto des Zählers, als auch die digitalisierten Werte daraus. Überprüft, ob die Werte stimmen. Bei mir wurde beispielsweise eine 9 als 4 erkannt. Anpassen der Helligkeit hat das Problem behoben. Eine kleine Reflektion auf der Schreibe war die Ursache.
Schritt 5: Einbindung in Home Assistant. Falls noch nicht geschehen, sollte man in der Konfiguration das MQTT-Protokoll aktivieren. Dort findet sich auch die Funktion „Homeassistant Discovery“. Tragt also die Zugangsdaten zum MQTT-Broker ein. Wählt außerdem aus, dass es sich um ein Watermeter handelt, mit einer Einheit die von Home Assistant unterstützt wird. Startet den ESP neu, ihr werdet dazu aufgefordert.
Im Webinterface von AI on the Edge stellt man die Home Assistant Discovery ein und wählt als „Meter Type“ das „Watermeter“ aus. Dadurch lässt sich der Wasserzähler im Home Assistant leicht ins Energie-Dashboard aufnehmen.
In Home Assistant wird die Wasseruhr nun unter „Einstellungen“, „Geräte & Dienste“ und „MQTT“ aufgelistet. Seht mal nach, ob die Werte korrekt ankommen. Falls ja, defenieren wir es noch als „Wasserzähler“: „Einstellungen„, „Dashboards„, „Energie„. Dort fügt man einen neuen Wasserzähler hinzu und wählt „value“ vom „watermeter„.
In Home Assistant den Wasserzähler ins Energiedashboard hinzufügen
Ein E-Mail-Umzug von einem Server auf einen anderen gehört zu den Aufgaben, die oft unterschätzt werden. Wer schon einmal versucht hat, ein E-Mail-Konto auf einen neuen Mailserver zu übertragen, kennt die typischen Probleme: unterschiedliche IMAP-Server, abweichende Login-Methoden, große Postfächer oder das Risiko, E-Mails doppelt oder gar nicht zu übertragen.
Für eine saubere und zuverlässige E-Mail-Migration gibt es jedoch ein bewährtes Open-Source-Tool: imapsync. Mit imapsync lassen sich komplette IMAP-Konten effizient und sicher von einem Server auf einen anderen synchronisieren – ohne Datenverlust und mit minimaler Ausfallzeit. Ob beim Providerwechsel, beim Umzug auf einen eigenen Mailserver oder beim Zusammenführen mehrerer Postfächer: imapsync bietet eine stabile und flexible Lösung für jede Art von Mailserver-Migration.
In diesem Artikel zeige ich Schritt für Schritt, wie imapsync funktioniert, welche Parameter in der Praxis wichtig sind und wie du deinen E-Mail-Umzug stressfrei und automatisiert durchführen kannst.
Die Open Source Software Imapsync vorgestellt
So einem Umzug von einem E-Mail-Server zu einem anderen mit einem Terminal-Programm zu machen, klingt etwas verrückt. In Wirklichkeit ist das aber eine große Stärke, da imapsync während der Übertragung bereits wertvolle Statusmeldungen ausgibt und man die Statistik im Blick behält.
Theoretisch lässt sich das Programm via Eingabe verschiedener Flags bedienen. Für mich hat sich aber bewährt, dass man es mit einem einfachen Skript ausführt. In aller Regel zieht man ja kein einzelnes Postfach um, sondern mehrere E-Mail-Konten. Motivation könnte zum Beispiel eine Änderung der Domain oder der Wechsel des Hosters sein. Aber selbst bei Einzelkonten empfehle ich die Benutzung des Skripts, weil sich hier die Zugangsdaten übersichtlich verwalten lassen.
Was imapsync jetzt macht, ist ziemlich straight-forward: Es meldet sich auf dem ersten Host („alter Server“) an, checkt erstmal die Ordnerstruktur, zählt die E-Mails und verschafft sich so einen Überblick. Hat man bereits die Zugangsdaten für den zweiten Host („neuer Server“), tut er das gleiche dort. Danach überträgt die Software die E-Mails von Host 1 auf Host 2. Bereits übertragene Mails werden dabei berücksichtigt. Man kann den Umzug also mehrfach starten, es werden nur die noch nicht übertragenen Mails berücksichtigt.
Die Webseite von imapsync ist auf den ersten Blick etwas ungewöhnlich, worauf der Entwickler auch stolz ist. Wenn man aber genauer hinsieht, merkt man die gute Dokumentation. Es werden auch Spezialfälle wie Office 365 von Microsoft oder Gmail behandelt.
Die Statistik von imapsync gibt bereits einen guten Überblick, wie gut der Umzug geklappt hat
Installation von imapsync
Die Software gibt es für Windows, Mac und Linux. Die Installation unter Ubuntu ist für geübte Benutzer recht einfach, auch wenn die Software nicht in den Paketquellen vorkommt. Github sei Dank.
Die Installation ist nun fertig und systemweit verfügbar.
E-Mail-Postfach von einem Server zum anderen umziehen
Für den Umzug von einem Server zum anderen braucht man – wenig überraschend – jeweils die Zugangsdaten. Diese beinhalten IMAP-Server, Benutzername und Passwort. Das wars. Es empfiehlt sich, mit einem echten Host 1 zu starten, als Host 2 aber erstmal einen Testaccount zu verwenden.
Ich orientiere mich an den Empfehlungen des Programmierers und erstelle zunächst eine Datei mit den jeweiligen Zugangsdaten. Genau wie im Beispielskript verwende ich eine siebte, unnötige Spalte. Sie endet die Zeilen ordentlich ab, ohne dass man ein Problem mit den Zeilenumbruch zu erwarten hat.
Wir nennen die Datei file.txt. Jeweils die Einträge 1 bis 3 sind die Quelle, Spalten 4 bis 6 sind das Ziel.
Spätestens seitdem Neobroker mit hohem Werbebudget den Markt auffrischen, ist für viele Menschen das Thema Geldanlage präsent geworden. Noch vor ein paar Jahren war der Erwerb von Wertpapieren mit solchen großen Hürden verbunden, dass sich viele Menschen nicht auf den Kapitalmarkt trauten. Inzwischen ist es auch für nicht-Finanzgurus wie mich möglich, sich unkompliziert Aktien und andere Anlageformen zuzulegen. Die Apps der Banken und Broker sind inzwischen recht benutzerfreundlich, was die Hürde weiter senkt. Wenn man sich der Sache wieder etwas ernster annähern möchte, kommt man mit den Apps aber schnell an seine Grenzen. Um besser den Überblick über meine Finanzen zu behalten, habe ich mich auf die Suche nach einer Software gemacht, die mich dabei unterstützt. Und ich bin in der Open Source Community fündig geworden.
Meine Fragestellung war folgende: Wie diversifiziert ist mein Portfolio eigentlich? In welchen Regionen und Branchen bin ich wie stark präsent? Welches sind meine Top-Firmen? Wie teilt sich mein Vermögen auf Aktien, ETFs und Cash auf? Wie stark bin ich in Small-Caps investiert? Wann und bei welchen Kurswerten habe ich gekauft und verkauft? Wie viele Dividenden habe ich inzwischen erhalten, usw.? Bisher habe ich das mit Excel lösen können. Die Fact-Sheets der ETF sind im Netz zu finden, dort sind die Verteilungen auf Regionen, Branchen usw. nachzulesen. Mit viel Tipparbeit holt man sich die aktuellen Verteilungen in die Datei, gewichtet sie nach aktuellem Wert im Portfolio und lässt es sich als Diagramm anzeigen. Aber: Das ist sehr aufwendig.
Portfolio Performance: Das mächtige Open Source Finanztool
Portfolio Performance ist hier einfacher. Nach der Installation kann man die PDF-Dateien seiner Bank und Broker importieren. Einfach den Kontoauszug und die Kauf- bzw. Verkaufsnachweise, Dividendenausschüttungen usw. in das Programm laden, und schon hat man den perfekten Überblick. Das Programm läuft lokal, was die Frage nach Datensicherheit vollkommen entschärft. Niemand hat Zugriff darauf, niemand kann sich die Daten ansehen. Meine Daten bleiben bei mir.
Neben dem PDF-Import der Bankdaten gibt es noch etliche weitere Importmöglichkeiten. Am gängigsten ist vermutlich das CSV-Format, das sich über einen tollen Assistenten gut importieren lässt.
Historische Kursdaten sind erstmal nicht vorhanden. Man kann sie sich über mehrere Wege ins Programm holen. Für mich am einfachsten ist der Weg über die Datenbank von Portfolio Performance selbst. Dort muss man ein kostenloses Benutzerkonto anlegen, dann kann man auf die historischen Daten dort zugreifen. Etliche andere Finanzportale sind ebenfalls kompatibel. Am Ende geht hier auch wieder CSV.
ETF- und Portfolio-Diversifikation anzeigen lassen
Über die Diagramme „Berichte → Vermögensaufstellung“ kann man sich anzeigen lassen, über welche Anlageklassen man zu welchen Teilen verfügt. Eine der Hauptfragen meinerseits war jedoch: Wie sieht es mit meiner ETF-Diversifikation aus?. Das geht derzeit noch nicht nativ in Portfolio Performance. Hierfür braucht man einen Drittanbieter.
Glücklicherweise gibt es findige Leute in der sehr aktiven Community, die sich die gleichen Fragen gestellt haben und eine Lösung zur Verfügung stellen. Über ein Skript des Users Alfonso1Qto12 kann man sich beispielsweise die Zusammensetzung der ETF über die Morningstar-API direkt in sein Portfolio Performance schreiben lassen.
Hinweis: Dieses Skript ist nach Aussage des Entwicklers experimentell und sollte nur mit einer Kopie der echten Daten benutzt werden! Stand September 2025 muss man den alternativen Branch wechseln, weil main noch auf eine alte API zugreift.
Über die Flag top_holdings 50 lasse ich mir aus den ETF die 50 wertvollsten Firmen ausgeben. Empfohlen wird, auf weniger als 100 Firmen zu gehen, um die Performance des Programms nicht zu gefährden.
Mit diesem Skript werden die Wertpapiere ihren Ländern, Regionen, Holdings usw. anteilsweise zugeordnet. Diese Daten werden direkt in die XML-Datei geschrieben und lassen sich anschließend in Portfolio Performance unter den „Klassifizierungen“ betrachten. Es gibt verschiedene Visualisierungsarten, am übersichtlichsten finde ich die Tabelle, das Kreis- und das Flächendiagramm.
Weitere Schritte und Lehren aus den Daten
Mit Portfolio Performance erhält man eine tolle Übersicht über seine Finanzen. Wie der Name schon verrät, kann man sich hier tolle Dashboards bauen, um die Performance im eigenen Portfolio zu überwachen. Alle gängigen Kriterien sind vorhanden und können in Dashboards oder vielfältige Diagramme eingebaut und visualisiert werden.
Die Daten lassen ein Rebalancing zu, dafür gibt es eigens eingebaute Funktionen. Über eine Smartphone-App lassen sich die Daten sogar auf dem Handy anzeigen. Die Synchronisation muss hier über Cloudanbieter durchgeführt werden, also zum Beispiel über die Nextcloud oder Dropbox. Daten einpflegen lassen sich übers Smartphone allerdings nicht.
Zusammengefasst: Wer eine sehr mächtige Open Source Software sucht, mit der man
sein Portfolio im Blick behalten kann,
das Daten aus vielen Quellen (inkl. PDFs von Banken und Brokern) verarbeiten kann,
Das 3D-Programm Blender hat so viele Optionen, daß ein einziger Artikel dem unmöglich gerecht werden kann. Hier versuche ich, zumindest einen ersten Einstieg zu vermitteln.
In diesem Text dokumentiere ich, wie ein Tang-Server auf Debian installiert werden kann und wie man den Zugriff auf diesen auf eine bestimmte IP-Adresse einschränkt.
Installiert wird der Tang-Server mit folgendem Befehl:
sudo apt install tang
Standardmäßig lauscht der Tang-Server auf Port 80. Da dieser Port auf meinem Server bereits belegt ist, erstelle ich mit dem Befehl sudo systemctl edit tangd.socket eine Override-Datei mit folgendem Inhalt:
Ich möchte den Zugriff auf den Tang-Server auf eine IP-Adresse beschränken, nämlich auf die IP-Adresse des einen Clevis-Clients, der diesen Server verwenden wird. Dazu führe ich die folgenden Schritte durch.
:~# iptables -A INPUT -p tcp -s 203.0.113.1 --dport 7500 -j ACCEPT
:~# iptables -A INPUT -p tcp --dport 7500 -j DROP
:~# mkdir /etc/iptables
:~# iptables-save >/etc/iptables/rules.v4
Damit die in der Datei /etc/iptables/rules.v4 gespeicherten Regeln nach einem Neustart wieder geladen werden, erstelle ich ein Systemd-Service:
Um zu überprüfen, ob der Tang-Server wie gewünscht arbeitet, setze ich auf meinem Clevis-Client den folgenden Befehl ab. Dabei muss nach der Ver- und Entschlüsselung der gleiche Text ‚test‘ ausgegeben werden.
~]$ echo test | clevis encrypt tang '{"url":"tang1.example.com:7500"}' -y | clevis decrypt
test
Dieser Beitrag stammt ursprünglich aus dem Jahr 2014, wurde 2025 aber nochmal grundsätzlich überarbeitet, vor allem der Imagemagick- und ffmpeg-Abschnitt.
Ich finde, dass es kaum schönere Videos von Landschaften oder Städten gibt als Zeitrafferaufnahmen. Diese haben meistens eine Dynamik, die das gewisse Extra ausmachen.
Jetzt habe ich bei eine recht gute Kamera herumliegen (Canon EOS 550D), die sehr gute Fotos macht. Jetzt hat sich mir die Frage gestellt: Kann man die Kamera in einstellbaren Intervallen auslösen lassen, sodass sie für mich die Zeitraffer-Fotos erstellt? Man kann!
Die Kamera zeitgesteuert auslösen
Leider gibt es für die Canon EOS 550D keine interne Funktion, mit der man massenhaft Bildern in voreingestellten Intervallen machen kann.
Möglicher Aufbau für Zeitrafferaufnahmen mit einer DSLR und Laptop
Externe Hardware
Es gibt aber kommerzielle Systeme, mit denen das geht. Diese kosten etwa 25 Euro. Irgendwann versuche ich mal, mir selbst so ein Teil zu basteln, aber das wird dann ein eigener Artikel hier im Blog
Gphoto2
Die Mühen und das Geld kann man sich aber sparen, wenn man einen Laptop zur Verfügung hat, auf dem z.B. Ubuntu läuft. Denn mit einem kleinen Helferlein kann man diese Aufgabe auch über den PC steuern!
Das Paket nennt sich Gphoto2 und lässt sich in den meisten Distributionen sehr leicht installieren.
sudo apt-get install gphoto2
Nach der Installation kann man seine Kamera über USB anschließen. Vermutlich wird sie automatisch eingehängt, das umgeht man, indem man die Kamera auf PTP stellt oder sie einfach wieder aushängt. Das geht zum Beispiel in Nautilus, indem ihr den Escape-Button anklickt.
Kamera aushängen über Nautilus
Jetzt kann man überprüfen, ob gphoto2 mit der Kamera zusammenarbeitet. Das macht man mit dem folgenden Befehl, der die Typenbezeichnung der angeschlossenen Kamera ausgeben sollte (siehe meine Ausgabe).
$ gphoto2 --auto-detect
Modell Port
----------------------------------------------------------
Canon EOS 550D usb:002,003
Jetzt kann es losgehen. Die Kamera hatte ich im M-Modus (manuell) und habe folgendes manuell eingestellt:
ISO,
Blende,
Verschlusszeit,
Weißabgleich und
Fokus
Ist man im Halbautomatik-Modus (Av oder Tv) können sich die Bilder in der Helligkeit unterscheiden. Den Autofokus kann man am Anfang verwenden, sollte ihn dann aber abschalten. Das sieht auf dem Video sonst nicht schön aus!
Mit dem folgenden Befehl werden die Bilder für das Zeitraffer aufgenommen.
gphoto2 --capture-image-and-download -I 5 -F 600
Die Einstellungen:
–capture-image-and-download → Die Bilder werden geschossen und sofort auf den Computer geladen. Auf der Speicherkarte sind die Bilder nicht mehr! Alternative: –capture-image → Die Bilder werden auf der Speicherkarte abgelegt.
-I 5 → Das Intervall der Aufnahmen beträgt 5 Sekunden
-F 600 → Es werden 600 Aufnahmen gemacht.
Wer noch mehr einstellen möchte, kann sich über den folgenden Befehl all seine Einstellmöglichkeiten auflisten lassen:
gphoto2 --list-config
Aus einer Bilderserie ein Timelapse-Video machen
Der schwierigste Schritt ist gemacht. Den Rest übernimmt für uns mal wieder Imagemagick, das Bildverarbeitungsprogramm aus der Konsole. Das Herrliche daran: mit wenigen Zeilen kann man mit einem Rutsch alle seine Bilder bearbeiten lassen.
Bilder auf Full-HD Auflösung bringen
Da die Kamera die Bilder in einer sehr hohen Auflösung aufnimmt, muss man diese auf Videogröße skalieren.
Wenn man sich mit dem Terminal im Ordner der Bilder befindet, verkleinert man sie mit dem folgenden Einzeiler auf die Auflösung 1920×1280 (das Bildverhältnis zwingt uns zunächst dazu).
x=1; for i in *.jpg; do convert $i -resize 1920x1280 -shave 0x100 `printf "%05d.jpg" $x`; x=$(($x+1)); done
mit -shave schneiden wir oben und unten jeweils 100 Pixel ab, um auf die finale Auflösung von 1920×1080 Pixel (Full-HD) zu gelangen.
Weiteres Beispiel: Bilder zurechtschneiden und drehen (crop und rotate)
Die Bilderserie wurde mit einer Gopro aufgezeichnet. Der Bildausschnitt muss noch zurechtgeschnitten werden und um 90 ° gedreht werden. Das kann man mit folgendem Befehl durchführen.
$ x=1; for i in *.jpg; do convert $i -crop 3380x1900+300+730 +repage -rotate 90 `printf "%05d.jpg" $x`; x=$(($x+1)); done
Die Geometrie-Angaben für imagemagick Breite x Höhe geben die Größe des fertigen Bildes an. Der Offset x und y wird von der oberen linken Ecke gemessen. Ich habe sie mittels Bildbearbeitungssoftware herausgemessen. Mit +repage stellt man sicher, dass Leinwand und Bild richtig zueinander ausgerichtet sind. Am Ende rotiert die Flagge -rotate das Bild um 90° im Uhrzeigersinn.
Einzelbilder zu Video konvertieren
Mit diesem letzten Befehl verbindet man nun alle Einzelbilder zu einem Video. Ich habe hier eine Framerate von 25 fps (Frames per second) gewählt. Man kann auch weniger nehmen, dann dauert das Video etwas länger, ruckelt allerdings.
Zu beachten ist der Punkt -i 0%04d.jpg . Die Dateien müssen z.B. 00001.jpg genannt sein, das haben wir oben mit imagemagick sichergestellt. Mit der genannten Flagge teile ich das ffmpeg mit, dass eine vierstellige Dezimalzahl in den Dateinamen vorkommt, nach der es die Bilder aneinandersetzen soll.
-profile:v high -level 4.0: das stellt die Kompatibilität zu Handys (z.B. mit Android) sicher
-movflags +faststart: Stellt den Metatag „moov“ an den Beginn der Datei, sodass das Video schon starten kann, bevor es vollständig geladen ist. Das ist wichtig für Handykompatibilität
-pix_fmt yuv420p: Das ist das am weitesten verbreitete Pixelformat.
optional: -vf scale=1280:720 für eine niedrigere Auflösung
optional: -b:v 2M für eine niedrigere Bitrate
Einstellungen für 4K-Videos
4K-Videos haben eine Auflösung von 3840×2160 Pixeln und sind nur auf wenigen Geräten in voller Größe abspielbar.
Tipps und Tricks
Zeitraffer planen
Bevor ihr ein Zeitraffer aufnehmt, solltet ihr es planen. Es ist wichtig zu wissen, wie lange das fertige Video dauern wird und wie schnell sich die Objekte darauf bewegen sollen.
Für ein 30-Sekunden-Video sind 30×25= 750 Fotos notwendig. Wenn in diesen 30 Sekunden ein Zeitraum von 60 Minuten abgebildet werden soll, muss man das Intervall auf 4,8 ~ 5 Sekunden stellen.
Spiegelreflex-Kameras vermeiden
Wer professionell oder zumindest häufiger Zeitraffer aufnehmen möchte, sollte sich eine Alternative zu einer Spiegelreflex-Kamera überlegen. Meine Kamera ist laut (dubioser) Foren im Internet auf 50.000 Bilder ausgelegt, danach beginnen die Probleme. Die Kamera hat also starken Wertverlust durch die Zeitraffer, da hier in kurzer Zeit viele Bilder gemacht werden.
Anzahl der Auslösungen der Kamera anzeigen
Die Anzahl der Auslösungen der Kamera kann man ebenfalls mit gphoto2 auslesen. Man startet es im Terminal in einer ncurses-Umgebung und navigiert durch das Menü: Statusinformationen → Auslösezahl
Mit einer cleveren Kombination aus Syncthing und WebDAV auf einem Raspberry Pi synchronisieren wir unsere KeePass-Datenbanken plattformübergreifend und zuverlässig – ohne Abhängigkeit von klassischen Cloud-Diensten.
Bekanntermaßen sind SSH-Verbindungen weitestgehend das Standardverfahren, um Serververbindungen sicher aufzubauen.
Normalerweise kommt in Bezug auf Authentifizierung eine Kombination aus Nutzernamen und Passwort zum Einsatz. Es gibt aber auch Varianten mit Zertifikat oder Schlüssel.
Letzteres sollte nicht nur Standard, sondern heute auch Thema sein. Üblicherweise erhältst du via SSH Vollzugriff (oke vielleicht kein root), es besteht allerdings die Möglichkeit diesen per authorized keyszu regulieren, so kannst du in einem SSH Schlüssel etwa eine IP-Beschränkung hinterlegen, um einen Zugriff weiter einzuschränken.
SSH AuthorizedKeysFile Format
In einem Standardsetup findest du vorhandene Schlüssel unter ~/.ssh/authorized_keys und genau hier möchte ich heute einen genaueren Blick darauf werfen.
Dort liegen die öffentlichen SSH-Schlüssel, die einen bestimmten Aufbau haben, dazu gleich mehr. Auch wird zwischen Version 1 und Version 2 unterschieden, wobei zwei der Standard sein sollte.
Ältere Semester kennen eventuell noch ~/.ssh/authorized_keys2, was ursprünglich für den zweiten Protokolltyp vorgesehen war, allerdings seit 2001 deprecated ist und heute maximal noch von böswilligen Akteuren missbraucht wird.
Zurück zu den Schlüsseln, folgende Aufteilung besitzen diese laut Norm:
Öffentliche Schlüssel des Protokolls 1 bestehen aus den folgenden durch Leerzeichen getrennten Feldern: Optionen, Bits, Exponent, Modulus, Kommentar.
Das Optionsfeld ist optional. Sein Vorhandensein wird dadurch bestimmt, ob die Zeile mit einer Zahl beginnt oder nicht (das Optionsfeld beginnt nie mit einer Zahl).
Die Optionen (falls vorhanden) bestehen aus durch Kommata getrennten Optionsangaben.
Im Detail ermöglichen sie, verschiedene Werte mitzugeben und anderen eine IP-Einschränkung.
Der Nutzer hat hier nur das Recht, das vorgegebene Kommando auszuführen, nicht mehr und nicht weniger
Kontrollieren kannst du solche Kommandos mit der Variable $SSH_ORIGINAL_COMMAND. Diese enthält die ursprüngliche Befehlszeile
sobald ein erzwungener Befehl ausgeführt wird.
Wenn du mehrere Befehle erlauben willst, kommst du nicht drumherum, ein Script zu schreiben, was diese Beschränkungen mehr oder weniger aushebelt.
Ein weiteres Beispiel zeigt die Verwendungen der Kommandos für SSH Tunneling bzw. Port Forwarding:
Hier wird explizit erlaubt, eine Verbindung auf Port 8765 herzustellen und alles andere bitte bleiben zu lassen. Auch echter Shell-Zugang (no-pty ist in restrict enthalten) wird unterbunden.
restrict
Enable all restrictions, i.e. disable port, agent and X11 forwarding, as well as disabling PTY allocation and execution of ~/.ssh/rc. If any future restriction capabilities are added to authorized_keys files they will be included in this set.
Du hast nun einen kleinen Einblick in die vielfältigen Konfigurationsmöglichkeiten von SSH-Schlüsseln erhalten. Gerade IP-Beschränkungen oder Limitierung auf Befehle kommen im Alltag vor und sind in diesem Sinne keine neue Methode.
SSH Tunneling ist eigentlich schon wieder ein anderes Kapitel.
Einen Überblick der SSH Befehle findest du bei den Ubuntu Manpages. Viel Spaß.
Mit einer cleveren Kombination aus Syncthing und WebDAV auf einem Raspberry Pi synchronisieren wir unsere KeePass-Datenbanken plattformübergreifend und zuverlässig – ohne Abhängigkeit von klassischen Cloud-Diensten.
Neben der Online-Version im Single- und Multi-Page-Format kann man die einzelnen Texte auch als PDF herunterladen. Dies manuell zu tun, ist allerdings mühselig. Deutlich leichter geht es mit dem PDF Document Downloader von Kazuo Moriwaka. Es handelt sich dabei um ein Bash-Skript, bestehend aus awk, curl, grep, und parallel, welches als Argument die Basis-URL für eine Produktkategorie übernimmt und anschließend alle PDF-Dateien ermittelt und herunterlädt.
Klingt gut? So bekommt ihr das Skript:
Ladet euch die aktuelle Version als Zip-Datei aus dem Gist herunter
Entpackt das Zip-Archiv in ein Verzeichnis eurer Wahl, z.B. nach ~/bin/
Macht das Skript ausführbar: chmod u+x ~/bin/fetchdoc.sh
Folgender Code-Block zeigt einige Beispiele, mit denen ich mir einen Teil der Dokumentation auf mein Laptop gezogen habe:
Der Raspberry Pi hat sich in den letzten Jahren von einem kleinen Minicomputer für Bastler und Nerds zu einem vollwertigen und verhältnismäßig leistungsfähigem Rechner entwickelt. Nicht wenige Anwender freuen sich darüber, für wenig Geld einen vollwertigen Miniserver zu bekommen.
Beim Einsatz des Raspberry Pi für den produktiven Einsatz als Server ist zu beachten, dass auch die angeschlossene Hardware hierfür geeignet sein sollte. Ein Gehäuse, bei dem er Pi überhitzt, ist genau so schädlich wie eine SD-Karte als Festplatte, da diese nicht für den Dauerbetrieb geeignet ist.
Durch den Einsatz rund um die Uhr gibt es sehr viele Schreib- und Lesevorgänge auf der SD-Karte. Hierfür sind diese Karten aber nur bedingt geeignet. Bei den ersten Raspberry Pi Generationen hatte ich sehr häufig Datenverlust, weil die SD-Karte den Geist aufgegeben hat.
Inzwischen läuft auf dem Pi bei mir eine Instanz von Home Assistant. Hier werden rund um die Uhr Daten aufgezeichnet und Automationen ausgeführt. Auch andere Dienste laufen hier, von denen ich keinen Ausfall erleiden möchte.
Außerdem sind die Lese- und Schreibgeschwindigkeiten einer SD-Karte sehr limitiert. Eine moderne SSD ist um ein Vielfaches schneller. Das wird vor allem dann deutlich, wenn man in Home Assistant Datenmengen abfragt, z.B. Diagramme anzeigt. Ladezeiten von mehreren Sekunden sind dann keine Seltenheit.
Die Konsequenz daraus ist, dass ich den Raspberry von einer SD-Karte auf eine SSD-Karte umziehen möchte. Dadurch, dass hier ein Produktivsystem läuft, möchte ich alle Installationen, Daten und Einstellungen möglichst verlustfrei auf das neue Medium umziehen. Wie ich das gemacht habe, erfahrt hier in folgendem Tutorial.
Schritt 0: Geschwindigkeit testen (optional)
Um einen Geschwindigkeitsvorteil in messbare Größen zu fassen, kann man als Referenz einen Geschwindigkeitstest der SD-Karte machen. Mit dem folgenden Befehl werden Beispieldateien geschrieben. Der Befehl gibt aus, wie schnell die Geschwindigkeit dabei war.
$ dd if=/dev/zero of=/tmp/speedtest1.img bs=20MB count=5
5+0 records in
5+0 records out
100000000 bytes (100MB, 95 MiB) copied, 11.9403 s, 8.4 MB/s
Wenn der Umzug fertig ist, kann man diesen Test wiederholen. Bei mir kam ich von ca. 8,4 MB/s Schreibgeschwindigkeit auf 168 MB/s. Das hat sich mal gelohnt!
Schritt 1: SSD erstmals anschließen
In meinem Fall handelt es sich um eine externe SSD, die über USB 3.0 angeschlossen wird. Nachdem ich sie angesteckt habe, prüfe ich ob sie rechtmäßig erkannt wird, indem ich den folgenden Befehl eingebe und in der Ausgabe nach der SSD suche.
$ lsblk
Schritt 2: Installation von RPi-clone
Auf Github gibt es ein kleines Projekt, das viele Funktionen beinhaltet. Das Programm kopiert den Inhalt der SD-Karte auf die SSD, sodass von ihr gebootet werden kann und alle Einstellungen vorhanden sind.
Schritt 3: Services stoppen und Kopiervorgang starten
Am besten ist es, wenn kein Service mehr läuft und der Kopiervorgang ungestört durchlaufen kann. Daher erst prüfen, was alles läuft, danach einzeln beenden
Aus dem Check von Schritt 1 kennen wir bereits die Bezeichnung der Festplatte. Auf diese müssen wir nun verweisen mit dem Befehl:
$ rpi-clone sda
Der Wizard hält zunächst an und berichtet uns über den Zustand des Systems. Wenn alles korrekt ist, kann der Vorgang mit der Eingabe von „yes“ gestartet werden.
Schritt 5: Raspberry Pi herunterfahren und von SSD booten
Nach Ende des Kopiervorgangs fährt man den Raspberry Pi herunter.
$ sudo shutdown now
Anschließend von der Stromversorgung trennen, die SD-Karte entfernen, und die Spannungsversorgung wieder herstellen. Jetzt bootet der Raspberry von SSD und ist sehr viel schneller.
Ein MQTT-Broker ist die Schnittstelle zwischen vielen IoT-Sensoren und Geräten, die Sensordaten auswerten oder Aktoren steuern. Das MQTT-Protokoll ist offen und sehr weit verbreitet. Es findet in der Industrie Anwendungen, ist aber auch in Smart Homes ist MQTT weit verbreitet. MQTT ist ein sehr schlankes und schnelles Protokoll. Es wird in Anwendungen mit niedriger Bandbreite gerne angewendet.
MQTT funktioniert, grob gesagt, folgendermaßen: IoT-Geräte können Nachrichten versenden, die von anderen IoT-Geräten empfangen werden. Die Vermittlungsstelle ist ein sogenannter MQTT-Broker. Dieser empfängt die Nachrichten von den Clients. Gleichzeitig können diese Nachrichten von anderen Clients abonniert werden. Die Nachrichten werden in sog. Topics eingestuft, die hierarchisch angeordnet sind, z.B. Wohnzimmer/Klima/Luftfeuchtigkeit.
Home Assistant, oder ein anderer Client, kann diesen Topic abonnieren und den Nachrichteninhalt („Payload„) auswerten (z.B. 65%).
Home Assistant OS vs. Home Assistant Container
In Home Assistant OS und Supervisor gibt es ein Addon, das einen MQTT-Broker installiert. Das ist sehr einfach, komfortabel und funktioniert wohl recht zurverlässig. In den Installationsarten Home Assistant Container und Core gibt es diese Möglichkeit nicht. Hier muss man manuell einen MQTT-Broker aufsetzen.
In diesem Artikel beschäftige ich mich damit, wie man den MQTT-Brocker Mosquitto über Docker installiert. Anschließend zeige ich, wie man die Konfigurationsdatei gestaltet und eine Verbindung zu Home Assistant herstellt. Das Ergebnis ist dann ungefähr so, als hätte man das Addon installiert. Los gehts!
Schritt für Schritt: MQTT-Broker Mosquitto mit Docker installieren
Als MQTT-Broker verwende ich die weit verbreitete Software Mosquitto von Eclipse. Dieser wird auch von Home Assistant bevorzugt und ist derjenige Broker, den das Addon installieren würde. Für diese Anleitung wird vorausgesetzt, dass Docker bereits installiert ist und eine SSH-Verbindung zum Server hergestellt werden kann.
Schritt 1: Zunächst erstellen wir ein paar Ordner, die wir später benötigen. Mosquitto wird später so konfiguriert, dass in diese Ordner alle wichtigen Dateien abgelegt werden. Dadurch kann man auf dem Filesystem des Servers Mosquitto konfigurieren und beobachten.
-p 1883:1883 Der genannte Port ist die Standardeinstellung für MQTT. Alles was auf diesen Port am Server ankommt, wird in den Mosquitto-Container geleitet.
-p 9001:9001 Über diesen Port laufen die Websocket-Anwendungen. Falls das nicht benötigt wird, kann man das weg lassen
name mosquitto Über diesen kurzen Namen können wir den Docker-Container steuern
-v <filesystem-Pfad>:<Container-Pfad> Die in Schritt 1 erstellten Ordner werden in den Container eingebunden
Wer lieber Docker Compose verwendet, trägt diesen Eintrag in seine *.yaml ein:
Schritt 5: Checken, ob der Container ordnungsgemäß läuft. In der folgenden Liste sollte eine Zeile mit dem Mosquitto-Docker auftauchen. Dieser sollte außerdem „up“ sein. Falls nicht, nochmal versuchen den Container zu starten und kontrollieren, ob er läuft.
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
xxxxxxxxx eclipse-mosquitto "/init" 3 minutes ago Up 2 minutes [...] mosquitto
Schritt 6: Sehr gut, der Container läuft. Es wird dringend empfohlen, den MQTT-Broker so abzusichern, dass nur angemeldete User darauf zugreifen können. Das ist ja schon in Schritt 2 in die Konfigurationsdatei geschrieben worden. Mit dem folgenden Befehl melden wir uns in der Shell innerhalb des Containers an und erstellen einen Benutzer. In diesem Beispiel mosquitto. Im Anschluss an diesen Befehl wird man zweimal gebeten, das Passwort für den User festzulegen. Ist das geschafft, läuft der MQTT-Broker auf dem Server. Herzlichen Glückwunsch!
$ docker exec -it mosquitto sh // öffnet die Shell innerhalb des Dockers mosquitto_passwd -c /mosquitto/config/mosquitto.passwd mosquitto
Optional Schritt 7: Den MQTT-Broker bindet man in Home Assistant ein, indem man auf Einstellungen → Geräte und Dienste → + Integration hinzufügen klickt. Im Suchfenster nach „MQTT“ suchen und die Zugangsdaten eingeben. Die Server-Adresse findet man übrigens am schnellsten über ifconfig heraus.
Für unser Smart Home möchten wir den aktuellen Stromverbrauch aufzeichnen. Dafür bietet sich, wie auch in meinem Artikel über die Digitalisierung des Gaszählers, Home Assistant an. In dieser mächtigen Software lassen sich Automatisierungen für das Haus erstellen, aber auch Sensoren einlesen und protokollieren. Das möchten wir mit unserem digitalen Stromzähler machen. Was wir zusätzlich noch benötigen, ist ein ESP8266, sozusagen die Home Assistant Außenstelle, die die Daten an die Zentrale weitergibt. Also, legen wir los!
Hardware: ESP8266 und TCRT5000 zum Auslesen des Stromzählers
Die Hardware lässt sich sehr günstig im Internet erwerben. Zwingend erforderlich sind folgende Bauteile:
ESP8266 oder ESP32, ich verwende gerne den Wemos D1 Mini
TCRT5000, ein Infrarotdiode zum Auslesen des Gaszählers
Litzen oder Jumperkabel
Nicht zwingend erforderlich, aber für den dauerhaften Einsatz gut geeignet sind folgende Bauteile
Lochrasterplatine
Schraubbare Pins um die Kabel zum TCRT5000 mit dem Wemos zu verbinden
Female Pins zum Auflösten auf eine Lochrasterplatine und zum Stecken auf die Pins
Den TCRT5000 muss man vorher noch präparieren. Man erkennt ja, dass dort zwei Dioden verbaut sind, eine helle und eine dunkle. Die hellere sendet ein IR-Licht aus, das die zweite Diode wieder lesen soll. Das kann beispielsweise für eine Lichtschranke verwendet werden. In unserem Fall stört die helle Diode, daher müssen wir sie entfernen. Entweder löten wir die ganze Diode aus, oder wir entfernen den Vorwiderstand. Zweiteres geht deutlich schneller. Dazu einfach den Lötkolben an den SMD-Widerstand halten, dann kann man ihn etwas verschieben.
TCRT5000 Bauteile erklärt: Die Output-LED wird wichtig, wenn man die Empfindlichkeit des Sensors mit dem Potentiometer einstellt
Die Verdrahtung findet nach folgendem Schaltplan statt. Wir verwenden keinen Pullup-Widerstand, da dieser bereits auf dem TCRT5000 vorhanden ist. Es wird die Spannungsversorgung über VCC und GND hergestellt und der D0-Pin des TRCT5000 wird mit D2 (GPIO4) des Wemos D1 Minis verbunden.
Schaltplan um den ESP8266 Wemos D1 Mini mit dem TCRT5000 zu verbinden.
Installation am Stromzähler
Die digitalen Stromzähler, hier im Beispiel von EMH, haben fast immer eine Schnittstelle für den Kunden. Manchmal muss man sie von seinem Netzbetreiber freischalten lassen. In meinem Fall war sie glücklicherweise ohne Freischaltung verfügbar.
In der Regel ist dort eine blinkende LED verbaut. Das Blinklicht ist allerdings im Infrarotbereich, für das menschliche Auge also nicht sichtbar. Mit manchen Handy- oder Digitalkameras kann man es aber sichtbar machen, wenn deren Sensoren noch keinen IR-Filter verbaut haben.
Ich habe mir also aus etwas Schaumstoff und Klebeband einen kleinen Halter gebaut. Den Lesekopf des TCRT5000 habe ich dann unmittelbar vor der blinkenden Diode des Stromzählers platziert. Das Potentiometer des TCRT5000 habe ich mit einem kleinen Schraubendreher so lange verdreht, bis die Output-LED gleichmäßig geblinkt hat.
Am Stromzähler sieht man oben eine LED als Kundenschnittstelle. Darüber wird die lesende Diode des TCRT5000 positioniert. Am Poti wird dann so lange die Empfindlichkeit verstellt, bis die Output-LED des TCRT5000 regelmäßig blinkt.
ESPHome installieren und Home Assistant konfigurieren
Die ausführliche Beschreibung, wie man ESPHome auf den Microcontroller bekommt, habe ich bereits beim Gaszähler beschrieben. Die Konfigurationsdatei für den ESP8266 sieht dann im zweiten Abschnitt, also nach dem „captive_portal“ folgendermaßen aus. Beim Gaszähler habe ich den binary_sensor verwendet. Aus Gründen, die ich nicht verstehe, funktioniert das Setup hier aber nicht. Darum verwende ich nun den Pulse_meter, der wiederum am Gaszähler nicht funktioniert.
# Voher kommt der ganze Kopf der Datei, was der Wizard generiert
# [...]
sensor:
# Stromzähler als Pulse Meter
- platform: pulse_meter
name: "Stromverbrauch"
pin:
number: GPIO4
mode: INPUT_PULLUP
unit_of_measurement: "kW"
accuracy_decimals: 3
timeout: 2 min
filters:
# Filter outliers
- median:
window_size: 3
send_every: 1
send_first_at: 1
# Convert pulses/min to kW bei 10000Imp/kWh
- multiply: 0.006
total:
name: "Stromzähler"
unit_of_measurement: "kWh"
accuracy_decimals: 3
filters:
- multiply: 0.0001
Diesen Code flasht man auf den ESP8266. Gegebenenfalls müssen die Konstanten verändert werden. Das hängt vom Stromzähler ab, wie viele Impulse er ausgibt und in welcher Einheit das umgerechnet werden kann. Der Pulse-Counter hat als Rohsignal „Impulse pro Minute“, bringt bei mir also die Einheit „kWh/min“.
Nebenrechnung: Ich habe einen Verbraucher, der 1.000 Watt = 1 kW verbraucht. Wenn der Verbraucher eine Stunde läuft, verbrauche ich 1 kWh Energie. Der Stromzähler blinkt also 10.000 mal innerhalb dieser Stunde bzw. 166,6 mal pro Minute (siehe Aufdruck). Also muss ich die Pulse/min mit 60/10.000 multiplizieren, also mit 0,006 um wieder auf 1 kW zu kommen. Daher kommt die Konstante in meinem Beispiel.
Im Home Assistant braucht man ebenfalls eine neue Konfiguration. Man bearbeitet dort die configuration.yaml oder, noch besser, die sensor.yaml und ergänzt dort folgende Zeilen:
Wenn man sich ein Smart Home aufbaut, möchte man aus verschiedenen Gründen Temperaturen messen. In meinem Fall möchte ich im Heizungsraum die Temperaturen an den Wasserrohren, sowie im Warmwasserspeicher aufzeichnen. Eine einfache und kostengünstige Lösung ist es, das mit einem ESP8266 und dem DS18B20 Temperatursensor umzusetzen. Mit der Software ESPHome ist das auch schnell eingerichtet. Im Folgenden zeige ich, wie man das macht.
ESP8266 und DS18B20 verdrahten
Für dieses Beispiel verwende ich einen ESP8266 Wemos D1 Mini mit drei DS18B20 Temperatursensoren. Sie werden nach folgendem Schema verdrahtet. Das einzige zusätzliche Bauteil ist ein 4,7 kOhm Widerstand, der zwischen den Signal-Pin und VCC gelötet wird.
ESP8266 mit DS18B20 Temperatursensoren verbinden. Dazu ist ein 4k7 Ohm Widerstand notwendig.
Die Umsetzung der Schaltung könnte zum Beispiel so aussehen. Verwendet wurde eine Lochrasterplatine. Der Kondensator zwischen VCC und GND ist optional (nicht im Schema eingezeichnet)
Der Vorteil von den DS18B20 ist, dass man sehr viele von ihnen parallel betreiben kann. Wenn die Schaltung einmal geschafft ist, kann man weitere Sensoren einfach anschließen. Das ist der Grund, warum ich schraubbare Kontaktklemmen verwendet habe: Dadurch kann ich mit wenig Aufwand neue Sensoren anschließen.
DS18B20: Adresse herausfinden
Dieser Temperatursensor arbeitet mit dem 1-Wire-Protokoll. Um jeden Sensor eindeutig ansprechen zu können, ist die Adresse des Sensors notwendig. Die kann man leider nicht am Gehäuse ablesen, sondern man muss sie via Software erfragen. Wir nutzen das gleich, um unsere Verdrahtung zu überprüfen!
Die Adresse der Sensoren findet man ebenfalls mit ESPHome heraus, indem man ein sehr minimalistisches Programm aufspielt. Wie schon beim Auslesen des Gaszählers startet man mit
esphome wizard heizungstemperatur.yaml
und beantwortet dem Wizard wahrheitsgemäß die 4 Fragen. Die entstandene heizungstemperatur.yaml öffnet man mit einem Editor und fügt unten die folgenden Zeilen hinzu:
# Example configuration entry
dallas:
- pin: GPIO2
Mittels des folgenden Befehls kompiliert man die Datei und flasht sie auf den ESP8266 (siehe Artikel über den Gaszähler).
esphome run heizungstemperatur.yaml
Der folgende Befehl öffnet die Logdatei des Controllers:
esphome logs heizungstemperatur.yaml
Dort werden die Adressen der angeschlossenen Sensoren angezeigt. Kleiner Tipp: Wenn man immer nur einen Sensor anschließt, behält man den Überblick!
In der Logdatei sieht man (in der letzten Zeile) die Adresse des Sensors. Diesen notiert man sich.
ESPHome für Temperaturmessung flashen
Wenn man nun alle Adressen der Sensoren herausgefunden und notiert hat, kann man das den ESP8266 wie folgt konfigurieren. Den Code fügt man an die bereits erzeugte Datei aus dem Wizard an.
Da mittlerweile der Chip schon die ESPHome-Software aufgespielt hat, kann man bereits jetzt kabellos den neuen Programmcode übertragen. Bei ESPHome nennt sich diese Technik „Over the air“, kurz OTA. Der PC und der ESP8266-Chip müssen sich nur im gleichen Netzwerk befinden.
esphome run heizungstemperatur.yaml
Integration der Temperatursensoren in Home Assistant
Jetzt fehlt nur noch die Integration in den Home Assistant. Glücklicherweise arbeiten die beiden Systeme sehr gut miteinander. Man navigiert im Home Assistant auf Einstellungen, Geräte& Dienste und fügt über das Plus unten rechts eine neue Integration hinzu. Dort sucht man nach „ESPHome“ und gibt im folgenden Fenster die IP-Adresse ein. Wichtig: hierfür muss die API aktiviert sein (das ist eine der Fragen des esphome-Wizards).
Zu einem Smart Home gehört es fast selbstverständlich, dass der Verbrauch von Energie aufgezeichnet wird. Der Stromzähler ist eine der wesentlichen Energiezählern im Haushalt, auch der Gaszähler ist sehr wichtig. Vor allem in Haushalten, in denen der primäre Energieträger Erdgas ist, ist der Gasverbrauch essenziell und wird im Smart Home auch optimiert. Das ist, zumindest für meine Begriffe, eine der wesentlichen Aufgaben des Smart Homes.
Das Schöne an den Gaszähler ist es, dass sie sich in der Regel sehr einfach auslesen lassen. Es ist keine komplizierten und teuren Geräte dafür notwendig. Bei den meisten Gaszählern reicht nämlich ein einfacher Reed-Kontakt aus, die es für einige Cent bei Ebay oder anderen Shops zu kaufen gibt. Als Intelligenz wird der sehr vielseitige ESP8266 verwendet. Dieser ist sehr energiesparend, hat integriertes WLAN, lässt sich verhältnismäßig einfach einrichten und kostet ebenfalls nur sehr wenig Geld.
Wenn der Gaszähler eine Aufschrift wie „1 im = 0,01m³“ trägt, lässt er sich mit wenig Aufwand digitalisieren. Ein Reed-Schalter könnte bereits genügen, um den Gaszähler ins Smart Home einzubinden.
Hardware: ESP8266 und Reed-Kontakt verlöten
Die Einkaufsliste für diesen Sensor:
ESP8266, beispielsweise den Wemos D1 Mini
Reed-Kontakt
optional: 5V Netzteil
optional: Schrumpfschlauchsortiment
Für einen geübten Maker ist diese Aufgabe im Handumdrehen erledigt. Für nicht geübte Maker ist es das perfekte Einsteigerprojekt. Es sind nur sehr wenige Lötstellen zu setzen und man kann kaum etwas falsch machen. Beim ESP8266, in meinem Fall ein Wemos D1 mini, müssen nur die beiden Pinleisten angelötet werden. Für Minimalisten würde sogar je ein Pin bei G (Ground) und D1 (GPIO5) reichen. An diese Pins gehören jeweils die Kabel, idealerweise Litzen 0,15mm², an deren Ende der Reed-Kontakt gehört. Bei diesem Schalter muss man keine Richtung beachten, man kann ich nicht falsch herum anlöten. Das fertige Produkt sieht dann so aus. Ich habe noch versucht, die Lötstellen mit Schrumpfschlauch zu verschönern. Das ist optional.
Update (02.05.2022) Weiterhin habe ich eine optionale LED zur Visualisierung des Signals eingebracht. Diese blinkt immer dann, wenn der Reed-Kontakt schaltet. Das ist vor allem dann sehr nützlich, wenn man den Reed-Schalter am Gaszähler anbringt. Die LED ist eine Hilfe, sie ist aber nicht zwingend nötig. Ihren Vorwiderstand kann man über Online-Tools berechnen, bei mir waren es 220 Ohm.
Der Schaltplan mit optionaler LEDESP8266 an der Pinleiste mit einem Reed-Schalter verlötet. Der Reed-Schalter geht auf Pin G und Pin D1
ESPHome auf ESP8266 installieren unter Windows 10
Unter Windows 10 lässt sich über den „Microsoft Store“ Ubuntu installieren. Das ist der kleine Umweg, den ich häufig gehe, um ein fast vollständiges Linux unter Windows 10 zum laufen zu bringen. Dass es leider nicht vollständig ist, sieht man den nun folgenden, etwas umständlichen Herangehensweise, wie man ESPHome auf dem ESP8266 installiert.
Wer ein vollständiges hass.io bzw. Home Assistant hat, kann das übrigens über den Addon-Store mit dem Add-on „ESPHome“ deutlich beschleunigen. Da ich aber, wie bereits beschrieben, Home Assistant als Container laufen habe, ist für mich der Umweg notwendig.
Man startet Ubuntu unter Windows und gelangt in das Terminal. Dort installiert man sich (falls noch nicht geschehen) Python 3 und das nötige Paket „esphome“ aus dem Python-Repsitory. Anschließend prüft man, ob die Installation geklappt hat, indem man sich die Versionsnummer ausgeben lässt.
Der Einfachheit halber empfehle ich, den Wizard von ESPHome zu verwenden. Er wird benutzt, um die *.yaml zu erstellen. Genau wie bei Home Assistant ist sie dafür da, den Controller zu konfigurieren. Der Wizard zeigt einem glücklicherweise gleich alle möglichen Alternativen auf, die man eingeben kann. Beantwortet also wahrheitsgemäß die 4 Fragen den Wizards und wir erhalten eine Konfigurationsdatei mit dem angegebenen Namen. Ich habe hier willkürlich gaszaehler.yaml gewählt.
Die nun folgende Datei sieht dann beispielsweise so aus:
esphome:
name: gaszaehler
esp8266:
board: d1_mini
# Enable logging
logger:
# Enable Home Assistant API
api:
password: "1234"
ota:
password: "1234"
wifi:
ssid: "hier die Wifi-SSID eintragen"
password: "hier das Wifi Passwort eintragen"
manual_ip:
static_ip: "auf Wunsch"
gateway: "IP-Adresse des Gateways"
subnet: "Subnet Maske"
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Gaszaehler Fallback Hotspot"
password: "hier steht automatisch ein Passwort"
captive_portal:
Das Fallback-Wifi wird gebraucht, falls der Sensor das eigentliche WLAN nicht erreichen kann. Dann baut der ESP8266 eigenständig ein WLAN auf, über das er sich konfigurieren lässt.
Update (02.05.2022) Vor diesem Update habe ich den Pulse_counter von ESPHome verwendet. Dieser liefert leider keine zuverlässigen Werte. Gleiches gilt für den pulse_meter, der eigentlich besser sein sollte. Stattdessen bin ich nach einiger Tüftelei wieder bei dem binary_sensor herausgekommen, der wunderbar funktioniert. Zusätzlich ist eine LED auf GPIO0 angebracht, die schaltet, sobald der Reed-Schalter zieht. Damit könnt ihr live am Gerät sehen, ob ein Puls anliegt. Sie ist nur eine Hilfe und nicht zwingend erforderlich.
globals:
- id: total_pulses
type: int
restore_value: false
initial_value: '0' # hier kann der Gaszählerstand initialisiert werden
binary_sensor:
- platform: gpio
id: internal_pulse_counter
pin:
number: GPIO5
mode: INPUT_PULLUP
name: "Live-Impuls"
filters:
- delayed_on: 10ms
on_press:
then:
- lambda: id(total_pulses) += 1;
- output.turn_off: led # optional: für eine LED, die den Gaszählerpuls visualisiert
on_release:
then:
- output.turn_on: led # optional: für eine LED, die den Gaszählerpuls visualisiert
sensor:
- platform: template
name: "Gasverbrauch"
device_class: gas
unit_of_measurement: "m³"
state_class: "total_increasing"
icon: "mdi:fire"
accuracy_decimals: 2
lambda: |-
return id(total_pulses) * 0.01;
# Optional: Diese LED soll blinken, sobald ein Signal vom Gaszähler erkannt wird
output:
- platform: gpio
pin: GPIO0
id: 'led'
Fertig mit der Konfiguration. Wir speichern mit Strg + O und schließen Nano mit Strg + X
Mit dem folgenden Befehl wird der Code für den ESP8266 kompiliert. Ich habe es leider nicht geschafft, ihn direkt per USB-Kabel auf meinen Controller zu bekommen. Daher bin ich einen Umweg gegangen.
$ esphome run gaszaehler.yaml
Das endet mit einer Fehlermeldung (connection failed bad indicator errno=11), dass der Code nicht auf den Controller gebracht werden konnte. Stattdessen kopieren wir den Code auf das Laufwerk C: unter Windows und arbeiten von dort aus weiter (sorry Leute!!).
Mittels ESPHome-Flasher, den es auch für Windows gibt und der nicht installiert werden muss (!!) geht es weiter. Die eben kopierte Datei auswählen, den ESP8266 mit USB am PC anstöpseln und den entsprechenden COM-Port auswählen (bei mir wurde nur einer angezeigt). Bestätigen, und warten bis es fertig ist.
ESPHome in Home Assistant installieren
Mit der Entität „ESPHome“ kann der Sensor in den Home Assistant eingebunden werden. Das geht sehr fix, es muss nur die IP-Adresse und das festgelegte Passwort eingegeben werden. Damit er auch korrekt als Energiequelle erkannt wird, muss man noch folgende Zeilen in die configuration.yaml anfügen, besser noch, in die sensor.yaml
Update (15.04.2022): Manchmal fällt der ESP kurzzeitig aus, was den Gasverbrauch kurzfristig auf 0 m³ setzt. Sobald er wieder da ist, gibt es einen unlogischen Peak in der Statistik. Dieser wird über die kleine IF-Schleife herausgefiltert.
- platform: template
sensors:
# Gaszähler, kommend von ESPHome, aufbereiten für Energy
gasincubicmeter:
value_template: >
{% if states('sensor.gasverbrauch') | float == 0 %}
{{ states('sensor.gasincubicmeter') }}
{% else %}
{{ states('sensor.gasverbrauch') | float }}
{% endif %}
unit_of_measurement: m³
device_class: gas
attribute_templates:
state_class: total_increasing
Nach einem Neustart des Servers klickt man im Home Assistant auf „Einstellungen“, „Energie“ und klickt auf den Gaszähler. Dort taucht nun die neue Entität gasincubicmeter auf und kann ausgewählt werden.
In Home Assistant kann über Einstellungen → Energie eine neue Gasquelle hinzugefügt werdenDer Gasverbrauch wird auf dem Energie-Dashboard von Home Assistant angezeigt
Reed-Schalter am Gaszähler positionieren
Wer Zugriff auf einen 3D-Drucker hat, sollte sich bei Thingiverse mal umsehen, ob dort ein Halter für seinen Gaszähler vorhanden ist. Die Chance dort, oder woanders, einen zu finden, halte ich für sehr hoch. Andernfalls kann man mit etwas Geschick und gutem Klebeband den Schalter direkt am Gaszähler montieren. Er muss in der vorgesehenen Kerbe möglichst genau unter der letzten Ziffer positioniert werden. Wer darauf achtet, wird bemerken, dass die letzte drehende Ziffer einen kleinen Magneten hat. Genau darunter muss der Reed-Schalter geklebt werden.
Zu einem guten Smart Home gehört natürlich auch eine schöne „Kommandozentrale“. Obwohl das Haus ja schlau ist und alles selbst entscheiden soll, möchte man ja dennoch wissen, was gerade los ist. Der Home Assistant, eine freie und open source Software für Hausautomatisierung, bietet mit seinen Dashboards genau solche Übersichten an. Mit wenigen Klicks lassen sich die Messdaten aus dem Haus und um das Haus visualisieren.
Einen Regenradar in Home Assistant kann man einbinden, wenn man die Bild-URL als Kachel im Dashboard hinzufügt.
Regenradar und weitere Wetterdaten
Das Wetter spielt natürlich eine entscheidende Rolle für das Haus und die Bewohner. Die erste Anlaufstelle für aktuelle Wetterdaten und Vorhersagen könnte beispielsweise OpenWeatherMap sein. Die API ist gut dokumentiert, die Einbindung in den Home Assistant ist reibungslos, der Dienst ist kostenlos und es fällt keine Werbung an. Einzig eine Registrierung auf der Webseite ist nötig, um den verpflichtenden API-Schlüssel zu erhalten.
Was leider fehlt, ist der Regenradar. Jede Vorhersage ist ja nur so gut, wie die, die man mit eigenen Augen sieht. Darum lohnt es sich, einen Regenradar in das Home Assistant Dashboard einzubinden.
Die meisten Regenradare lassen sich nicht besonders einfach einbinden. Und falls doch, sind sie meistens mit Werbung übersät. Um so schöner ist es, dass die Webseite morgenwirdes.de den Regenradar vom Deutschen Wetterdienst (DWD) aufbereitet und uns als animierte gif-Datei zur Verfügung stellt. Die Einbindung in den Home Assistant ist explizit erlaubt und funktioniert folgendermaßen.
Einbindung in den Home Assistant
Zunächst bastelt man sich die URL zusammen, die man für sein Dashboard braucht. Das geht relativ einfach, wenn man sich die Struktur der URL ansieht.
Die Flagge „plz“ gibt die Postleitzahl vor. Delay ist die Zeit in Millisekunden, die pro Zeitstufe angezeigt wird. Es gibt zwei Farbschemen der Karte, typ=0 oder 1. Der Zoomlvl gibt den Zoomlevel an (hier 1 für ganz Deutschland). Eine Zeitleiste (bar) und Hintergrundkarte (map) können optional eingeblendet werden. Farblich anpassen kann man die Karte mit den beiden letzten Flaggen.
In der configuration.yaml habe ich das dann als Kamera eingebunden. Das hat den Vorteil, dass die Daten immer aktualisiert werden. Würde man es als Bild einbinden, könnte es sein, dass der Regenradar nur aus dem Cache geladen wird und deshalb nicht aktuell ist.
Ich habe den Artikel angepasst, das Bild wird nicht mehr als normales Bild, sondern als Kamera eingebunden. Dadurch wird das Radar zuverlässiger aktualisiert.
Mit den Heizthermostaten von Homematic IP lassen sich die Heizkörper minutengenau zeitsteuern. In der Zentrale, in meinem Falle die Homematic CCU3, lassen sich Zeitprofile für jedes Heizthermostat hinterlegen. Die ganze Woche lässt sich damit detailliert planen. Es ist offensichtlich, dass nicht jede Woche eine Kopie der vorherigen Woche ist. Manchmal arbeitet man die ganze Woche von Zuhause aus, manchmal ist man im Urlaub. Damit ergibt sich auch, dass die Räume anders geheizt werden müssen.
Die Homematic CCU3 ermöglicht es, bis zu drei verschiedene Wochenprogramme anzulegen. Die Frage ist nun, wie kann man komfortabel zwischen diesen Wochenprogrammen wechseln? Diesem Thema widme ich diesen Artikel.
In der Homematic CCU3 kann man über das WebUI jedem Thermostat ein detailliertes Wochenprogramm hinterlegen. Bis zu drei verschiedene Wochenprogramme können vorkonfiguriert werden.
Automatisierung ftw!
Der Grundgedanke eines Smart Homes ist natürlich, dass es „smart“ ist, also eigenständig Entscheidungen trifft. In meinem konkreten Fall könnte das bedeuten, dass meine Heizungssteuerung automatisch erkennt, wann mein Wochenprogramm sich ändern müsste. Mit entsprechenden Bewegungsmeldern ist das sicherlich möglich, wenn auch relativ aufwendig und kostspielig.
Ich habe mich dafür entschieden, eine übergeordnete Steuerung zu verwenden, den Home Assistant. Die Homematic CCU3 tritt dort nur als Client auf. Das ist insofern eine ganz gute Idee, als dass sich Home Assistant über eine App steuern lässt. Das ist komfortabel und zukunftssicher, dank einer engagierten Community im Hintergrund.
Einbindung von Homematic CCU3 in Home Assistant
Der Home Assistant und die Homematic CCU3 lassen sich glücklicherweise sehr einfach miteinander verbinden. Einzig ein Eintrag in der configuration.yaml von Home Assistant ist notwendig. Im Beispielcode sind die Passwörter in eine secrets-Datei ausgelagert.
Damit man das Wochenprogramm umschalten kann, braucht es einen Service, den wir folgendermaßen zusammensetzen.
Man erstellt auf einem Dashboard einen neuen Button.
Bei den Einstellungen des Buttons wechselt man in die Code-Ansicht und gibt dort folgendes ein.
Address ist die Serialnummer des Gerätes, Value ist das Wochenprofil.
type: button
tap_action:
action: call-service
service: homematic.set_device_value
service_data:
address: 000a1d8991xxxx
channel: 1
param: ACTIVE_PROFILE
value: '2'
value_type: int
target: {}
entity: climate.000a1d8991xxxx
icon: mdi:bed-outline
name: Kein Besucher im Gästezimmer
Um das Wochenprofil auf einen anderen Wert zu stellen, dupliziert man die Kachel und ändert die „Value“. Leider habe ich nicht herausgefunden, wie man den aktuellen Wert für das Wochenprofil ausliest. Mit dieser Info könnte man einen einzelnen Button verwenden und diesen togglen.
Das Heizsystem ist für viele der erste Einstieg in das Thema „Smart Home„. So ist es auch bei mir. Viele meiner Heizkörper laufen mittlerweile mit Heizthermostaten von Homematic. Zusammen mit der übergeordneten Software Home Assistant ist jetzt meine Menge möglich in meinen vier Wänden. Das Wandthermostat von Homematic ist sogar in der Lage, die relative Luftfeuchtigkeit zu messen. Das ist schon sehr nützlich und kann für weitere Auswertungen verwendet werden. In meinem Fall interessiere ich mich allerdings für die absolute Luftfeuchtigkeit, die sich von der relativen Luftfeuchtigkeit unterscheidet. Glücklicherweise lassen sich die beiden Werte ineinander umrechnen, und das Wandthermostat liefert auch alle notwendigen Messwerte dafür.
Unterschied zwischen relativer und absoluter Luftfeuchtigkeit
Mir als ausgebildeten Thermodynamiker liegt es natürlich am Herzen, dass man den Unterschied zwischen relativer und absoluter Luftfeuchtigkeit kennt. Der Unterschied liegt eigentlich auf der Hand und lässt sich schon anhand der Einheiten gut unterscheiden.
Viele Wandthermostate messen die relative Luftfeuchtigkeit
Die relative Luftfeuchtigkeit wird in Prozent angegeben. Die Luft ist ein Gemisch aus Gasen, ein Teil davon kann Wasserdampf sein. Wie viel das maximal ist, hängt von der Temperatur der Luft ab: je kälter es ist, desto weniger Wasserdampf kann dampfförmig in der Luft vorkommen. Sollte dieser Wert überschritten werden, bildet sich Nebel. Die relative Luftfeuchtigkeit gibt an, bis zu welchem Grad die Luft bereits mit Wasserdampf gesättigt ist. Sind die 100% erreicht, kondensiert alles zusätzliche Wasser und es wird neblig. Etwas thermodynamischer ausgedrückt, klingt die Definition so: Die relative Luftfeuchtigkeit gibt den Partialdruck des Wasserdampfs relativ zum Maximalwert bei aktueller Temperatur an.
Die absolute Luftfeuchtigkeit hingegen wird in g/m³ angegeben (andere Einheiten sind möglich). Bildlich kann man es sich so vorstellen, dass in einem Kubikmeter Luft die angegebene Menge Wasserdampf vorhanden ist.
Warum sollte man die absolute Luftfeuchtigkeit wissen wollen?
Eine typische Textaufgabe in Thermodynamik 1 könnte lauten: Im Wohnzimmer herrschen 22 °C und 40 % Luftfeuchtigkeit. Außen hat es 8 °C und 80 % Luftfeuchtigkeit. Steigt oder fällt die Luftfeuchtigkeit im Wohnzimmer, wenn man das Fenster öffnet?
Eine andere Fragestellung lässt sich ebenfalls darüber beantworten: Im Wohnzimmer herrschen 22 °C und 20 % Luftfeuchtigkeit. Das Raumvolumen beträgt 75 m³. Wie viele Kilogramm Wasser muss man verdunsten lassen, um auf 50 % Luftfeuchtigkeit zu kommen?
Wenn ihr es wisst, könnt ihr das gerne in den Kommentaren hinterlassen
Die Physik dahinter
Es sind zwei wichtige Formeln miteinander kombiniert. Die eine Formel, Antoine-Gleichung, berechnet den Sättigungsdampfdruck der Luft bei vorgegebener Temperatur. Die zweite Formel, die ideale Gasgleichung, berechnet daraus die absolute Feuchtigkeit. Die Temperatur und relative Feuchtigkeit werden vom Wandthermostat zur Verfügung gestellt.
Mit der Antoine-Gleichung kann der Sättigungsdampfdruck berechnet werden. Die hier gewählten Parameter A, B und C sind so gewählt, dass die Gleichung für Wasser angewendet werden. Die Temperatur T muss hier in Grad Celsius angegeben werdenDie Ideale Gasgleichung wird verwendet, um den Zustand eines idealen Gases zu beschreiben. Die spezifische Gaskonstante für Wasserdampf ist hier bereits eingesetzt. Die Temperatur T muss hier in Grad Celsius angegeben werden
Die Berechnung in Home Assistant
In Home Assistant legt man sich für diese Berechnung einen neuen Sensor an. Das geschieht über Templates. Dieser Sensor existiert nur softwareseitig und sein Messwert wird berechnet, nicht direkt gemessen. Ich habe das beispielsweise umgesetzt, indem ich in die configuration.yaml folgende Zeile ergänzt habe:
sensor: !include sensor.yaml
Mittels des folgenden Befehls habe ich besagte Datei erstellt und ihr den folgenden Inhalt gegeben.
Smart Homes sind in aller Munde. Bei Neubauten sowieso, aber auch bestehende Immobilien werden gerne zu so genannten Smart Homes umgerüstet. Den großen Markt teilen sich natürlich kommerzielle Anbieter, aber gerade auf der Softwareseite konkurrieren auch freie und open source Software um die Kunden. Die bekanntesten Teilnehmer im open source Bereich sind FHEM, OpenHAB und Home Assistant (früher bekannt als hass.io).
Diese Software soll verschiedene smarte Geräte vereinen, so dass sie alle unter einer Haube stecken. Anstatt jeweils eine Anwendung für die Heizung, das Licht und die Energieversorgung zu verwenden, soll die Software übergeordnet sein. Sie bildet damit die Schnittstelle zwischen den Geräten und mir.
Ich möchte mein Haus mit dem Home Assistant smart machen, bzw. einige der vorhandenen Komponenten dort einbinden. In diesem Artikel möchte ich zunächst auf die Installation von Home Assistant Container eingehen.
Unterschied zwischen Home Assistant und Home Assistant Container
Der mächtige Home Assistant wird gerne auf einem Raspberry Pi installiert. In der Regel verwendet man dafür gleich ein ganzes Image für das Betriebssystem. Das bedeutet, dass man statt des üblichen Raspbian das „Home Assistant Operating System“ installiert.
Der Vorteil liegt darin, dass man den Home Assistant in vollem Umfang nutzen kann. Der Nachteil ist, dass man über ein stark angepasstes OS verfügt. Möchte man noch weitere Software darauf laufen lassen, könnte das zu Konflikten führen.
In meinem Fall laufen noch andere Prozesse auf dem Raspberry. Somit kommt für mich das OS nicht infrage. Stattdessen möchte ich auf Home Assistant Container setzen. Hier läuft die Software über Docker.
Benutzt man den Home Assistant Container, muss man mit Einschränkungen leben. Es ist beispielsweise nicht möglich, Add-ons zu installieren. Der Grund liegt meines Wissens darin, dass Add-ons als (Docker-)Container installiert werden. Und das geht nicht, wenn bereits die Hauptanwendung in einem (Docker-) Container läuft. [Falls das jemand genauer weiß, gerne einen Kommentar hinterlassen!]
Installation von Home Assistant Container
Was man als Vorbereitung braucht, ist ein installiertes Linux-System. In meinem Beispiel ist es Raspbian auf einem Raspberry Pi 4. Dort meldet man sich via SSH an.
Schritt 1: Docker installieren. Gegebenenfalls hat man eine alte Version bereits installiert. Diese muss man entfernen und die aktuelle Version installieren. Dazu wird das Docker-Repository hinzugefügt und die Software daraus installiert. Am Ende wird eine Benutzergruppe „docker“ erstellt (ggf. geschieht das automatisch). Der aktuelle Benutzer – hier nennt er sich pi – wird der Gruppe hinzugefügt.
Schritt 2: Home Assistant Container installieren. Der folgende Befehl holt sich das entsprechende Image aus dem Dockerhub, lädt es herunter und installiert es. Es ist wichtig, dass der Ordnerpfad für die Konfigurationsdatei korrekt angegeben wird. Wie oben bereits beschrieben, fehlt die Add-on-Funktion. Um die configuration.yaml bearbeiten zu können, muss man an diese Datei herankommen. Mit der Flag -v mountet man einen existierenden Ordner in den Docker-Container und kann damit die Datei weiterhin bearbeiten.
Schritt 3: Docker-Image verwalten. Die gesamte Home Assistant Installation kann man über den Container starten und stoppen. Ein Update führt man ebenfalls über das Docker-Image aus. Die Befehle hierfür lauten folgendermaßen.
Schritt 4: Auf Home Assistant zugreifen. Ab jetzt erfolgt die Verwaltung des Home Assistant über die Weboberfläche. Mit http://<IP-Adresse des Raspberrys>:8123 kann man von einem PC des gleichen Netzwerks auf die Installation zugreifen. Änderungen an der configuration.yaml müssen weiterhin über die Systemoberfläche, also z.B. mit nano oder vim über SSH erfolgen.
Zur Zeit steht Whatsapp stark in der Kritik. Seitdem der Messenger 2014 von Facebook gekauft wurde, ist das Misstrauen gegen die App gestiegen. Das ist zumindest der Eindruck, den ich im Netz und in meinem persönlichen Umfeld erlebe.
Der neueste Aufreger sind die neuen Datenschutz-Regeln, denen man bis 15. Mai 2021 zustimmen muss. Diese erlauben es, dass Facebook die Metadaten von Whatsapp-Chats u.a. für Marketingzwecke zu verwenden.
Diese erlauben es, dass Facebook die Metadaten von Whatsapp-Chats u.a. für Marketingzwecke zu verwenden.
Die Kommunikation erfolgt nach wie vor unter einer Ende-zu-Ende-Verschlüsselung. Das bedeutet, dass weder Facebook noch Whatsapp auf die Inhalte der Nachrichten zugreifen können. Allerdings können die Metadaten ausgewertet werden, also wann und wie lange ich die App verwende, mit wem ich schreibe und wie meine Telefonnummer lautet. Das reicht, um meinen Whatsapp-Account gewinnbringend mit meinem Facebook-Profil zu verknüpfen.
Signal, die bessere Alternative zu Whatsapp
Aus diesem Grund gibt es zur Zeit (mal wieder?) viele User, die zu alternativen Messengerdiensten wechseln möchten. Die vermutlich beliebteste Alternative ist aktuell Signal, ein Dienst der von Größen der Technik-Branche empfohlen wird. Auch wir haben Signal schon vor fast genau sieben (!!) Jahren als geeignete Alternative zu Whatsapp empfohlen (damals noch unter dem Namen Chatsecure).
Signal gibt es für Android, Apple i.OS, Windows 10, Mac OS und Linux. Das schöne ist, dass sich das kombinieren lässt. Wie das geht, erkläre ich im nächsten Abschnitt.
Signal für den PC installieren
Die Installation ist nur dann sinnvoll, wenn man Signal auf einem Telefon verwendet. Man wird nach der Installation erlauben, dass die PC-Version mit dem Smartphone gekoppelt wird.
Auf der Webseite https://signal.org/de/download/ gibt es den Downloadlink für die verschiedenen Betriebssysteme. Dort lädt man sich die Version für sich herunter. In diesem Beispiel ist es Windows.
Auf der Webseite kann man die passende PC-Version des Messenger-Dienstes herunterladen
Während der Installation bittet Signal darum, das Smartphone mit der Installation auf dem PC zu koppeln. Dazu wird ein großer QR-Code angezeigt.
Während der Installation wird man gebeten, den angezeigten QR-Code mit dem Smartphone zu koppeln.
In der Smartphone-App öffnet man Signal, tippt oben rechts auf die drei Punkte und öffnet das Einstellungsmenü. Dort gibt es den Unterpunkt Gekoppelte Geräte. Über das große Plus unten rechts kann man das neue Gerät hinzufügen.
Es öffnet sich eine Funktion, mit der der QR-Code vom PC gescannt werden kann. Damit scannt man den QR-Code vom PC und die Einrichtung schließt sich selbst ab.
Kurz danach ist die Einrichtung abgeschlossen. Ab diesem Zeitpunkt können die Nachrichten von beiden Geräten gelesen und geschrieben werden.
In Excel gibt es viele verschiedene Darstellungen von Zahlenformaten. Am bekanntesten sind wahrscheinlich die Darstellungen von Prozenten und Währungen wie dem Euro zum Beispiel. Es gibt auch die wissenschaftliche Darstellung von Zahlen, die Zehnerpotenzen darstellen können, repräsentiert durch ein kleines e: so wird aus der Zahl 1.000 ein 1e3.
In vielen Fällen hilft das schon sehr gut. Spannender wird es, wenn man die Zahl aber nicht in jede beliebige Zehnerpotenz formatieren will, sondern nur in Dreierschritten. Ein Beispiel:
Ich pflege eine Liste mit elektrischen Widerständen. Diese werden üblicherweise mit SI-Präfixen angegeben, also zum Beispiel 100 Kiloohm (also 100.000 Ohm), geschrieben 100 kOhm. Gibt man in Excel die Zahl 100.000 ein und lässt sie wissenschaftlich formatieren, wird sie als 1e5 angezeigt. Das ist zwar korrket, aber nicht sehr greifbar, schließlich wird der Wert üblicherweise in Kiloohm angegeben. Besser wäre also die Schreibweise 100e3.
Das geht, indem man in Excel die benutzerdefinierte Formatierung eingibt. Dazu klickt man im Ribbon unter dem Reiter „Start“ im Bereich „Zahl“ auf „Zahlenformat“. Im Dropdown wählt man „weitere Zahlenformate“ und wählt dort wiederum „Benutzerdefiniert“. Dort gibt man folgendes ein:
##0E+0
Das war der ganze Zauber. Schon werden die Zahlen in Zehnerpotenzen mit Exponenten in Dreierschritten angezeigt.
Wer sich im Internet bewegt hat in der Regel auch viele Konten auf vielen Webseiten angelegt. Durch Datenskandale in den letzten Jahren wurden wir User immer wieder auf die Dringlichkeit für sichere Passwörter sensibilisiert. Es gibt viele Grundregeln, an die man sich halten soll. Die wichtigste Regel lautet: Jede Webseite muss ein eigenes Passwort erhalten.
Passwörter organisieren mit Passwort-Manager
Nach spätestens dem dritten, schweren Passwort hat man keine Lust mehr, sich die kryptischen Buchstaben-, Zahlen- und Symbolkombinationen zu merken. Schon gar nicht, wenn man ein Passwort nur selten braucht, etwa das für die Software der Steuererklärung. Ganz einfacher Tipp: ein Passwort-Manager muss her.
KeePass Password Safe – der freie Passwort-Manager
In der Freien-Software-Szene ist KeePass Password Safe weit verbreitet. Die Software ist für viele Plattformen erhältlich, man kann sie auf den Smartphone verwenden und die Verschlüsselung ist weitestgehend akzeptiert. Die Funktionen sind umfangreich, es wird bspw. die „Schwierigkeit“ des Passwort angezeigt und man kann sich Passwörter generieren lassen. Gerade diese Funktion ist sehr nützlich, wenn man sich häufig im Netz registriert.
KeePass Password Safe
Verbindung mit Firefox herstellen
Die Handhabung des Passwort-Managers verbessert sich maßgeblich, wenn man ihn mit Firefox verknüpfen kann. Das ständige Kopieren des Passworts für die (sehr unsichere(!!)) Zwischenablage entfällt, wenn man eine direkte Verbindung von Firefox zu KeePass herstellt. Firefox und KeePass lassen sich beide über Plugins erweitern, um diese Verbindung herzustellen. Das möchte ich nun beschreiben.
Für KeePass werden wir das Plugin KeePassRPC verwenden, in Firefox kommt das Plugin Kee zum Einsatz.
Schritt 1: KeePass vorbereiten
Zunächst muss man KeePass öffnen und Tools – Plugins – Get more Plugins aufrufen. Auf der Webseite sucht man nach der Erweiterung KeePassRPC. Diese Erweiterung stellt eine bidirektionale Kommunikation mit anderen Anwendungen her, in unserem Fall Firefox.
Über den Link gelangt man auf die Github-Seite, von der aus man die Plugin-Datei *.plgx herunterladen kann. Die heruntergeladene Datei speichert man im Ordner C:\Program Files (x86)\KeePass Password Safe 2\Plugins
Schritt 2: Firefox vorbereiten
Man klickt oben rechts in Firefox auf das Menü, Addons installieren, Suche nach „Kee – Password Manager“ und bestätigt mit einem Klick auf „hinzufügen zu Firefox„.
Kee – Password Manager: Erweiterung für Firefox
Schritt 3: Verbindung autorisieren
Nun schließt man KeePass und öffnet es erneut. Das Firefox-Plugin fragt nun nach einer Autorisierung. Es öffnet sich automatisch ein Fenster, in dem ein Code angezeigt wird. Diesen Code gibt man nun in Firefox ein und bestätigt mit „Verbinden“ – fertig.
KeePass gibt einen Code vor, sobald eine Anwendung über RPC eine Verbindung aufbauen möchte.Die Verbindung zwischen Kee in Firefox und KeePass steht, sobald das eben angezeigte Passwort eingegeben wird.
Schritt 4: Benutzung des Passwort-Managers mit Firefox
Passwort speichern
Gibt man im Browser Zugangsdaten zum ersten mal ein, fragt Kee mit einem Fenster in der unteren rechten Ecke nach, ob das Passwort gespeichert werden soll. Bestätigt man dies, wird das Passwort in KeePass gespeichert und mit der zugehörigen URL abgelegt.
Passwort eingeben
Sobald man die Loginseite einer Webseite aufruft, füllt Kee die Loginfelder automatisch aus. Man erkennt das auch daran, dass das Kee-Logo neben dem Eingabefeld erscheint. Sollten mehrere Zugangsdaten für die gleiche URL hinterlegt sein, kann man über dieses Symbol zwischen ihnen wechseln. Das funktioniert natürlich nur, so lange KeePass im Hintergrund geöffnet ist.