仪表板
仪表板把实时组件(图表、仪表、卡片、告警表、命令按钮、地图)排布在同一个页面上。仪表板属于租户,并且每个都带有版本:你编辑草稿,然后将其发布为其他人看到的版本。
本章面向创建和维护仪表板的人员,涵盖仪表板列表、从零开始、从模板或从导出的文件创建仪表板、查看仪表板、在画布上编辑、配置组件、用合成数据预览、导出,以及发布和回滚版本。截图使用一个测试租户,其 Widget Lab 仪表板包含每种内置组件各一个。仪表板底层的工作方式,参见仪表板。
租户的每位成员都可以打开仪表板。创建、编辑、发布和删除仪表板需要仪表板写入权限。没有该权限的成员看到的是已发布版本,而不是草稿。如果仪表板从未发布过,系统会告诉他们请作者发布。
仪表板列表
在侧边栏中选择 Monitor → Dashboards(仪表板)。
每一行显示仪表板的名称、描述和最近更新时间。选择某一行即可打开。Clone(克隆)会以新令牌复制一份,Delete(删除)会在你确认后删除仪表板,删除无法撤销。
创建仪表板
New dashboard(新建仪表板)会打开一个抽屉,有两种开始方式。
- 从零开始。 输入令牌(仪表板的永久 ID),或使用输入框旁的按钮生成一个。令牌是唯一必填项,名称和描述是可选的。输入框会标出已被占用的令牌。选择 Create dashboard(创建仪表板),空白仪表板便会打开。
- 从模板开始。 在 Or start from a template(或从模板开始)下,选择 Fleet overview(设备群概览,按严重程度统计的告警数、一张告警表和一台重点设备)、Device detail(设备详情,某台设备的最新值、一个仪表、一张遥测图表、位置和告警)或 Alarms board(告警看板,整个租户的告警数和告警表)。模板会在下文所述的导入审阅中打开,创建之前先在其中把它绑定到你自己的设备。
模板中的 temperature 和 humidity 等测量名称只是示例,请在编辑器中改成你的设备实际上报的名称。
从设备类型创建仪表板
在设备类型的 Profile(配置文件)选项卡上,Create dashboard(创建仪表板)会根据配置文件所声明的内容生成一个起步仪表板,让你一分钟内就得到可用的仪表板,而不必逐个放置组件。该按钮需要仪表板写入权限,仅限于租户一部分范围的成员看不到它。
- 选择 Create dashboard。抽屉会读取配置文件并显示 Layout preview(布局预览)。
- 为仪表板指定名称和令牌。预览下方的说明会列出它将包含多少张卡片、图表和按钮,以及哪些内容被省略。
- 选择 Create draft and open editor(创建草稿并打开编辑器)。仪表板会作为草稿创建,绝不会发布,并在编辑器中打开。
该仪表板只使用你本来就能手动添加的组件:
- 一个设备选择器,若此类型已有设备,槽位会预设为其中一台。选择器列出的是整个租户的设备,而不只是此类型的设备,因此请选择你为之创建仪表板的那种类型的设备。仪表板上选择器旁边的一条说明会提示这一点;
- 为每个已声明的测量值提供一张最新值卡片,按配置文件中的顺序排列并带单位。计算型指标同样有卡片,标题中标注 Calculated,读取方式与其他指标相同;
- 一张包含前几个数值型测量值的图表,以及所选设备的告警表;
- 为每个可以安全地从仪表板发送的已声明命令提供一个命令按钮。声明为破坏性或中断性的命令,或影响未知的命令,不会有按钮;仪表板上的一条说明会指出省略了多少个。
配置文件可能声明几十个测量值。仪表板以卡片显示前十二个,并用一条说明指出省略了多少个,其余的可在编辑器中添加。未声明任何测量值的配置文件会被拒绝并给出说明,因为没有可用来生成的内容。
抽屉会读取配置文件当前生效的已发布版本,平台正是依据它校验读数和命令,无论该类型是否已有设备。只有从未发布过的配置文件才会读取其草稿,抽屉会明确告知;在配置文件发布之前,草稿中的测量值不会被接受。配置文件不声明严重程度区间,因此卡片不带区间,可在编辑器中添加。
导入仪表板
Import dashboard(导入仪表板)会根据从另一个仪表板或另一个租户导出的 JSON 创建新仪表板。
- 将 JSON 粘贴到 Dashboard JSON(仪表板 JSON)中,或使用 Choose file(选择文件)加载
.json文件。 - 选择 Review(审阅)。控制台会检查定义,并列出保存之前你应该关注的内容:
- Bindings to review(待审阅的绑定):尚未绑定的槽位,或所指向的设备、客户、区域或资产在此租户中不存在的槽位。为每个槽位从此租户中选取一个,也可以让选择器保持 Leave unbound(保持未绑定),以后再绑定。
- 此控制台无法显示的组件,它们会作为占位符保留,并在安装或移除之前阻止发布;
- 需要修正的组件选项;
- 仪表板加载图像或地图瓦片所用的外部站点。
- 为新仪表板指定令牌,然后选择 Create draft(创建草稿)。
导入绝不会覆盖已有的仪表板,也不会替你发布。Clone 和模板使用相同的审阅流程。
查看仪表板
打开仪表板会以实时数据显示它。
顶部:
- 15m、1h、6h、24h 和 7d 设置图表绘制的时间范围,Pause(暂停)冻结仪表板。它们与 /dash 查看器中的用法相同,参见时间范围与暂停。 Custom range(自定义范围)则改为显示固定的起止窗口,参见自定义范围。
- Live(实时)表示仪表板的实时连接正常;设备只是暂时没有上报数据并不会改变它。连接中断时它显示 Reconnecting(正在重新连接),中断 20 秒后显示 Offline(离线),如果浏览器本身断网则立即显示 Offline。连接恢复后,组件会自行继续更新。
- Preview(预览)用生成的数据替换实时数据(参见用合成数据预览)。
- Export(导出)复制或下载仪表板(参见导出)。
- History(历史)打开版本历史(参见版本)。
- Edit(编辑)切换到编辑器。
- Delete 删除仪表板。
带有操作的组件(例如确认告警或发送命令)在这里同样可用。平台会根据你自己的权限检查每个操作。
选择设备并分享链接
如果看板上有组件所跟随的 slot(地图、设备表或告警表上的 Target slot,或实体选择器),选择一台设备就会让绑定到该 slot 的组件改为显示这台设备。在地图上,点击标记,或用 Tab 键移到标记上按 Enter,即可选择该设备;需要在编辑器中为地图设置 Target slot 才会启用。未设置时,标记只是一个标记。
浏览器地址栏中的地址始终能还原你当前所看到的内容。选择设备后,地址会加上 bind.<slot>=<设备令牌>,例如:
/dashboards/pump-station?bind.machine=hauler-7
复制并发送这个地址,打开它的人就会看到已选好该设备的看板。<slot> 是编辑器中显示的 slot 名称,取值是设备的令牌。重复该参数,一条链接可以设置多个 slot。
链接按打开者本人的权限检查,而不是发送者的权限。如果设备不存在,或者存在但超出你可查看的范围,页面会直接说明,而不是显示看板,并提供 Open the board without it(不带它打开看板),即以看板自己的默认设备打开。两种情况的提示刻意保持一致:平台不会确认你无权查看的设备是否存在。指向看板上没有的 slot、或不是设备令牌的取值,同样会被拒绝。同一个 slot 出现两次的链接,以及指向其设备跟随另一个 slot 的 slot 的链接,也会被拒绝,因为看板显示的会是它推导出的设备,而不是链接里的设备。如果检查本身未能完成(例如连接中断),可以 Try again(重试)。
选择设备会替换当前地址,而不是新增一条历史记录,因此 Back(后退)会直接离开看板,而不是逐个回到你点击过的设备。同样的链接也适用于 /dash 查看器,参见打开已选好设备的看板。
组件的样子
测试租户的 Widget Lab 仪表板包含每种内置组件各一个。页面再往下:
线性仪表、液位仪表、电池、状态灯、信号格、罗盘和进度环各显示一台设备的一个测量值。阈值会在刻度上标出各自的区间,如上图中的线性仪表和温度计;读数落在正常区间以外的任何区间时,会显示该区间的颜色。
统计卡片显示仪表板时间范围内的一个数值,并标出统计量及其覆盖的跨度,例如 Maximum · 1h。设置了自己 Time span 的卡片会保留该跨度,如上图中的 Average, last 5 min。开启 Show trend(显示趋势)后,卡片会在数值下方绘制该测量在同一跨度内的趋势,让“是否在上升”直接在卡片上得到回答。这条线始终是中性色,无论数值处于哪个区间;卡片小到无法保持数值清晰可读时,会省略这条线。
柱状图和饼图用于比较一台设备的最新读数。柱状图也可以改为比较一个设备组中各设备的同一测量值(参见下文的 One bar per)。柱状图在较宽的组件中绘制竖向柱,在较高的组件中绘制横向条。
车队表格为设备组中的每台设备显示一行,为每个测量显示一列。点击列标题即可按该列排序。其设置见配置组件。
车队计数卡片在该表格之上给出一个数字:设备组中有多少台设备需要关注(3 / 21),或者设备组共有多少台设备。其设置见配置组件。
另有两个组件回答关于设备群的第一个问题:是否在线。设备状态卡片把一台设备显示为 Online(在线)或 Offline(离线),并给出它上次被看到的时间;在线环形图则按设备组中在线、离线或尚无状态的设备数量划分一个圆环。它们读取的是平台记录的设备状态,而不是设备的读数。
历史表格把一台设备已存储的历史列成行:在仪表板时间范围内每个时间桶一行,每个测量一列。每个数字都是该桶内读数的平均值,而不是一次读数,表格会在行的下方注明(avg per 5m);时间是该桶的起点。可用它查看图表背后的数字。它的设置见配置组件。
下载组件的数据
有数据可交出的组件会在标题栏右侧显示一个下载按钮。打开它可选择 Download CSV(下载 CSV,历史表格、时序图表和车队表格)或 Download image (PNG)(下载图片,用画布绘制的图表:时序图表、仪表和罗盘)。
- 文件包含组件当前显示的内容,而不是一次新的查询:相同的时间范围、相同的时间桶,文件名中会写明。最近一小时、按 5 分钟分桶的历史表格会保存为
Pump-3-history-pump-3-avg-per-5m-20261022T1300Z-20261022T1400Z.csv:标题、设备、时间桶,以及它覆盖的窗口(UTC)。 - 历史表格的文件包含所有行,而不只是屏幕上的当前页。时序图表的文件每个点一行,并有一列 Basis(依据),说明该点是时间桶平均值(avg per 1m)还是实时到达的读数。车队表格的文件每台设备一行,顺序与屏幕一致,带有最新读数及其采集时间;没有读数的单元格为空。
- 单位写在表头里。时间为 UTC 的 ISO 8601 格式,例如
2026-10-22T14:00:00.000Z。数值是数字,按组件显示的精度四舍五入。 - CSV 为带字节顺序标记的 UTF-8,因此 Excel 能正确读取 °C 之类的单位。直接读取原始字节的程序会在第一个表头开头看到这个标记。
- 电子表格可能当作公式读取的文本,即以
=、+、-或@开头的设备名或测量名,会在前面加一个撇号,因此打开文件不会执行任何内容。 - 按钮属于标题栏。既没有标题也没有主题行的组件,以及隐藏组件标题的仪表板,都没有这个按钮。
在画布上编辑
Edit 会把仪表板变成画布。按钮变为 Undo(撤销)、Redo(重做)、Add widget(添加组件)、Paste(粘贴)、Preview、Export、History、Save(保存)和 Done(完成),同时出现一个布局设置栏。
- Title(标题)是仪表板的名称。
- Columns(列数)、Min cell(最小单元格)、Gutter(间隔)和 Padding(边距)设置组件吸附的网格。单元格是正方形,会拉伸以填满宽度;Min cell 是单元格允许的最小尺寸(像素)。Gutter 是单元格之间的间距,Padding 是仪表板四周的边距。
- Size(尺寸)决定仪表板如何填充页面:Fill area(填充区域)、Fixed width(固定宽度)或 Fixed height(固定高度)。
- Time range(时间范围)是仪表板打开时其图表绘制的跨度:15m、1h、6h、24h 或 7d,默认一小时。查看者可以在页眉中选择其他范围并暂停看板,参见在 /dash 中查看仪表板。
- Density(密度)缩放所有组件的文字和间距:Compact(紧凑)、Comfortable(舒适,默认)或 Wall display(墙面显示,适合从房间另一端观看的屏幕)。/dash 查看器可以为某一块屏幕覆盖此设置。
拖动组件可移动。虚线轮廓会显示松开后它将占据的单元格,组件会正好落在那里。挡路的组件会移到上方或下方最近的空位,因此把一个组件拖到另一个组件上会交换两者的位置。其他组件都不会移动:你特意留出的空位会保留。网格上的组件从不重叠,新组件放在能容纳它的第一个空位。选中组件后,拖动其边缘或角上的手柄可调整大小。拖动时尺寸以“列×行”显示,例如 2×3,组件会停在它允许的最小和最大尺寸。只能朝一个方向调整大小的组件,只在该侧显示手柄。拖动时按 Esc 可取消。组件获得焦点后,方向键可将其移动一格,Shift 加方向键可调整其大小。超出所支持尺寸或越过右边缘的组件,会带有相应的提示。没有内容可绘制的组件会说明原因,以柔和的状态显示,而不是空白卡片或孤零零的短横线:
- No device chosen(未选择设备):组件的槽位没有绑定设备。在看板的选择器中选一个设备,或为该槽位绑定设备。
- Not reported by this device(该设备不上报此项):设备当前生效的配置文件没有声明组件所需的测量项,因此它永远不会上报。解决办法在组件(改选其他测量项)或配置文件,而不是等待。
- No data in this range(此范围内无数据):配置文件声明了该测量项,但所示时间范围内没有数据到达。若已知范围之前的读数,组件会补充 Last value 21.4 °C · 3 days ago(最近值及其时间)。
- No access(无访问权限):平台拒绝了此次读取,因为你的访问权限仅限于租户的一部分。
- Data unavailable(数据不可用):数据源没有应答。提示会指明故障。
这些状态刻意保持低调:使用柔和的文字颜色,不带警告符号或严重级别颜色,因为在看板上这种样式表示告警。小组件只显示标题,较大的组件会补充说明和最近值。将鼠标悬停在状态上可读完整句子。这些文字只有英文和西班牙文版本,中文界面下显示英文。看板加载时,尚无读数的组件会先保持空白片刻再说明原因,因此正在到来的读数不会被说成缺失。
仪表板测量的是分配给它的空间,而不是屏幕。只要各列在 Min cell 或更大的单元格下放得下,就按你排好的布局显示,单元格会拉伸以填满宽度,因此大屏幕得到的是更大的单元格,而不是更多的单元格。空间更窄时,它会使用放得下的列数,并按阅读顺序(自上而下、从左到右)把组件依次排入其中。宽度小于 600 px 时(例如手机),每个组件独占一行并占满宽度,仪表板呈现为单列。每个组件的大小保持在它允许的范围内,相对于其他组件放置的组件会随之移动。
由早期版本保存的仪表板在打开时会转换为当前网格。转换是近似的,因此编辑器会显示提示,请你检查布局。保存后,仪表板以当前格式存储,提示随之消失。
由早期版本保存的时序图表保留的是样本数量,而不是时间跨度。不知道设备多久上报一次,样本数量就无法换算成跨度,所以图表不会被转换成猜测出来的跨度,而是跟随仪表板的时间范围,编辑器会列出受影响的图表。对需要不同跨度的图表设置 Time span 后保存即可。
Save 会把你的更改存入草稿。在没有可保存内容时它是灰色的。Done 返回查看视图;未保存的更改会保留,Save 在那里仍然可用。如果你有未保存的更改时关闭选项卡或使用 Dashboards 返回链接,控制台会在丢弃之前询问。在侧边栏中选择其他页面则不会询问,所以请先保存。保存只会改变草稿。在你发布版本之前,查看者看不到任何新内容。
添加组件
Add widget 会打开组件菜单,按各组件的用途分组。
| 分组 | 组件 |
|---|---|
| Telemetry(遥测) | Timeseries chart(时序图表)、Latest card(最新值卡片)、Gauge(仪表)、Table(表格)、Linear gauge(线性仪表)、Level gauge(液位仪表)、Battery(电池)、Status light(状态灯)、Signal bars(信号格)、Compass(罗盘)、Progress ring(进度环)、Stat card(统计卡片)、Bar chart(柱状图)、Pie chart(饼图)、Fleet table(车队表格)、Fleet count(车队计数)、Device status(设备状态)、Online doughnut(在线环形图)、History table(历史表格) |
| Static(静态) | Label(标签)、Image(图片) |
| Alarms(告警) | Alarm table(告警表)、Alarm count(告警计数)、Alarm severity(告警严重级别) |
| Control(控制) | Command button(命令按钮)、Command slider(命令滑块)、Command toggle(命令开关) |
| Navigation(导航) | Entity selector(实体选择器),让查看者选择仪表板显示哪台设备或哪个实体 |
| Location(位置) | Map(地图),绘制在租户的地图上(参见租户设置) |
每一项都会显示该组件添加时的尺寸(以单元格计),例如 4×3。滚动菜单可看到 Telemetry 之后的分组。选择一个组件即可将其添加到画布上的第一个空位,然后进行配置。
配置组件
在画布上选择一个组件,其设置会在右侧打开。Grid、Relative to…、Duplicate(复制一份)、Copy(复制)和 Delete 显示在组件正上方的工具栏中(上方没有空间时显示在下方),其边缘和角上的手柄用于调整大小。
设置因组件而异。常见的有:
-
Title:显示在组件上的标题。
-
Context(上下文):组件绑定到什么。Root context(根上下文)把它直接绑定到某台设备或实体。Scoped to a parent(限定到父级)使它跟随另一个组件的上下文,例如仪表板上其他位置选中的那栋楼里的某台设备。有父级时,Strategy(策略)决定它跟随父级的 First member(第一个成员),还是你自己选择的成员(Manual pick,手动选择)。
-
Data source(数据源)选择组件读取的设备或实体。对于限定到父级的组件,它会说明该组件跟随父级。只有车队表格、车队计数、在线环形图、设置为每台设备一根柱的柱状图和设置为每台设备一条线的时间序列图可以读取设备组;其他遥测组件只显示一台设备,绑定到设备组时会明确说明这一点,而不会混合多台设备的读数。
-
Measurement(测量)以及显示选项,例如单位、范围和精度。
-
Time span(时间跨度,时序图表):图表绘制多少历史数据,单位为秒,范围 60 到 604800。留空时图表跟随看板的时间范围,查看者可以更改;填写后,无论查看者选择什么范围,图表都保持该跨度。
-
Min(最小值)和 Max(最大值)(时序图表):数值轴的两端。留空时由图表自行选择范围,即使读数从未接近零,范围也会从零开始。设置它们可以框定真正重要的读数:92 °C 的发动机在 70 到 130 的轴上,位置正好能看到上方的过热线,而不是贴在图表顶部的一条平线。端点从不截断:超出端点的读数或阈值会让轴扩展以容纳它,因此绘制的内容不会落在图表之外。
-
Mark alarms(标记告警)和 Mark commands(标记命令)(时序图表):默认均关闭。Mark alarms 会把图表所绑定设备的告警画在读数之上:从告警触发到告警清除(仍处于活动状态时延伸到右边缘)绘制一条淡色带,色带上沿有一条细条,并在触发处画一条线,颜色对应严重程度。没有自身严重程度的告警,以及告警清除处的那条线,使用中性色绘制,因为看板上的颜色只表示严重程度。Mark commands 会在每条命令发送给设备的时刻画一条中性色虚点线,标注命令名称,结果已知时还会标注结果(成功、失败、超时等)。悬停或轻触标记可以看到相同内容的文字说明。图表下方的 Events in this range(此范围内的事件)会展开所有标记的列表,可以用键盘访问。标记跟随看板的时间范围和暂停状态,并且只读取该图表自己的设备。时间范围可以是任意久远的过去。最多绘制最新的 30 个事件,图表会准确写明该范围内还有多少个未绘制(“N more not shown”,还有 N 个未显示)。告警清除后再次触发时,只从最近一次触发开始绘制,因为平台对每个告警只保存一条记录。Alarms to mark(要标记的告警,时序图表)决定绘制哪些告警。Only this chart's measurements(仅此图表的测量)是新图表的默认值:只绘制与图表所绘测量相关的告警,因此轮胎气压告警不会给发动机温度图表染色。与其他测量相关的告警,或平台无法关联到某个测量的告警,不会被绘制,而是列在图表下方的 Other alarms on this device(此设备上的其他告警)中。Every alarm on the device(设备上的所有告警)会全部绘制,与此选项出现之前保存的图表一致。回放录制内容时,如果录制中包含告警或命令,标记来自录制内容;没有的通道,图表会说明“不在此录制中”。
-
Statistic(统计量,统计卡片):显示跨度内的哪个数值:平均值(默认)、最小值、最大值、总和、读数个数,或最新读数。卡片会在数值下方写出统计量及其覆盖的跨度,例如“Maximum · 1h”。同一个 Time span 设置可以把卡片固定在自己的跨度上。卡片无法得出数值时(数据源无法计算聚合、读取失败,或跨度内没有读数),会说明原因,而不会显示一个它没能算出的数字。没有读数的跨度,其读数个数为 0。
-
Show trend(显示趋势,统计卡片):默认关闭。开启后,卡片会在数值下方用一条细的中性色线绘制该测量在其跨度内的趋势,跨度图表的每个分桶对应一个点,所绘统计量即卡片显示的统计量(最新读数卡片绘制各分桶的平均值)。读数中的空缺在线上也是空缺,单个点绘制为一个圆点,没有读数的跨度则什么也不绘制。无论是否开启,数值都是同一个数字。
-
Order(顺序,柱状图、饼图):测量按数据源列出的顺序排列,或按从小到大、从大到小排序。尚未上报的测量排在最后。柱状图在宽组件中绘制纵向柱,在高组件中绘制横向条。
-
One bar per(每根柱代表,柱状图):Measurement(测量,默认)为一台设备的每个测量绘制一根柱;Device(设备)为组件所绑定设备组中的每台设备绘制一根柱,针对你选择的那一个 Measurement,因此数据源必须是设备组而不是单台设备。过大的设备组会按所选顺序截取前若干根柱,图表会注明“Showing N of M devices”。
-
One line per(每条线代表,时间序列图):Measurement(测量,默认)为一台设备的每个测量绘制一条线;Device(设备)为组件所绑定设备组中的每台设备绘制一条线,针对你选择的那一个 Measurement,覆盖看板的时间范围(或图表自己的 Time span),因此数据源必须是设备组。线条保持设备组的顺序,每台设备在读数到达时保持自己的颜色。已存储的历史以每个时间桶的平均值绘制,每个桶一个点,图表会注明(例如“avg per 6m”);之后实时到达的读数按原样绘制。阈值线是画在图表上的参考值:历史数据点是一个桶的平均值,而不是单次读数,图表会在线条旁说明这一点。此模式下不绘制告警和命令标记。
-
Most lines(最多线条数,时间序列图,每台设备一条线):最多绘制的设备数,默认 5,最大 12;图表颜色在五种之后重复。每条线需要一次历史读取,而平台一次只读取一台设备,因此请保持较小。超过上限的设备组会显示其前若干台设备,图表会注明“Showing N of M devices”,所以设备组绝不会被悄悄截断。
-
Group by(分组方式,告警表):Device type(设备类型)会在表格上方显示一排标签页:一个 All(全部)标签页,之后是组件范围内每个有活动告警的设备类型各一个标签页,以设备类型的名称命名。标签页的徽标统计其活动告警的数量,并采用其中最严重级别的颜色;没有活动告警的标签页没有徽标,最严重告警为“不确定”的标签页保持中性色。计数来自对整个表格的一次读取,某个标签页的行只在你选择它时才读取。在 All 上,表格会多出一列 Device type,而各类型自己的标签页不显示该列。数据刷新时,你选中的标签页保持不变。屏幕较窄时标签页栏可横向滚动;用左右方向键、Home 和 End 在标签页之间移动,按 Enter 或空格选择。无论范围内有多少告警,计数都是精确的。仅限部分客户的用户只会看到其可见设备的标签页;其已不可见的设备上的告警只出现在 All 下。Device type tabs(设备类型标签页,告警表,需配合 Device type 分组)按顺序列出要显示为标签页的设备类型 token,而不是所有有告警的类型;未列出的类型只出现在 All 下。
-
Alarm severity(告警严重级别):一眼看出情况有多严重。堆叠条显示组件范围内的活动告警按严重级别的拆分,其下按从高到低的顺序列出每个严重级别及其数量:Critical、Major、Minor、Warning 和 Indeterminate。没有告警的严重级别仍保留在列表中,只是变暗,因此告警增减时列表的形状不会改变,条中也没有它的色段。有告警的严重级别采用其严重级别颜色;Indeterminate 保持中性色,完全没有告警时条是一条空轨道。列表是真实的文本(如“Critical: 2”),屏幕阅读器会朗读数量,颜色从不是唯一的信号;条本身只是装饰。State(状态,默认为活动)和 Acknowledged(已确认)用于限定统计哪些告警。没有数据源时,组件统计你能看到的所有告警,无论由什么产生(设备、资产、区域、客户或组),因此其总数与告警计数一致;绑定到设备、锚点或组时,统计其覆盖的设备上的告警。Device type(设备类型)只统计该类型(按其 token)设备上的告警,标题下方的说明会注明这一点(如“5 alarms on pump devices”)。无论告警有多少,数量都是精确的;仅限部分客户的用户只会统计其可见的告警。无法按严重级别统计告警的数据源会如实说明,而不是显示零。在看板回放中,组件统计录制的告警;录制不包含设备类型,因此设置了设备类型的组件会说明无法显示。点击某个严重级别不会筛选已关联的告警表。
-
Fleet table(车队表格):组件所绑定设备组中每台设备一行,数据源所选的每个测量一列。请在组件的数据源上设置设备组,并选择要显示的测量。Columns 为每个测量设置标题、单位和精度;Thresholds 为某个测量一列的单元格着色(正常区间保持表格原有颜色);Stale after 把早于该秒数的读数标记为过期,不设置时表格只显示每个读数的时效。Show age when behind(落后时显示时效)只在某个读数比表格中最新的读数早至少该秒数(或已过期)时才显示其时效,这样每隔几秒上报一次的设备群每行只占一行,停止上报的设备会突显出来;组件底部仍显示最新读数的时效。点击列标题(或用键盘按下)即可排序;Order by 与 Largest first 设置初始顺序,排序列中没有数值的设备始终排在最后。Devices per page 为较长的设备群分页。Target slot 让设备名称成为链接,在绑定到该槽位的组件中选中该设备。看板较窄时,表格会变成每台设备一张卡片。没有数值的单元格会说明原因:no data in range(范围内无数据)、does not report this(该设备已发布的配置文件未声明这一项测量)或 could not be read(无法读取)。表格读取设备组的前 500 台设备,设备组更大时会注明“Showing 500 of N devices”。它遵循看板的时间范围,看板暂停时表格不再变动。
-
Fleet count(车队计数):为设备组给出一个数字,其绑定方式与车队表格相同。Count(计数)选择计什么。Devices needing attention(需要关注的设备,默认)统计 Measurement 的最新读数处于卡片 Thresholds 某个异常区间的设备数,显示为 3 / 21;当所有被标出的设备都处于同一个带标签的区间时,以该区间的标签命名(标签为 Low 的区间显示为“Low”),否则显示“need attention”。数字采用被标出设备中最差区间的颜色;没有设备被标出,或整个设备群都在正常区间时,保持普通文字颜色,因此健康的设备群显得平静。没有该测量读数的设备既不算健康也不算被标出,而是单独计数:在时间跨度内没有发送任何数据时显示为“2 not reporting”(探头已损坏但其他读数仍在上报的传感器也属此类),读数加载失败时显示为“1 could not be read”。已发布的配置文件未声明该测量的设备(例如燃油计数中的破碎站)不在统计范围内:它不计入 3 / 21 的总数,并单独注明为“1 does not report this”。这是依据配置文件而非设备已发送的数据来判定的;无法读取其配置文件、或配置文件未声明任何测量的设备按“not reporting”计入,而不会被排除。设备组的读数仍在加载时,卡片不显示数字,而不是显示部分结果。Devices(设备)显示设备组共有多少台设备,无论它们上报什么。Time span 的作用与车队表格相同;Stale after 作用于设备组中最新的读数,与其他卡片相同。设备组超过所读取的 500 台设备时,会注明“Showing 500 of N devices”,关注计数涵盖所显示的设备。
-
Device status(设备状态):一台设备是否在线。卡片显示 Online 或 Offline,其下是设备上次被看到的时间(其最新事件的时间)。在线保持普通文字颜色;只有 Offline 采用颜色,并且文字本身说明了状态,因此颜色从不是唯一的信号。从未发送过任何数据的设备尚无状态,显示为 No status yet(尚无状态)和 Never seen(从未见到),采用弱化的颜色,而不是当作故障。组件底部显示状态的时效;Stale after 在状态超过该秒数未被读取时把卡片标记为过期,这只会在读取持续失败时发生;仅仅是沉默的设备不会被标记为过期,因为它是否在线本身就是状态。不设置时只显示时效、不标记过期。绑定到设备组时,它会明确说明,而不是显示多台设备中的某一台。状态每 15 秒读取一次,看板暂停时保持不动。显示它需要读取设备状态的权限;没有该权限时,卡片会提示你无权访问这些数据。
-
Online doughnut(在线环形图):设备组中有多少台设备在线。圆环把设备组划分为 Online、Offline,以及仅在有设备从未发送过数据时才出现的 No status yet(浅色段),中间是在线数量(如“18 of 21 online”),每个数量都列在圆环下方。在线段是安静的灰色;只有离线段采用颜色,因此没有任何设备离线的设备组完全不画颜色,数量为零的项仍会列出。设备组的状态仍在加载时,组件不显示圆环,而不是显示不完整的圆环;状态无法读取的设备会单独注明(“1 could not be read”)并排除在圆环之外。它读取设备组的前 500 台设备,设备组更大时会注明“Showing 500 of N devices”。Stale after 在设备组的状态超过该秒数未被读取时把圆环标记为过期。
-
History table(历史表格):一台设备已存储的历史,以表格呈现。每个时间桶一行,最新的在前,每个测量一列,每个单元格是该测量在该桶内读数的平均值。它跟随仪表板的时间范围,设置了自己的 Time span 时则使用该跨度;时间桶的宽度与时序图表对该跨度所用的相同(一小时 1 分钟,一天 6 分钟),并在行的下方注明,如 avg per 6m。时间是桶的起点;某个测量在某个桶内没有读数时显示短横线,而不是上一个值。没有实时尾部:表格在每个桶结束时重新读取,最新一行是仍在累积的桶。Columns 选择要列出的测量及顺序,并为每个测量设置表头、单位和精度;不设置时列出数据源的测量,或设备在该范围内上报过的所有测量。Oldest first 反转顺序,Rows per page 设置每页行数(5 到 100,默认 10)。Stale after 在历史超过该秒数未被读取时把表格标记为过期,这只会在读取持续失败时发生;表格会继续显示它上次读到的内容。绑定到设备组时它会明确说明,因为一台设备的历史表格会把设备组的读数混在一起。无权读取历史的查看者会看到无权访问这些数据的提示。它的下载见下载组件的数据。
组件选项的问题,例如它不读取的选项、留空的必填项或超出范围的值,会列在 Version history(版本历史)中。问题修复之前,Publish version 保持不可用。
放置方面的问题同样会让 Publish version 保持不可用:组件超出所支持的尺寸、越过右边缘,或因相对于其他组件放置而落到仪表板之外。编辑器自己不会产生这些问题;它们来自导入的仪表板、较旧的组件版本或通过 API 写入的仪表板。Fit to limits(适应限制)会把每个组件限制在它支持的尺寸内,并把落到仪表板之外的组件移回仪表板上;被变大的组件覆盖的组件会下移,其余组件保持原位;只要仪表板存在此类问题,它就会出现在编辑器标题栏和 Version history 中。检查结果后再保存。
相对于其他组件放置组件
组件通常位于网格上。也可以把组件设为 Relative to…(相对于)另一个组件,例如地图上的角标或图表下方的说明文字。选中该组件,选择 Relative to…,再点击它要依附的组件,或将焦点移到该组件上并按 Enter。随后会出现带九个锚点的选择器;选择它要连接到宿主的哪个角、边或中心。
相对组件保持自己的尺寸,宿主移动时随之移动,可以覆盖宿主,并绘制在网格之上。一条虚线把它与宿主连起来。拖动它可按整格偏离锚点,按住 Shift 则按四分之一格移动。选择 Grid 可把它放回网格上的第一个空位。相对组件本身不能作为宿主。
撤销、复制与粘贴
编辑器按钮最前面的 Undo(撤销)和 Redo(重做)可以在你的编辑之间后退和前进:移动、调整大小、添加和删除组件,组件的设置和数据源,布局设置,以及 Fit to limits。Ctrl+Z(Mac 上为 Cmd+Z)撤销,Ctrl+Shift+Z 或 Ctrl+Y(Cmd+Shift+Z)重做。一次拖动或调整大小无论指针移动多远都算一步;在同一个字段中输入,直到离开该字段都算一步。编辑器保留最近 100 步。在字段中输入时,这些按键撤销和重做的是该字段中的输入。屏幕阅读器会读出每一步撤销了什么,例如 “Undid move of Tank level”。
撤销只会回到仪表板真实存在过的状态:它可以恢复一个被 Fit to limits 修复的放置问题,但绝不会制造仪表板原本没有的问题。离开仪表板或恢复某个版本之前,这些步骤一直保留。保存和发布不会清除它们,因此你可以撤销刚刚保存的编辑;之后仪表板会再次有未保存的更改。
选中组件上的 Duplicate(复制一份),或 Ctrl+D(Cmd+D),会在第一个放得下的空位添加一个尺寸、设置和数据源都相同的副本。
选中组件上的 Copy(复制),或 Ctrl+C(Cmd+C),会复制该组件。编辑器标题栏中的 Paste(粘贴)会把在当前浏览器标签页中最后复制的组件添加到正在编辑的仪表板的第一个空位,因此可以在一个仪表板上复制、在另一个仪表板上粘贴。Ctrl+V(Cmd+V)从剪贴板粘贴,也可以粘贴到在另一个标签页中打开的仪表板。此控制台没有的组件类型不会被粘贴,控制台会指出是哪一种。在更新版本的 DeviceChain 中复制的组件同样不会被粘贴:控制台会说明原因,升级后即可粘贴。
在同一个仪表板上,副本保留其数据源。粘贴到另一个仪表板时,只有当该仪表板有一个同名并绑定到同一设备或实体的槽位时才保留:槽位按仪表板编号,所以两个仪表板上的同名槽位通常指向两台不同的设备。否则组件在粘贴后没有数据源,编辑器会说明这一点,指出组件和它原先绑定的槽位,直到你在组件设置中选择数据源。在另一个租户中复制的组件无论粘贴到哪个仪表板都不会保留数据源:设备属于各自的租户,因此粘贴后它没有数据源,编辑器会说明原因。相对于其他组件放置的组件会以自身尺寸复制到网格上;选择 Relative to… 可以重新依附。
用合成数据预览
Preview 会用生成的值替换实时数据,让你在任何设备上报之前就能检查刻度、阈值和布局。按钮旁的选择器用于选择数据的形状:Sine wave(正弦波)、Ramp(斜坡)或 Random walk(随机游走)。预览在查看模式和编辑模式下都可用。再次选择 Preview 即可回到实时数据。
生成的数据只保留在你的浏览器中,永远不会被保存。
导出
Export 提供四个选项。
- Download JSON(下载 JSON)把仪表板保存为文件。
- Copy JSON(复制 JSON)把它复制到剪贴板。
- Copy as template (unbound)(复制为模板,未绑定)复制时不含其设备和实体绑定,这样导入的人可以选择自己的绑定。
- Clone as new dashboard…(克隆为新仪表板)会用此仪表板打开导入审阅,以新令牌创建一份副本。
版本
History 会打开版本历史。仪表板的草稿是你编辑的内容;版本是草稿的冻结副本,展示给查看者。
- Publish current draft(发布当前草稿)。可以添加可选的标签(例如发布名称)和描述,然后选择 Publish version(发布版本)。新版本立即生效。请先保存更改:控制台发布的是已保存的草稿。
- Published versions(已发布版本)列出每个版本以及发布的时间和发布者。生效的版本标有 Live(生效中)。
- Make live(设为生效)会把较早的版本提供给查看者,而不影响你的草稿。
- Roll back(回滚)会用较早的版本替换草稿。草稿中尚未发布的内容都会丢失,控制台会请你确认。
历史只增不减。发布、设为生效和回滚都会保留较早的版本。
与客户和组共享
访问仅限部分客户或设备组的成员,只有在仪表板共享给其中某个客户或组并且已发布之后才能看到它。在仪表板列表中,对某个仪表板选择 Share(共享),选择 Customers(客户)和 Groups of devices(设备组),然后选择 Save sharing(保存共享)。你保存的列表会替换之前的列表,空列表表示不与任何人共享该仪表板。你可以在仪表板发布之前共享它;发布后,共享对象中的成员即可看到。
只会列出用作访问范围的组。如果缺少某个组,请在该组的页面上把它启用为访问范围,见将成员限定于设备组。不再是访问范围的组会保留已有的共享,但在它重新成为访问范围之前无法再次保存:保存时会被拒绝,并提示某个所选组已不再是访问范围。
请把共享的仪表板的组件绑定到设备、区域或资产,或绑定到仪表板所共享的客户。绑定到客户并把 Relationship(关系)设为 assigned(设备的 Assignment 选项卡所创建的关系)的组件,会向每个客户用户显示该客户的设备,前提是该客户是他们自己的客户;绑定到其他任何客户时,组件会向他们显示 You do not have access to this data(你无权访问这些数据)。绑定到区域或资产的组件只向每个客户用户显示他们自己在其中的设备:两个客户共用的楼层上的告警计数或图表,会向每个客户显示各自的数字。客户用户的设备所在的区域和资产的名称对他们是可见的,共享的也不例外,因此请不要在这些名称中写入机密信息。绑定到组的组件需要通过关系查找其设备,而访问受限的成员无法读取关系,因此该组件会向他们显示 Not available for customer users(不对客户用户提供),而不是其数据。在共享给某个组的仪表板上,请把组件绑定到该组的设备,或绑定到它们所在的区域或资产。
对于你共享的仪表板的选择器,请在根区域或根资产槽位上把 Picker area type(或 Picker asset type)设为某个类型的令牌,例如楼层类型,这样选择器只列出该类型的区域。留空时,它会列出查看者能看到的所有区域,对客户用户而言就是其设备所在的区域。如果客户用户打开仪表板时所指的区域不是他们能看到的,则会落到他们能看到的第一个区域。
程序可以通过需要 dashboard:write 的 shareDashboard 变更完成同样的操作:
mutation {
shareDashboard(
token: "plant-overview"
anchors: [{ kind: CUSTOMER, token: "acme" }, { kind: GROUP, token: "north-wing" }]
) {
token
sharedWith { kind token }
}
}
- 你发送的列表会替换之前的列表。空列表表示不与任何人共享。
- 每个客户都必须存在,每个组都必须存在且是访问范围。若有一个不满足,请求以
NOT_FOUND失败,且不做任何更改。存在但不是访问范围的组,与不存在的组得到完全相同的回答。 - 这样的成员只能在列表中看到共享给其客户或组的已发布仪表盘,并打开其已发布版本。它永远看不到草稿或版本历史。其他任何仪表盘都按不存在作答。
- 共享仪表盘并不共享数据。每个小部件仍只显示该成员可以查看的内容。
- 访问受限的成员不能共享仪表盘,也不能查看仪表盘共享给了谁。
- 删除仪表盘会删除其共享。删除客户或组会删除指向它的共享。