在谈论物联网和与开发人员的优势时,提及Raspberry Pi很快就会成为该对话的一部分。对于那些不熟悉的人来说,Raspberry Pi是一款小型计算机,在小型包装中具有强大的功能。它可以“用于任何你想要的”,并有大量的项目实例展示其多功能性。随着最近发布的Raspberry Pi 4 Model B,您可以获得更快的CPU,4K支持和高达4GB的RAM。
在物联网环境中,开发人员可以使用Raspberry Pi作为大规模边缘计划的原型。在这里,我们有兴趣探索如何运行边缘硬件,将时间序列数据从该硬件推送到TimescaleDB,并在Grafana中配置该数据的可视化。为了演示这种情况,在本文中,我们将向您展示如何基于Raspberry Pi(“边缘”)和TImescale Cloud(对于托管的TImescaleDB和托管的Grafana)创建物联网系统。
虽然这个演示很小(也就是使用单个Raspberry Pi设备),但实际上您可以使用相同的设置在数千个设备上扩展此演示。
首先,我们将讨论我们系统的设置。“The Edge”是Raspberry Pi,已连接到光电池光传感器。在设备上运行的是一个脚本(photoresister.py),它以5Hz的频率记录光传感器的状态。每个观察结果都发送到TImescaleDB实例(托管在TImescale Cloud上)并以超文本形式记录。Grafana实例(也在Timescale Cloud上托管)连接到数据库以可视化灯值。
可以在此GitHub存储库中找到以下所有代码和详细说明。
我们需要在Timescale Cloud中创建两件事:TimescaleDB实例(用于存储从设备发送的光传感器读数)和Grafana实例(用于可视化TimescaleDB中的数据)。如果您还没有帐户,请注册 Timescale Cloud(首次使用者可获得300美元的试用积分)。登录并创建一个新的TimescaleDB实例。
几分钟后,数据库实例已启动并可以使用。使用psql(或类似的SQL客户端),连接到数据库并创建架构。
运行TimescaleDB实例并使用模式后,就可以创建一个新的Grafana实例了。
接下来,登录Grafana实例并将TimescaleDB实例配置为数据源。有了数据源,您就可以创建一个连接到该数据源的Grafana仪表板,并可以显示TimescaleDB中的数据。您可以通过导入此处的Grafana仪表板JSON来创建仪表板。
注意:上面的Grafana仪表板JSON假设您已经创建了数据源“Timescale Cloud”,因此请根据需要进行调整。
我们开始使用Raspbian的标准Raspberry Pi设置。对于我们的光传感器,这些资源将解释如何配置光电池:光电池概述基本的光电管读数光电管就位后,我们将设置glossyistor.py python脚本。此脚本在设备上运行,该设备将写入聚合传感器读数并将数据批量插入云中的TimescaleDB实例。
注意:作为先决条件(另外还有光电池设置),您需要为Python 安装PostgreSQL数据库适配器。
创建一个systemd启动脚本,有助于确保传感器在重启期间重新联机。确保在环境变量中启用TIMESCALEDB_CONNECTION。