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 nullbasierte Modbus-Adresse | FĂŒr Modbus ist eine Protokolladresse von 0 bis 65535 erforderlich, keine 4xxxx-Referenz. |
| Modbus-Format / Unit-ID / Bereich / Datentyp | Flex- oder Legacy-Nachrichtenvertrag und Registerdefinition | Neue Zuordnungen sollten Flex nutzen; ein fehlendes Format bleibt aus KompatibilitĂ€tsgrĂŒnden Legacy. |
| 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
Die IoT-Bridge ist ein Nachrichtenadapter fĂŒr node-red-contrib-modbus. Sie erstellt keinen TCP-/seriellen Client und fragt GerĂ€te nicht selbst ab. Installieren Sie eine mit Ihrer Node-RED-Laufzeit kompatible Paketversion und konfigurieren Sie diese Aufgaben in den externen Modbus-Nodes.
| Bereich | Lese-FC | Schreib-FC | Richtung |
|---|---|---|---|
| Coil | 1 | 5 | KNX â Modbus |
| Discrete Input | 2 | â | Nur Modbus â KNX |
| Holding Register | 3 | 6 | KNX â Modbus |
| Input Register | 4 | â | Nur Modbus â KNX |
WĂ€hlen Sie fĂŒr neue Zeilen Mit Flex Write kompatibel, stellen Sie Unit-ID, Bereich und Datentyp ein und tragen Sie in Target die nullbasierte Protokolladresse ein. Ein KNX-Wert fĂŒr ein Coil erzeugt FC5, fĂŒr ein Holding Register FC6. Ausgang 1 ist direkt mit modbus-flex-write kompatibel:
msg.payload = {
value: 215,
fc: 6,
unitid: 1,
address: 9,
quantity: 1
}
FĂŒr Daten in Richtung KNX verbinden Sie den Datenausgang von modbus-flex-getter oder modbus-read mit dem Bridge-Eingang. Flex Getter stellt die Anfrage (fc, unitid, address, quantity) in msg.modbusRequest bereit; Modbus Read behĂ€lt sie in msg.input.payload. Das zurĂŒckgegebene Werte-Array kann in msg.payload oder msg.values liegen. Die Bridge unterstĂŒtzt beide Nachrichtenformen. Aktivieren Sie Keep Msg Properties am Flex Getter. Eine Leseantwort kann mehrere konfigurierte Adressen abdecken, und die Bridge verwendet fĂŒr jede passende Zeile das richtige Array-Element.
UnterstĂŒtzt wird pro Zuordnung ein Bit oder ein einzelnes 16-Bit-Register: bool, uint16 oder int16. Multiword-Werte, 32-Bit-/Float-Dekodierung und Byte-/Wortreihenfolge gehören nicht zu diesem Adapter. Skalierung und Offset folgen raw = KNX Ă Skalierung + Offset; Modbus â KNX nutzt die inverse Rechnung. KNX-Werte beim Deploy lesen fĂŒhrt kein Modbus-Polling aus.
Zuordnungen ohne modbusMessageFormat behalten die skalare Legacy-Ausgabe mit msg.address und msg.modbusFunction auf oberster Ebene; gespeicherte Flows werden daher nicht still migriert.
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 = 9,Typ = Modbus,Format = Mit Flex Write kompatibel,Unit-ID = 1,Bereich = Holding Register,Datentyp = uint16. - Verbinden Sie Ausgang 1 direkt mit
modbus-flex-write; ein Function-Node ist nicht erforderlich. - Verbinden Sie die Antwort von
modbus-readodermodbus-flex-getterfĂŒr Modbus â KNX mit dem Bridge-Eingang. - Importieren Sie
examples/IoT Bridge - Modbus Flex Adapter.jsonals manuellen Starter-Flow ohne Polling.
Tipps
- Lassen Sie
Targetnur bei MQTT-/REST-Zuordnungen leer, dieoutputtopicĂŒbernehmen sollen; Modbus Flex benötigt eine Adresse. emitOnChangeOnlyreduziert Sensordatenrauschen; deaktivieren Sie es bei Bedarf.- Ausgang 2 bestĂ€tigt den tatsĂ€chlich an KNX gesendeten Wert; er ist keine physische Modbus-Lese-/SchreibbestĂ€tigung.
- Eine Handbuchreferenz wie
40010entspricht hĂ€ufig der Adresse9; prĂŒfen Sie immer die GerĂ€tedokumentation.
Viel Erfolg beim Bridging!