产品定价 立即试用
IoT网关
文档 > 配置指南 > BLE连接器
入门
安装
目录

BLE连接器配置

本指南将帮助您熟悉ThingsBoard IoT Gateway的BLE连接器配置。 请使用通用配置启用此扩展。 下面将说明连接器配置文件。

BLE连接器需要一些系统库,请根据您系统下的包管理器选择对应版本并运行命令安装所需库:

使用 BLE Connector 及 bleak 库需安装部分系统库和 Python bleak 库。 复制并执行以下命令:

此命令将安装所需库:

1
sudo apt-get install -y libglib2.0-dev zlib1g-dev

此命令将安装 bluepy 库:

1
sudo pip3 install bleak

使用 BLE Connector 及 bleak 库需安装部分系统库和 Python bleak 库。 复制并执行以下命令:

此命令将安装所需库:

1
sudo yum groupinstall -y "development tools"

此命令将安装 bluepy 库:

1
sudo pip3 install bleak

BLE 连接器配置文件示例。

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
{
    "name": "BLE Connector",
    "passiveScanMode": true,
    "showMap": false,
    "scanner": {
        "timeout": 10000,
        "deviceName": "STH11"
    },
    "devices": [
        {
            "name": "Temperature and humidity sensor",
            "MACAddress": "4C:65:A8:DF:85:C0",
            "pollPeriod": 5000,
            "showMap": false,
            "timeout": 10000,
            "telemetry": [
                {
                    "key": "temperature",
                    "method": "notify",
                    "characteristicUUID": "226CAA55-6476-4566-7562-66734470666D",
                    "valueExpression": "[2]"
                },
                {
                    "key": "humidity",
                    "method": "notify",
                    "characteristicUUID": "226CAA55-6476-4566-7562-66734470666D",
                    "valueExpression": "[:]"
                }
            ],
            "attributes": [
                {
                    "key": "name",
                    "characteristicUUID": "00002A00-0000-1000-8000-00805F9B34FB",
                    "method": "read",
                    "valueExpression": "[0:2]"
                }
            ],
            "attributeUpdates": [
                {
                    "attributeOnThingsBoard": "sharedName",
                    "characteristicUUID": "00002A00-0000-1000-8000-00805F9B34FB"
                }
            ],
            "serverSideRpc": [
                {
                    "methodRPC": "sharedName",
                    "withResponse": true,
                    "characteristicUUID": "00002A00-0000-1000-8000-00805F9B34FB",
                    "methodProcessing": "write"
                }
            ]
        }
    ]
}


为便于理解连接器工作方式,下面以小米温湿度传感器通过网关连接ThingsBoard为例说明。

已知设备参数如下: 设备MAC地址:4C:65:A8:DF:85:C0
默认名称特征ID:00002A00-0000-1000-8000-00805F9B34FB(默认特征,ID来自GATT特征文档
温度特征ID:00002A00-0000-1000-8000-00805F9B34FB(自定义特征,在扫描设备特征后获得)

已为该设备创建默认配置以处理其数据、接收通知并写入部分信息。

主部分中编写连接器的通用配置(如连接器名称、扫描模式、扫描器等)。
设备子节中编写与设备连接相关的通用配置(如ThingsBoard中的设备名称、设备MAC地址等)。
遥测子节中编写处理设备数据的配置(网关从何处获取数据、方法及转换器如何将数据解析为ThingsBoard的遥测和属性)。
属性更新子节中编写在收到ThingsBoard属性更新请求后重命名设备的配置。
若设备名为「sharedName」的共享属性发生变化,网关会将该属性的数据写入ID为00002A00-0000-1000-8000-00805F9B34FB的特征。

主部分

本部分包含连接器的通用设置。

参数 默认值 说明
name BLE Connector 连接器名称,用于日志和持久化设备保存。
showMap false 显示所有或特定发现的MAC地址设备。
scanner {“timeout”: 1000, “deviceName”: “NH11”} 用于按名称查找特定设备。为可选节,删除后BLE连接器将发现所有可用设备。
passiveScanMode true 使用被动模式扫描。
devices   包含目标设备数组。

该部分配置示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
{
    "name": "BLE Connector",
    "passiveScanMode": true,
    "showMap": false,
    "scanner": {
        "timeout": 10000,
        "deviceName": "NH11"
    },
    "devices": [
        ...
    ]
}

下面介绍发现可用设备的两种方法。

  1. 第一种场景

    在第一种场景中,由于我们不知道设备的MAC地址和名称,需将BLE连接器配置为显示所有发现的设备。 需使用以下配置:

    1
    2
    3
    4
    5
    
    {
        ...
        "showMap": true
        ...
    }
    

    网关输出:

    24:71:89:cc:09:05 - NH11

    54:bb:12:ff:09:01 - Unknown

    23:cc:34:23:bb:56 - XYZ123

  2. 第二种场景

    在第二种场景中,我们知道蓝牙显示设备的名称,仅需获知其MAC地址。 需使用以下配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    {
        ...
        "showMap": true,
        "scanner": {
            "timeout": 10000,
            "deviceName": "NH11"
        }
        ...
    }
    

    网关输出:

    24:71:89:cc:09:05 - NH11

设备对象子节

本子节包含设备的通用设置及处理数据的各子节。

参数 默认值 说明
name BLE Connector ThingsBoard中的设备名称。
MACAddress 4C:65:A8:DF:C0 目标设备的MAC地址。
deviceType BLEDevice ThingsBoard中的设备类型,默认无此参数,可自行添加。
pollPeriod 5000 读取设备数据的周期(毫秒)。
showMap false 设为true将显示设备中所有GATT对象(特征、服务等)。
timeout 10000 BLE连接器尝试连接设备的时间。
telemetry   处理设备遥测的对象数组。
attributes   处理设备属性的对象数组。
attributeUpdates   处理ThingsBoard属性更新请求的对象数组。
serverSideRpc   处理ThingsBoard RPC请求的对象数组。

该部分配置示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
    "name": "Temperature and humidity sensor",
    "MACAddress": "4C:65:A8:DF:85:C0",
    "showMap": true,
    "pollPeriod": 5000,
    "timeout": 10000,
    "telemetry": [
        ...
    ],
    "attributes": [
        ...
    ],
    "attributeUpdates": [
        ...
    ],
    "serverSideRpc": [
        ...
    ]
}

