HomeAssistant mit HAOS einrichten

Die Installation von Home Assistant OS (HAOS) auf einem Mini-PC (wie Intel NUC, Fujitsu Futro, Lenovo ThinkCentre, …) erfolgt am saubersten, indem ein Live-Linux-System auf einem USB-Stick genutzt wird, um das HAOS-Image direkt auf die interne SSD des Mini-PCs zu schreiben.

Was ist Home Assistant OS (HAOS)?

Home Assistant Operating System (HAOS) ist ein speziell entwickeltes, minimales Linux-Betriebssystem, das aus einer Hardware oder einer virtuellen Maschine ein dediziertes Smart-Home-Steuergerät („Appliance“) macht.

Im Gegensatz zu einer reinen Software-Installation verwaltet HAOS das gesamte System selbstständig. Der größte Vorteil von HAOS ist der integrierte Supervisor: Er ermöglicht die Installation von Erweiterungen (Add-ons) wie Zigbee2MQTT, Node-RED, Mosquitto Broker oder ESPHome mit nur einem Klick direkt aus der Home-Assistant-Oberfläche.

Darüber hinaus kümmert sich HAOS automatisch um Betriebssystem- und Core-Updates, bietet ein nahtloses Backup-System für das Gesamtsystem und sorgt für eine einfache Anbindung von Smart-Home-Hardware (wie USB-Zigbee-Sticks). Es ist die von den Entwicklern empfohlene Installationsmethode für den wartungsarmen und stabilen Betrieb.

Installation

Englische Anleitung: https://www.home-assistant.io/installation/generic-x86-64

  • Boote den MiniPC mit einem Ubuntu Desktop System
  • Lade das neuste „Generic x86-64“ Image herunter („haos_generic-x86-64-**.*.img.xz“)
  • Öffne eine Shell
  • Starte das folgende Kommando
    • sudo xzcat /pfad/zur/haos_generic-x86-64-X.X.img.xz | sudo dd of=/dev/sda bs=4M status=progress
  • Danach ist auf „sda“ ein komplettes HAOS installiert mit dem gleich gebootet wird.

HomeAssistant einrichten

Siehe HomeAssistant Ersteinrichtung

HomeAssistant Ersteinrichtung

