zh CN IoT Bridge Configuration - Supergiovane/node-red-contrib-knx-ultimate GitHub Wiki
🌐 Language: EN | IT | DE | FR | ES | 简体中文
导航: 首页 概览: Changelog • 常见问题 • 安全 • 文档:语言栏 KNX 设备: 网关 • 设备 • 节点保护 其他 KNX 节点: 场景控制器 • 看门狗 • 日志节点 • 全局上下文 • 告警器 • 负载控制 • 查看器 • 自动响应 • HA 翻译器 • 物联网桥接 HUE: Bridge • 灯 • 电池 • 按钮 • 接触 • 设备软件更新 • 光照传感器 • 运动 • 场景 • Tap Dial • 温度 • Zigbee 连接 示例: 日志 • Switch Light • Dimming • RGB color • RGBW color + White • Command a scene actuator • Datapoint 213.x 4x Setpoint • Datapoint 222.x 3x Setpoint • Datapoint 237.x DALI diags • Datapoint 2.x 1 bit proprity • Datapoint 22.x RCHH Status • Datetime to BUS • Read Status • Virtual Device • Subtype decoded • Alexa • Apple Homekit • Google Home • Switch on/off POE port of Unifi switch • Set configuration by msg • Scene Controller node • WatchDog node • Global Context node • Alerter node • Load control node • Viewer node • MySQL, InfluxDB, MQTT Sample Contribute to Wiki: Link
KNX ↔ IoT Bridge
Bridge 节点将 KNX 电报标准化为适用于 IoT 传输(MQTT、REST、Modbus)的结构化消息,并允许通过 Flow 输入写回 KNX 总线。本文概述配置要点以及推荐的第三方节点。
字段速览
字段 | 作用 | 备注 |
---|---|---|
Label | 显示名称 | 展示在状态栏和 msg.bridge.label 中。 |
GA / DPT | 组地址与数据点 | 可手动填写或使用 ETS 自动补全。 |
Direction | KNX→IoT / IoT→KNX / 双向 | 决定启用的输出。 |
Channel type | MQTT / REST / Modbus | 改变 Target 的意义。 |
Target | 主题、基础 URL 或寄存器 | 留空时使用节点的 outputtopic 。 |
Template | 字符串模板 | 支持 {{value}} , {{ga}} , {{type}} , {{target}} , {{label}} , {{isoTimestamp}} 。 |
Scale / Offset | 数值转换 | 用于 KNX→IoT;IoT→KNX 使用逆变换。 |
Timeout / Retry | 重试提示 | 下游节点可据此控制重新发送。 |
常见传输
MQTT Broker
- 发布:将输出 1 接到核心节点
mqtt out
,桥接已填充主题和载荷。 - 订阅:将
mqtt in
连接到桥接输入以把 MQTT 消息写入 KNX,第 2 输出提供确认。
REST API
- 把输出 1 接入核心
http request
(或如node-red-contrib-http-request
的贡献节点)。 - 桥接节点会把
bridge.method
复制到msg.method
并将模板结果放入 payload,适合向 Webhook 推送 JSON。
Modbus 寄存器
- 搭配
node-red-contrib-modbus
使用(modbus-flex-write
等)。 Target
表示寄存器;msg.payload
带有转换后的值。
Flow 示例
KNX 状态 → MQTT
[
{
"id": "bridge1",
"type": "knxUltimateIoTBridge",
"z": "flow1",
"server": "gateway1",
"name": "灯光桥接",
"emitOnChangeOnly": true,
"readOnDeploy": true,
"acceptFlowInput": true,
"mappings": [
{
"id": "map-light",
"enabled": true,
"label": "客厅灯",
"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"](/Supergiovane/node-red-contrib-knx-ultimate/wiki/"mqttOut"],["debugAck")
},
{
"id": "mqttOut",
"type": "mqtt out",
"name": "MQTT 状态",
"topic": "",
"qos": "0",
"retain": "false",
"broker": "mqttBroker",
"x": 520,
"y": 120,
"wires": []
},
{
"id": "debugAck",
"type": "debug",
"name": "KNX 回执",
"active": true,
"tosidebar": true,
"complete": "true",
"x": 520,
"y": 180,
"wires": []
}
]
MQTT 指令 → KNX
[
{
"id": "mqttIn",
"type": "mqtt in",
"name": "MQTT 指令",
"topic": "knx/light/living/set",
"qos": "1",
"datatype": "auto",
"broker": "mqttBroker",
"x": 140,
"y": 200,
"wires": ["bridge1"](/Supergiovane/node-red-contrib-knx-ultimate/wiki/"bridge1")
}
]
组合上述片段即可实现 KNX ↔ MQTT 循环并获得确认。
REST 快照
{
"id": "bridge-rest",
"type": "knxUltimateIoTBridge",
"name": "功率桥接",
"mappings": [
{
"label": "总有功功率",
"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}}\"}"
}
]
}
将输出 1 引入 http request
并结合 bridge.retry
处理重试策略。
Modbus 写入
- 设置
Target = 40010
、Channel type = Modbus
、Direction = Bidirectional
。 - 将输出 1 连接到
modbus-flex-write
,把msg.payload
提供给其值输入。 - 通过第 2 输出确认 KNX 是否已在寄存器更新后同步。
提示
Target
留空时,多个映射可共享outputtopic
。emitOnChangeOnly
可降低高频传感器噪声;如需全部电报,可关闭。- 第 2 输出始终带有 IoT 原始 payload 和
bridge
元数据,便于调试缩放。 - 若设备需要特定 Modbus 浮点格式,可插入
function
节点生成所需字节序。
祝你桥接顺利!