ラズベリーパイとGrafanaで始める、現場データのリアルタイム可視化

産業用途のラズベリーパイにセンサーを接続するケースは容易に想像しやすいでしょう。特に、温度や湿度の管理に広く活用されています。
取得したデータを「見える化」する際、グラフや数値表も有効ですが、図面上に重ねて表示させることで、より直感的に把握できます。

今回は、Grafana(グラファナ)で実現してみました。
以下の画像は、データベースにテストデータを用いた例ですが、実際にはセンサーからのデータをリアルタイムに更新して表示できます。


近年は異常気象も増え、暑さ対策に課題を抱えている業種も少なくありません。
倉庫や配送センターなどの物流業界や、食料品を扱う生産工場や小売店などでは、商品の温度・湿度管理が従来通りでは難しくなると想定されます。

こうした現場で、産業用ラズベリーパイに接続したセンサーを用いることで、各エリア毎に計測をし、効率よく空調制御をするシステムとして活用できます。
これは商品の品質管理だけではなく、そこで働く従業員の環境改善にもつながります。

記事では、産業用ラズベリーパイ「PL-R5M」にGrafanaをインストールして利用する方法をご紹介します。
なお、Grafana Cloudは利用せず、ローカル環境での導入を対象にしています。

Grafanaとは

Grafana(グラファナ)は、オープンソースのプラットフォームです。
主にデータをリアルタイムで「見える化」するために利用されます。

時系列データベースやセンサーのデータ、サーバーやIoT機器の監視、各種クラウドサービス利用など、様々なデータソースと接続できるのが特徴です。
今回のテストのように、グラフや数値表以外にも、マップ画像など色々な形式で表示ができます。

アラート機能でしきい値を設定して通知する機能も実装されていて実用的です。
小さくは個人利用から、本格的な産業用途にも対応できます。

  • マルチデータソースの対応
  • ダッシュボードのカスタマイズ
  • アラート機能
  • プラグインで拡張可能

Grafana Cloudを利用すれば、やはりオープンソースのPrometheus(プロメテウス)でデータを収集し、Grafana Cloudに作成したデータベースを使った一元化管理も可能になります。

オープンソースなので、ローカル環境であれば無料、Grafana Cloudも無料プランから利用できるため、手軽に導入できます。

Grafanaのインストール

UbuntuやDebian系であれば、aptパッケージ管理システムでインストールすることができます。
GPGキーとリポジトリの追加後、aptコマンドでインストールします。

先に必要な物をインストール(DBにSQLiteを使わないなら2行目は要らない)

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

この後はWebブラウザで作業します。
同じネットワーク内であれば、Webブラウザにhttp://<ip address>:3000で接続できます。

Grafanaへログイン

Webブラウザから接続するとログイン画面になります。
デフォルトのユーザー名adminとデフォルトのパスワードadminでGrafanaにログインすると、続けて初回だけ管理者ユーザーのパスワードを尋ねられるので変更します。

テストデータの準備と設定

最初にテストデータとして、データベースの作成シェルスクリプト、ダッシュボード用のjsonファイルを用意しました。
同じように試したい人もいらっしゃるでしょうから、記事の最後でダウンロードができるようにしておきます。ぜひ、利用してください。

テストデータに用いる3つのファイルを、予め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_testとしました。create_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で設定する

ここまで準備できたら、今度はGrafana側で設定していきます。
データベースにSQLiteを使うため、先にSQLiteプラグインをインストールします。

プラグインのインストール

左メニューを次のように辿り、SQLiteを選びます。
Administration -> Plugins and data -> Plugins -> SQLite

検索窓で絞り込めます。
クリックした画面にはInstallボタンがあるので、ボタンを押すだけです。

画像も扱うためCanvasも必要になりますが、現バージョンでは最初からインストールされていて作業は要りません。

Data Sourcesの指定

データソースに先程Raspberry Pi 側に作成した*.dbファイルを指定します。
左メニューからデータソースにSQLiteを選んで指定します。
Connections –> Data Sources -> sqlite

ここではPath(パス)だけ入力しました。
先程の*.dbファイルへのフルパスです。

名前:frser-sqlite-datasource
パス:/var/work/grafana_test/sensor_data.db

最後にSave & Testボタンの押下で、Data source is workingと表示されればOKです。

ダッシュボードでjsonファイルをインポート

今回は事前に作成したダッシュボードのsample.jsonを用意してあるため、これをインポートします。

以下のJSONモデルは、ダッシュボードを定義するデータ構造です。これには、ダッシュボード設定、パネル設定、レイアウト、クエリなどが含まれます。メニューのダッシュボードをクリックすると、右上にあるNewボタンからImportが選べます。

jsonファイルはドラッグ&ドロップしてアップロードしました。

⚠︎注意点 UID

データベースを作成した段階でUIDが割り振られています。これは作成時に振られます。今回用意したjsonファイルにも記載されていました。予めダッシュボードからエクスポートしたjsonファイルのため、JSON modelにはuidが残っていました。

インポートした後でデータが表示されない現象になったので読み返してみると、どうやらUIDの指定がマズかったようです。今回のデータベースのUIDとは異なるからです。

仕方なく3箇所のUIDを直接に書き換えました。jsonファイルはインポートした後でも編集して反映ができます。

UIDを指定していた箇所は次のような書式です。

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

用意したsample.jsonだと、27行目、340行目、351行目です。
値をnullとするか、そもそもこのuidのキーは削除しておきます。
もしくは、作成したデータベースのuidを、後から指定しても動作しました。

最初に存在するannotations listのuidと、ダッシュボード自体のuidだけはそのままにします。

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

jsonファイル最下部にあるダッシュボードのuidはそのままです。
タイトルとUIDはユニークでなければならないため、変更するならどちらも変更した方が良さそうな動きでした。

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

手動でイチからダッシュボードを作成するなら、これらの作業は必要ありません。
あくまでも事前に作成したダッシュボードのjsonファイルをインポートする際に注意してください。

これもバージョンアップで変わっていくことが考えられます。
後からjsonファイルをインポートしたら、ダッシュボードにデータが表示されない状態に陥ったら見直してみてください。
記事執筆時点での対処法でした。

実行の確認

ここまで設定を施せば、ダッシュボードには冒頭にあった画像と同じ状態になります。ここでは倉庫を模した画像です。
温度と取得日時がデータベースから読み込まれています。

実際の運用では一定の秒数で更新することができるため、数値表よりもエリア毎に視覚化されて分かりやすいですね。

背景として選んである画像は、後からでも変更することができます。
/usr/share/grafana/public/img/bgに画像を配置すれば、ダッシュボードのCanvas上で右クリックのサブメニュー「set backgroud」で表示されます。

テストデータを用いたセットアップはこれで終了です。
あとは別のデータソースを追加したり、ダッシュボードの表現方法をカスタマイズするなど、実現したい表示方法を試してください。

Raspberry PiでGrafanaの活用

Grafanaはデータのインポート対応が幅広いことが特徴に挙げられます。

プラグインも相当数ありますから、使用しているクラウドサービスや各種データと連係の心配はないでしょう。
Grafanaは既に多くの企業や現場で、システムの監視や産業用途に広く利用されていて有名です。比較的に情報が多いのも安心できるポイントです。

Raspberry Pi なら、GPIO端子にセンサーが接続でき、直ぐにPythonプログラムを実行できる環境と、データベースも扱うことができます。
そこにGrafanaを導入すれば、お手軽にダッシュボードでの可視化が実現できます。
更に、Raspberry PiはHDMIでモニターも繋げますから、そのままフルスクリーンで表示できます。ローカル環境の常設モニターとしても効果的です。

Grafanaを産業用途で使うと想定したなら、センサーデータをリアルタイムで可視化、サーバーの状態を監視、独自アラート機能など、組み合わせの幅も広く実用的です。
複数のデバイスから複数のデータを集めれば、更に利用規模も利用シーンも広がるでしょう。

テストデータ

テストデータとして利用した3つのファイルを残しておきます。
記事の手順で、お手持ちのPL-R5MまたはPi 5などを使い、Grafanaの動作を確かめてみてください。

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


記事寄稿:ラズパイダ

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