Web-Oberfläche von Home Assistant aufrufen

  1. Öffne einen Browser und rufe die IP Adresse der HomeAssistant Installation auf:
    • http://<VM-IP-ADRESSE>:8123
    • oder [http://homeassistant.local:8123](http://homeassistant.local:8123)
  2. Richte dein Administrator-Konto ein und schließe die Ersteinrichtung ab.

MQTT Installation

Home Assistant stellt von Haus aus lediglich die Schnittstelle bereit, um mit einem MQTT-Broker zu kommunizieren. Der Broker selbst – die Zentrale, die den Nachrichtenverkehr verwaltet – muss zuerst eingerichtet werden.

Der einfachste Weg ist die Installation des offiziellen Mosquitto Brokers direkt als Add-on in Home Assistant OS:

In 3 Schritten zum funktionierenden MQTT Broker:

  1. Add-on installieren:
    • Gehe in Home Assistant auf „Einstellungen / Apps / App installieren“ (unten rechts).
    • Suche nach Mosquitto broker, klicke darauf und wähle Installieren.
    • Aktiviere den Schalter Starten beim Booten und klicke auf Starten.
  2. MQTT-Benutzer anlegen (Empfohlen):
    • Gehe auf „Einstellungen / Personen / Benutzer“ (falls nicht sichtbar: Profilbild unten links anklicken und Erweiterter Modus aktivieren).
    • Erstelle einen neuen Benutzer (z. B. Name: mqtt-user) mit einem sicheren Passwort. Dieser wird von deinen Smart-Home-Geräten (z. B. ESP32, Tasmota, Zigbee2MQTT) für die Anmeldung verwendet.
  3. Integration aktivieren:
    • Gehe auf „Einstellungen / Geräte & Dienste„.
    • Oft wird MQTT dort bereits automatisch als Entdeckt angezeigt. Klicke auf Einrichten.
    • Falls nicht: Klicke unten rechts auf Integration hinzufügen, suche nach MQTT und folge den Anweisungen.

MQTT für Tasmota einrichten

Um Tasmota Geräte mit MQTT verwenden zu können, ist ein weiterer Dienst nötig:

  1. Wähle unter „Einstellungen / Geräte und Dienste“ den Punkt „Integration hinzufügen
  2. Dort nach dem Anbieter „Tasmota“ suchen und ihn auswählen

HomeAssistant mit HAOS in Proxmox einrichten

Die Installation von Home Assistant Operating System (HAOS) auf Proxmox VE als virtuelle Maschine (VM) gilt als der Goldstandard für ein flexibles Smart Home. Du erhältst damit die volle Funktionalität von HAOS (inklusive Add-on-Store, Supervisor und automatischen Updates), während du gleichzeitig Schnappschüsse (Snapshots) und Backups des gesamten Systems in Proxmox erstellen kannst.

Der eleganteste Weg zur Installation führt über die Proxmox VE Helper-Scripts der Community.

Was ist Proxmox VE?

Proxmox Virtual Environment (PVE) ist eine quelloffene (Open-Source) Plattform für Server-Virtualisierung. Sie basiert auf Debian Linux und nutzt KVM (Kernel-based Virtual Machine) für vollwertige virtuelle Maschinen sowie LXC für leichtgewichtige Container.

Kurz gesagt: Proxmox erlaubt es dir, auf einer einzigen physischen Hardware mehrere unabhängige Betriebssysteme parallel zu betreiben. Für Home Assistant ist das ideal, weil HAOS als isolierte VM mit eigenen Ressourcen läuft und du über Proxmox jederzeit schnelle Sicherungspunkte (Snapshots) oder Backups deines gesamten Smart Homes erstellen kannst.

Was ist Home Assistant OS (HAOS)?

Home Assistant Operating System (HAOS) ist ein speziell entwickeltes, minimales Linux-Betriebssystem, das aus einer Hardware oder einer virtuellen Maschine ein dediziertes Smart-Home-Steuergerät („Appliance“) macht.

Im Gegensatz zu einer reinen Software-Installation verwaltet HAOS das gesamte System selbstständig. Der größte Vorteil von HAOS ist der integrierte Supervisor: Er ermöglicht die Installation von Erweiterungen (Add-ons) wie Zigbee2MQTT, Node-RED, Mosquitto Broker oder ESPHome mit nur einem Klick direkt aus der Home-Assistant-Oberfläche.

Darüber hinaus kümmert sich HAOS automatisch um Betriebssystem- und Core-Updates, bietet ein nahtloses Backup-System für das Gesamtsystem und sorgt für eine einfache Anbindung von Smart-Home-Hardware (wie USB-Zigbee-Sticks). Es ist die von den Entwicklern empfohlene Installationsmethode für den wartungsarmen und stabilen Betrieb.

Voraussetzungen

  • Ein einsatzbereiter Proxmox VE Host (empfohlen: Proxmox VE 8.x)
  • Zugewiesener Speicherplatz auf dem Proxmox-Node (mind. 32 GB NVMe/SSD empfohlen)
  • Internetverbindung des Proxmox-Hosts zum Herunterladen des HAOS-Images

Installation

Proxmox Shell öffnen

Zugriff auf die Node-Konsole.

  1. Melde dich im Web-Interface deines Proxmox VE Servers an (https://<PROXMOX-IP>:8006).
  2. Wähle im linken Menübaum deinen Node (z. B. pve) aus.
  3. Klicke im Menü oben rechts oder in der Seitennavigation auf >_ Shell.

Helper-Script starten

Führt den automatischen VM-Builder aus – Kopiere folgenden Befehl, füge ihn in die Proxmox-Shell ein und drücke Enter:

Bash

bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/haos-vm.sh)"

Hinweis: Das Skript stammt aus dem etablierten Open-Source-Projekt Proxmox VE Helper-Scripts (Community Edition).

Installations-Assistent durchlaufen

Ressourcen und Einstellungen definieren.

Das Skript führt dich durch ein interaktives Menü:

  1. Bestätige die Abfrage „Create a Home Assistant OS VM?“ mit Yes (Enter).
  2. Wähle zwischen [Default] und [Advanced]:
    • Default Settings (empfohlen): Erstellt automatisch eine VM mit 2 CPU-Kernen, 4 GB RAM, 32 GB Speicherplatz und UEFI-Bios.
    • Advanced Settings: Ermöglicht die Anpassung von VM-ID, CPU-Kernen, RAM, Storage-Pool und VLANs.
  3. Das Skript lädt nun das neueste offizielle HAOS-KVM-Image herunter, konfiguriert die VM und startet sie automatisch.

Hardware an VM durchreichen

USB-Passthrough für Zigbee-, Z-Wave- oder Bluetooth-Sticks.

Falls du USB-Hardware (z. B. Sonoff Zigbee Dongle, ConBee II, Z-Wave-Stick) nutzt:

  1. Wähle die neu erstellte HomeAssistant VM in Proxmox aus.
  2. Gehe auf Hardware ➔ Hinzufügen ➔ USB-Gerät.
  3. Wähle „USB-Hersteller/Geräte-ID nutzen“ oder „USB-Port nutzen“ und wähle deinen Stick aus.
  4. Klicke auf Hinzufügen. Der Stick wird direkt in HAOS verfügbar.

HomeAssistant einrichten

Jetzt kann die Einrichtung von HomeAssistant wie gewoht über das Webinterface erfolgen. Die IP Adresse kann man leicht über die Console erfahren.

Wichtige Proxmox-Tipps für HomeAssistant

  • Snapshots vor Updates: Erstelle vor größeren HomeAssistant-Updates in Proxmox unter VM ➔ Snapshots einen Wiederherstellungspunkt. Bei Problemen kannst du das gesamte System innerhalb weniger Sekunden zurückrollen.
  • Proxmox Backups (PBS oder Lokal): Richte unter Datacenter ➔ Backup einen automatischen Zeitplan ein (z. B. 1x wöchentlich nachts), um die gesamte VM im laufenden Betrieb extern zu sichern.
  • Feste IP-Adresse: Vergebe im Router (z. B. FRITZ!Box) eine feste IP-Adresse für die MAC-Adresse der VM, damit Home Assistant im Netzwerk immer unter derselben Adresse erreichbar bleibt.

Bilder

HomeAssistant: Docker vs. HAOS

Die Wahl zwischen Home Assistant Operating System (HAOS) und Home Assistant Container (Docker) läuft primär auf die Frage hinaus: Möchtest du ein schlüsselfertiges Appliance-System mit Add-on-Store oder maximale Kontrolle über einen bestehenden Server?

Direkter Vergleich

KriteriumHome Assistant OS (HAOS)Home Assistant Container (Docker)
InstallationsartBares Betriebssystem (Bare-Metal) oder Hypervisor-VMDocker-Container (homeassistant/home-assistant)
Add-on Store (Supervisor)Ja (Integrierter Store für Zigbee2MQTT, Node-RED etc.)Nein (Dienste werden als eigene Container verwaltet)
System-Updates1-Click-Updates über die Web-OberflächeÜber Container-Management (docker compose, Watchtower etc.)
BackupsNative Full/Partial Backups inklusive aller Add-onsSichern des /config-Ordners (+ separate Backup-Routine für externe Container)
HACS SupportJaJa (manuell oder per Script im Config-Ordner)
USB-Pass-ThroughAutomatisch/Nativ im OSManuell per --device oder devices: in docker-compose.yml
WartungsaufwandMinimal („Appliance“-Gefühl)Mittel bis Hoch (Docker-Kenntnisse erforderlich)
Ressourcen-EffizienzReserviert das ganze System / die VMSehr sparsam, teilt Ressourcen mit anderen Containern

Home Assistant Operating System (HAOS)

HAOS ist ein minimales, Linux-basiertes Betriebssystem, das speziell für Home Assistant entwickelt wurde. Es läuft als Komplettpaket auf Raspberry Pi, Mini-PCs (NUC) oder als virtuelle Maschine (z. B. unter Proxmox, ESXi, VirtualBox).

Vorteile

  • Integrierter Add-on Store: Zusätzliche Dienste wie Zigbee2MQTT, Mosquitto Broker, Node-RED, InfluxDB oder ESPHome lassen sich mit einem Klick installieren, konfigurieren und automatisch über den Home Assistant Supervisor verwalten.
  • Vollständiges Backup-System: Ein Klick erstellt ein vollständiges Abbild des Systems samt allen Add-ons, Konfigurationen und Datenbanken, das auf jeder anderen HAOS-Instanz wiederhergestellt werden kann.
  • Einfache Hardware-Anbindung: USB-Sticks (Zigbee, Z-Wave, Bluetooth) werden vom Betriebssystem direkt erkannt und ohne Konfigurationsaufwand durchgereicht.

Nachteile

  • Mangelnde Flexibilität auf Host-Ebene: Der Zugriff auf das zugrundeliegende OS ist stark eingeschränkt (kein normales Debian/Ubuntu darunter).
  • Exklusive Hardware-Nutzung: Wird HAOS Bare-Metal installiert, gehört die gesamte Hardware ausschließlich Home Assistant.

Die Architektur von HAOS (mit Supervisor)

HAOS basiert auf einem minimalen, extrem schlanken Linux-Betriebssystem (entwickelt mit Buildroot), das als Spezial-Hypervisor für Docker-Container agiert. Der Anwender interagiert nicht direkt mit dem Linux-Host, sondern vollständig über die Web-Oberfläche von Home Assistant.

Plaintext

+-----------------------------------------------------------------------+
|                         Home Assistant Frontend                       |
+-----------------------------------------------------------------------+
|  HA Core Container  |  Supervisor Container  |  Add-on Container A/B… |
+-----------------------------------------------------------------------+
|                            Docker Engine                              |
+-----------------------------------------------------------------------+
|                   Home Assistant Operating System (HAOS)               |
+-----------------------------------------------------------------------+
|                     Hardware / VM (x86, RPi, etc.)                    |
+-----------------------------------------------------------------------+

Die Schlüsselkomponente: Der Supervisor

Der Supervisor ist selbst ein spezieller Docker-Container mit erweiterten Privilegien, der als Steuerzentrale und Paketmanager dient:

  • Container-Orchestrierung: Er lädt, startet, stoppt und aktualisiert sowohl das eigentliche Home Assistant Core als auch alle installierten Add-ons.
  • Add-on Management: Add-ons in HAOS sind im Grunde vordefinierte Docker-Container. Der Supervisor konfiguriert sie automatisch, verbindet ihre Netzwerke und kümmert sich um Umgebungsvariablen.
  • Systemsteuerung: Er steuert Host-Funktionen wie Netzwerkeinstellungen, USB-Hardware-Erkennung, System-Updates und das Erstellen von Komplett-Backups (Snapshots).
  • Ingress-Proxy: Über die Ingress-Technologie bettet der Supervisor die Web-Oberflächen von Add-ons (z. B. Node-RED oder Zigbee2MQTT) direkt als Nahtlos-Reiter in die Home Assistant UI ein.

Home Assistant Container (Docker)

Bei dieser Variante läuft nur das Home Assistant Core-Image als Container auf einem beliebigen Linux-Host (z. B. Ubuntu, Debian, Alpine) oder einem NAS (Synology, QNAP, Unraid).

Vorteile

  • Perfekt für Multi-Service-Server: Ideal, wenn auf demselben Host bereits Docker-Dienste wie Plex, Nextcloud, AdGuard, Portainer oder Traefik laufen.
  • Volle Kontrolle: Voller Zugriff auf das Host-Betriebssystem, Netzwerkeinstellungen, Mounts und Systemressourcen.
  • Geringer Overhead: Kein Overhead durch eine zusätzliche VM oder Supervisor-Dienste.

Nachteile

  • Kein Supervisor / Keine Add-ons: Der Reiter „Add-ons“ fehlt in der Oberfläche komplett. Dienste wie Mosquitto oder Zigbee2MQTT müssen als eigene Docker-Container via docker-compose aufgesetzt und manuell mit Home Assistant verknüpft werden.
  • Manuelle Hardware-Zuordnung: USB-Geräte (z. B. /dev/ttyUSB0 oder /dev/serial/by-id/...) müssen explizit in der Container-Konfiguration durchgereicht werden.
  • Getrennte Backup-Logik: Die Sicherung von Home Assistant deckt nur den Konfigurationsordner ab. Datenbanken oder extern laufende Container-Dienste müssen separat gesichert werden.

Die Architektur von HA Container (Reines Docker)

Bei der reinen Container-Installation entfällt die Betriebssystem- und Supervisor-Schicht komplett. Du betreibst lediglich den offiziellen Image-Container homeassistant/home-assistant auf einem von dir selbst verwalteten Docker-Host.

Plaintext

+-----------------------------------------------------------------------+
|                         Home Assistant Frontend                       |
+-----------------------------------------------------------------------+
|                          HA Core Container                            |
+-----------------------------------------------------------------------+
|     Docker Engine  +  Manuelle Container (Zigbee2MQTT, Mosquitto…)    |
+-----------------------------------------------------------------------+
|                 Beliebiges Host-OS (Debian, Ubuntu, NAS)              |
+-----------------------------------------------------------------------+
|                                Hardware                               |
+-----------------------------------------------------------------------+

Was hier anders ist:

  • Kein Supervisor: Der Reiter Add-ons existiert in der Benutzeroberfläche nicht.
  • Manuelle Container-Verwaltung: Zusätzliche Dienste (wie MQTT-Broker oder Datenbanken) werden nicht per Klick aus der UI installiert, sondern über deine eigene docker-compose.yml oder Verwaltungstools wie Portainer aufgesetzt.
  • Netzwerk & Hardware: Netzwerkports, USB-Geräte (z. B. Zigbee-Sticks) und Ordner-Mounts (volumes) müssen manuell im Docker-Run-Befehl oder Compose-File definiert werden.

Entscheidungshilfe

Wähle HAOS, wenn:

  • Du eine dedizierte Hardware (z. B. Raspberry Pi, refurbished Mini-PC) ausschließlich für Home Automation nutzen willst.
  • Du HAOS bequem als VM unter Proxmox VE betreiben möchtest.
  • Du Add-ons (Zigbee2MQTT, Node-RED, ESPHome etc.) ohne Aufwand direkt aus der HA-Oberfläche heraus installieren und verwalten willst.

Wähle Docker, wenn:

  • Du bereits einen bestehenden Linux-Server oder ein NAS betreibst, auf dem Docker-Stacks laufen.
  • Du deinen eigenen Update- und Backup-Workflow (z. B. via Git, Docker Compose, BorgBackup) etabliert hast.
  • Du die volle Kontrolle über Netzwerkkonfigurationen und Dateisysteme auf Host-Ebene behalten möchtest.

10 versteckte ESP32 Features

Der ESP32 gehört zu den beliebtesten Mikrocontrollern für DIY-Elektronikprojekte und IoT-Anwendungen.

In seinem Video „10 Hidden ESP32 Features Most Makers Don’t Know About“ zeigt der Kanal Tech Panda zehn weniger bekannte Funktionen des ESP32, mit denen Projekte intelligenter, stromsparender und eleganter umgesetzt werden können.

1. Der ULP-Koprozessor (Ultra Low Power)

Batterie- und Akkuprojekte stehen immer vor demselben Dilemma: Läuft der Hauptprozessor (die beiden Tensilica-Cores) durchgehend, ist die Batterie in kürzester Zeit leer. Der traditionelle Ausweg ist der Deep Sleep, bei dem der ESP32 fast alle Komponenten abschaltet und nur wenige Mikroampere verbraucht. Allerdings führt die Haupt-CPU im Deep Sleep keinerlei Code mehr aus – periodisches Aufwachen über Timer oder externe Interrupts ist die Folge.

Hier kommt der ULP-Koprozessor ins Spiel: Ein eigenständiger, extrem stromsparender Prozessor innerhalb des ESP32. Während die beiden Hauptkerne im Tiefschlaf verharren, läuft der ULP weiter. Er kann eigenständig analoge Sensoren (ADC) auslesen, I²C-Geräte abfragen oder Digital-Pins überwachen. Erst wenn ein definierter Schwellenwert erreicht wird (z. B. ein Türsensor schlägt an oder die Bodenfeuchte fällt unter 20 %), schickt der ULP ein Signal zum Hauptprozessor und weckt diesen auf. Das ermöglicht Monatelangen oder sogar Jahrelangen Batteriebetrieb.

2. Die flexible GPIO-Matrix

Wer eigene Platinen (PCBs) entwickelt, kennt den Frust: Leiterbahnen überschneiden sich, Durchkontaktierungen (Vias) werden nötig, und das PCB-Layout wird unübersichtlich. Bei vielen Standard-Mikrocontrollern sind Hardware-Schnittstellen wie UART (Seriell), SPI oder I²C starr an ganz bestimmte Pins gebunden.

Der ESP32 nutzt stattdessen eine interne GPIO-Matrix. Man kann sie sich wie einen per Software steuerbaren Kreuzschienen-Schalter vorstellen. Fast jedes interne Peripheriesignal lässt sich im Code flexibel auf nahezu jeden beliebigen physikalischen Pin umleiten:

C++

// Beispiel: I2C frei auf PIN 21 & 22 oder andere freie Pins legen
Wire.begin(SDA_PIN, SCL_PIN);

Das vereinfacht das Entflechten von Leiterplatten enorm, da Pins so gewählt werden können, wie sie auf dem Board am günstigsten liegen. Hinweis: Einige Spezial-Pins (wie z. B. reine Eingangs-Pins GPI 34–39) unterliegen Beschränkungen, weshalb vor der PCB-Bestellung stets ein Blick in das Pinout-Diagramm lohnt.

3. Integrierte kapazitive Touch-Pins

Für interaktive Benutzeroberflächen werden meist physische Taster, Mikroschalter oder externe Touch-Module verbaut. Das kostet Platz, Budget und erfordert Aussparungen im Gehäuse.

Viele ESP32-Varianten bieten bis zu 10 eingebaute kapazitive Touch-Pins. Der Chip misst die elektrische Kapazität an diesen Eingängen. Schließt man einfach ein Stück Draht, eine Platine oder eine Kupferfolie an den Pin an, erkennt der ESP32 die Kapazitätsänderung, wenn sich ein menschlicher Finger nähert.

  • Gehäuse-Design: Da kapazitive Felder Materialien durchdringen, lassen sich unsichtbare Schalter hinter Acrylglas, Holz oder 3D-Druck-Gehäusen anbringen.
  • Praxis-Tipp: Kapazitätswerte schwanken je nach Luftfeuchtigkeit, Kabellänge und Materialstärke. Man sollte im Code stets den Ruhewert kalibrieren und einen dynamischen Schwellenwert festlegen.

4. Direct Memory Access (DMA) für grafik- und audiointensive Aufgaben

Sobald ein Mikrocontroller hochauflösende Displays (z. B. TFT-LCDs) ansteuert, LED-Matrizen aktualisiert oder Audiosignale ausgibt, gerät die Haupt-CPU schnell an ihre Grenzen. Müssen Tausende Bytes pro Sekunde Bit für Bit vom Prozessor an die SPI- oder I²S-Schnittstelle übertragen werden, bleibt keine Rechenzeit mehr für Logik, Sensorabfragen oder Netzwerkkonsistenz. Die Folge: Verzögerte Tasterreaktionen und stotternde Animationen.

Die Lösung heißt Direct Memory Access (DMA). Mit DMA überträgt eine spezielle Hardware-Einheit Datenblöcke direkt aus dem RAM an das jeweilige Peripheriegerät (z. B. den Display-Controller), ohne dass die Haupt-CPU einen einzigen Befehl ausführen muss. Der Hauptprozessor gibt lediglich den Befehl „Übertrage Puffer A an SPI“ und kann sofort mit anderen Aufgaben fortfahren. Das Ergebnis sind flüssige 60-FPS-Grafiken und unterbrechungsfreie Audio-Wiedergabe.

5. Wi-Fi Promiscuous Mode (Netzwerk-Paketanalyse)

Im Normalbetrieb filtert das WLAN-Modul des ESP32 den gesamten Datenverkehr in der Luft und verarbeitet nur Datenpakete, die explizit an seine eigene MAC-Adresse gerichtet sind.

Aktiviert man den Promiscuous Mode, schaltet die Wi-Fi-Hardware ihre Filter ab und reicht alle empfangenen IEEE 802.11-Datenpakete des aktuellen Kanals an die Anwendung weiter.

  • Kein Hacking-Tool: Der ESP32 kann dadurch keine verschlüsselten Nutzdaten oder Passwörter mitlesen.
  • Sinnvolle Anwendungsfälle:
    • Anwesenheitserkennung: Erfassung von Anwesenheiten im Raum anhand der Probe-Requests von Smartphones (ohne dass diese mit dem WLAN verbunden sein müssen).
    • WLAN-Analyse: Messung von Kanalbelegungen, Signalstärken (RSSI) und Paket-Dichten zur Optimierung von Heimnetzwerken.

6. Der versteckte Hall-Sensor

Auf dem Die des klassischen ESP32-D0WD-Chips befindet sich ein integrierter Hall-Sensor. Dieser reagiert auf externe Magnetfelder und verändert eine interne Spannung, die über den ADC ausgelesen werden kann.

  • Ehrliche Einschätzung: Der interne Hall-Sensor ist recht rauschintensiv, temperaturempfindlich und in neueren ESP32-S- oder C-Serien teilweise nicht mehr verbaut. Für Präzisionsmessungen ist er ungeeignet.
  • Cleverer Hack: Als „Null-Komponenten-Lösung“ reicht er dennoch aus. Bringt man beispielsweise einen kleinen Neodym-Magneten am Deckel eines Projektgehäuses an, kann der ESP32 über Mittelwertbildung und Software-Filter erkennen, ob das Gehäuse geöffnet oder geschlossen ist – völlig ohne externe Bauteile.

7. RTC-Speicher zur Datensicherung im Deep Sleep

Wenn ein ESP32 aus dem Deep Sleep aufwacht, führt er im Grunde einen kompletten System-Neustart (Reset) durch. Alle Variablen im normalen RAM werden gelöscht, Schleifenzähler zurückgesetzt und der aktuelle Programmzustand geht verloren.

Der ESP32 verfügt jedoch über einen speziellen RTC-Speicher (SRAM), der auch während des Tiefschlafs mit Strom versorgt bleibt. In der Arduino-IDE lässt sich eine Variable extrem einfach in diesen persistenten Bereich auslagern:

C++

RTC_DATA_ATTR int bootCount = 0; // Übersteht den Deep Sleep!

Praktische Nutzenszenarien:

  • Speichern von Zählern (z. B. „Wie oft wurde der Sensor ausgelöst?“).
  • Zwischenspeichern von Messwerten, um das energieintensive WLAN-Modul erst nach jedem 10. Messwert einzuschalten und die Daten gebündelt zu senden.

8. Interner On-Chip-Temperatursensor

Dieser integrierte Sensor misst nicht die Raum- oder Umgebungstemperatur, sondern die Eigentemperatur des ESP32-Siliziumchips.

Da der Chip unter hoher Last (z. B. dauerhaftes Senden via Wi-Fi/Bluetooth) oder in dicht verschlossenen Gehäusen warm wird, dient dieser Sensor primär Diagnose- und Schutzzwecken:

  • Überwachung der Abwärme in engen 3D-Druck-Gehäusen.
  • Erkennung von Überhitzung, wenn der ESP32 nahe an heißen Bauteilen (wie Spannungswandlern oder Leistungstransistoren) platziert ist.
  • Automatisches Drosseln der Rechenleistung bei drohender Überhitzung.

9. Experimentelle AM-Radio-Aussendungen

Über die internen Hochfrequenz-Peripherien (wie I²S, DAC und intern generierte Taktfrequenzen) kann der ESP32 hochfrequente Rechtecksignale erzeugen. Durch gezielte Modulation entstehen Oberwellen im Mittelwellen-Frequenzbereich (AM-Radio).

Wird ein kurzer Draht als Behelfsantenne an einen GPIO-Pin angeschlossen, kann ein nahestehendes AM-Radio diese Töne oder einfache Signale empfangen.

  • Wichtiger Hinweis: Dies ist ein reines Labor- und Lernexperiment zur Demonstration von Hochfrequenztheorie. Da ungeschirmte Aussendungen Funkstörungen verursachen können, dürfen keine langen Antennen verwendet oder echte Radiobänder gestört werden.

10. Dynamische CPU-Frequenzsteuerung (Dynamic Frequency Scaling)

Werksseitig läuft der ESP32 meist mit der vollen Taktrate von 240 MHz (oder 160 MHz). Wenn der Chip jedoch lediglich auf einen Tasterdruck wartet oder alle paar Sekunden ein simples I²C-Signal ausliest, ist diese hohe Rechenleistung reine Energieverschwendung.

Über das Espressif IDF framework oder einfache Arduino-Befehle lässt sich die Taktfrequenz zur Laufzeit dynamisch anpassen:

C++

setCpuFrequencyMhz(80); // Frequenz auf 80 MHz drosseln (spart Strom)
// ... einfache Sensorabfrage durchführen ...
setCpuFrequencyMhz(240); // Für rechenintensive Wi-Fi-Transfers wieder hochtakten

Durch das Drosseln des Takts auf 80 MHz oder 40 MHz sinkt die Stromaufnahme im aktiven Betrieb drastisch. Dies ist kein gefährliches Übertakten, sondern ein professionelles Powermanagement für akkubetriebene IoT-Geräte.

Fazit

Der ESP32 ist weit mehr als nur ein einfaches Wi-Fi-Board. Wer Features wie den ULP-Koprozessor, DMA, die GPIO-Matrix und dynamische Frequenzskalierung gezielt einsetzt, hebt seine DIY-Projekte auf ein professionelles Niveau und holt das Maximum an Effizienz aus der Hardware heraus.

HomeAssistant mit Docker einrichten

Mit Docker lässt sich Home Assistant zusammen mit dem MQTT-Broker Mosquitto auf einem Ubuntu-Server schnell, sauber und isoliert betreiben. Diese Anleitung führt Schritt für Schritt durch die Installation unter /home/homeassistant/docker.

Docker installieren

Falls Docker auf dem Ubuntu-System noch nicht eingerichtet ist, lässt es sich über das offizielle Repository installieren:

# Paketlisten aktualisieren und Voraussetzungen installieren
sudo apt update && sudo apt install -y ca-certificates curl gnupg lsb-release

# Offiziellen Docker GPG-Schlüssel hinzufügen
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Repository einrichten
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Docker Engine & Compose Plugin installieren
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# Aktuellen Benutzer zur docker-Gruppe hinzufügen (vermeidet sudo bei Docker-Befehlen)
sudo usermod -aG docker $USER
newgrp docker

Verzeichnisstruktur und Mosquitto-Konfiguration erstellen

Erstellen Sie die benötigten Ordner für die persistenten Daten von Home Assistant und Mosquitto:

sudo mkdir -p /home/homeassistant/docker/config
sudo mkdir -p /home/homeassistant/docker/mosquitto/config \
              /home/homeassistant/docker/mosquitto/data \
              /home/homeassistant/docker/mosquitto/log

# D-Bus Verzeichnis auf dem Host sicherstellen (wird von Home Assistant genutzt)
sudo mkdir -p /run/dbus

# Besitzrechte für das Arbeitsverzeichnis an den aktuellen Benutzer übertragen
sudo chown -R $USER:$USER /home/homeassistant/docker

cd /home/homeassistant/docker

Die Configdatei „mosquitto/config/mosquitto.conf“ für Mosquitto erstellen, und mit folgenden Code befüllen:

listener 1883
allow_anonymous false
password_file /mosquitto/config/passwords
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log

Schreibrechte anpassen:

sudo chown -R 1883:1883 /home/homeassistant/docker/mosquitto

Docker Compose einrichten und Container starten

Anlegen der Datei „docker-compose.yml“ mit folgendem Inhalt:

services:
  homeassistant:
    container_name: homeassistant
    image: ghcr.io/home-assistant/home-assistant:stable
    volumes:
      - /home/homeassistant/docker/config:/config
      - /etc/localtime:/etc/localtime:ro
      - /run/dbus:/run/dbus:ro
    restart: unless-stopped
    privileged: true
    network_mode: host

  mosquitto:
    container_name: mosquitto
    image: eclipse-mosquitto:latest
    restart: unless-stopped
    ports:
      - "1883:1883"
      - "9001:9001"
    volumes:
      - /home/homeassistant/docker/mosquitto/config:/mosquitto/config
      - /home/homeassistant/docker/mosquitto/data:/mosquitto/data
      - /home/homeassistant/docker/mosquitto/log:/mosquitto/log

MQTT-Benutzer anlegen & Stack starten

Wechselne in das Arbeitsverzeichnis und starte zuerst ausschließlich den Mosquitto-Container, um den MQTT-Benutzer anzulegen:

cd /home/homeassistant/docker
docker compose up -d mosquitto

Legen nun den Benutzer für die MQTT-Geräte und Home Assistant an (z. B. homeassistant). Verwende bewusst nicht den Parameter -c, damit bestehende Konfigurationen nicht überschrieben werden:

docker exec -it mosquitto mosquitto_passwd /mosquitto/config/passwords homeassistant

Sichere die Dateirechte der neu erstellten Passwort-Datei ab, um Warnungen und Berechtigungsfehler im Mosquitto-Log zu vermeiden:

sudo chmod 600 /home/homeassistant/docker/mosquitto/config/passwords
sudo chown 1883:1883 /home/homeassistant/docker/mosquitto/config/passwords

Und anschließend den gesamten Stack starten:

docker compose up -d

Home Assistant Ersteinrichtung & MQTT-Integration

  • Öffne im Browser http://<IP-DEINES-SERVERS>:8123.
  • Erstelle das Administrator-Konto und schließe die Ersteinrichtung ab.
    • Erstellen eines Admin Kontos
    • Wählen des Standortes
    • Erlaubnis zum Teile anonymisierte Daten
  • Navigiere zu EinstellungenGeräte & DiensteIntegration hinzufügen.
  • Suchen nach MQTT und wählen Sie es aus.
  • Trage die Verbindungsdaten ein:
    • Broker: localhost (oder die IP-Adresse des Ubuntu-Servers)
    • Port: 1883
    • Benutzername: homeassistant
    • Passwort: Das in Schritt 4 vergebene Passwort

MQTT-Benutzer ändern und hinzufügen

Im Smart Home ist es ratsam, verschiedenen Geräten eigene Zugangsdaten zuzuweisen oder Passwörter bei Bedarf anzupassen. Der Mosquitto-Broker erlaubt das Anlegen mehrerer Benutzer sowie das Ändern bestehender Passwörter.

Weitere Benutzer hinzufügen

Um einen neuen Benutzer (z. B. tasmota für deine Steckdosen) anzulegen, führe folgenden Befehl aus:

docker exec -it mosquitto mosquitto_passwd /mosquitto/config/passwords tasmota

Passwörter bestehender Benutzer ändern

Das Ändern eines Passworts für einen bereits existierenden Benutzer (z. B. homeassistant) erfolgt mit demselben Befehl:

docker exec -it mosquitto mosquitto_passwd /mosquitto/config/passwords homeassistant

Dateirechte absichern & Mosquitto neu starten

Nach jedem Erstellen oder Ändern von Benutzern solltest du die Rechte der Passwort-Datei erneut absichern und den Container neu starten, damit Mosquitto die Änderungen lädt:

# Rechte der Passwort-Datei sichern
sudo chmod 600 /home/homeassistant/docker/mosquitto/config/passwords
sudo chown 1883:1883 /home/homeassistant/docker/mosquitto/config/passwords

# Mosquitto-Container neu starten
docker restart mosquitto

Warum zwei Docker-Container? Das Zusammenspiel von Home Assistant & Mosquitto

Ein zentrales Prinzip von Docker lautet: Ein Container pro Aufgabe (Single Responsibility Principle). Anstatt alle Smart-Home-Dienste in ein einzelnes, träges System zu packen, teilen wir die Aufgaben auf zwei spezialisierte Container auf.

Die Rollen der beiden Container

  • Mosquitto (Der Postbote)
    • Mosquitto ist ein extrem leichtgewichtiger MQTT-Broker. Seine einzige Aufgabe ist das schnelle, zuverlässige Empfangen und Weiterleiten von Nachrichten im Netzwerk. Er kennt keine Smart-Home-Logiken, Szenen oder Dashboards, sondern nimmt Telegramme von Geräten entgegen und verteilt sie an alle Abonnenten.
  • Home Assistant (Das Gehirn)
    • Home Assistant ist die smarte Schaltzentrale. Hier laufen die Automatisierungen, die Benutzeroberfläche (Dashboard) und die Logik. Home Assistant wertet Sensorwerte aus, führt Zeitpläne aus und steuert deine Geräte.

Wie die Container zusammenarbeiten

Die Kommunikation zwischen den Komponenten folgt dem Publish/Subscribe-Prinzip (Veröffentlichen und Abonnieren):

[ Tasmota-Steckdose ]  ---(1. Schalterzustand senden)--->  [ Mosquitto Broker ]
                                                                  |
                                                    (2. Nachricht weiterleiten)
                                                                  v
[ Dashboard / User ]   <---(3. Status anzeigen)-----------  [ Home Assistant ]
  • Ein Gerät sendet Daten (Publish): Wenn du beispielsweise eine Tasmota-Steckdose manuell einschaltest, sendet das Gerät eine MQTT-Nachricht (z. B. stat/steckdose1/POWER = ON) an den Mosquitto-Container auf Port 1883.
  • Mosquitto verteilt die Daten: Mosquitto prüft, wer sich für das Thema (Topic) stat/steckdose1/POWER interessiert.
  • Home Assistant empfängt Daten (Subscribe): Da Home Assistant über die MQTT-Integration beim Mosquitto-Broker angemeldet ist und das Thema abonniert hat, empfängt es die Nachricht sofort und aktualisiert den Schalterstatus auf dem Dashboard.
  • Befehle senden (Der umgekehrte Weg): Klickst du in Home Assistant auf „Ausschalten“, schickt Home Assistant eine Nachricht (cmnd/steckdose1/POWER = OFF) an Mosquitto. Mosquitto reicht diesen Befehl an die Steckdose weiter, die daraufhin das Relais öffnet.

Die Vorteile dieser Trennung

  • Unabhängigkeit
    • Wenn Home Assistant z. B. für ein Update neu gestartet wird, läuft der Mosquitto-Broker ununterbrochen weiter. Deine MQTT-Geräte verlieren nie die Verbindung zum Broker und können weiterhin Nachrichten puffern.
  • Leistung & Stabilität
    • Mosquitto ist in C geschrieben, extrem ressourcenschonend und arbeitet hochparallel. Es verbraucht kaum Arbeitsspeicher und entlastet Home Assistant spürbar.
  • Flexibilität
    • Du kannst jederzeit weitere Systeme (wie z. B. Node-RED, eigene Python-Scripte oder WLED-Monitore) an denselben Mosquitto-Broker anbinden, ohne die Konfiguration von Home Assistant anpassen zu müssen.

FAQ

HomeAssistant Admin Passwort vergessen

Um das Passwort des HomeAssistant Admin zu löschen, muss man folgende Schritte durchführen:

  • auf des Ubuntu-Server einloggen (ssh)
  • In das Arbeitsverzeichnis wechseln
    • cd /home/homeassistant/docker
  • Home Assistant stoppen
    • docker compose stop homeassistant
  • Auth-Dateien im Config-Ordner sichern & löschen
    • Navigiere in den internen .storage-Ordner von Home Assistant. Dort verwaltet Home Assistant die Benutzerkonten:
      • cd /home/homeassistant/docker/config/.storage
    • Lösche die Dateien für die Benutzerverwaltung und Authentifizierung (oder benenne sie zur Sicherheit um):
      • sudo mv auth auth.bak
      • sudo mv onboarding onboarding.bak
      • sudo mv auth_provider.homeassistant auth_provider.homeassistant.bak
  • Home Assistant Container wieder starten
    • cd /home/homeassistant/docker
    • docker compose start homeassistant
  • Neuen Admin-Account im Browser anlegen:
    • Öffne im Browser erneut http://<IP-DEINES-SERVERS>:8123.
    • Home Assistant begrüßt dich nun wieder mit dem Welcome- / Ersteinrichtungs-Bildschirm.
    • Erstelle einen neuen Administrator-Benutzer (du kannst denselben Benutzernamen wie vorher verwenden).
    • Nach dem Abschließen des Assistenten gelangst du wieder auf dein gewohntes Dashboard. Alle deine Einstellungen, Integrationen, Skripte und Karten sind weiterhin vollständig vorhanden.

Die gesammte Installation als Bash Script: homeassistant_install.sh

Ersatzteil aus dem 3D-Drucker: Drehriegel für die Kofferraumklappe (Audi A4)

Nach ein paar Jahren hat der originale Drehriegel für das Warndreieck im Kofferraum den Geist aufgegeben – ein bekanntes Problem, da der Kunststoff mit der Zeit spröde wird.

Internetsuche

Eine kleine Suche im Internet findet schnell ein passende 3D Druckdatei:

Audi A4 / A6 – Drehriegel Warndreieck (thingiverse)

Ein einfacher Download, ein schneller Druck – mit PLA – und eingebaut: Passt perfekt, sitzt stramm und die Klappe hält wieder wie am ersten Tag!

Konstruktion

Nach dem ersten Ausdrucken der Datei von Thingiverse, habe ich das defekte Teil auch nochmal mit OpenSCAD – mit Hilfe von KI – konstruiert: Das Altteil vermessen und kurz in OpenSCAD als parametrisches 3D-Modell neu aufgebaut.

Wieder einmal ein schönes Beispiel dafür, wie praktisch der 3D-Druck im Alltag ist – kleine Reparatur, große Wirkung und Plastikmüll gespart. 💡

Bilder

LED Info Panel

Hardware

Dieses 3D Modell auf MakerWorld war der Anfang: LED Matrix Clock (Modell-ID: 898272)

Der Druck ging problemlos, dafür habe ich folgende Materialien verwendet:

  • BambuLab Grau
  • ein PLA transparentes Glitzer Filament (PLA, 1.75mm) von iSANMATE (Amazon)

Die elektronischen Bauteile sind:

Die Verkabelung zwuischen dem ESP und dem Display ist:

 ESP8266 ----- Max7219
  VCC ------------- VCC
  GND ------------- GND
  D8  ------------- DIN
  D7  ------------- CS
  D6  ------------- CLK

Software

Die Software ist im Github gespeichert (aktuell noch nicht final): https://github.com/voyagersoft/esp-led-uhr

Aktuell wird ein WLAN Accesspoint geöffnet, und man kann in einem Eingabefeld den Text eingeben der dann als Laufschrift auf dem Display läuft.

In einer älteren Version wurde Beispiel-Texte auf dem Display angezeigt.

Bilder

Videos

Minecraft WLED Lampecraft Lampe

Hardware

Bei Makerworld gibt es ein schönes 3D Modell: eine Minecraft Lampe

Ich habe die Grundplatte redesigned: statt einer runden WS2812 verwende ich ein 8×8 WS2812 (mehr Lichteffekte und heller). Die STEP Datei dazu ist hier: esp-case.step

Die verwendeten Materialien:

  • ein D1 MINI ESP32 (Aliexpress, Amazon)
  • Filament:
    • BambuLab Grau
    • ein PLA transparentes Glitzer Filament (PLA, 1.75mm) von iSANMATE (Amazon)

Software

Als Software nutzt ich hier WLED, das man bequem per Browser (Edge oder Chrome, nicht mit Firefox) installieren kann: Install WLED

Bilder

Videos