目录结构
daemon安装的默认目录结构如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/etc/thingsboard-gateway/config - Configuration folder.
tb_gateway.json - Main configuration file for Gateway.
logs.json - Configuration file for logging.
modbus.json - Modbus connector configuration.
mqtt.json - MQTT connector configuration.
ble.json - BLE connector configuration.
opcua.json - OPC-UA connector configuration.
request.json - Request connector configuration.
can.json - CAN connector configuration.
...
/var/lib/thingsboard_gateway/extensions - Folder for custom connectors/converters.
modbus - Folder for Modbus custom connectors/converters.
mqtt - Folder for MQTT custom connectors/converters.
__init__.py - Default Python package file, needed for correct imports.
custom_uplink_mqtt_converter.py - Custom MQTT converter example.
...
opcua - Folder for OPC-UA custom connectors/converters.
ble - Folder for BLE custom connectors/converters.
request - Folder for Request custom connectors/converters.
can - Folder for CAN custom connectors/converters.
/var/log/thingsboard-gateway - Logs folder.
connector.log - Connector logs.
service.log - Main gateway service logs.
storage.log - Storage logs.
tb_connection.log - Logs for connection to the ThingsBoard instance.
环境变量
网关支持通过环境变量配置关键连接参数。 例如,以下示例展示了如何在Docker Compose文件中通过环境变量配置host、port和access token等基本参数:
1
2
3
4
5
6
7
8
9
10
11
12
13
version: '3.4'
services:
# ThingsBoard IoT Gateway Service Configuration
tb-gateway:
image: thingsboard/tb-gateway
container_name: tb-gateway
...
# Environment variables
environment:
- TB_GW_HOST=host.docker.internal
- TB_GW_PORT=1883
- TB_GW_ACCESS_TOKEN=YOUR_ACCESS_TOKEN
...
上例中,通过”TB_GW_HOST“、”TB_GW_PORT“和”TB_GW_ACCESS_TOKEN“环境变量,分别将”host.docker.internal“设为host,1883设为port,”YOUR_ACCESS_TOKEN“设为access token。
下列环境变量可用于配置ThingsBoard IoT Gateway:
| ENV variable | Default value | 说明 |
|---|---|---|
| TB_GW_HOST | host.docker.internal | ThingsBoard服务器的主机名或IP地址。 |
| TB_GW_PORT | 1883 | ThingsBoard服务器上的MQTT服务端口。 |
| TB_GW_ACCESS_TOKEN | YOUR_ACCESS_TOKEN | ThingsBoard中网关的访问令牌。 |
| TB_GW_CA_CERT | CA证书文件路径。 | |
| TB_GW_PRIVATE_KEY | 私钥文件路径。 | |
| TB_GW_CERT | 证书文件路径。 | |
| TB_GW_CLIENT_ID | ThingsBoard端网关的MQTT客户端ID。 | |
| TB_GW_USERNAME | ThingsBoard端网关的MQTT用户名。 | |
| TB_GW_PASSWORD | ThingsBoard端网关的MQTT密码。 | |
| TB_GW_RATE_LIMITS | 15:1,300:60, | 向ThingsBoard发送消息的速率限制,格式为 MESSSAGE_COUNT:TIME,。 |
| TB_GW_DP_RATE_LIMITS | 15:1,300:60, | 向ThingsBoard发送数据点的速率限制,格式为 DATA_POINTS_COUNT:TIME,。 |
| TB_GW_LOGS_PATH | /thingsboard_gateway/logs | 日志目录路径。 |
通用配置文件
主配置文件用于连接ThingsBoard平台实例及启用/禁用connector。
以下示例将连接位于thingsboard.cloud的ThingsBoard实例,使用内存存储,最多保存100,000条记录。 示例中启用了4种connector。若只需一种,可从配置中移除其余connector。
主配置文件示例。点击展开。
配置文件各区块
- thingsboard –连接ThingsBoard平台的配置。
- security –加密与鉴权类型配置。
- storage –设备上报数据的本地存储配置。
- connectors – connector数组及其配置。
连接ThingsBoard
| 参数 | 默认值 | 说明 |
|---|---|---|
| thingsboard | 连接服务器的配置。 | |
| host | thingsboard.cloud | ThingsBoard服务器的主机名或IP地址。 |
| port | 1883 | ThingsBoard服务器上的MQTT服务端口。 |
| qos | 1 | QoS级别:0(最多一次)和1(至少一次)。 |
| minPackSendDelayMS | 200 | 发送数据包之间的延迟(降低此值将增加CPU占用)。 |
| minPackSizeToSend | 500 | 发送数据包的最小大小。 |
子区块「statistics」
该子区块用于配置统计数据的采集及上报至ThingsBoard网关设备属性。
| 参数 | 默认值 | 说明 |
|---|---|---|
| statistics | 启用统计采集的配置。 | |
| … enable | true | 布尔值,用于开启/关闭统计采集。 |
| … statsSendPeriodInSeconds | 3600 | 整数,表示定期发送数据的间隔(秒)。 |
| … configuration | statistics.json | 额外用户统计数据配置文件名(单位:秒)。 |
可定义额外参数「configuration」,并提供自定义命令采集附加数据。 配置文件示例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[
{
"timeout": 100,
"command": ["/bin/sh", "-c", "ps -A -o cpu,%mem | awk '{cpu += $1}END{print cpu}'"],
"attributeOnGateway": "CPU"
},
{
"timeout": 100,
"command": ["/bin/sh", "-c", "ps -A -o %cpu,%mem | awk '{mem += $2}END{print mem}'"],
"attributeOnGateway": "Memory"
},
{
"timeout": 100,
"command": ["/bin/sh", "-c", "ipconfig getifaddr en0"],
"attributeOnGateway": "IP address"
},
{
"timeout": 100,
"command": ["/bin/sh", "-c", "sw_vers -productName"],
"attributeOnGateway": "OS"
},
{
"timeout": 100,
"command": ["/bin/sh", "-c", "uptime"],
"attributeOnGateway": "Uptime"
},
{
"timeout": 100,
"command": ["/bin/sh", "-c", "system_profiler SPUSBDataType"],
"attributeOnGateway": "USBs"
}
]
不同操作系统(Linux、macOS、Windows)的示例文件可参见 /config/statistics/ 目录。
子区块「deviceFiltering」
该子区块为可选,用于过滤允许向ThingsBoard发送数据的设备。
设备过滤功能可按指定条件定义过滤规则。
| 参数 | 默认值 | 说明 |
|---|---|---|
| deviceFiltering | 设备过滤配置。 | |
| … enable | false | 布尔值,用于开启/关闭设备过滤。 |
| … filterFile | list.json | 配置文件名。 |
配置文件示例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"deny": {
"MQTT Broker Connector": [
"Temperature Device",
"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$)"
],
"Modbus Connector": [
"My Modbus Device"
]
},
"allow": {
"MQTT Broker Connector": [
"My Temperature Sensor"
]
}
}
上述配置包含两个主要属性:「deny」和「allow」。每个属性的键为connector类型,值为设备名称数组。
「deny」用于指定哪些设备被禁止访问指定的connector。列在各connector名称下的设备将被阻止访问该connector。
「deny」属性结构如下:
1
2
3
4
5
6
7
8
"deny": {
"<Connector Name>": [
"<Device Name 1>",
"<Device Name 2>",
...
],
...
}
示例:
1
2
3
4
5
6
7
8
9
"deny": {
"MQTT Broker Connector": [
"Temperature Device",
"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$)"
],
"Modbus Connector": [
"My Modbus Device"
]
}
上例中定义的规则为: *设备「Temperature Device」及任何符合邮箱格式的设备均被禁止访问「MQTT Broker Connector」。 *设备「My Modbus Device」被禁止访问「Modbus Connector」。
「allow」用于指定明确允许访问特定connector的设备。列在各connector下的设备将拥有该connector的完全访问权限。
「allow」属性结构如下:
1
2
3
4
5
6
7
8
"allow": {
"<Connector Name>": [
"<Device Name 1>",
"<Device Name 2>",
...
],
...
}
示例:
1
2
3
4
5
"allow": {
"MQTT Broker Connector": [
"My Temperature Sensor"
]
}
上例中定义的规则为: *设备「My Temperature Sensor」被允许访问「MQTT Broker Connector」。
设备过滤功能通过设备名称灵活定义允许或禁止访问connector的规则。使用「deny」和「allow」可方便控制网关内设备的访问权限。
子区块「checkingDeviceActivity」
该子区块为可选,用于监控每个已连接设备的活跃度。
定义该区块后,网关将按间隔秒数检查各设备活跃度;若设备在指定秒数内无活动,网关将断开该设备。
| 参数 | 默认值 | 说明 |
|---|---|---|
| checkingDeviceActivity | 设备活跃度检查配置。 | |
| … checkDeviceInactivity | false | 布尔值,用于开启/关闭设备活跃度检查。 |
| … inactivityTimeoutSeconds | 120 | 设备无活动时长,超过后网关将断开。 |
| … inactivityCheckPeriodSeconds | 10 | 设备活跃度检查周期(秒)。 |
子区块「security」
security子区块共3种配置方式:
|
accessToken 是一种安全配置方式。 请登录 ThingsBoard 平台实例,进入”设备”标签页,点击加号图标, 填写相应信息并勾选”Is gateway(作为网关)”选项, 打开该设备并点击”COPY ACCESS TOKEN(复制访问令牌)”按钮,将默认值替换为您的令牌
配置文件中的 security 配置小节将如下所示: |
一种安全配置方式为使用 clientId、username 和 password。获取方式为:登录 ThingsBoard 平台实例, 进入”设备”标签页,点击加号图标,填写相应信息并勾选”Is gateway(作为网关)”选项, 点击”Next: Credentials(下一步:凭据)”,勾选”Add credentials(添加凭据)”, 选择凭据类型”MQTT Basic”,将默认值替换为您的值。
|
下表描述了在ThingsBoard 平台上配置 IoT Gateway 授权的参数。
配置文件中的 security 配置小节将如下所示: |
下表描述了在ThingsBoard 平台上配置 IoT Gateway 授权的参数。
配置文件中的 security 配置小节将如下所示: |
子区块「provisioning」
供应配置共有4种选项(更多供应说明见官方文档):
使用以下配置,可将 Gateway 设置为通过服务器 provisioning 策略使用自动生成的 Access Token:
配置文件中的 provisioning 配置小节将如下所示: |
使用以下配置,可将 Gateway 设置为使用 Access Token provisioning 策略:
配置文件中的 provisioning 配置小节将如下所示: |
使用以下配置,可将 Gateway 设置为使用 MQTT Basic provisioning 策略:
配置文件中的 provisioning 配置小节将如下所示: |
使用以下配置,可将 Gateway 设置为使用 X.509 证书 provisioning 策略:
配置文件中的 provisioning 配置小节将如下所示: |
存储配置
storage子区块用于配置在将数据发送至ThingsBoard平台前的本地保存方式。
该区块共有3种类型:memory、file、SQLite。
- Memory存储-将接收的数据保存到内存。
- File存储-将接收的数据保存到硬盘。
- SQLite存储-将接收的数据保存到 .db文件。
* – 若存储数据量已达该参数值,新收到的数据将会丢失。 配置文件中的 storage 部分如下所示: |
* –- 若 DB 文件数量达到 max_db_amount 且最后一个数据库超过 size_limit,新数据将丢失,直到之前的数据从数据库读取并传递到平台。
请注意:默认数据库文件名为 data.db。 配置文件中的 storage 部分如下所示: |
* – 若数据量已达该参数,新收到的数据将会丢失。 配置文件中的 storage 部分如下所示: |
Connectors配置
connectors区块用于配置通过已实现协议连接设备的connector。 每个connector的配置需包含下表所列参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
| useGRPC | true | 可选,用于开启/关闭默认connector的GRPC传输 |
| name | MQTT Broker Connector | connector名称。 |
| type | mqtt | connector类型,需与配置文件所在目录名一致。 |
| configuration | mqtt.json | config目录下配置文件名。* |
* –配置文件所在目录。
配置文件中的connectors区块可不同于下述示例,但结构应保持一致:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
...
"connectors": [
{
"type": "mqtt",
"name": "MQTT Broker Connector",
"configuration": "mqtt.json"
},
{
"type": "modbus",
"name": "Modbus Connector",
"configuration": "modbus.json"
},
{
"type": "modbus",
"name": "Modbus Serial Connector",
"configuration": "modbus_serial.json"
},
{
"type": "opcua",
"name": "OPC-UA Connector",
"configuration": "opcua.json"
}
]
...
注意:可同时使用多个同类型connector,但需为各自指定不同的名称和配置文件。
如需其他类型的connector,可参考自定义指南自行实现,或发送邮件至:info@thingsboard.io。