Unifi Guest-Voucher erzeugen mit n8n

Wenn Du Besuchern, Kunden oder externen Dienstleistern einen temporären WLAN-Zugang bereitstellen möchtest, sind die Guest-Voucher von UniFi eine praktische Lösung. Die manuelle Erstellung im UniFi Controller kann jedoch schnell zeitaufwendig werden – insbesondere dann, wenn regelmäßig neue Gäste Zugang benötigen.

In diesem Artikel zeige ich Dir, wie Du mit n8n einen Workflow erstellst, der UniFi Guest-Voucher automatisch generiert, optional per E-Mail versendet und bei Bedarf direkt als druckbare Ausgabe bereitstellt.

Zielsetzung

Der Workflow soll folgende Anforderungen erfüllen:

  • Gastzugang über ein Webformular beantragen
  • Voucher automatisch über die UniFi API erstellen
  • Auswahl zwischen einfacher oder mehrfacher Nutzung
  • Optionaler Versand des Vouchers per E-Mail
  • Ausgabe eines druckbaren Voucher-Dokuments

Dadurch entfällt die manuelle Erstellung von Gastzugängen im UniFi Controller vollständig.

Voraussetzungen

Für die Umsetzung werden folgende Komponenten benötigt:

  • UniFi Network Application (ab Version 8.x empfohlen)
  • Ein API-Key für den Zugriff auf die UniFi API
  • n8n (selbst gehostet oder Cloud)
  • SMTP-Server für den E-Mail-Versand (optional)

UniFi API-Key anlegen

Damit n8n auf die UniFi API zugreifen kann, benötigst Du einen API-Key.

API-Key erstellen

Öffne zunächst Deine UniFi Network Application und navigiere zu:

Settings → Integrations

Dort kannst Du über Create API Key einen neuen API-Schlüssel erstellen.

Vergib beispielsweise einen Namen wie:

n8n-guest-voucher

Nach dem Erstellen wird Dir der API-Key einmalig angezeigt.

n8n Workflow erstellen

Der Workflow besteht aus mehreren Schritten:

  1. Formular anzeigen
  2. Eingaben auswerten
  3. Voucher erzeugen
  4. HTML-Ausgabe erstellen
  5. Optional E-Mail versenden
  6. Ergebnis anzeigen

Das Formular

Der Einstiegspunkt des Workflows ist ein n8n-Formular.

Hier werden die notwendigen Informationen für die Voucher-Erstellung abgefragt.

Folgende Felder sind enthalten:

FeldBeschreibung
NameName des Gastes
E-Mail-AdresseE-Mail-Adresse des Empfängers
E-Mail sendenSoll der Voucher per Mail verschickt werden?
Mehrfache VerwendungSoll der Voucher auf mehreren Geräten nutzbar sein?

Der Benutzer sieht anschließend ein einfaches Formular mit den entsprechenden Eingabefeldern und Auswahlmöglichkeiten.

Voucher-Typ auswählen

Nach dem Absenden des Formulars wird über einen Rule-Node entschieden, welcher Voucher-Typ erzeugt werden soll.

Einfache Verwendung

Ist die Option Mehrfache Verwendung nicht aktiviert, wird ein klassischer Voucher erzeugt.

Dieser eignet sich beispielsweise für:

  • Besucher
  • Einzelpersonen
  • Kurzzeitige WLAN-Zugänge

Mehrfache Verwendung

Ist die Option aktiviert, wird ein Voucher erzeugt, der auf mehreren Geräten verwendet werden kann.

Typische Anwendungsfälle sind:

  • Schulungen
  • Meetings
  • Externe Dienstleister
  • Projektteams

Voucher über die UniFi API erstellen

Die eigentliche Erstellung des Vouchers erfolgt über einen HTTP Request Node.

Hierbei wird die UniFi Network API verwendet, die eine Authentifizierung per API-Key unterstützt.

HTTP Header

Für die Authentifizierung werden folgende Header gesetzt:

X-API-KEY: <DEIN_API_KEY>
Content-Type: application/json
Accept: application/json

