65.9K
CodeProject 正在变化。 阅读更多。
Home

温度传感 – Predix on Pi

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2017年1月17日

CPOL

4分钟阅读

viewsIcon

25005

将树莓派 (Raspberry Pi) 连接到 Predix; 从文件系统读取数据,并将这些数据流入 Predix,无需人工干预。

Predix 是 GE 工业互联网的应用程序平台。Predix 基于 Cloud Foundry 构建,针对云端和边缘端的安全连接和大规模分析进行了优化。

在英格兰切尔滕纳姆的一个阳光明媚的日子里,来自 GE 航空公司的三位 Predix 开发者(我,Peter Belcher,Andrew Moffat 和 Sebastian Belcher)给自己提出了一个挑战:将树莓派 (Raspberry Pi) 连接到 Predix 并让数据流动起来!

这项活动的目的是为了理解如何完成最基本的使用案例之一:从文件系统读取数据,并将这些数据流入 Predix,而无需人工干预。

好消息是,我们成功了;我们学到了一些有趣的结果,并希望与您分享!

解决方案及其组成部分

该解决方案包括几个组件,包括:Predix 的用户帐户和身份验证以及时间序列服务、Java 应用程序、Python 温度数据收集器、运行 Predix Machine OSGI 容器的树莓派 B+ 型号、OTS DHT11 温度传感器以及作为独立 Predix 应用程序托管的 Web 仪表板。

Predix 服务

我们的应用程序的基础包括 Predix 服务,这些服务基于 Predix 架构,允许您编写一次并部署在多个设备上,正如我们所证明的那样。

您要使用的几乎任何 Predix 服务都需要使用用户帐户和身份验证服务 (UAA),并且您创建的任何应用程序都使用它至关重要。由于 Predix 云是全球可访问的,因此您存储的任何数据都需要得到适当的保护。UAA 文档对此进行了详细说明,如果您愿意,您可以将多个应用程序绑定到单个服务。

为了存储从 PI 中提取的数据,时间序列服务是一个完美的选择。作为一项已提供的服务,一旦您在应用程序(在本例中是数据推送器应用程序)中设置了对服务的身份验证,您就可以开始发送 JSON!

时间序列服务在其服务数据存储中使用属性(“标签”)来标识您的数据,因此发送的任何数据也应被标记,以便将来更容易检索/分析/切片。由于我们正在编写一个简单的测试,我们只想检索 PI 发送的任何数据,所以我们的 JSON 看起来像这样

{"messageId": "12345","body":[{"name":"pidata","datapoints":}]}

接下来,我们需要一个服务来从时间序列存储中读取数据并为我们绘制一个漂亮的图表。在我们的例子中,我们使用了 仪表板种子教程 作为我们 GUI 的基础。

进入 Pi!

一旦所有核心服务都到位,我们就可以开始使用 Pi 了。另一个专注于“边缘”的 Predix 组件是 Predix Machine 软件。这是一款已编译的软件,可在许多不同的架构上运行,本质上是宿主系统中的一个自包含系统。

称为“OSGI 容器”,您可以使用 Predix Eclipse 插件生成一个,该插件允许您下载连接和验证 Predix 云以及您的 Java 应用程序所需的所有服务。

该软件包可以部署到远程设备(在本应用程序中是 Pi),并且可以在容器中本地使用大量 Predix 服务。在我们的案例中,我们使用了 websockets 来建立与时间序列服务的连接,将我们的传感器数据(用 Python 编写的数据提取)通过 websocket 传输到我们的时间序列服务中。使用 OSGI 容器的一个好处是,身份验证是在整个容器中执行的,从而消除了每个本地 Java 服务也需要拥有自己的 OAuth 身份验证机制的需要。

完成

所以我们完成了!我们构建了一个在 OSGI 容器中运行的 Java 应用程序,该应用程序可以从文本文件(由一些简单的 Python 填充)读取数据。该应用程序通过 websocket 将数据发送到 Predix 时间序列数据存储(OSGI 容器执行 OAuth 验证),然后是视图服务,它可以读取数据!

您可以在 此处注册 Predix 帐户 并开始使用本教程,将树莓派 (Raspberry Pi) 连接到 Predix.io

© . All rights reserved.