2. thingsboard 网关-目录结构及配置和功能演示

本文详细介绍了ThingsBoardGateway3.0.1的配置结构,包括配置文件、连接器配置(如MQTT和OPC-UA)、存储选项(内存、文件或SQLite)、设备管理和RPC接口的使用。还涵盖了如何激活远程shell以及处理设备重命名和删除的策略。
摘要由CSDN通过智能技术生成

版本说明:以 3.0.1 版本作为基版。

目录结构

分别为配置文件 config,拓展支持 extensions 和日志 logs 三块的内容。

/etc/thingsboard-gateway/config                   - Configuration folder.
    tb_gateway.yaml                               - Main configuration file for Gateway.
    logs.conf                                     - 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.

文件配置

config/tb_gateway.yml 配置

连接到 thingsX

以下仅列举关键的配置参数:

host 是 thingsboard 的 ip 地址
port 是 thingsboard 的 MQTT 的 port 端口。默认应该是 1883。
accessToken 是网关的口令,拷贝设备网关的 token 即可。

示例:

thingsboard:
  host: 192.168.18.105
  port: 1883
  security:
    accessToken: bX9nAyYP1r47lwg0QLF0
存储配置

存储子节中的配置提供了在传入数据被发送到 ThingsBoard 平台之前保存传入数据的配置。

本节有两种变体: 内存或文件。

内存存储-接收到的数据保存到 RAM 内存。
文件存储-接收数据保存到硬盘驱动器。
SQLite 存储-接收数据保存到。数据库文件。

连接器配置

连接器节配置中的配置,用于通过实现的协议连接到设备。

启用 MQTT Connector 配置

在通用配置中启用该种连接器。这个连接器能够连接到外部的 MQTT Broker 并订阅,从而获取从设备中上报的数据,同时,连接器也可以推送来自 ThingsBoard 数据到 MQTT Broker。

这里以演示 mqtt 连接器配置。前提是已安装 mqtt broker。

配置 gateway 中的 config/mqtt.json

这里面最主要的是 broker 这段。

host 就是 broker。的 ip 地址
port 是 broker 的 port 端口
security 是默认的安全配置

配置中的转换器模块

该配置包含一组主题数组,网关将会订阅这些主题并处理设备上报的数据。

Example NameTopicTopic FilterPayloadComments
Example 1/sensor/data/sensor/data{“serialNumber”: “SN-001”, “sensorType”: “Thermometer”, “sensorModel”: “T1000”, “temp”: 42, “hum”: 58}Device Name is part of the payload
Example 2/sensor/SN-001/data/sensor/+/data{“sensorType”: “Thermometer”, “sensorModel”: “T1000”, “temp”: 42, “hum”: 58}Device Name is part of the topic

属性说明:

deviceNameJsonExpression 设备名称
deviceTypeJsonExpression 设备类型,作为 Device profile

connectRequests 说明

ThingsBoard 允许向设备发送关于设备属性更新的 RPC 命令和通知。但是为了发送它们,平台需要知道目标设备是否连接,以及目前使用哪个网关或会话连接设备。如果你的设备不断地发送遥测数据,那么 ThingsBoard 已经知道如何推送通知。如果您的设备刚刚连接到 MQTT 代理并等待 commands/updates,则需要向 Gateway 发送消息并通知设备已连接到代理。

举例

mosquitto_pub \
-h YOUR_MQTT_BROKER_HOST \
-p YOUR_MQTT_BROKER_PORT \
-t "sensors/connect" -m '{"serialNumber":"SN-001"}'

mosquitto_pub \
-h YOUR_MQTT_BROKER_HOST \
-p YOUR_MQTT_BROKER_PORT \
-t "sensor/SN-001/connect" -m ''
disconnectRequest 说明

此配置部分是可选的。 本节提供的配置将用于从代理获取有关断开设备的信息。 如果您的设备仅与 MQTT 代理断开连接并等待commands/updates,则需要向网关发送消息,并通知设备已与代理断开连接。

mosquitto_pub -h YOUR_MQTT_BROKER_HOST \
-p YOUR_MQTT_BROKER_PORT \
-t "sensors/disconnect" -m '{"serialNumber":"SN-001"}'

