zh CN KNX Node 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 组地址(Group Address),是最常用的节点。
配置
属性 | 说明 |
---|---|
Gateway | 选择要使用的 KNX 网关 |
GA 类型 | 组地址类型。默认 **3‑层级 ** (可输入三层组地址或名称,若已导入 ETS);**Global ** 启动时从全局变量读取;Flow ** 在流程作用域读取;$Env variable ** 从环境变量读取;通用模式(监听所有组地址) 对所有 GA 做出响应。 |
Group Addr. | 需要控制的组地址。若已导入 ETS,可直接输入设备名进行匹配。也可留空,之后通过输入消息 msg.setConfig 设置。 |
Datapoint | 与节点关联的 Datapoint。 |
编辑器可为每个节点显示一个小按钮,用于手动发送 KNX 命令,无需额外的 Inject 节点。
属性 | 说明 |
---|---|
显示手动按钮 | 在工作区和节点列表中显示/隐藏该按钮。 |
按钮动作 | 设置点击后的操作。发送 KNX 读取 会发送标准读取报文;切换布尔值(写入) 适用于 DPT 1.x,可在 true / false 之间切换;写入自定义值 会写入指定值(需与节点的 Datapoint 类型兼容)。 |
切换初始状态 | (仅布尔型 Datapoint)定义切换模式的起始值。节点会根据接收到的 KNX 报文自动更新状态。 |
自定义值 | “写入自定义值” 模式所使用的载荷。支持任何 JSON 字面量,例如 42 、true 、"文本" 或 { "red": 255 } 。 |
仅在启用该选项时才会显示按钮。若节点处于通用模式,则读取操作被禁用,因为节点没有固定的组地址。
属性 | 说明 |
---|---|
通用 | |
节点名称 | 显示名。 |
Topic | 输出消息的 topic。留空则使用组地址。 |
Passthrough | 将输入消息透传到输出。 |
节点输入 → KNX 总线 | |
Telegram 类型 |
write 发送写报文(常用);也可选择响应其他类型。 |
RBE 过滤 | 按变化上报。启用后,仅当值变化时才发送到总线。需要重复发送相同值时请关闭。启用后在节点名中显示 "rbe”。 |
KNX 总线 → 节点输出 | |
启动时读取状态 | 在 Node‑RED 启动及每次重连时读取 GA 状态。节点会缓存值到文件,可选择从文件或总线读取。 |
RBE 过滤 | 同上,但作用于输出到流程。 |
响应写报文 | 收到写报文时向流程输出一条消息。 |
响应应答报文 | 收到应答报文时向流程输出。 |
响应读报文 | 收到读报文时向流程输出(用于自定义返回值)。 |
Multiply/Decimals/Negatives | 数值缩放、四舍五入、小数与负值处理(仅数值)。 |
可使用 JavaScript 自定义:对来自流程的输入消息、以及发送到总线的报文的处理逻辑。编辑器提供若干对象/函数,用于读取任意 GA 的值:导入 ETS 时可不指定 DPT,未导入则需指定 DPT。 脚本在每次收到输入消息或总线报文时执行。启用后,节点名会显示 "f(x)”。
属性 | 说明 |
---|---|
Search GA | 仅在已导入 ETS 时可用:输入并选择 GA,然后将完整字段粘贴到 getGAValue 中。 |
对象/函数 | 说明 |
---|---|
msg |
当前消息对象。 |
getGAValue(GA, DPT?) |
读取 GA 值,如 '1/0/1' 或 '1/0/1 Bed table light' (空格后的文字被忽略)。未导入 ETS 时需提供 DPT。 |
setGAValue(GA, value, DPT?) |
设置 GA 值;DPT 同上。 |
self(value) |
设置当前节点的值并发送到总线(注意循环)。 |
toggle() |
切换当前值并发送到总线。 |
node , RED , return(msg)
|
节点对象,RED 对象,返回消息以继续流转。 |
const statusGA = getGAValue('0/0/09','1.001');
if (msg.payload !== statusGA){ return msg; } else { return; }
if (msg.payload){
setGAValue('0/1/8', true)
setTimeout(function(){ self(off); }, 2000);
}
return msg;
msg.externalTemperature = getGAValue('0/0/10'); // 未导入 ETS:getGAValue('0/0/10','9.001')
return msg;
if (msg.payload === false && getGAValue('0/0/11','1.001') === false){ return; } else { return msg; }
**destination (string) ** :三层组地址,如 1/1/0
。**payload (any) ** :要发送的值。**event (string) ** :GroupValue_Write
/ GroupValue_Response
/ Update_NoWrite
(仅更新内部值,不发送)。**readstatus (boolean) ** :向总线发起读取。**dpt (string) ** :如 1.001
。**writeraw (buffer) ** 、**bitlenght (int) ** :发送 RAW,bitlenght
为比特长度。**resetRBE (boolean) ** :重置内部 RBE 过滤。setConfig (json) :通过消息修改节点的 GA 与 DPT。
var config= { setGroupAddress: "0/1/2", setDPT: "1.001" };
msg.setConfig = config; return msg;
var config= { setGroupAddress: "0/1/2", setDPT: "auto" };
msg.setConfig = config; return msg;
- 标准输出:PIN1 上的
payload
。 - 错误:PIN2 上的
error
(详细错误)。
msg = {
topic: "0/1/2",
payload: false,
previouspayload: true,
payloadmeasureunit: "%",
payloadsubtypevalue: "Start",
devicename: "餐桌灯",
gainfo: {
maingroupname: "Light actuators",
middlegroupname: "First flow lights",
ganame: "Table Light",
maingroupnumber: "1",
middlegroupnumber: "1",
ganumber: "0"
},
echoed: true,
knx: {
event: "GroupValue_Write",
dpt: "1.001",
dptdesc: "Humidity",
source: "15.15.22",
destination: "0/1/2",
rawValue: "<buffer>"
}
}
节点会将来自流程的消息发送到 KNX 总线;当总线有报文到达时也会输出到流程。除 payload
外,下列属性均为可选。
**msg.destination ** :如 0/0/1
。**msg.payload ** :如 true/false/21/"Hello"
。msg.event :Write
/Response
/Update_NoWrite
。当为 Update_NoWrite
时,所有相同 GA 的节点都会向流程输出包含 event: 'Update_NoWrite'
的消息。
需要"读取”时请使用 msg.readstatus = true
。
**msg.readstatus = true ** :向总线发起读取。**msg.dpt ** :如 1.001
(也接受 9
、"9"
、"DPT9.001"
)。**msg.writeraw ** 、**msg.bitlenght ** :发送 RAW;会忽略节点上设置的 DPT。msg.resetRBE = true :重置 RBE 过滤。
更多示例见:SamplesHome
打开灯
msg.payload = true; return msg;
绝对调光
msg.payload = 30; return msg;
向显示屏发送文本
msg.payload = "Output Tem. 35°C"; return msg;
读取状态
// 发送读取请求;需在节点上勾选"React to response telegrams”以接收应答
msg.readstatus = true; return msg;
发送 RAW 到总线
// DPT1 示例:开灯 = Buffer<01>,bitlength = 1
msg.writeraw = Buffer.from('01','hex');
msg.bitlenght = 1; return msg;
// 温度(DPT9)示例:18.4 °C = <0730>
// msg.writeraw = Buffer.from('0730','hex'); return msg;