遥测子节

本子节包含将数据解析为遥测的通用设置。

参数 默认值 说明
key temperature ThingsBoard中的遥测名称。
method notify 特征处理方式(可为NOTIFYREAD)。
characteristicUUID 226CAA55-6476-4566-7562-66734470666D 设备上的特征UUID。
valueExpression [0:1] 发送至ThingsBoard的数据最终形式,[0:1]将按Python切片规则替换为设备数据

该部分配置示例如下:

1
2
3
4
5
6
{
    "key": "temperature",
    "method": "notify",
    "characteristicUUID": "226CAA55-6476-4566-7562-66734470666D",
    "valueExpression": "[0:1]"
},

表中数值可能因您的配置而异。

例如设备返回字节数组b’\x08<\x08\x00’时,8被解析为键的值。

若需将完整响应解析为值,请使用“valueExpression”: “[:]”

更多数据转换示例请参阅「数据转换示例」部分。

属性子节

本子节包含将数据解析为属性的通用设置。

参数 默认值 说明
key name ThingsBoard中的遥测名称。
method read 特征处理方式(可为NOTIFYREAD)。
characteristicUUID 00002A00-0000-1000-8000-00805F9B34FB 设备上的特征UUID。
valueExpression [0:1] cm 发送至ThingsBoard的数据最终形式,[0:1]将按Python切片规则替换为设备数据

该部分配置示例如下:

1
2
3
4
5
6
{
    "key": "name",
    "characteristicUUID": "00002A00-0000-1000-8000-00805F9B34FB",
    "method": "read",
    "valueExpression": "[0:1] cm"
}

上表中的值可能与您的配置不同。

例如设备返回字节串b’\x08<\x08\x00‘时,8 cm被解析为键的值。

若需将完整响应解析为值,请使用“valueExpression”: “[:]”

更多数据转换示例请参阅「数据转换示例」部分。

文档信息图标

来自 GATT规范 的服务和特征也将被解析为设备属性并自动加载至ThingsBoard。

数据转换示例

下面列举更多数据转换示例:

基本场景:有一台测量温湿度的设备,设备具有可读特征,收到数据时数据包含温度和湿度。设备数据形式为:b’\x08<\x08\x00’,可读格式为:[8, 34](数组第一个元素为温度,第二个为湿度)。 1.仅读取温度值

“valueExpression”: “[0]”

发送至ThingsBoard的数据:8 2.仅读取湿度值

“valueExpression”: “[1]”

发送至ThingsBoard的数据:34 3.读取所有值

“valueExpression”: “[:]”或”valueExpression”: “[0:2]”

发送至ThingsBoard的数据:834 4.读取所有值及单位

“valueExpression”: “[0]°C [1]%”

发送至ThingsBoard的数据:8°C 34%

属性更新子节

本子节包含处理ThingsBoard属性更新请求的设置。

参数 默认值 说明
attributeOnThingsBoard sharedName ThingsBoard中共享设备属性的名称。
characteristicUUID 00002A00-0000-1000-8000-00805F9B34FB 将写入属性值的特征UUID。

该部分配置示例如下:

1
2
3
4
{
    "attributeOnThingsBoard": "sharedName",
    "characteristicUUID": "00002A00-0000-1000-8000-00805F9B34FB"
}
文档信息图标

处理属性更新请求时,特征需支持WRITE方法。

服务端RPC子节

本子节包含处理ThingsBoard RPC请求的设置。

参数 默认值 说明
methodRPC rpcMethod1 RPC方法名称。
withResponse true 为true时,将向ThingsBoard发送响应。
characteristicUUID 00002A00-0000-1000-8000-00805F9B34FB 特征UUID。
methodProcessing read 特征处理方法(READ/WRITE/NOTIFY)。

该部分配置示例如下:

1
2
3
4
5
6
{
    "methodRPC": "rpcMethod1",
    "withResponse": true,
    "characteristicUUID": "00002A00-0000-1000-8000-00805F9B34FB",
    "methodProcessing": "read"
}

下一步

探索与ThingsBoard主要功能相关的指南: