实时可视化现场数据,从 Raspberry Pi 和 Grafana 开始

不难想象在工业应用中将传感器连接到 Raspberry Pi 的情况。特别是,它们被广泛用于温度和湿度控制。
在将获取的数据 “可视化 “时,图表和数字表都很有效,但将数据叠加在图纸上显示更为直观。


下图是一个使用数据库中测试数据的示例,但实际上传感器的数据可以实时更新和显示。


随着近年来极端天气的增多,许多行业都面临着应对高温的挑战。
在物流行业,如仓库和配送中心,以及处理食品的生产工厂和零售店,预计产品的温度和湿度控制将比过去更加困难。

在这些场所,与工业级 Raspberry Pi 相连接的传感器可用作测量每个区域的系统,并有效地控制空调。
这不仅能控制产品质量,还能改善员工的工作环境。

本文将向您介绍如何在工业级 Raspberry PiPL-R5M 上安装和使用 Grafana。
请注意,本文不使用 Grafana Cloud,而是用于在本地环境中安装。

什么是 Grafana?


它主要用于实时 “可视化 “数据。

它的特点是能够连接到各种数据源,包括时间序列数据库、传感器数据、监控服务器和物联网设备,以及各种云服务用途。
除了本测试中的图表和数字表格外,它还能以各种格式显示,包括地图图像。

警报功能也很实用,可以设置通知的阈值。
,既可用于小型个人用途,也可用于大规模工业应用。

  • 支持多数据源
  • 仪表板定制
  • 警报功能
  • 可通过插件进行扩展

有了 Grafana Cloud,还可以使用同样开源的 Prometheus 收集数据,并使用 Grafana Cloud 中创建的数据库进行集中管理。

由于它是开源的,因此在本地环境下是免费的,Grafana Cloud 也有免费计划,因此很容易实施。

安装 Grafana

对于 Ubuntu 和 Debian 系统,可使用 apt 软件包管理系统进行安装。
添加 GPG 密钥和软件源后,使用 apt 命令进行安装。

先安装所需内容(如果不使用 SQLite 作为数据库,则不需要第二行)

sudo apt install software-properties-common
sudo apt install sqlite3

下载和移动 GPG 密钥

wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null

注册为存储库

echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list

使用 apt 命令安装

sudo apt update
sudo apt install grafana

服务启动且始终有效

sudo /bin/systemctl start grafana-server
sudo /bin/systemctl enable grafana-server

之后,您就可以使用网络浏览器工作了。
如果您在同一个网络中,可以通过http://<ip address>:3000 连接到网络浏览器。

登录 Grafana

通过网络浏览器连接后,将进入登录界面。
使用默认用户名admin和默认密码admin 登录 Grafana。然后会要求您更改管理员用户密码,但仅限于首次更改。

测试数据准备和设置

首先,作为测试数据,我们准备了用于创建数据库的 shell 脚本和用于仪表盘的 json 文件。
我将在文章末尾提供下载,以备各位尝试。希望你们能加以利用。

提前将用于测试数据的三个文件传输(复制)到 Raspberry Pi 上。

💡 如果要从另一台机器复制到 Raspberry Pi,请使用 SCP 命令

scp (オプション)転送するファイルへのパス 転送先の場所のパス
scp [[user@]ホスト 1:]ファイル 1[...] [[user@]ホスト 2:]ファイル 2
scp ./create_db.sh pi@192.168.0.51:/home/pi

数据库是在包含以下内容的 sh 文件中准备的,运行后可创建sensor_data.db文件。
这项工作在 Raspberry Pi 端完成。

#!/bin/bash

DB_FILE="sensor_data.db"

sqlite3 "$DB_FILE" <<EOF
CREATE TABLE IF NOT EXISTS sensor (
    address INTEGER,
    temp REAL,
    humidity REAL,
    "update" TEXT
);

INSERT INTO sensor (address, temp, humidity, "update") VALUES
(1, 23.5, 45.2, '2025-07-24 10:00:00'),
(2, 26.1, 50.8, '2025-07-24 10:05:00'),
(3, 22.9, 42.0, '2025-07-24 10:10:00');
EOF

.db 文件保存到/var/work/grafana_testcreate_db.sh复制并执行该文件,并授予执行权限。

sudo mkdir -p /var/work/grafana_test
cd /var/work/grafana_test
sudo hmod +x create_db.sh
./create_db.sh

同样,图像文件(sample.png)被复制到/usr/share/grafana/public/img/bg
这是 Grafana 的默认(标准)加载目标。

sample.json可以从其他机器上拖放,因此无需复制到 Raspberry Pi 上。

使用 Grafana 进行配置


要使用 SQLite 作为数据库,请先安装 SQLite 插件。

安装插件

按照左侧菜单选择 SQLite:
管理 -> 插件和数据 -> 插件 -> SQLite

您可以使用搜索窗口缩小搜索范围。
您点击的屏幕上有一个安装按钮,按下按钮即可。

处理图像也需要画布,但在当前版本中,画布从一开始就已安装,无需进行任何工作。

指定数据源

将刚刚在 Raspberry Pi 上创建的 *.db 文件指定为数据源。
从左侧菜单中选择并指定 SQLite 为数据源。
连接 –> 数据源 -> sqlite

这里我们只输入了路径。
这是刚才输入的 *.db 文件的完整路径。

名称:frser-sqlite-datasource
路径:/var/work/grafana_test/sensor_data.db

最后,按下 “保存和测试 “按钮,如果显示Data source is working,就可以了。

在仪表板中导入 json 文件

在这种情况下,我们事先准备了一个仪表盘的 sample.json,我们将导入它。

以下 JSON 模型是定义仪表盘的数据结构。其中包括仪表盘设置、面板设置、布局、查询等。点击菜单中的仪表盘后,可以从右上角的新建按钮中选择导入。

json 文件是通过拖放上传的。

⚠︎ 备注 UID

UID 在创建数据库时分配。这是创建时分配的。这次我们准备的 json 文件中也包含了它。由于 json 文件是事先从仪表盘导出的,因此 uid 保留在 JSON 模型中。

导入数据后,发现数据无法显示,于是回过头来再看了一遍,似乎是 UID 的指定有误。原因是该 UID 与当前数据库的 UID 不同。

导入后可对 json 文件进行编辑。

指定 UID 的部分格式如下。

      "datasource": {
        "type": "frser-sqlite-datasource",
        "uid": "devqnl8xvnrwgf"

在准备好的 sample.json 中,这几行分别是第 27、340 和 351 行。
你可以将值设为null,或者首先删除 uid 键。
或者,我也可以在之后创建的数据库中指定 uid,这样也能正常工作。

只保留第一个现有注释列表的 uid 和仪表板本身的 uid。

{
  "annotations": {
    "list": [
      {
        "builtIn": 1,
        "datasource": {
          "type": "grafana",
          "uid": "-- Grafana --"


由于标题和 UID 必须是唯一的,因此如果要更改,似乎最好同时更改这两个内容。

  "timezone": "browser",
  "title": "Sample",
  "uid": "46ada52f-f62f-41a5-927f-1a597dc35f59",
  "version": 4
}

如果想从头开始手动创建仪表盘,则无需执行这些任务。
请注意,这仅适用于导入预先创建的仪表盘 json 文件。


如果您稍后导入 json 文件,如果遇到数据不显示在仪表板上的情况,请对其进行审查。
这是撰写本文时的处理方式。

确认执行

完成这些设置后,您的仪表盘将与本节开头显示的图片一样。下面是一个仓库的图片。
从数据库中读取温度和采集日期/时间。

在实际操作中,它可以在一定秒数内更新,这比数字表格更容易直观地了解每个区域的情况。


/usr/share/grafana/public/img/bg如果将图片放在 “设置背景 “上,它就会出现在仪表板的画布上,右键单击子菜单 “设置背景 “即可。


然后你就可以添加另一个数据源,自定义仪表盘的显示方式,并尝试你希望实现的任何其他显示效果。

将 Grafana 与 Raspberry Pi 结合使用

Grafana 的特点是支持广泛的数据导入。

此外,还有许多插件,因此您不必担心与云服务和各种数据的接口问题。
Grafana 已在许多公司和网站的系统监控和工业应用中广泛使用,并广为人知。可以肯定的是,Grafana 的可用信息相对较多。

有了 Raspberry Pi,传感器就可以连接到 GPIO 端子上,并在一个可以立即执行 Python 程序和处理数据库的环境中工作。
如果在 Raspberry Pi 上安装 Grafana,就能在仪表盘上轻松实现数据可视化。
此外,Raspberry Pi 还可以通过 HDMI 连接到显示器,实现全屏显示。它还可以作为本地环境的永久显示器。

假定 Grafana 用于工业应用,那么它的各种组合都非常实用,例如传感器数据的实时可视化、服务器状态监控以及自身的警报功能。
从多个设备收集多种数据将进一步扩大使用规模和使用场景。

测试数据

我们将保留用作测试数据的三个文件。
按照文章中的步骤查看 Grafana 如何与 PL-R5M 或 Pi 5 等设备配合使用。

参考资料:https://grafana.com/tutorials/install-grafana-on-raspberry-pi/


記事寄稿:ラズパイダ

非エンジニアでも楽しく扱えるRaspberry Pi 情報サイト raspida.com を運営。ラズベリーパイに長年触れた経験をもとに、ラズベリーパイを知る人にも、これから始めたいと興味を持つ人にも参考になる情報・トピックを数多く発信。PiLinkのサイトへは産業用ラズベリーパイについて技術ブログ記事を寄稿。