本指南将帮助您熟悉ThingsBoard IoT Gateway的KNX连接器配置。 请使用通用配置指南启用此连接器。该连接器的 用途是将基于KNX的设备接入ThingsBoard,处理来自KNX设备的数据并控制 KNX自动化系统。
下面将说明连接器配置文件。
连接器配置:knx.json
连接器配置是一个JSON文件,包含如何连接KNX设备、处理数据及其他服务功能的信息。下面通过示例来了解配置文件的格式。
KNX连接器配置文件示例。
“Client”部分
本部分配置用于设置KNX客户端,该客户端负责与KNX路由器的通信。
| 参数 | 默认值 | 描述 |
|---|---|---|
| type | AUTOMATIC | 连接类型(详细描述见下文):AUTOMATIC、ROUTING、TUNNELING、TUNNELING_TCP、TUNNELING_TCP_SECURE。 |
| addressFormat | LONG | 地址格式(详细描述见下文):SHORT、LONG、FREE。 |
| localIP | 本地IP或接口名称。 | |
| localPort | 本地端口。 | |
| autoReconnect | true | 如果无法建立连接,自动重新连接KNX/IP隧道设备。 |
| autoReconnectWait | 3 | 尝试重新连接KNX/IP隧道设备前等待n秒。 |
| gatewayIP | KNX/IP隧道设备的IP或主机名。 | |
| gatewayPort | 3671 | KNX/IP隧道设备的端口。 |
| individualAddress | 独立地址。 | |
| rateLimit | 0 | 可通过报文队列限制到KNX/IP接口的出站流量。0表示禁用速率限制器。 |
| multicastGroup | 224.0.23.12 | KNXnet/IP路由的组播组。 |
| multicastPort | 3671 | KNXnet/IP路由的组播端口。 |
| stateUpdater | false | 用于设置设备使用的默认状态更新机制。 |
地址格式:
- SHORT -类似”1/34”的表示方式,不带中间组;
- LONG -类似”1/2/34”的表示方式,带中间组;
- FREE -整数或十六进制表示。
连接类型:
- AUTOMATIC -使用GatewayScanner在网络中搜索和发现KNX/IP设备;
- ROUTING -使用KNX/IP组播路由;
- TUNNELING -通过UDP连接到特定的KNX/IP隧道设备;
- TUNNELING_TCP -通过TCP连接到特定的KNX/IP隧道v2设备;
- TUNNELING_TCP_SECURE -通过安全TCP连接到特定的KNX/IP隧道v2设备。
示例:
1
2
3
4
5
6
7
8
"client": {
"type": "AUTOMATIC",
"addressFormat": "LONG",
"localIp": "127.0.0.1",
"localPort": 3671,
"autoReconnect": true,
"autoReconnectWait": 3,
},
“Security”子部分
KNX协议安全由两种主要安全机制组成,旨在保护KNX系统中的通信:
- KNX IP Secure -加密和保护KNX IP设备(路由器和接口)之间通过IP网络的通信;
- KNX Data Secure -在报文(数据)级别加密通信,防止未经授权地控制或读取KNX组地址;
- KNX Secure Tunneling(扩展KNX IP Secure)-加密KNX安全IP接口与客户端之间的通信。
要启用安全功能,您需要在”client“部分的”security“子部分中设置以下参数:
保护通过基于以太网/IP 的网络传输的数据,防止未授权访问和篡改。 这些参数可在 “security” 子节中配置:
配置文件中此子节如下所示: |
保护任意介质(如 TP、RF 或 IP)上的敏感 KNX 消息。 这些参数可在 “security” 子节中配置:
配置文件中此子节如下所示: |
为安全隧道会话提供认证与加密。 这些参数可在 “security” 子节中配置:
配置文件中此子节如下所示: |
“Gateways Scanner”子部分
当您不知道KNX路由器的IP地址时,网关扫描器非常有用。它会扫描网络中的KNX路由器,并在日志中打印检测到的IP地址。
以下参数可在”gatewaysScanner“子部分中进行配置:
| 参数 | 默认值 | 描述 |
|---|---|---|
| enabled | true | 启用网关扫描器。 |
| scanPeriod | 3 | 用于设置扫描周期(秒)。 |
| stopOnFound | false | 找到第一个KNX路由器时停止扫描。 |
配置文件中此子部分如下所示:
1
2
3
4
5
"gatewaysScanner": {
"enabled": true,
"scanPeriod": 3,
"stopOnFound": false
}
输出示例:
1
2
3
4
5
Found KNX gateway:
- Calimero test network 1.1.0
192.168.1.160:3671
Tunneling: TCP
Routing: Yes
“Devices”部分
本部分用于配置设备轮询周期和数据处理。该部分由对象数组组成,每个对象包含以下字段:
- deviceInfo -设备名称和配置文件配置。
- pollPeriod -轮询周期(毫秒)。
- attributes -包含属性配置的对象数组。
- timeseries -包含时间序列配置的对象数组。
设备配置的总体视图如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
"devices": [
{
"deviceInfo": {
...
},
"pollPeriod": 5000,
"attributes": [
...
],
"timeseries": [
...
]
}
]
“Device Info”子部分
本子部分用于配置将在ThingsBoard上创建的设备名称和配置文件。 以下参数可在设备对象的”deviceInfo“子部分中进行配置:
| 参数 | 默认值 | 描述 |
|---|---|---|
| deviceNameDataType | string | 值类型。 |
| deviceNameExpressionSource | expression | 表达式来源:expression或constant。 |
| deviceNameExpression | Device ${1/0/5} | 设备名称表达式。 |
| deviceProfileDataType | none | 值类型。 |
| deviceProfileExpressionSource | constant | 表达式来源:expression或constant。 |
| deviceProfileNameExpression | default | 设备配置文件表达式。 |
配置文件中此子部分如下所示:
1
2
3
4
5
6
7
8
"deviceInfo": {
"deviceNameDataType": "string",
"deviceNameExpressionSource": "expression",
"deviceNameExpression": "Device ${1/0/5}",
"deviceProfileDataType": "none",
"deviceProfileExpressionSource": "constant",
"deviceProfileNameExpression": "default"
},
“Attributes”和”Timeseries”子部分
这些子部分用于配置将发送到ThingsBoard的遥测数据和属性,并提供处理KNX设备数据的设置。
下表描述了属性和时间序列参数:
| 参数 | 描述 |
|---|---|
| type | 数据类型。 |
| key | 键名称。 |
| groupAddress | 组地址。 |
属性部分示例:
1
2
3
4
5
6
7
"attributes": [
{
"type": "temperature",
"key": "temperature",
"groupAddress": "1/0/6"
}
],
时间序列部分示例:
1
2
3
4
5
6
7
"timeseries": [
{
"type": "humidity",
"key": "humidity",
"groupAddress": "1/0/7"
}
]
“Attribute Updates”部分
此配置部分是可选的。
ThingsBoard允许配置设备属性并从设备应用程序中获取其中一些属性。您可以将其视为设备的远程配置,使设备能够从ThingsBoard请求共享属性。更多详情请参阅用户指南。
“attributeRequests”配置允许您配置将发送到KNX设备的相应属性数据的格式。该配置是一个对象数组,每个对象包含以下字段:
| 参数 | 默认值 | 描述 |
|---|---|---|
| deviceNameFilter | .* | 用于确定执行哪个功能的正则表达式设备名称过滤器。 |
| dataType | string | 值类型。 |
| groupAddress | 1/0/5 | 组地址。 |
| key | sharedName | 共享属性名称。 |
配置文件中此子部分如下所示:
1
2
3
4
5
6
7
8
"attributeUpdates": [
{
"deviceNameFilter": ".*",
"dataType": "percent_U8",
"groupAddress": "1/0/9",
"key": "brightness"
}
],
“RPC”部分
ThingsBoard允许向直接或通过网关连接到ThingsBoard的设备发送RPC命令。
本部分提供的配置用于从ThingsBoard向设备发送RPC请求。该配置是一个对象数组,每个对象包含以下字段:
| 参数 | 默认值 | 描述 |
|---|---|---|
| requestType | read | 请求类型:read或write。 |
| deviceNameFilter | .* | 用于确定执行哪个功能的正则表达式设备名称过滤器。 |
| method | rpcMethod1 | RPC方法名称。 |
| dataType | string | 值类型。 |
| groupAddress | 1/0/5 | 组地址。 |
配置文件中此子部分如下所示:
1
2
3
4
5
6
7
8
9
"serverSideRpc": [
{
"requestType": "read",
"deviceNameFilter": ".*",
"method": "get_name",
"dataType": "string",
"groupAddress": "1/0/5"
}
]
此外,每个遥测和属性参数都内置了SET RPC方法,无需手动配置。要使用它们,请确保设置所有必需的参数(对于KNX连接器, 这些参数包括:dataType、groupAddress和value -仅当RPC方法名称为”set“时)。 更多详情请参阅指南。
下一步
探索与ThingsBoard主要功能相关的指南: