如何利用Grafana和InfluxDB将CAN物联网数据可视化

432 阅读7分钟

在CSS电子公司,我们开发工业级的、简单易用的CAN总线数据记录器。简而言之,CAN总线是负责在几乎所有的车辆内进行基于消息的遥测通信的协议,包括重型车辆汽车采矿卡车等等。它还被广泛用于监测许多类型的机械船舶、飞机、无人机和机器人。

最终用户通常包括汽车设备制造商的工程师,他们可能需要在现场监测资产,以进行分析、诊断问题,甚至进行预测性维护

对于这些用户中的许多人来说,CAN数据的可视化是很重要的,为了支持这一点,我们决定促进我们的硬件和Grafana之间的即插即用集成。

下面,我们将概述我们面临的主要挑战,我们是如何解决这些挑战的,我们的解决方案的最大好处,以及实际使用案例的例子。要想看到更多我们的公共Grafana仪表盘游乐场,请查看我们的完整介绍文章,其中有我们的现场演示链接,或查看我们的网络研讨会

整合中需要解决的主要挑战

作为整合的一部分,我们面临五个关键挑战:

1.与 "原始 "CAN总线数据一起工作

我们的CANedge数据记录器记录原始的CAN总线数据。这些数据由带时间戳的 "CAN ID "和 "数据字节 "组成。为了使我们的用户能够理解这些数据,需要通过合适的软件/API工具和数据库文件(DBC)将其 "解码 "为人类可读的形式,该文件包含如何解释来自特定应用(如卡车或汽车)的数据的信息。

2.储存二进制日志文件

CANedge 以一种称为MF4 的标准化二进制日志文件格式记录数据。虽然这使得它很容易与许多流行的 CAN 总线软件工具集成,但没有即插即用的工具来存储数据库中的数据。

3.处理来自本地磁盘或S3的数据

此外,我们的用户在某些情况下可能需要处理来自他们本地磁盘的数据(例如,从我们的CANedge1记录的数据),而在其他情况下,他们可能需要直接从他们的S3服务器处理数据(例如,从我们的CANedge2上传时)。在这两种情况下,该解决方案也需要很容易地实现自动化。

4.对定制的需求

每个用户都可能有独特的要求,需要对他们的数据进行更 "高级 "的处理,其中一些不能通过数据库查询完成。

5.没有中央托管

最后,我们的商业模式有点特别,因为我们不托管服务器,也不把我们的解决方案作为一项服务来提供。相反,我们使我们的终端用户能够自己设置一切。这对用户来说有很多好处,如成本和数据控制。然而,要做到这一点,解决方案的设置需要非常简单。

我们的解决方案:通过Python处理数据并将其推送至InfluxDB

为了解决这些关键的挑战,我们设计了一个简单的即插即用的仪表盘集成脚本,利用了我们免费的Python API模块。

该脚本的第一步是获取相关的日志文件。我们通过使用fsspec和我们的 API 模块canedge_browser 来实现这一目标。这让我们可以根据指定的时间段,以不可知的方式从本地磁盘和S3列出日志文件。

使用这个日志文件列表,脚本会使用我们的MF4迭代器模块mdf_iter将每个二进制文件加载到一个pandas数据框中。

这个原始CAN数据的数据帧与相关的DBC文件一起提供给我们的can_decoder模块,告诉该模块如何解释这些数据。输出是一个带有时间序列数据的新数据帧,如速度、rpm、GPS位置温度等。

最后,该脚本通过InfluxDB Python API将解码后的数据帧推送到用户自己的InfluxDB数据库中。一旦数据被推送,就可以通过Grafana进行查询了。

虽然可以用其他数据库代替InfluxDB,但我们发现它非常合适,特别是因为--和Grafana Cloud一样--InfluxDB提供了一个免费的云启动器,使初始设置非常容易。InfluxDB还支持高频数据,这在诸如CAN总线诊断中可能是相关的。

一旦初始测试完成,就可以通过任务调度或通过AWS Lambda函数轻松实现脚本集成。

值得注意的是,在实践中,有许多方法可以设置这一点。例如,一些用户可能喜欢使用云版本的InfluxDB、Grafana或两者。其他人可能会决定在本地机器或AWS EC2虚拟机上自行托管一切。同样,Python脚本可以通过任务调度器或通过触发函数(如AWS Lambda、Azure触发器等)实现自动化。

是什么让Grafana在远程信息处理仪表盘上表现出色?

在我们看来,Grafana + InfluxDB是设置远程信息处理仪表盘的绝佳解决方案,因为:

  1. Grafana提供了一些最具有视觉吸引力的自定义仪表盘。
  2. Grafana的整个解决方案可以在几分钟内完成设置,无需编码经验。
  3. Grafana和InfluxDB都提供免费的云启动器,减少了 "厉害的时间"。
  4. 这两个工具都是开源的,但为了方便,也提供了付费的云计算替代品。
  5. Grafana的前端可以完全定制,不需要编码。
  6. 100多个Grafana插件提供了很多灵活性,如地理地图的可视化。
  7. Grafana变量使前端用户能够在设备之间轻松切换。
  8. 原生的Grafana警报使用户能够设置阈值,以迅速获悉设备问题。

来自客户的使用案例

今天,我们的许多用户依靠Grafana作为他们处理CAN总线数据的核心工具之一。其中一些在我们的用户案例研究中有所涉及。

国际农业设备制造商Kverneland通过CANedge2和一个3G/4G路由器上传收割机的CAN数据。数据被上传到他们自己的Azure blob存储(使用一个MinIO S3网关)。通过Azure触发功能,仪表盘集成脚本被自动化,从而促进Grafana中新鲜数据的可视化。这实现了各种用例,包括设备问题的远程调试。"CANedge2让我们有机会直接从现场获得大量的数据,而不需要亲自下到现场--从而为我们节省大量的时间/成本,"Kverneland团队写道。"而且通过在我们的Linux服务器上运行的自动化脚本,我们能够直接对数据进行可视化和分析,而不需要任何努力":

另一个例子是HAVELSAN,一家在国防、模拟、IT、国土安全和网络安全领域提供端到端技术解决方案的公司。该团队使用CANedge2来定期上传无人驾驶地面车辆的数据。当它进入指定的WiFi路由器范围内时,该设备自动将数据从SD卡推送到团队的S3服务器。数据被处理并推送到InfluxDB,以便在Grafana中进行可视化。当观察到异常的数据模式时,团队会下载相关的日志文件,通过其他软件工具进行深入分析:

总结

总的来说,我们与Grafana和InfluxDB的整合已经证明对我们的许多终端用户来说是一个游戏规则的改变。展望未来,我们看到了与各种Grafana仪表盘功能进一步整合的巨大机会,例如在8.0版本中作为Grafana Live的一部分引入的实时流解决方案,这将使设备诊断、云计量存储和基于故障的日志收集更加强大和精简。