Node-RED – Beispiel-Anlage

Expertenanbindung

Node-RED Integration – Anbindung über die eingebauten mqtt-in/mqtt-out Nodes.
Schritt 1 – Node platzieren

Einen mqtt-in oder mqtt-out Node in den Flow ziehen → Doppelklick → beim Feld Server auf das Stift-Symbol klicken, um einen neuen Broker hinzuzufügen.

Schritt 2 – Tab "Verbindung"
Servercbnode.at
Port8883
TLS aktivierenja
Client IDcbnode-0012AB34
Schritt 3 – TLS Konfiguration

Beim Feld TLS Configuration einen neuen TLS-Config Node anlegen → cbnode-ca.pem als CA Zertifikat hochladen → Serverzertifikat prüfen aktivieren.

ca.pem
Schritt 4 – Tab "Sicherheit"
Benutzername0012AB34
PasswortIhr MQTT Passwort
Schritt 5 – Topic eintragen

Im mqtt-in Node z.B. ajax/hubs/0012AB34/hub/status/armed als Topic eintragen, QoS 0 lassen → Deployen.

Befehle senden: mqtt-out Node mit Topic ajax/hubs/0012AB34/hub/command/arm, Payload 1.


1. MQTT Topics abonnieren:

Verbindung: Server cbnode.at, Port 8883, TLS aktivieren, CA Zertifikat siehe oben.

// MQTT-In Knoten Topics zum Lesen:
ajax/hubs/0012AB34/hub/status/mode              → Hub Modus (ARMED/DISARMED/NIGHT)
ajax/hubs/0012AB34/hub/status/battery           → Akku Zentrale %
ajax/hubs/0012AB34/hub/groups/+/status/mode     → alle Gruppen Status
ajax/hubs/0012AB34/hub/groups/+/status/name     → Gruppenname
ajax/hubs/0012AB34/devices/+/status/state       → Gerät ausgelöst (0/1)
ajax/hubs/0012AB34/devices/+/status/alarm       → Aktiver Alarm (0/1)
ajax/hubs/0012AB34/devices/+/status/tamper      → Sabotage (0/1)
ajax/hubs/0012AB34/devices/+/status/malfunction → Störung (0/1)
ajax/hubs/0012AB34/devices/+/status/battery     → Batterie % (0-100)
ajax/hubs/0012AB34/devices/+/status/switch_state → Plug/Steckdose Zustand (0/1)

// MQTT-Out Knoten Topics zum Schreiben (Payload "1" senden):
ajax/hubs/0012AB34/hub/command/arm                        → Hub scharf
ajax/hubs/0012AB34/hub/command/disarm                     → Hub unscharf
ajax/hubs/0012AB34/hub/groups/GRUPPE_ID/command/arm       → Gruppe scharf
ajax/hubs/0012AB34/hub/groups/GRUPPE_ID/command/disarm    → Gruppe unscharf
ajax/hubs/0012AB34/devices/GERAET_ID/command/bypass       → Bypass (1/0)
ajax/hubs/0012AB34/devices/PLUG_ID/command/switch         → Plug schalten (1/0)
2. Flow – KNX Taster → Gruppe ARM/DISARM:
// [knx in] → [function] → [mqtt out]
// Function Node:
const groupId = '00000001'; // Gruppen-ID anpassen
msg.topic   = `ajax/hubs/0012AB34/hub/groups/${groupId}/command/` +
              (msg.payload ? 'arm' : 'disarm');
msg.payload = '1';
return msg;
// MQTT-Out: Server cbnode.at, Port 8883, TLS
3. Flow – Gruppen Status → Dashboard anzeigen:
// [mqtt in] → [function] → [ui_text / debug]
// Topic: ajax/hubs/0012AB34/hub/groups/+/status/mode
// Function Node:
const labels = { ARMED: '🔴 Scharf', DISARMED: '🟢 Unscharf', NIGHT: '🌙 Nacht' };
msg.payload = labels[msg.payload] || msg.payload;
// Gruppen-ID aus Topic extrahieren:
const parts = msg.topic.split('/');
msg.groupId = parts[5]; // z.B. "00000001"
return msg;
// → ui_text Node für Node-RED Dashboard
4. Flow – Alarm E-Mail senden:
// [mqtt in] → [switch] → [e-mail]
// Topic: ajax/hubs/0012AB34/devices/+/status/alarm
// Switch Node: msg.payload == "1" → E-Mail senden
// E-Mail Node (node-red-node-email):
msg.topic   = "ALARM! Ajax Bridge";
msg.payload = "Alarm ausgelöst! Topic: " + msg.topic;
return msg;
5. Flow – Plug/Steckdose schalten:
// [inject / ui_switch] → [function] → [mqtt out]
// Function Node:
const plugId = 'PLUG_ID'; // Geräte-ID des Plugs anpassen
msg.topic   = `ajax/hubs/0012AB34/devices/${plugId}/command/switch`;
msg.payload = msg.payload ? '1' : '0'; // true/false → '1'/'0'
return msg;

// Zustand lesen: [mqtt in] auf Topic
// ajax/hubs/0012AB34/devices/PLUG_ID/status/switch_state