mosquitto_pub -h YOUR_MQTT_BROKER_HOST \
-p YOUR_MQTT_BROKER_PORT \
-t "sensor/SN-001/disconnect" -m '
attributeUpdates 说明

此配置部分是可选的。 ThingsBoard 允许供应设备属性,并从设备应用程序中获取其中的一些属性。 您可以将此视为设备的远程配置。您的设备能够从 ThingsBoard 请求共享属性。 有关更多详细信息,请参见用户指南。

attributeRequests 配置允许配置相应的属性请求和响应消息的格式。

"retain": true, 默认为 false,如果设置为 true,该消息将被设置为主题的“last known good”/保留消息
"deviceNameFilter": "SmartMeter.*", 正则表达式设备名称筛选器,用于确定要执行哪个函数。
"attributeFilter": "uploadFrequency", 正则表达式属性名筛选器,用于确定要执行哪个函数。
"topicExpression": "sensor/${deviceName}/${attributeKey}", JSON-path 表达式用于创建用于发送消息的主题地址。
"valueExpression": "{\"${attributeKey}\":\"${attributeValue}\"}" JSON-path 表达式用于创建将发送到主题的消息数据。

我们通过 mqtt.js 进行客户端请求发送。

如果不出意外,我们将发现网关已将我们配置的设备信息已经显示到 thingsboard 中去了。

网关功能特性演示

见 likai / bat-tb-gateway-test · GitLab 项目
http://192.168.3.175:9494/likai/tbSimpleHttpOrMqttOrCoapTest

开启网关的远程日志

激活日志功能和设置日志记录级别

在这里插入图片描述

在添加共享属性窗口中。
The name field 必须选择 RemoteLoggingLevel
The value field 用于设置日志打印级别, 可选值如下:

 DEBUG
 INFO
 WARNING
 ERROR
 CRITICAL
 NONE

在这里插入图片描述

在 dashboard 中显示日志

打开网关设备的“最新遥测”选项卡,您将看到新的遥测 LOGS 数据。

1. 勾选 LOGS 选项并点击 “Show on widget” 按钮:
在这里插入图片描述

2. 使用默认的 Cards widget:
在这里插入图片描述

3. 选择 Timeseries 表 Card 小部件并将其添加到 Dashboard。它可以是新的,也可以是现有的仪表板。

在这里插入图片描述

使用 RPC API

创建 dashboard

要使用调试终端,我们必须从 Control 小部件包中添加 RPC 调试终端小部件。
为此,我们采取以下步骤:

1. 打开“仪表板”选项卡;
2. 添加一个新的仪表板;
3.打开创建的仪表板,进入编辑模式,点击右下角的铅笔按钮,点击“添加新的小部件”按钮;
4. 选择 widget bundle-“Control widgets”;
5. 向下滚动并选择 RPC 调试终端小部件;
5. 我们还没有为小部件指定实体类型,所以我们将创建一个新的;
7. 填写所需的字段和相同的实体。网关-是我们的网关设备;
8. 应用所有变更;
9. 已连接的小部件看起来像(自动连接设置)。

现在您可以使用调试终端将 RPC 请求发送到网关。

Gateway RPC methods

gateway_ping RPC method

gateway_ping RPC 方法用于检查到网关的连接和 RPC 处理状态。每个前缀为 “gate_” 的命令将被解释为对通用网关服务的命令,而不是对连接器或设备的 RPC 请求。命令: gateway_ping

gateway_devices RPC method

gateway_devices RPC 方法用于列出通过网关连接的设备,其中包含关于所使用的连接器类型的信息。此方法在 “resp” 中返回具有键值参数的对象,其中: key 是设备名称, 值是标识连接器

gateway_restart RPC method

用于调度重新启动动作,例如 bash gateway_restart 60 设置在60秒内重新启动闸道服务。这种方法使用秒作为测量单位。

gateway_restart 60
gateway_reboot RPC method

