Energie-Cockpit: Homelab-Resilienz mit HA & n8n
Einleitung: Warum wir über unsere Heimenergie nachdenken müssen – Lektionen aus dem Blackout
Servus, Homelab-Kollegen! Wer von uns kennt es nicht: Man hat stundenlang an der perfekten Proxmox-VM oder dem ausgeklügelten Docker-Stack gebastelt, nur um dann bei einem kurzen Stromausfall festzustellen, dass das ganze Kartenhaus zusammenfällt. Als ich neulich den Bericht über den Blackout in Spanien und Portugal gelesen habe, hat mich das wieder mal daran erinnert, wie fragil unsere Energieversorgung sein kann – und wie wichtig es ist, dass wir als Admins und Heimlabor-Enthusiasten uns damit auseinandersetzen, wie wir unsere Systeme resilienter gestalten können. Der Bericht betonte, dass erneuerbare Energien und fehlende Automatisierung eine Rolle spielten. Genau hier können wir ansetzen: Indem wir unsere eigene Heimenergieversorgung monitoren und automatisieren!
In meiner Erfahrung ist ein proaktives Energiemanagement im Heimlabor nicht nur gut für die Umwelt und den Geldbeutel, sondern vor allem für die Stabilität deiner Services. Stell dir vor, du könntest nicht nur sehen, wann der Strom weg ist, sondern auch automatisch darauf reagieren, kritische Systeme herunterfahren oder zumindest Benachrichtigungen erhalten. Genau das ist das Ziel dieses Guides. Wir werden Home Assistant als zentrale Sammelstelle für unsere Energiedaten nutzen und n8n einspannen, um auf Basis dieser Daten intelligente Automatisierungen zu bauen.
Voraussetzungen: Das brauchst du für dein Energie-Cockpit
Bevor wir loslegen, lass uns kurz checken, was du für dieses Projekt benötigst. Keine Sorge, vieles davon hast du wahrscheinlich schon in deinem Heimlabor oder es ist leicht zu beschaffen.
Hardware-Anforderungen:
- Ein System für Home Assistant: Das kann ein Raspberry Pi 4 oder neuer sein, aber meine persönliche Empfehlung ist eine VM oder ein LXC auf deinem Proxmox-Server. Das gibt dir mehr Flexibilität und Performance.
- Ein System für n8n: Auch hier ist eine VM/LXC auf Proxmox oder ein Docker-Container auf einem bestehenden Server meine bevorzugte Wahl. n8n braucht etwas mehr Ressourcen als Home Assistant, wenn du komplexe Workflows hast.
- Smart Plugs oder Energiemesser: Geräte wie Shelly Plug S, TP-Link Kasa (mit Tasmota geflasht, falls du keine Cloud möchtest) oder ein Fronius Smart Meter (falls du eine PV-Anlage hast) sind ideal, um den Verbrauch einzelner Geräte oder deines gesamten Heimlabor-Stacks zu messen. Ich nutze selbst gerne Shelly-Produkte, da sie lokal ansteuerbar sind.
- Eine USV (Unterbrechungsfreie Stromversorgung): Absolut entscheidend! Eine USV mit Überwachungsfunktion (z.B. über USB oder Netzwerk, die NUT – Network UPS Tools – unterstützt) ist Gold wert. Ich habe eine APC Back-UPS, die ich via NUT auslesen kann.
- Optional: Ein MQTT-Broker: Falls du viele Tasmota-Geräte oder andere IoT-Sensoren hast, ist ein zentraler MQTT-Broker (wie Mosquitto) extrem nützlich. Du kannst ihn einfach als Docker-Container auf deinem Proxmox laufen lassen.
Software-Anforderungen:
- Home Assistant: Am besten die Home Assistant OS-Variante als VM auf Proxmox oder als Docker-Container.
- n8n: Als Docker-Container oder direkt in einer LXC-Umgebung.
- NUT (Network UPS Tools): Wenn deine USV das unterstützt, ist das die beste Methode, um die USV-Daten in Home Assistant zu bekommen.
- Grundlegende Linux-Kenntnisse: Für die Installation und Konfiguration der Dienste.
- Netzwerkkenntnisse: Verständnis von IP-Adressen, Ports und ggf. Firewall-Regeln.
Wichtig zu wissen: Wir werden uns hier auf eine Docker-Installation von n8n und Home Assistant (als Core-Installation oder über die Supervisor-Variante auf Proxmox) konzentrieren, da das in den meisten Heimlabor-Szenarien die flexibelste Lösung ist.
Schritt 1: Home Assistant als zentrale Energie-Schaltzentrale einrichten
Home Assistant ist das Herzstück unseres Energie-Cockpits. Hier kommen alle Daten zusammen und werden visualisiert. Mein Tipp: Installiere Home Assistant als VM auf Proxmox. Das ist stabil, performant und einfach zu managen.
Installation von Home Assistant (als Proxmox VM):
Lade das Home Assistant OS QCOW2 Image herunter und importiere es in Proxmox. Die offizielle Dokumentation ist hier sehr gut. Kurz zusammengefasst:
- Lade das Image herunter.
- Entpacke es (
gunzip). - Erstelle eine neue VM in Proxmox ohne Festplatte.
- Importiere das Image in die VM:
qm importdisk <VMID> <Pfad_zum_HA_Image.qcow2> <Storage_Name>
- Füge die importierte Disk als SATA- oder SCSI-Laufwerk zur VM hinzu und stelle sie als Boot-Disk ein.
- Starte die VM und folge dem Onboarding-Prozess im Browser.
Integration deiner Energiemesser und USV:
Sobald Home Assistant läuft, geht es ans Eingemachte: Datenquellen anbinden. Das ist der Punkt, an dem dein Heimlabor wirklich zum Leben erwacht.
Smart Plugs (z.B. Shelly):
Die meisten modernen Smart Plugs werden automatisch über die "Entdeckungsfunktion" von Home Assistant gefunden. Wenn nicht, füge sie manuell hinzu:
- Für Shelly-Geräte gibt es eine hervorragende Integration. Gib einfach die IP-Adresse deines Shelly-Geräts ein.
- Für Tasmota-Geräte ist MQTT der Königsweg. Stelle sicher, dass dein Tasmota-Gerät korrekt konfiguriert ist, um Daten an deinen MQTT-Broker zu senden.
# Beispiel für eine Tasmota-Integration via MQTT in configuration.yaml
# (falls nicht automatisch erkannt oder du spezifische Anpassungen brauchst)
sensor:
- platform: mqtt
name: "Heimlabor Gesamtverbrauch"
state_topic: "tele/tasmota_shelly_1/SENSOR"
value_template: "{{ value_json.ENERGY.Power }}"
unit_of_measurement: "W"
device_class: "power"
state_class: "measurement"
unique_id: "homelab_total_power"
- platform: mqtt
name: "Heimlabor Tagesverbrauch"
state_topic: "tele/tasmota_shelly_1/SENSOR"
value_template: "{{ value_json.ENERGY.Today }}"
unit_of_measurement: "kWh"
device_class: "energy"
state_class: "total_increasing"
unique_id: "homelab_daily_energy"
Nachdem du deine Geräte hinzugefügt hast, gehe zu "Einstellungen" -> "Dashboards" -> "Energie" und konfiguriere dort deine Energiequellen. Das ist wirklich intuitiv und gibt dir einen super Überblick!
USV-Integration mit NUT:
Wenn deine USV NUT unterstützt, ist die Integration in Home Assistant ein Kinderspiel. Zuerst musst du NUT auf einem System installieren, das per USB oder Netzwerk mit deiner USV verbunden ist (oft ist das der Proxmox-Host selbst oder eine spezielle VM/LXC).
Beispiel einer ups.conf auf deinem NUT-Server (z.B. Proxmox-Host):
# /etc/nut/ups.conf
[myups]
driver = usbhid-ups # Oder passender Treiber für deine USV
port = auto
desc = "My Home Lab UPS"
Dann in Home Assistant über "Einstellungen" -> "Geräte & Dienste" -> "Integration hinzufügen" nach "Network UPS Tools (NUT)" suchen. Gib die IP-Adresse deines NUT-Servers und den Namen deiner USV (hier: myups) ein. Home Assistant erstellt dann automatisch Sensoren für Batteriestand, Ladezustand, verbleibende Laufzeit und mehr. Diese Daten sind Gold wert, wenn es um Automatisierungen geht!
Schritt 2: Automatisierung mit n8n – Wenn der Strom schwächelt, reagiert dein Homelab
Jetzt kommt der spannende Teil: n8n. Mit n8n können wir komplexe Workflows erstellen, die auf Ereignisse in Home Assistant reagieren und intelligente Aktionen ausführen. Das ist die "Automatisierung" aus dem Blackout-Bericht, die wir in unserem Heimlabor umsetzen.
n8n installieren (als Docker-Container):
Die einfachste Methode ist über Docker. Erstelle ein Verzeichnis für n8n und dann eine docker-compose.yml:
version: '3.8'
services:
n8n:
image: n8nio/n8n
container_name: n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_HOST=your.n8n.domain.com # Oder die IP deines Hosts
- N8N_PORT=5678
- N8N_PROTOCOL=http # Oder https, wenn du einen Reverse Proxy nutzt
- WEBHOOK_URL=http://your.n8n.domain.com:5678/
- GENERIC_TIMEZONE=Europe/Berlin
volumes:
- ./n8n_data:/home/node/.n8n
Passe N8N_HOST und WEBHOOK_URL an deine Umgebung an. Dann starte den Container:
docker-compose up -d
Du solltest n8n nun unter http://your.n8n.domain.com:5678 erreichen können.
Beispiel-Workflow: Benachrichtigung bei Stromausfall oder kritischem Batteriestand
Stellen wir uns vor, der Strom fällt aus und die USV springt ein. Wir wollen eine Benachrichtigung erhalten und vielleicht sogar unsere Proxmox-VMs herunterfahren, wenn der Batteriestand kritisch wird. Das ist ein klassisches Szenario, das die Resilienz deines Homelabs enorm steigert.
Workflow-Schritte in n8n:
- Webhook-Trigger: Home Assistant sendet einen Webhook, wenn sich der Status der USV ändert.
- IF-Node: Prüfen, ob der Batteriestand unter einen Schwellenwert fällt oder die USV im Batteriebetrieb ist.
- Notification-Node: Eine Nachricht über Telegram, Discord oder E-Mail senden.
- Optional: SSH-Node: Befehl an Proxmox senden, um VMs herunterzufahren.
Hier ein Konzept, wie ein solcher n8n-Workflow aussehen könnte (als JSON, das du importieren kannst):
{
"nodes": [
{
"parameters": {
"path": "webhook-ups-status",
"authentication": "none"
},
"name": "Webhook (HA UPS Status)",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [250, 300]
},
{
"parameters": {
"conditions": [
{
"value1": "={{ $json.battery_level }}",
"operator": "smaller",
"value2": "20"
},
{
"value1": "={{ $json.ups_status }}",
"operator": "contains",
"value2": "On Battery"
}
],
"combineAll": "any"
},
"name": "If (Critical Power)",
"type": "n8n-nodes-base.if",
"typeVersion": 1,
"position": [500, 300]
},
{
"parameters": {
"chatId": "YOUR_TELEGRAM_CHAT_ID",
"text": "🚨 USV-Alarm! Batteriestand unter 20% oder im Batteriebetrieb! Aktueller Stand: {{ $json.battery_level }}% - Status: {{ $json.ups_status }}",
"parseMode": "HTML"
},
"name": "Telegram (Notification)",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1,
"position": [750, 200]
},
{
"parameters": {
"host": "your.proxmox.ip",
"port": "22",
"user": "root",
"authentication": "password",
"password": "YOUR_PROXMOX_PASSWORD",
"command": "qm shutdown 100 --timeout 60 && qm shutdown 101 --timeout 60",
"executeCommand": true
},
"name": "SSH (Proxmox Shutdown)",
"type": "n8n-nodes-base.ssh",
"typeVersion": 1,
"position": [750, 400]
}
],
"connections": {
"Webhook (HA UPS Status)": {
"main": [
[
{
"node": "If (Critical Power)",
"type": "main",
"index": 0
}
]
]
},
"If (Critical Power)": {
"main": [
[
{
"node": "Telegram (Notification)",
"type": "main",
"index": 0
}
],
[
{
"node": "SSH (Proxmox Shutdown)",
"type": "main",
"index": 0
}
]
]
}
}
}
Wichtig: Ersetze Platzhalter wie YOUR_TELEGRAM_CHAT_ID, your.proxmox.ip und Passwörter durch deine echten Daten. Für den SSH-Node empfehle ich dringend, SSH-Keys anstelle von Passwörtern zu verwenden und einen dedizierten User mit eingeschränkten Rechten für Proxmox zu erstellen, anstatt direkt mit root zu arbeiten.
Um den Webhook in Home Assistant zu konfigurieren, gehst du zu "Einstellungen" -> "Automatisierungen & Szenen" -> "Automatisierung erstellen". Wähle einen "Zustands-Trigger" für deinen USV-Batteriesensor oder den USV-Status. Als Aktion wählst du "Webhook aufrufen" und gibst die URL deines n8n-Webhooks ein (z.B. http://your.n8n.domain.com:5678/webhook/webhook-ups-status). Im Payload kannst du dann relevante Daten wie Batteriestand und Status mitsenden, die n8n verarbeiten kann (z.B. {"battery_level": "{{ states('sensor.your_ups_battery') | int }}", "ups_status": "{{ states('sensor.your_ups_status') }}"}).
Schritt 3: Netzwerkresilienz und Offline-Fähigkeit
Ein oft übersehener Aspekt der Resilienz ist das Netzwerk. Was nützt dir die beste Automatisierung, wenn dein DNS-Server im Internet liegt und bei einem Stromausfall (oder Router-Reset) nicht erreichbar ist?
- Lokaler DNS und DHCP: Nutze Pi-hole oder AdGuard Home auf einem System, das an deiner USV hängt. Das stellt sicher, dass deine lokalen Geräte auch bei einem Ausfall des Internetzugangs weiterhin kommunizieren können.
- Essentielle Dienste auf USV: Stelle sicher, dass Router, Switches, dein Proxmox-Host und die VMs für Home Assistant, n8n und deinen MQTT-Broker an der USV hängen.
- Offline-Fähigkeit von n8n: Deine n8n-Workflows sollten möglichst auch ohne Internetzugang funktionieren, wenn sie auf lokale Daten oder interne APIs zugreifen. Benachrichtigungen sind natürlich eine Ausnahme.
Du könntest sogar einen kleinen Bash-Script schreiben, der regelmäßig den Status deiner USV abfragt und bei Bedarf Aktionen auslöst, falls n8n oder Home Assistant mal nicht verfügbar sind. Redundanz ist hier das Stichwort!
#!/bin/bash
# Beispiel-Script zur USV-Statusprüfung (benötigt nut-client auf dem ausführenden System)
UPS_NAME="myups" # Wie in ups.conf definiert
CRITICAL_BATTERY_LEVEL=20 # Prozent
BATTERY_LEVEL=$(upsc $UPS_NAME battery.charge | awk '{print int($1)}')
UPS_STATUS=$(upsc $UPS_NAME ups.status)
if [[ $BATTERY_LEVEL -lt $CRITICAL_BATTERY_LEVEL || $UPS_STATUS == *"OL"* ]]; then
# OL = Online (Netzstrom), OB = On Battery (Batteriebetrieb)
# Hier prüfen wir ob der Batteriestand unter den Schwellenwert fällt ODER
# ob der UPS-Status "On Battery" (OB) enthält.
if [[ $UPS_STATUS == *"OB"* ]]; then
echo "ACHTUNG: USV im Batteriebetrieb! Batteriestand: $BATTERY_LEVEL%"
# Hier könntest du z.B. einen Shutdown-Befehl senden
# ssh user@proxmox_host "qm shutdown 100"
elif [[ $BATTERY_LEVEL -lt $CRITICAL_BATTERY_LEVEL ]]; then
echo "WARNUNG: Batteriestand der USV kritisch: $BATTERY_LEVEL%"
fi
else
echo "USV-Status OK. Batteriestand: $BATTERY_LEVEL%"
fi
Dieses Script kannst du per Cronjob regelmäßig ausführen lassen. Eine einfache, aber effektive Backup-Lösung.
Häufige Fehler und Lösungen
Wer das zum ersten Mal einrichtet, stolpert oft über die gleichen Dinge. Hier meine Top 3 der häufigsten Probleme und wie du sie löst:
Problem 1: Home Assistant kann Smart Plugs oder Sensoren nicht finden.
Lösung: Oft liegt das an Netzwerkproblemen. Prüfe folgende Punkte:
- Netzwerksegmentierung: Sind Home Assistant und deine Geräte im selben VLAN oder Subnetz? Multicast-Traffic (der für die automatische Erkennung oft genutzt wird) wird von vielen Routern nicht über VLAN-Grenzen hinweg geroutet.
- Firewall: Prüfe, ob deine Firewall den notwendigen Traffic (z.B. Ports 80/443 für HTTP/HTTPS, 1883 für MQTT) blockiert.
- IP-Adressen: Haben die Geräte eine feste IP-Adresse oder werden sie per DHCP zugewiesen? Manchmal hilft ein Neustart des Geräts oder des Routers, um neue IP-Adressen zu erhalten.
- Firmware: Ist die Firmware deiner Smart Plugs aktuell? Manchmal beheben Updates Konnektivitätsprobleme.
- Manuelle Konfiguration: Wenn die automatische Erkennung fehlschlägt, versuche immer die manuelle Konfiguration über die Integrationsseite in Home Assistant oder direkt in der
configuration.yaml.
Problem 2: n8n-Workflow wird nicht ausgelöst, obwohl Home Assistant den Webhook sendet.
Lösung: Das ist ein Klassiker, der meistens an der Kommunikation zwischen HA und n8n scheitert.
- Webhook-URL: Überprüfe die Webhook-URL in Home Assistant ganz genau. Ist die IP-Adresse oder der Hostname von n8n korrekt? Stimmt der Port (standardmäßig 5678)? Ist der Pfad (z.B.
/webhook/webhook-ups-status) korrekt? - n8n-Logs: Schau in die n8n-Container-Logs (
docker logs n8n). Siehst du dort Fehlermeldungen, wenn der Webhook aufgerufen werden sollte? - Home Assistant Logs: Prüfe die Home Assistant Logs auf Fehler beim Senden des Webhooks.
- Firewall: Ist die Firewall auf deinem n8n-Host oder deinem Router so konfiguriert, dass sie eingehende Verbindungen auf Port 5678 zulässt?
- Testen: Aktiviere den Webhook-Trigger in n8n (der "Play"-Button am Trigger-Node) und sende dann manuell einen Test-Webhook von einem Browser oder Postman an die URL. Wenn n8n den Webhook empfängt, liegt das Problem in der Home Assistant-Konfiguration.
Problem 3: USV-Daten sind in Home Assistant nicht verfügbar oder unzuverlässig.
Lösung: Die NUT-Integration kann manchmal zickig sein.
- NUT-Server-Status: Ist der NUT-Server (z.B. auf deinem Proxmox-Host) überhaupt aktiv und läuft? Prüfe den Status mit
sudo systemctl status nut-serverundsudo systemctl status nut-monitor. - NUT-Client-Test: Kannst du die USV-Daten vom Home Assistant Host (oder einem anderen System) manuell abrufen? Nutze
upsc <UPS_NAME>@<NUT_SERVER_IP>. Wenn das nicht funktioniert, liegt das Problem nicht bei Home Assistant, sondern beim NUT-Server oder der Netzwerkverbindung dorthin. - USB-Verbindung: Wenn deine USV per USB angebunden ist, stelle sicher, dass die Verbindung stabil ist und der richtige Treiber in der
ups.confdes NUT-Servers konfiguriert ist. Manchmal hilft es, das USB-Kabel neu zu stecken oder den Server neu zu starten. - Netzwerkzugriff: Erlaubt die Firewall auf deinem NUT-Server eingehende Verbindungen auf Port 3493 (Standard-NUT-Port) von der IP-Adresse deines Home Assistant?
Fazit: Dein resilientes Heimlabor ist nur der Anfang
Glückwunsch! Mit diesem Guide hast du nicht nur gelernt, wie du dein Heimlabor energieeffizienter machst, sondern auch, wie du es gegen unvorhergesehene Stromausfälle absicherst. Die Lektionen aus dem spanischen Blackout sind klar: Automatisierung und ein tiefes Verständnis unserer Energieinfrastruktur sind entscheidend. Und genau das haben wir hier im Kleinen für unser Heimlabor umgesetzt.
In meiner Erfahrung ist das ein Game Changer. Ich schlafe ruhiger, weil ich weiß, dass mein Server-Rack nicht einfach hart vom Netz getrennt wird. Die Möglichkeiten sind schier endlos. Als Nächstes könntest du überlegen, weitere Automatisierungen hinzuzufügen:
- Prädiktive Analyse: Wenn du eine PV-Anlage hast, könntest du n8n nutzen, um basierend auf Wettervorhersagen und Batteriestand zu entscheiden, welche Geräte wann eingeschaltet werden.
- Lastmanagement: Schalte bei hohem Strompreis oder geringer PV-Leistung automatisch unwichtige Verbraucher ab.
- Integration von Batteriespeichern: Wenn du einen Heim-Batteriespeicher hast, kannst du dessen Lade- und Entladezyklen über Home Assistant und n8n optimieren.
Das ist ein spannendes Feld, und ich bin mir sicher, du wirst noch viele eigene Ideen entwickeln. Bleib neugierig, experimentierfreudig und vor allem: Sorge dafür, dass dein Heimlabor stabil bleibt!