zh CN KNX Node Configuration - Supergiovane/node-red-contrib-knx-ultimate GitHub Wiki

🌐 Language: EN | IT | DE | 简体中文

导航: 首页 概览: Changelog常见问题安全文档:语言栏 KNX 设备: 网关设备节点保护 其他 KNX 节点: 场景控制器看门狗日志节点全局上下文告警器负载控制查看器自动响应HA 翻译器 HUE: Bridge电池按钮接触设备软件更新光照传感器运动场景Tap Dial温度Zigbee 连接 示例: 日志Switch LightDimmingRGB colorRGBW color + WhiteCommand a scene actuatorDatapoint 213.x 4x SetpointDatapoint 222.x 3x SetpointDatapoint 237.x DALI diagsDatapoint 2.x 1 bit proprityDatapoint 22.x RCHH StatusDatetime to BUSRead StatusVirtual DeviceSubtype decodedAlexaApple HomekitGoogle HomeSwitch on/off POE port of Unifi switchSet configuration by msgScene Controller nodeWatchDog nodeGlobal Context nodeAlerter nodeLoad control nodeViewer nodeMySQL, InfluxDB, MQTT Sample


KNX‑ULTIMATE 设备节点设置

该节点用于控制 KNX 组地址(Group Address),是最常用的节点。

示例请见此处

配置

属性 说明
Gateway 选择要使用的 KNX 网关
GA 类型 组地址类型。默认 3‑层级(可输入三层组地址或名称,若已导入 ETS);Global 启动时从全局变量读取;Flow 在流程作用域读取;$Env variable 从环境变量读取;通用模式(监听所有组地址) 对所有 GA 做出响应。
Group Addr. 需要控制的组地址。若已导入 ETS,可直接输入设备名进行匹配。也可留空,之后通过输入消息 msg.setConfig 设置。
Datapoint 与节点关联的 Datapoint。


TAB 高级选项

属性 说明
通用
节点名称 显示名。
Topic 输出消息的 topic。留空则使用组地址。
Passthrough 将输入消息透传到输出。
节点输入 → KNX 总线
Telegram 类型 write 发送写报文(常用);也可选择响应其他类型。
RBE 过滤 按变化上报。启用后,仅当值变化时才发送到总线。需要重复发送相同值时请关闭。启用后在节点名中显示 “rbe”。
KNX 总线 → 节点输出
启动时读取状态 在 Node‑RED 启动及每次重连时读取 GA 状态。节点会缓存值到文件,可选择从文件或总线读取。
RBE 过滤 同上,但作用于输出到流程。
响应写报文 收到写报文时向流程输出一条消息。
响应应答报文 收到应答报文时向流程输出。
响应读报文 收到读报文时向流程输出(用于自定义返回值)。
Multiply/Decimals/Negatives 数值缩放、四舍五入、小数与负值处理(仅数值)。


TAB KNX Function

可使用 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; }

输入(Inputs)

destination (string):三层组地址,如 1/1/0payload (any):要发送的值。 event (string)GroupValue_Write / GroupValue_Response / Update_NoWrite(仅更新内部值,不发送)。 readstatus (boolean):向总线发起读取。 dpt (string):如 1.001writeraw (buffer)bitlenght (int):发送 RAW,bitlenght 为比特长度。 resetRBE (boolean):重置内部 RBE 过滤。 setConfig (json):通过消息修改节点的 GA 与 DPT。

setConfig 详情

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;

输出(Outputs)

  1. 标准输出:PIN1 上的 payload
  2. 错误: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>"
  }
}

流程输入消息(INPUT FLOW MESSAGE)

控制 KNX 设备

节点会将来自流程的消息发送到 KNX 总线;当总线有报文到达时也会输出到流程。除 payload 外,下列属性均为可选。

msg.destination:如 0/0/1

msg.payload:如 true/false/21/"Hello"

msg.eventWrite/Response/Update_NoWrite。当为 Update_NoWrite 时,所有相同 GA 的节点都会向流程输出包含 event: 'Update_NoWrite' 的消息。

需要“读取”时请使用 msg.readstatus = true

msg.readstatus = true:向总线发起读取。

msg.dpt:如 1.001(也接受 9"9""DPT9.001")。

msg.writerawmsg.bitlenght:发送 RAW;会忽略节点上设置的 DPT。

msg.resetRBE = true:重置 RBE 过滤。

通过消息修改配置

示例页请见此处


快速上手(QUICK HOW TO)

更多示例见: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;
⚠️ **GitHub.com Fallback** ⚠️