wtt

n8n Node für Arbeitszeiterfassung mit Trigger und Listen-Funktionen

Package Information

Released: 11/21/2025
Downloads: 20 weekly / 824 monthly
Latest Version: 0.2.1
Author: Daniel Zurmühle

Documentation

@zurdai/n8n-nodes-wtt

n8n Node für Arbeitszeiterfassung (Work Time Tracking) mit Trigger-Endpunkt und Auswertungsfunktionen.

Installation

npm install @zurdai/n8n-nodes-wtt

Verwendung

Dieses Paket enthält zwei Nodes:

1. Arbeitszeit Trigger

Ein Webhook-Trigger, der Arbeitszeiteinträge über GET-Anfragen erfasst.

Endpunkt-Format:

  • Test-Modus: /webhook-test/{workflow-id}/arbeitszeit
  • Produktions-Modus: /webhook/{workflow-id}/arbeitszeit

Parameter:

  • action - start oder stop

Beispiel-Anfragen:

Test-Modus (nur nach Klick auf "Execute workflow"):

curl "https://your-n8n-instance.com/webhook-test/your-workflow-id/arbeitszeit?action=start"
curl "https://your-n8n-instance.com/webhook-test/your-workflow-id/arbeitszeit?action=stop"

Produktions-Modus (immer verfügbar):

curl "https://your-n8n-instance.com/webhook/your-workflow-id/arbeitszeit?action=start"
curl "https://your-n8n-instance.com/webhook/your-workflow-id/arbeitszeit?action=stop"

So findest du deine Workflow-ID:

  1. Öffne den Workflow in n8n
  2. Klicke auf die "Arbeitszeit Trigger" Node
  3. Die vollständige Webhook-URL wird angezeigt:
    • Test: https://your-domain/webhook-test/DEINE-ID-HIER/arbeitszeit
    • Production: https://your-domain/webhook/DEINE-ID-HIER/arbeitszeit
  4. Kopiere die URL direkt aus der Node!

Output:

{
  "datum": "21.11.2025",
  "zeit": "14:30:45",
  "timestamp": "2025-11-21T14:30:45.123Z",
  "anfrage": "start",
  "vollstaendigeZeit": "21.11.2025, 14:30:45"
}

2. Arbeitszeit Node

Eine Action-Node zum Auswerten und Zusammenfassen von Arbeitszeiteinträgen.

Resource: Listen

Operationen:

  1. Alle Zeiten Anzeigen

    • Zeigt alle erfassten Arbeitszeiten sortiert nach Timestamp
  2. Summen Berechnen

    • Berechnet die Gesamtarbeitszeit aus Start/Stop-Paaren
    • Zeigt einzelne Arbeitsperioden und Gesamtsumme
  3. Detaillierte Auswertung

    • Kombiniert alle Zeiten mit berechneten Summen
    • Zeigt Warnungen bei fehlenden Stop-Einträgen

Beispiel-Output (Summen Berechnen):

{
  "anzahlPerioden": 2,
  "perioden": [
    {
      "start": "21.11.2025, 08:00:00",
      "stop": "21.11.2025, 12:00:00",
      "dauer": "4h 0m",
      "minuten": 240
    },
    {
      "start": "21.11.2025, 13:00:00",
      "stop": "21.11.2025, 17:30:00",
      "dauer": "4h 30m",
      "minuten": 270
    }
  ],
  "gesamtMinuten": 510,
  "gesamtZeit": "8h 30m",
  "gesamtStunden": "8.50",
  "offenerStart": false,
  "letzterStart": null,
  "warnungen": null
}

Workflow-Beispiele

Wichtig: Alle Einträge müssen persistent gespeichert werden, damit keine Daten verloren gehen!

Empfohlen: n8n Data Table (am einfachsten!)

Die n8n Data Table ist die einfachste Lösung, da sie direkt in n8n integriert ist und keine externe Konfiguration benötigt.

Workflow 1: Einträge erfassen und speichern (Data Table)

Arbeitszeit Trigger (Webhook)
    ↓
Data Table - Insert Row (Tabelle: "Arbeitszeit")
    ↓
Respond to Webhook (Optional: Bestätigung zurückgeben)

Data Table Setup:

  1. Erstelle eine Data Table:

    • Gehe zu SettingsData TablesCreate Table
    • Name: Arbeitszeit
    • Wichtig: Spalten müssen genau so benannt werden:
      • Datum (String)
      • Zeit (String)
      • Timestamp (String)
      • Aktion (String)
      • Vollstaendige_Zeit (String)
  2. Data Table Node Konfiguration:

    • Operation: Insert
    • Table: Arbeitszeit
    • Columns Mapping Mode: "Map Each Column Manually"
    • Column Mappings:
      • Datum → {{ $json.datum }}
      • Zeit → {{ $json.zeit }}
      • Timestamp → {{ $json.timestamp }}
      • Aktion → {{ $json.anfrage }}
      • Vollstaendige_Zeit → {{ $json.vollstaendigeZeit }}

📁 Fertige Workflow-Vorlage: examples/workflow-data-table.json

⚠️ Wichtiger Hinweis: Die Spaltennamen in der Data Table müssen genau mit den Spaltennamen im Workflow übereinstimmen! Bei Fehler "unknown column name 'datum'" → Prüfe, ob die Spalten korrekt erstellt wurden (Datum statt datum).

Workflow 2: Auswertung erstellen (Data Table)

Schedule Trigger (z.B. täglich um 18:00)
    ↓
Data Table - Get All (Tabelle: "Arbeitszeit")
    ↓
Arbeitszeit Node - Detaillierte Auswertung
    ↓
Email/Slack/Dashboard (Ergebnisse versenden)

Arbeitszeit Node Setup:

  • Resource: Listen
  • Operation:
    • Alle Zeiten Anzeigen - Listet alle Einträge auf
    • Summen Berechnen - Nur Zusammenfassung
    • Detaillierte Auswertung - Alle Einträge + Summen (empfohlen!)

Wichtig: Die Arbeitszeit Node liest automatisch beide Formate:

  • Kleingeschrieben (datum, zeit, timestamp, anfrage) - vom Trigger
  • Großgeschrieben (Datum, Zeit, Timestamp, Aktion) - aus Data Table

📁 Fertige Workflow-Vorlage: examples/workflow-auswertung.json

Alternative: JavaScript Code Node (ohne eigene Node!)

Wenn du die Arbeitszeit Node nicht verwenden möchtest, kannst du auch eine JavaScript Code Node verwenden:

Schedule Trigger (z.B. täglich um 18:00)
    ↓
Data Table - Get All (Tabelle: "Arbeitszeit")
    ↓
Code Node - Arbeitszeit berechnen (JavaScript)
    ↓
Email/Slack/Dashboard

Vorteile:

  • ✅ Keine zusätzliche Node-Installation nötig
  • ✅ Vollständig anpassbar
  • ✅ Funktioniert direkt in n8n

Code:

// Siehe: examples/javascript-arbeitszeit-berechnung.js

📁 Fertige Vorlagen:

Alternative: Google Sheets Speicherung

Workflow:

Arbeitszeit Trigger → Google Sheets (Append/Update) → Respond to Webhook

Setup:

  • Erstelle ein Google Sheet mit Spalten: Datum, Zeit, Timestamp, Aktion, Vollständige Zeit
  • Verwende die Google Sheets Node mit Operation "Append or Update"
  • Tabelle: "Arbeitszeit"

📁 Fertige Workflow-Vorlage: examples/workflow-google-sheets.json

Alternative: PostgreSQL/MySQL Speicherung

Wenn du eine Datenbank verwendest:

CREATE TABLE arbeitszeiten (
    id SERIAL PRIMARY KEY,
    datum VARCHAR(20),
    zeit VARCHAR(20),
    timestamp TIMESTAMP,
    aktion VARCHAR(10),
    vollstaendige_zeit VARCHAR(50)
);

Workflow:

Arbeitszeit Trigger → PostgreSQL (INSERT) → Respond to Webhook

Auswertung:

Trigger → PostgreSQL (SELECT *) → Arbeitszeit Node → Ausgabe

Lizenz

MIT

Autor

Daniel Zurmühle (daniel.zurmuehle@zurdai.com)

Homepage: https://zurdai.com

Discussion