added n8n flow

This commit is contained in:
2025-11-03 23:55:14 +00:00
parent a35d5e31de
commit 4899ac3ebf
3 changed files with 149 additions and 0 deletions

View File

@@ -33,6 +33,7 @@ mqtt/
├── .env # Umgebungsvariablen (NICHT committen!) ├── .env # Umgebungsvariablen (NICHT committen!)
├── .env.example # Beispiel für Umgebungsvariablen ├── .env.example # Beispiel für Umgebungsvariablen
├── mqtt-panel-config.json # Legacy Dashboard Konfiguration ├── mqtt-panel-config.json # Legacy Dashboard Konfiguration
├── n8n-mqtt.json # n8n Workflow für MQTT-Integration
├── setup.sh # Setup-Script für User ├── setup.sh # Setup-Script für User
├── test-mqtt.sh # Test-Script für MQTT Nachrichten ├── test-mqtt.sh # Test-Script für MQTT Nachrichten
├── CLAUDE.md # Projekt-Dokumentation für Claude Code ├── CLAUDE.md # Projekt-Dokumentation für Claude Code
@@ -211,6 +212,42 @@ Nach Änderungen Container neu starten:
docker compose restart mqttui docker compose restart mqttui
``` ```
## n8n Integration
Das Repository enthält einen vorgefertigten n8n Workflow (`n8n-mqtt.json`), der automatisch MQTT-Nachrichten an den Broker sendet.
### Was ist n8n?
[n8n](https://n8n.io/) ist ein Workflow-Automatisierungstool, ähnlich wie Zapier oder Node-RED, mit dem sich verschiedene Dienste und APIs miteinander verbinden lassen.
### Workflow-Funktionen
Der bereitgestellte Workflow sendet automatisch das aktuelle Datum und die Uhrzeit an das Topic `devices/device1/now`:
- **Manueller Trigger**: Workflow manuell per Button ausführen
- **Schedule Trigger**: Automatische Ausführung jede Minute
- **MQTT Node**: Sendet Timestamp im Format "dd.MM.yyyy - HH:mm:ss"
### Workflow importieren
1. n8n installieren und starten (siehe [n8n Dokumentation](https://docs.n8n.io/))
2. In n8n: **Workflows → Import → From File**
3. Die Datei `n8n-mqtt.json` auswählen
4. MQTT Credentials konfigurieren:
- Host: `localhost` (oder deine Server-IP)
- Port: `1883`
- Username: z.B. `device1` (aus deiner `.env`)
- Password: entsprechendes Passwort aus `.env`
5. Workflow aktivieren
⚠️ **Hinweis**: Der User muss Schreibrechte für `devices/device1/#` haben (siehe ACL in `config/acl.conf`).
### Workflow anpassen
Du kannst den Workflow nach dem Import anpassen:
- **Topic ändern**: Passe das Topic im MQTT Node an (Zeile 17 in der JSON)
- **Schedule anpassen**: Ändere den Zeitplan im Schedule Trigger Node
- **Nachrichtenformat**: Passe die Message-Expression an (Zeile 19)
## Test-Nachrichten senden ## Test-Nachrichten senden
### Via Docker ### Via Docker

112
n8n-mqtt.json Normal file
View File

@@ -0,0 +1,112 @@
{
"name": "Send MQTT Data to Broker",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
-432,
-112
],
"id": "213b3a19-1c7b-4a2d-854a-84ffe962c6da",
"name": "When clicking Execute workflow"
},
{
"parameters": {
"topic": "devices/device1/now",
"sendInputData": false,
"message": "={{ $now.toFormat('dd.MM.yyyy - HH:mm:ss') }}\n\n",
"options": {}
},
"type": "n8n-nodes-base.mqtt",
"typeVersion": 1,
"position": [
-144,
-32
],
"id": "cada589b-263e-4b4b-98c2-1912bc4685e5",
"name": "MQTT",
"credentials": {
"mqtt": {
"id": "L07VVR2BDfDda6Zo",
"name": "MQTT account"
}
}
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "minutes"
}
]
}
},
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
-432,
64
],
"id": "40c2908e-43ae-41fc-a8d0-ed56e13d2593",
"name": "Schedule Trigger"
},
{
"parameters": {
"content": "## MQTT-Broker Trigger\n**Click me** [MQTT-Broker](https://mqtt.example.com/)",
"height": 416,
"width": 608,
"color": 4
},
"type": "n8n-nodes-base.stickyNote",
"position": [
-528,
-224
],
"typeVersion": 1,
"id": "d8f6c240-2f10-4214-908b-9a167479aba5",
"name": "Sticky Note"
}
],
"pinData": {},
"connections": {
"When clicking Execute workflow": {
"main": [
[
{
"node": "MQTT",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "MQTT",
"type": "main",
"index": 0
}
]
]
}
},
"active": true,
"settings": {
"executionOrder": "v1",
"callerPolicy": "workflowsFromSameOwner",
"availableInMCP": false,
"errorWorkflow": "0bBZzSE6SUzVsif5"
},
"versionId": "dbb34898-a9e9-4ed2-9e23-17f7a500b7cf",
"meta": {
"templateCredsSetupCompleted": true,
"instanceId": "2f7fd37175cefa82de44e06b8af9ab9c01e7956018045d6efc4f7bf1588a41eb"
},
"id": "YFFPaZaXOaQkYgQW",
"tags": []
}

0
pictures/readme.md Normal file
View File