Der API-Key wird entweder direkt im Node hinterlegt oder über Umgebungsvariablen beziehungsweise n8n Credentials eingebunden.


Request Body

Für die Erstellung des Gastzugangs wird folgendes JSON an die UniFi API gesendet:

{
"count": 1,
"name": "n8n-generated",
"authorizedGuestLimit": 10,
"timeLimitMinutes": 1440
}

Bedeutung der Parameter

ParameterBeschreibung
countAnzahl der zu erzeugenden Voucher
nameBezeichnung des Vouchers
authorizedGuestLimitAnzahl der erlaubten Geräte
timeLimitMinutesGültigkeitsdauer in Minuten

In diesem Beispiel wird ein Voucher erstellt, der:

  • für bis zu 10 Geräte verwendet werden kann
  • 24 Stunden gültig ist
  • automatisch über n8n erzeugt wurde

Dynamische Anpassung anhand der Formulareingaben

Der große Vorteil des Workflows liegt darin, dass die Parameter dynamisch aus den Formulareingaben erzeugt werden.

Einfache Verwendung

{
"count": 1,
"authorizedGuestLimit": 1,
"timeLimitMinutes": 1440
}

Hier kann der Voucher nur auf einem Gerät genutzt werden.


Mehrfache Verwendung

{
"count": 1,
"authorizedGuestLimit": 10,
"timeLimitMinutes": 1440
}

In diesem Fall kann derselbe Voucher auf mehreren Geräten verwendet werden.

Die Entscheidung erfolgt automatisch über den Rule-Node im Workflow.

HTML-Ausgabe erzeugen

Nachdem die UniFi API den Voucher erstellt hat, wird das Ergebnis in einem HTML-Node verarbeitet.

Dadurch entsteht eine übersichtliche und druckbare Darstellung des Gastzugangs.

Beispiel:

<!DOCTYPE html>

<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Guest-Wifi Voucher</title>

<style>
* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
    background: #f3f4f6;
    padding: 32px;
    color: #111827;
}

.voucher {
    width: 380px;
    margin: 0 auto;
    background: #ffffff;
    border-radius: 26px;
    overflow: hidden;
    box-shadow: 0 18px 45px rgba(0, 0, 0, 0.16);
}

.header {
    background: linear-gradient(135deg, #0057ff, #00b8ff);
    color: white;
    text-align: center;
    padding: 30px 24px;
}

.wifi-icon {
    font-size: 44px;
    margin-bottom: 10px;
}

.header h1 {
    font-size: 28px;
    font-weight: 800;
    margin-bottom: 6px;
}

.header p {
    font-size: 14px;
    opacity: 0.9;
}

.content {
    padding: 28px;
}

.label {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 1.6px;
    color: #6b7280;
    text-align: center;
    margin-bottom: 10px;
}

.code-box {
    border: 2px dashed #cbd5e1;
    border-radius: 18px;
    padding: 20px 12px;
    text-align: center;
    margin-bottom: 22px;
    background: #f9fafb;
}

.voucher-code {
    font-size: 38px;
    line-height: 1.1;
    font-weight: 900;
    letter-spacing: 4px;
    color: #111827;
    word-break: break-all;
}

.info-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    margin-bottom: 22px;
}

.info-card {
    background: #f9fafb;
    border-radius: 14px;
    padding: 14px;
    border: 1px solid #e5e7eb;
}

.info-title {
    font-size: 11px;
    color: #6b7280;
    margin-bottom: 5px;
}

.info-value {
    font-size: 15px;
    font-weight: 800;
    color: #111827;
}

.instructions {
    background: #eef6ff;
    border-radius: 16px;
    padding: 16px;
    font-size: 14px;
    line-height: 1.55;
    color: #374151;
}

.instructions strong {
    color: #111827;
}

.footer {
    padding: 18px 24px;
    text-align: center;
    font-size: 12px;
    color: #9ca3af;
    border-top: 1px solid #e5e7eb;
}

.print-button {
    display: block;
    width: 380px;
    margin: 18px auto 0;
    padding: 14px 18px;
    border: none;
    border-radius: 14px;
    background: #111827;
    color: white;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.2s ease;
}

.print-button:hover {
    background: #374151;
}

@media print {

    body {
        background: white;
        padding: 0;
    }

    .voucher {
        width: 80mm;
        box-shadow: none;
        border-radius: 0;
    }

    .print-button {
        display: none;
    }

    @page {
        margin: 0;
        size: 80mm auto;
    }
}
</style>

</head>

<body>

<div class="voucher">

```
<div class="header">
    <div class="wifi-icon">📶</div>
    <h1>Guest-Wifi</h1>
    <p>Willkommen im WLAN</p>
</div>

<div class="content">

    <div class="label">Voucher Code</div>

    <div class="code-box">
        <div class="voucher-code">
            {{ $json.vouchers[0].code }}
        </div>
    </div>

    <div class="info-grid">
        <div class="info-card">
            <div class="info-title">Netzwerk</div>
            <div class="info-value">Guest-Wifi</div>
        </div>

        <div class="info-card">
            <div class="info-title">Gültigkeit</div>
            <div class="info-value">
                {{ Math.round($json.vouchers[0].timeLimitMinutes / 60) }} Std.
            </div>
        </div>
    </div>

    <div class="instructions">
        <strong>So verbindest du dich:</strong><br>
        1. Mit dem WLAN <strong>Guest-Wifi</strong> verbinden<br>
        2. Voucher-Code eingeben<br>
        3. Online gehen 🚀
    </div>

</div>

<div class="footer">
    Erstellt am
    {{ new Date($json.vouchers[0].createdAt).toLocaleString('de-DE') }}
</div>
```

</div>

<button class="print-button" onclick="window.print()">
    🖨️ Voucher drucken
</button>

</body>
</html>

Voucher direkt ausdrucken

Der HTML-Node liefert die Ausgabe direkt an das Formular zurück.

Dadurch erhält der Benutzer unmittelbar:

  • den Voucher-Code
  • die Gültigkeitsinformationen
  • eine druckfreundliche Darstellung

Der Voucher kann sofort ausgedruckt und dem Gast übergeben werden.

Optionaler Versand per E-Mail

Nicht jeder Voucher muss ausgedruckt werden. Deshalb bietet der Workflow zusätzlich die Möglichkeit, den Zugang direkt per E-Mail zu versenden.

Über die Checkbox „E-Mail senden“ entscheidet der Benutzer selbst, ob eine E-Mail verschickt werden soll.

Ein Switch-Node prüft die Auswahl:

  • Checkbox aktiviert → E-Mail versenden
  • Checkbox deaktiviert → Workflow beenden

Der SMTP-Node erstellt anschließend automatisch eine Nachricht mit dem erzeugten Voucher-Code.

Beispiel:

Hallo,

für Dich wurde ein WLAN-Gastzugang erstellt.

Voucher-Code:
ABCD-EFGH

Der Zugang ist 24 Stunden gültig.

Viel Spaß beim Surfen.

Dadurch kann der Gast den Zugangscode direkt auf seinem Smartphone oder Notebook empfangen.

Fazit

Mit n8n lässt sich die Erstellung von UniFi Guest-Vouchern einfach und effizient automatisieren. Über ein Webformular werden die benötigten Informationen erfasst, anschließend erzeugt die UniFi API automatisch den passenden Voucher.

Je nach Bedarf kann der Gastzugang für ein einzelnes Gerät oder mehrere Geräte erstellt werden. Zusätzlich lässt sich der Voucher direkt ausgeben, ausdrucken oder per E-Mail versenden.

Durch die Verwendung der UniFi API mit API-Key-Authentifizierung ist die Lösung nicht nur komfortabel, sondern auch zukunftssicher und deutlich einfacher als ältere Ansätze mit Session-Logins und Cookies. Gerade in Umgebungen mit regelmäßig wechselnden Gästen sorgt dieser Workflow für eine erhebliche Zeitersparnis und einen professionellen Bereitstellungsprozess für WLAN-Gastzugänge.

Schreibe einen Kommentar