用于调度网关设备(硬件?)的重启例如,bash gateway_reboot 60 在一分钟内设置网关设备的重新启动。请注意: 如果以 python 模块而不是守护进程方法启动网关服务,并且运行网关的用户具有重新启动权限,则可以使用此方法。命令:

gateway_reboot 60

激活远程 shell

1. 在通用配置文件(tb_gate.yaml)的 thingsboard 部分中,应该将参数 RemoteShell 添加或更改为 true;

在这里插入图片描述

警告: 此功能可能会导致您的设备的安全问题,我们强烈建议只使用 ssl 加密,如果您不需要,不启用它。

2. 创建 dashboard

选择 widget bundle-“Control widgets”;
向下滚动并选择 RPC 远程 shell 小部件;
填写所需字段和相同的实体。网关-是我们的网关设备;
现在您可以使用 shell 来控制带有网关的设备。例如,我们运行 ls 命令来获取工作目录中的文件和目录列表。

在这里插入图片描述

设备重命名/移除处理

如果设备是使用网关 API 供应的,并且稍后在具有管理权限的用户上重命名或删除 ThingsBoard 上的设备实体,则网关将收到更改通知。这对于网关跟上实际设备实体状态至关重要。在某些改进之前,可能会出现这样的情况: 网关不知道删除或重命名设备实体,因此物理设备会将数据发送到不存在的端点。从 TB v3.3.3 开始,平台使用持久性 RPC 解决了这个问题,以避免上述数据丢失场景。下面你可以找到更多关于解决方案实现的信息。

设备重命名方案
网关使用设备实体名称报告来自连接设备的遥测信息。如果实体名称在 ThingsBoard UI 上被更改,最终用户可能会遇到用旧名称重新配置设备实体(通过网关)的情况。有关重命名的 to-网关通知时,这种情况已经不复存在。

设备删除方案
在 ThingsBoard UI 上删除设备实体会导致数据丢失,因为网关本身不能也不能正确地解决删除问题。通过向网关发送“已删除”通知,后者代表物理设备启动一个新的连接消息,因此该消息不会丢失数据。

网关设备的 RPC 数据示例:

{ "method": "gateway_device_renamed",
  "params": {"Old device name": "New device name"} }
{ "method": "gateway_device_deleted",
  "params": "Removed device name"
}    

ThingsBoard 设置 1 天作为 RPC 的超时。

参考文档

https://thingsboard.io/docs/iot-gateway/what-is-iot-gateway/

  • 21
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将数据通过TCP设备发送到Thingsboard,需要进行以下配置步骤: 1. 在Thingsboard控制台中创建一个新设备,并将设备ID和访问令牌(access token)记录下来。 2. 安装并配置Thingsboard网关,可以参考官方文档进行操作。在配置文件中,将协议设置为“MQTT”,并将主机和端口设置为Thingsboard服务器的主机和端口。还需要在配置文件中添加“tb_mqtt_topic_attribute_updates”和“tb_mqtt_topic_ts_updates”这两个主题。 3. 在Thingsboard控制台中为设备定义属性和遥测数据。属性是设备的元数据,而遥测数据是设备生成的实时数据。可以为设备定义多个属性和遥测数据。 4. 在Thingsboard网关配置文件中,将设备ID和访问令牌添加到“devices”部分,如下所示: ``` "devices": { "device-01": { "type": "mqtt", "host": "localhost", "port": 1883, "username": "", "password": "", "client_id": "", "ca_cert": "", "certfile": "", "keyfile": "", "topic": "v1/devices/me/telemetry", "qos": 1, "retain": false, "access_token": "YOUR_ACCESS_TOKEN" } } ``` 5. 在设备中编写代码,将数据通过TCP设备发送到网关。可以使用Python的paho-mqtt库,如下所示: ``` import paho.mqtt.client as mqtt client = mqtt.Client() client.username_pw_set(username="YOUR_DEVICE_ID", password="YOUR_ACCESS_TOKEN") client.connect("localhost", 1883) client.publish("v1/devices/me/telemetry", '{"temperature": 25}') ``` 6. 如果一切正常,您应该能够在Thingsboard控制台中看到设备的属性和遥测数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值