added n8n flow
This commit is contained in:
37
README.md
37
README.md
@@ -33,6 +33,7 @@ mqtt/
|
||||
├── .env # Umgebungsvariablen (NICHT committen!)
|
||||
├── .env.example # Beispiel für Umgebungsvariablen
|
||||
├── mqtt-panel-config.json # Legacy Dashboard Konfiguration
|
||||
├── n8n-mqtt.json # n8n Workflow für MQTT-Integration
|
||||
├── setup.sh # Setup-Script für User
|
||||
├── test-mqtt.sh # Test-Script für MQTT Nachrichten
|
||||
├── CLAUDE.md # Projekt-Dokumentation für Claude Code
|
||||
@@ -211,6 +212,42 @@ Nach Änderungen Container neu starten:
|
||||
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
|
||||
|
||||
### Via Docker
|
||||
|
||||
112
n8n-mqtt.json
Normal file
112
n8n-mqtt.json
Normal 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
0
pictures/readme.md
Normal file
Reference in New Issue
Block a user