联动
| 字段 | 说明 |
|---|---|
| direction | 联动方向,值为>>、<> |
| device0 | 设备 0 的 ID |
| channel0 | 设备 0 的通道,不填表示转发该设备的全部通道 |
| value0 | 设备 0 的通道的值,不填表示转发该通道的全部值。或,该通道不需要传值 |
| device1 | 设备 1 的 ID |
| channel1 | 设备 1 的通道,不填表示转发该设备的全部通道 |
| value1 | 设备 1 的通道的值,不填表示转发该通道的全部值。或,该通道不需要传值 |
| delay | 延迟,单位是秒,精确到 0.001。单向>>支持延迟,双向<>不支持延迟 |
| when | 触发条件,当 when 中的条件符合时,联动才会生效 |
配置示例
通道联动
该示例中:
- d00 开关 打开 双向联动 d01 开关 打开
- d00 开关 关闭 双向联动 d01 开关 关闭
- d02 开关 双向联动 d03 开关
注:上述2种写法都是支持的
灯1关闭联动灯2打开
| device0 | channel0 | value0 | direction | device1 | channel1 | value1 | when | delay |
|---|---|---|---|---|---|---|---|---|
| d01 | switch | off | >> | d02 | switch | on |
完整示例下载transfer_light_switch.xlsx
开关取反/模式循环切换
下载 transfer-toggle-next-prev.xlsx

应用案例:
- 面板单键开关灯
- 面板单键循环切换空调的模式、风速等,支持向前循环切换和向后循环切换。
模式循环切换示例
transfer_button_enum_serialdevice.xlsx
该示例中:
- 使用sensor设备类型的valueenum通道,定义了2个状态a和b。详见示例EXCEL中的myenum设备。valueenum=0/0/0:5.005:a/0+b/1,其中0/0/0是个虚拟组地址,它不会发送数据到KNX总线,也不会接收KNX总线的数据。其作用是定义了a和b这两种状态。
- 使用button设备类型的button1通道,来接收KNX面板的指令(来自组地址1/2/2的数据类型是5.005的值为1的KNX指令)。详见EXCEL示例中的mybutton设备。
- 在联动表中,定义了mybutton button1 >> myenum value next的联动,即接收到mybutton设备的button1指令,联动myenum设备的value通道切换到下一个值,即a和b这2个值会循环切换。如果当前是a,则切换到b,如果当前是b,则切换到a。
- 在设备表中,使用serialdevice设备类型来发送485指令,button1~button8分别是8条指令。详见EXCEL示例中的light_yyddcode设备。
- 在联动表中,定义了myenum设备到light_yyddcode设备的联动,即状态a发送4条指令,状态b发送4条指令。
联动值的补偿

- scale 和 offset 均支持负数
- 单向联动,补偿值 = 原值 * scale + offset
- 双向联动,右值 = 左值 * scale + offset,左值 = (右值 - offset) / scale
when 条件
操作符&&和||

操作符支持&&(and 操作,与操作)和||(or 操作,或操作),支持多个&&或||,但&&和||不能同时存在。
取反操作符!()
2023.0830版本以上主机支持
整个表达式取反,可以在原有表达式的基础上,在外围加一个!(原表达)。原表达式的用法不变。注:仅支持最外围整体取反,暂不支持表达式中间的部分取反。
数值判断
d02:brightness:0||d02:brightness:null
t01:brightness:>50
- 设备通道可能没有初始状态,值就填“null”
- “>”前面的“:”不能省略
changed

通常情况,每隔一段时间就会读取 KNX 总线的设备反馈,添加 changed 条件到 when 中后,仅当值改变时才触发联动。若不添加 changed 条件,则每次读取到 KNX 总线反馈后,都会触发联动。
双向 changed

时间段条件

时间段语法格式:
- time 年/月/日 时:分:秒 星期
- 年: 2019-2099,必填, *代表任意值
- 月: 01-12,必填, *代表任意值
- 日:01-31,必填, *代表任意值
- 时:00-23,必填, *代表任意值
- 分:00-59,必填, *代表任意值
- 秒:00-59,必填, *代表任意值
- 星期:1-7,可以不填, *代表任意值
- 时间段可以通过操作符||或&&,与其他类型的条件组合使用

时间段语法格式 2
注:2022-02-26 及以上版本支持
- time 年/月/日 #时:分:秒-时:分:秒,时:分:秒-时:分:秒 星期
- 示例:
- time */*/* #14:00:00-14:10:00,14:20:00-14:40:00
- time */*/* #14:00:00-14:10:00 || time */*/* #14:20:00-14:40:00
- time */*/* #14:00:00-14:10:00
- time */*/* #14:20:00-14:40:00
- time */*/* #18:00:00-23:59:59,00:00:00-05:59:59
- time */*/* #06:00:00-17:59:59
- 联动时间段条件示例
When条件示例
传感器锁定示例
阈值触发
>=300(20)
其中>=是操作符,300 是阈值,20 是滞后值。行为如下:
- 当 d01 的 co2 值第 1 次>=300 时,触发推送;
- 当 d01 的 co2 值小于 300-20,并再次>=300 时,才会再次触发推送;
<=280(20)
其中<=是操作符,280 是阈值,20 是滞后值。行为如下:
- 当 d01 的 co2 值第 1 次<=280 时,触发推送;
- 当 d01 的 co2 值大于 280+20 时,并再次<=280 时,才会再次触发推送;
操作符
支持的操作符有>=、>、<=、<。
滞后值
滞后值的大小,需要根据实际情况填写,不能太大也不能太小。滞后值太小,数据抖动容易频繁触发条件。滞后值太大,则很较难触发条件。
例如,温度值>=25(1),当温度值>=25 时会触发。此后,温度降到 24.9 度再回到 25 度,则不会触发。只有当温度降到 24 度以下,并再次>=25 时才会触发。
注:只有数值类型的通道支持阈值触发,例如 temperature, settemp, co2 等。valueenum 是枚举类,不支持阈值触发。
