MQTT Home Assistant - IoT
Der Bridge normalisiert KNX-Telegramme zu strukturierten Nachrichten fĂŒr IoT-Transporte (MQTT, REST, Modbus) und nimmt Flow-Eingaben entgegen, um zurĂŒck in den KNX-Bus zu schreiben. Diese Seite fasst die Konfiguration und empfohlene Drittanbieter-Nodes zusammen.
Betriebsmodus
Der Node hat einen Modus-Schalter:
- IoT-Bridge (Standard) â das unten beschriebene Verhalten: eine Zuordnungsliste, die KNX-Telegramme in MQTT/REST/Modbus-Ausgabemeldungen umwandelt und umgekehrt.
- MQTT / Home Assistant (nativ) â der Node verbindet sich direkt mit einem MQTT-Broker und ĂŒberbrĂŒckt KNX â MQTT in beide Richtungen, mit Home-Assistant-MQTT-Discovery, sodass KNX automatisch in Home Assistant erscheint. Keine
mqtt in/mqtt out-Verdrahtung nötig.
Modus MQTT / Home Assistant
Voraussetzungen: ein MQTT-Broker, der sowohl von Node-RED als auch von Home Assistant erreichbar ist, mit aktivierter MQTT-Integration in HA. Alle EntitÀten werden unter einem einzigen HA-GerÀt mit dem Namen des Nodes gruppiert.
| Feld | Zweck |
|---|---|
| KNX-Bus-Verbindung | EigenstĂ€ndig (Standard): der Knoten kommuniziert direkt mit dem KNX-Gateway und zeigt keine Ein-/Ausgangs-Pins. Flow-Nachrichten: der Knoten zeigt einen Eingangs- und einen Ausgangs-Pin â verbinden Sie den Ausgang eines KNXUltimate-Knotens im Universal-Modus mit dem Eingangs-Pin (KNX-Bus â MQTT) und den Ausgangs-Pin mit dem Eingang eines weiteren KNXUltimate-Knotens im Universal-Modus (MQTT â KNX-Bus). |
| Broker-URL / Benutzername / Passwort | Verbindung zum MQTT-Broker. |
| Basis-Topic | Wurzel der Status-/Befehls-Topics (Standard knx-ultimate). |
| HA-Discovery veröffentlichen / Discovery-PrÀfix | Aktiviert Home-Assistant-MQTT-Discovery und legt das PrÀfix fest (Standard homeassistant). |
| Format des EntitÀtsnamens | Wie die HA-EntitÀtsnamen aus dem ETS-Import gebildet werden, dessen Namen mit dem Gruppenpfad beginnen, z. B. (Licht->Erdgeschoss) Wohnzimmer. Optionen: Wie aus ETS importiert (Standard), Name zuerst (Wohnzimmer (Licht->Erdgeschoss)), Nur der Name (Wohnzimmer), Name + Gruppenadresse (Wohnzimmer (0/1/2)). |
| Bereitzustellende Gruppenadressen | KontrollkĂ€stchenliste aller im Gateway importierten Adressen (ETS). Angehakte Adressen werden zu HA-EntitĂ€ten, automatisch nach dem DPT typisiert (switch, sensor, binary_sensor, number, text). Filter + Alle/Keine auswĂ€hlen; standardmĂ€Ăig alle ausgewĂ€hlt. Jede Zeile hat zudem die Option Nur lesen: eine schreibgeschĂŒtzte Adresse wird weiterhin an Home Assistant veröffentlicht (Status sichtbar), akzeptiert aber nie Befehle zurĂŒck auf den KNX-Bus (switch werden zu binary_sensor, number zu sensor). Die SchaltflĂ€chen Nur lesen setzen / Nur lesen entfernen wenden dies auf alle angezeigten Adressen an. |
| RolllĂ€den & Thermostate | Zusammengesetzte EntitĂ€ten, die mehrere Adressen bĂŒndeln (siehe unten). |
RolllÀden & Thermostate
RolllĂ€den und Thermostate fassen mehrere Gruppenadressen zu einer HA-EntitĂ€t zusammen und können daher nicht aus einem einzelnen DPT abgeleitet werden - fĂŒgen Sie sie in der Liste hinzu:
- Rollladen: Auf/Ab-GA (1.008), optionale Stopp-GA (1.007), optionale Positions-GA Befehl/Status (5.001). Position invertieren bildet KNX (0% = offen) auf Home Assistant (100% = offen) ab.
- Thermostat: GA Ist-Temperatur (9.001), GA Sollwert Befehl/Status (9.001), optionale Ein/Aus-GA (1.001 â off/heat), plus Min-/Max-Temperatur und Schrittweite.
Die Datenpunkttypen werden aus dem ETS-Import gelesen, sofern vorhanden, andernfalls aus KNX-Standardwerten. FĂŒr zuverlĂ€ssige Statuswerte sollten die von RolllĂ€den/Thermostaten verwendeten Adressen im ETS-Import enthalten sein.
Native KNX-Integration vs. MQTT-Bridge. Wenn Home Assistant bereits ĂŒber seine eingebaute KNX-Integration mit KNX kommuniziert, werden RolllĂ€den/Klima dort mit Gruppenadressen konfiguriert und diese MQTT-Bridge wird nicht benötigt. Verwenden Sie diesen Modus, wenn Node-RED den KNX-Bus besitzt und Home Assistant alles ĂŒber MQTT sieht.
FeldĂŒbersicht
| Feld | Zweck | Hinweise |
|---|---|---|
| Label | Anzeigename | Erscheint im Status und in msg.bridge.label. |
| GA / DPT | Gruppenadresse und Datapoint | Manuell oder ĂŒber ETS-AutovervollstĂ€ndigung setzen. |
| Richtung | KNXâIoT, IoTâKNX, Bidirektional | Steuert, welche AusgĂ€nge genutzt werden. |
| Kanaltyp | MQTT / REST / Modbus | Bestimmt die Bedeutung von Target. |
| Target | Topic, Basis-URL oder Register | Leer = Verwendung von outputtopic. |
| Template | String-Format | Platzhalter {{value}}, {{ga}}, {{type}}, {{target}}, {{label}}, {{isoTimestamp}}. |
| Skalierung / Offset | Numerische Umrechnung | Wird in KNXâIoT angewandt; IoTâKNX nutzt die inverse Rechnung. |
| Timeout / Wiederholungen | Retry-Hinweise | Können von nachfolgenden Nodes zur Steuerung von Wiederholungen genutzt werden. |
Typische Transporte
MQTT-Broker
- Publizieren: Ausgang 1 an den Core-Node
mqtt outanschlieĂen.msg.topicundmsg.payloadsind bereits gesetzt. - Abonnieren: Ein
mqtt in-Node am Eingang wandelt MQTT-Nachrichten in KNX-SchreibvorgÀnge um. Ausgang 2 liefert eine BestÀtigung.
REST-API
- Ausgang 1 in den Core-Node
http request(oder contrib wienode-red-contrib-http-request) fĂŒhren. - Der Bridge kopiert
bridge.methodnachmsg.methodund den Template-Output nachmsg.payload, ideal fĂŒr Webhooks.
Modbus-Register
- Mit
node-red-contrib-modbuskombinieren (modbus-flex-write,modbus-write). Targetentspricht dem Register;msg.payloadliefert den skalierten Wert.
Beispiel-Flows
Status KNX â MQTT
[
{
"id": "bridge1",
"type": "knxUltimateIoTBridge",
"z": "flow1",
"server": "gateway1",
"name": "Licht-Bridge",
"emitOnChangeOnly": true,
"readOnDeploy": true,
"acceptFlowInput": true,
"mappings": [
{
"id": "map-licht",
"enabled": true,
"label": "Wohnzimmerlicht",
"ga": "1/1/10",
"dpt": "1.001",
"direction": "bidirectional",
"iotType": "mqtt",
"target": "knx/light/living",
"method": "POST",
"modbusFunction": "writeHoldingRegister",
"scale": 1,
"offset": 0,
"template": "{{value}}",
"property": "",
"timeout": 0,
"retry": 0
}
],
"wires": [["mqttOut"],["debugAck"]]
},
{
"id": "mqttOut",
"type": "mqtt out",
"name": "MQTT Status",
"topic": "",
"qos": "0",
"retain": "false",
"broker": "mqttBroker",
"x": 520,
"y": 120,
"wires": []
},
{
"id": "debugAck",
"type": "debug",
"name": "KNX Ack",
"active": true,
"tosidebar": true,
"complete": "true",
"x": 520,
"y": 180,
"wires": []
}
]
MQTT-Befehl â KNX
[
{
"id": "mqttIn",
"type": "mqtt in",
"name": "MQTT Befehl",
"topic": "knx/light/living/set",
"qos": "1",
"datatype": "auto",
"broker": "mqttBroker",
"x": 140,
"y": 200,
"wires": [["bridge1"]]
}
]
Kombinieren Sie beide Ausschnitte, um einen KNX â MQTT Roundtrip mit BestĂ€tigung zu erhalten.
REST-Snapshot
{
"id": "bridge-rest",
"type": "knxUltimateIoTBridge",
"name": "Leistungs-Bridge",
"mappings": [
{
"label": "Wirklast gesamt",
"ga": "2/1/20",
"dpt": "9.024",
"direction": "knx-to-iot",
"iotType": "rest",
"target": "https://example/api/knx/power",
"method": "POST",
"template": "{\"value\":{{value}},\"ga\":\"{{ga}}\",\"ts\":\"{{isoTimestamp}}\"}"
}
]
}
Leiten Sie Ausgang 1 in http request und nutzen Sie die Antwort samt bridge.retry fĂŒr Wiederholstrategien.
Modbus-Schreibvorgang
- Setzen Sie
Target = 40010,Typ = Modbus,Richtung = Bidirectional. - Verbinden Sie Ausgang 1 mit
modbus-flex-writeund ĂŒbergeben Siemsg.payloadan den Werte-Eingang. - Verwenden Sie das Ack, um KNX-Synchronisation nach RegisterĂ€nderungen zu ĂŒberwachen.
Tipps
- Lassen Sie
Targetleer, wenn mehrere Zuordnungen dasselbeoutputtopicnutzen sollen. emitOnChangeOnlyreduziert Sensordatenrauschen; deaktivieren Sie es bei Bedarf.- Ausgang 2 spiegelt immer den ursprĂŒnglichen IoT-Payload mit
bridge-Metadaten wider â hilfreich zum Debuggen der Skalierung. - FĂŒr spezielle Modbus-FlieĂkommaformate kann ein
function-Node das gewĂŒnschte Byte-Layout erzeugen.
Viel Erfolg beim Bridging!