| 4.2及以上版本 |
在ThingsBoard中,报表是用于以报表形式收集、组织并自动交付数据的强大而灵活的工具。
报表系统围绕两个关键组件构建:
- 报表模板 — 定义报表的结构、内容和格式。模板可以是PDF或CSV格式,并可包含任意支持的组件。
- 调度器事件 — 在指定时间自动触发报表生成,并通过可用渠道(如email、Slack或其他集成)将其发送给所选收件人。
简而言之:模板定义报表内容,而调度器决定何时以及发给谁。
本指南将介绍在ThingsBoard中使用报表的基本步骤,并创建一个报表模板,配置为向两个不同客户自动交付。
开始前
只需一个 ThingsBoard Cloud 账号。可注册账号,无需信用卡,永久免费。
重要:
- 本示例中已创建三台设备和拥有这些设备的两名客户。部分设备上已触发告警。 您需要同样操作 — 否则报表中的设备和告警表将为空。
- 如果您刚开始使用ThingsBoard平台,建议先阅读ThingsBoard专业版入门指南。
步骤1. 创建报表模板
作为示例,让我们创建一个包含以下内容的报表模板:
- 包含所有客户设备的表格,显示其最新遥测值和当前状态。
- 过去24小时这些设备上触发的告警表。
- 两个独立的折线图,分别显示设备过去24小时的温度和湿度值。
此设置既能提供设备状况的最新概览,又能快速查看今日检测到的问题 — 全部整合在一份报表中。
- 从左侧边栏打开”报表“页面。您将自动进入”模板“标签页。
- 点击右上角的”+ 添加报表模板“按钮。
- 选择”创建新报表模板“。
- 在弹窗中填写以下内容:
- 将其名称设为”每日设备告警报表“。
- 选择PDF报表格式。
- 选择报表作为模板类型。
- [可选] 描述:”每日设备活动和告警报表“。
- 点击”添加“以创建报表模板并打开报表构建器界面。
在报表构建器中,您可以设计报表的结构、布局和内容。
- Name it "Daily Device Alarm Report".
- Choose PDF report format.
- Choose Report as the template type.
- Click "Add" to create the report template and open the Report Builder interface.
步骤2. 添加报表组件
报表构建器允许您添加和配置用于定义报表结构和视觉布局的组件。
通过将组件从组件库拖入内容区域来添加组件。
步骤2.1“标题”组件
首先,添加标题组件。
- 在报表组件库中找到并将其拖入报表的标题区域。
- 在编辑器的文本字段下,输入您想要的标题文本。本示例中,我们使用与报表模板相同的名称:
1
每日设备告警报表
- 如需要,可调整字体设置(如大小、样式或对齐)以使标题更突出。
- 完成后,点击应用保存组件。
步骤2.2“富文本”组件
接下来,添加富文本组件,其中包含报表用途的简要说明。
- 在组件库中找到富文本组件,并将其拖入内容区域。
- 在组件的文本字段中输入以下文本(或您偏好的描述)。
例如:
1
本报表列出您项目中当前部署的所有设备及其当日的告警。
- 添加文本后,点击应用。
- Click Apply to save the component.
步骤2.3“实体表”组件
下一个要添加的组件是实体表 — 表格型组件,用于显示所有设备及其最新遥测值和状态列表。
- 从组件库将实体表组件拖放入内容区域。
- 在数据源部分,创建新的实体别名,用于获取类型为设备的所有实体。
- 开启表头并更新表头文本。
- 在列部分:
- 添加新表列,将键设为”temperature“。
- 添加另一列表列,遥测键为”humidity“。
- 再添加一列属性”active“,用于显示设备状态。
- 在列设置中,为每个键的单元格设置居中对齐。
- 点击保存组件以应用更改。
- In the "Columns" section click "Add column".
- In the column settings, set center alignment for the cells of each key.
- Click Apply to save component.
步骤2.4“告警表”组件
下一个要添加的组件是告警表组件,用于显示所选时间段的告警列表。
- 从组件面板将告警表组件拖入报表布局的主内容区域。
- 默认情况下,告警表预配置为显示过去24小时的告警。
- 将所有设备实体别名设为告警来源。
- 在筛选器部分,勾选仅显示当前活动告警。
- 向下滚动,找到标为表头的开关并开启。
- 输入您想要的表头,例如:
1
下表列出您的设备过去一天的告警。
- 如需要,调整水平对齐并减小字体大小。
- 保持表列不变(无需修改)。
- 保存组件。
- Set the entity alias All devices as the alarm source.
- In the Filters section, check the box to display only currently active alarms.
Adjust the horizontal alignment and reduce the font size if desired.
- Save the component.
步骤2.5“折线图”组件
我们将在报表中添加的最后组件是两个独立的折线图,用于可视化温度和湿度的历史遥测趋势。每个图表将表示您设备过去24小时收集的数据。
1. 添加第一个图表 — 温度
- 将折线图组件拖入报表的内容区域。
- 默认情况下,时间窗口显示过去一天的数据,按1小时聚合。
- 将实体别名所有设备设为数据源。
- 保留遥测键temperature,但将标签改为
1
${entityName} temperature - 配置Y轴:
- 标签:温度
- 最小值:15
- 最大值:35
- 单位:°C
- 设置阈值:
- 第一项:30 °C,颜色 红色
- 第二项:18 °C,颜色 蓝色
- 将图例位置设为底部。
- 保存组件。
- Configure the Y axes.
- Save the component.
2. 添加第二个图表 — 湿度
- 在第一个下方拖入另一个折线图组件。
- 将实体别名所有设备指定为数据源。
- 将遥测键设为humidity,单位%,并将标签改为
1
${entityName} humidity - 配置Y轴:
- 标签:湿度
- 单位:%
- 将图例位置设为底部。
- 保存组件。
- Specify the entity alias All devices as the datasource.
- Configure the Y axes.
- Save the component.
步骤2.6保存报表模板并预览
在报表模板中添加并配置所有必需组件后,最后一步是保存您的工作,并可选择生成测试报表以验证显示是否正确。
更新报表文件名
保存模板前,更新报表文件名,便于识别导出的文件:
- 在文件名模式字段中输入清晰、描述性的名称,例如:
1
daily-device-alarm-report-%d{yyyy-MM-dd_HH:mm:ss}
保存模板
要保存当前配置:
- 点击报表构建器界面右上角的保存按钮。
这将把您的布局、组件和设置保存到当前模板下,供手动或定时报表生成时使用。
步骤2.7生成测试报表(可选)
要确保模板配置正确且数据按预期显示,点击”生成测试报表“(位于保存按钮旁边)。 系统将使用您所选实体别名的可用测试数据创建示例报表。
步骤3:为客户安排报表
每日设备告警报表模板准备就绪后,您可以使用调度器功能为客户端配置自动交付。
正确调度的关键点
为确保报表正确生成且包含准确数据,您必须指定:
- 报表收件人 — 将收到生成报表的用户(如经理或客户)。
- 用户账户 — 代表其生成报表的账户。这定义了报表的数据范围和应用的权限。
为何重要
在ThingsBoard中,报表根据触发报表的用户账户的访问权限生成。
示例:
- 如果报表应仅包含客户A拥有的设备,在调度报表时必须将用户字段设为属于客户A的用户的email地址。
- 同样,要为客户B的收件人调度报表,在用户字段中使用客户B用户的email地址。
这确保报表仅显示该特定用户可访问的设备和数据。
步骤3.1为客户A用户调度报表
首先,我们为客户A的所有用户配置报表的自动deliver。 报表将代表Jane Smith(该客户的管理员)生成。
- 进入”报表“页面的”调度“标签页。
- 点击右上角的”+ 定时报表“创建新的调度器事件。
- 在调度对话框中提供以下详情:
- 为调度事件指定清晰的标题,例如:
1
客户A的每日设备告警报表
- 事件类型 — 始终设为创建报表。
- 报表模板 — 选择之前创建的每日设备告警报表模板。
- 用户 — 指定代表其生成报表的用户账户:janesmith@thingsboard.io(Jane Smith — 客户A管理员)。
- 为调度事件指定清晰的标题,例如:
. – Select the previously created Daily Devices Alarm Report template.
– Specify the user account on whose behalf the report will be generated: janesmith@thingsboard.io (Jane Smith — Customer A administrator).
- 设置收件人:
- 在”收件人“字段中,点击新建创建新的收件人组。
- 输入通知收件人组的名称。
- 选择客户用户筛选器。
- 将客户设为客户A。
- 点击”添加“。
- 在”收件人“字段中,点击新建创建新的收件人组。
- 通知模板和推送方式:
- 选择现有通知模板(定义报表的推送方式)并编辑。
- 在Web之外添加Email作为推送方式。点击”下一步“。
- 添加将附加PDF报表的邮件通知的主题和正文。点击”保存“。
- Select Customer users filter.
- Set Customer to Customer A.
- Click "Add".
设置调度
- 进入调度标签页。
- 开始时间 — 设置首次运行的日期和时间。
- 时区 — 选择适用的时区。
- 启用重复:
- 间隔 — 选择每日。
- 结束日期 — 设置结束日期或留空以持续deliver。
- 最后,点击”创建“保存并应用调度器事件。
现在,每天在指定时间,所有客户A用户将自动收到包含其设备告警最新信息的报表。
步骤3.2. 为客户B用户调度报表
现在让我们创建另一个调度事件,将报表发送给客户B的用户。 此报表将代表Emma Johnson — 该客户的管理员生成。
- 在”模板“页面的右上角点击”+ 定时报表“创建新的调度器事件。
- 为调度指定描述性名称,例如:
1
客户B的每日设备告警报表
- 选择与客户A相同的模板 — 每日设备告警报表。
- 将用户账户设为emmajohnson@thingsboard.io(Emma Johnson – 客户B管理员)。
报表将代表此用户生成,仅包含客户B可访问的数据。
- 在”收件人“字段中,点击”新建“创建新的收件人组。
- 名称:输入组名。
- 筛选器:选择客户用户。
- 客户:设为客户B。
- 点击”添加“。
- 使用已配置为通过Email和Web发送消息的现有通知模板。
- 以与客户A相同的方式设置发送调度:
- 开始日期/时间:指定首次运行的日期和时间。
- 重复:启用此选项。
- 间隔:选择”每日“。
- 结束日期:设置调度的结束日期。
- 最后,点击”创建“保存调度器事件。
- Select the same template used for Customer A — Daily Device Alarm Report.
- Set the user account to emmajohnson@thingsboard.io (Emma Johnson – Customer B Administrator). The report will be generated on behalf of this user, containing only the data accessible to Customer B.
- Select Customer users filter.
- Set Customer to Customer B.
- Click "Add".
- Specify the date and time of the first run.
- Enable the "Repeat" option, select
Daily</b> as the interval, and put the schedule's end date.
- Finally, click "Create" to save the scheduler event.
步骤4. 调度事件结果
两种场景使用相同的模板 — 每日设备告警报表。
两个客户的每位用户各自收到的报表仅包含其可访问的实体。
系统在指定时间每天自动发送报表,无需任何人工干预。
在调度事件中指定的时间,客户A和客户B的所有用户将收到通知以及生成的设备告警报表。
通知将通过两个渠道发送:
1. Web UI通知
- 有关生成报表的通知将出现在ThingsBoard Web UI中。
- 租户用户可以直接在ThingsBoard界面中打开报表。
重要:
- 仅租户用户可以直接在ThingsBoard Web UI中查看生成的报表。
- 客户用户无法在Web UI中访问报表 — 他们只能通过Email或Slack接收。 如果收件人是客户用户,请确保至少选择其中一种推送渠道。
2. 邮件通知
- 将向用户发送邮件,主题和正文为您在通知模板中配置的内容。
- 邮件将附带报表作为PDF文件,可在浏览器中打开查看或下载。
从JSON导入模板
如需要,您也可以以JSON文件格式下载现成的“每日设备告警报表”模板。 要将JSON文件中的模板导入您的实例,请参阅本指南中的说明。
下一步
-
连接设备 - 根据连接技术或方案学习如何连接设备。
-
数据可视化 - 配置ThingsBoard复杂仪表盘的说明。
-
数据处理与操作 - 学习使用ThingsBoard规则引擎。
-
IoT数据分析 - 学习使用规则引擎执行基本分析任务。
-
高级功能 - 了解ThingsBoard高级功能。