FHEM Unifi Integration und Monitoring

UniFi via API in FHEM abfragen – so holst du dir Live-Netzwerkdaten ins Smarthome

Wer UniFi im Einsatz hat (UDM, USG, Cloud Key & Co.) und FHEM nutzt, kommt früher oder später auf die Idee:
Warum nicht Netzwerkzustände direkt in FHEM ziehen und dort weiterverarbeiten?

Genau das geht ziemlich gut über die UniFi Network API – man muss nur wissen, wo die Fallstricke liegen. Der größte davon: Authentifizierung und Session-Handling.

Grundprinzip

Die UniFi Network Application stellt intern eine REST-API bereit. Darüber lassen sich u. a. abrufen:

  • Gateway-Status
  • WAN-Traffic
  • WAN-Failover
  • AP-Status
  • Client-Infos
  • DPI / Traffic-Stats
  • Port-Status

Der klassische Endpoint für Geräte:

/proxy/network/api/s/default/stat/device

Auf einer UDM z. B.:

https://<UDM-IP>/proxy/network/api/s/default/stat/device

In FHEM pollt man diesen Endpoint typischerweise per at oder InternalTimer und schreibt die Daten in Readings.

Die größte Hürde: Authentifizierung

Ohne Login geht nichts. Und genau hier wird’s interessant, weil UniFi OS nicht nur ein simples Cookie erwartet.

Was wirklich passiert

Beim Login:

POST /api/auth/login

mit JSON:

{
"username": "user",
"password": "pass"
}

liefert UniFi:

  1. Ein Cookie (TOKEN)
  2. Ein JWT-Token
  3. Darin eingebettet: ein CSRF-Token

Und genau diese Kombination brauchst du später:

  • Cookie: TOKEN=...
  • Header: X-CSRF-Token: ...

Wenn du nur das Cookie sendest, funktioniert es oft:

  • Minuten
  • manchmal Stunden
  • …und friert dann plötzlich ein

Du bekommst dann zwar noch HTTP 200, aber die Daten sind stale (z. B. last_seen bleibt stehen).

Darum:

Für stabile API-Abfragen brauchst du immer TOKEN + CSRF.

Wichtig: Im Unifi muss natürlich ein entsprechender User im Vorfeld angelegt werden. Sonst wird das natürlich nichts. 😉


Typische Auth-Abhängigkeiten / Stolperfallen

Darauf solltest du achten:

  • Session-Timeout: UniFi killt Sessions nach einiger Zeit
  • CSRF Pflicht: je nach Firmware zwingend
  • Cookie-Rotation: TOKEN kann sich ändern
  • Site-Kontext: falsche Site → scheinbar “statische” Daten
  • Proxy-Pfad: /proxy/network/... bei UniFi OS nötig

Praxis-Lösung:

  • Bei jedem Poll neu einloggen oder
  • HTTP-Code prüfen und bei 401/403 neu einloggen
  • TOKEN + CSRF sauber extrahieren

Beispiel: Sinnvolle Daten für FHEM

Sobald die API stabil läuft, wird’s spannend. Ein paar typische Use-Cases:


WAN-Status überwachen

Reading-Ideen:

  • WAN_state → UP/DOWN
  • WAN1_state
  • WAN2_state
  • WAN_active

Automationen

  • Push bei Internet-Ausfall
  • LED / Hue rot blinken lassen
  • Sprachansage über Alexa / TTS

WAN-Failover in FHEM signalisieren

Gerade bei Dual-WAN extrem nützlich.

Beispiel:

  • WAN1 = Glasfaser
  • WAN2 = LTE Backup

Automation:

if WAN_active wechselt auf WAN2
→ Telegram Push
→ Dashboard Warnung
→ Traffic drosseln

Oder visuell:

  • WLED Streifen orange
  • Homematic Sirene kurz piepen
  • TabletUI Icon wechseln

Bandbreite loggen

Readings:

  • WAN_rx_mbit
  • WAN_tx_mbit

Nutzen:

  • Graphen in FHEM
  • Traffic-Spitzen erkennen
  • Backup-Traffic sehen
  • Streaming / Uploads nachvollziehen

Mit Counter-Delta sogar sehr genau.


AP-Monitoring

API liefert:

  • Online / Offline
  • AP-Name
  • Last Seen

FHEM kann daraus:

  • Offline-Alarm
  • Reboot-Reminder
  • PoE-Switch Trigger

Beispiel:

Wenn AP Garage offline > 5min
→ Steckdose Switch neu starten

Client-Presence (optional)

Über /stat/sta:

  • Geräte online
  • MAC / Hostname
  • WLAN / LAN

Use-Cases:

  • Anwesenheit
  • Gäste-Erkennung
  • Alarmanlagen-Freigabe

FHEM Poll-Intervall – realistischer Wert

UniFi aktualisiert viele Stats nicht sekündlich.

Bewährt:

  • 15–30 Sekunden → guter Kompromiss
  • <10s → unnötige Last
  • 60s → träge Failover-Erkennung

Freeze erkennen (wichtig)

Ein extrem nützliches Debug-Reading:

last_seen

Wenn das stehen bleibt:

  • Controller bekommt keine Informs
  • Network App hängt
  • Session hängt

Dann hilft kein Code-Fix → nur Re-Login oder App-Restart.


Fazit

UniFi-API in FHEM ist mächtig – aber nur, wenn Auth sauber läuft.

Die drei Erfolgsfaktoren:

  1. TOKEN + CSRF korrekt setzen
  2. HTTP-Code überwachen
  3. last_seen als Lebensindikator nutzen

Wenn das passt, bekommst du stabile Live-Netzwerkdaten ins Smarthome und kannst darauf reagieren wie auf jeden anderen Sensor auch.

Bei Interesse am fertigen Script in Form einer perl Funktion?

Kein Problem – einfach über die Kommentarfunktion melden.

Siehe auch:

3 Kommentare zu „UniFi via API in FHEM abfragen – so holst du dir Live-Netzwerkdaten ins Smarthome“

  1. Hallo Matthias,
    auch ich habe mit großem Interesse dein Artikel gelesen und hätte Interesse an dem Script. Würdest du mir das bitte schicken. Allerdings habe ich noch ein größerers Problem ich weiss nicht wie ich dieses Script in Fhem intergriere. Vielen Dank für das schicken des Scripts im Voraus.

    Grüße
    Steven

  2. Moin Matthias,
    ein wirklich informativer Artikel mit einem super Kochrezept.
    Bislang habe ich meine Controller über das UNIFI-Device abgerufen. Nach einem Upgradeauf einen neuen Controller funktioniert das allerdings nicht mehr 🙁
    Könntest du mir bitte die perl-Funktion zur Verfügung stellen, so dass ich wieder in den Genuss der Automatisierung komme?
    Vielen Dank & viele Grüße
    Peter

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert