スズハドットコム

IT関連や3Dプリンタの記事、たまに生活のメモを書いていきます。

スマートメーターから消費電力データを取得してグラフ化する ④Grafanaでグラフ表示編

こちらの続きです。 suzu-ha.com

作業全体の説明はこちらです。 suzu-ha.com

前回は、データをinfluxdbに取り込む部分を作成しました。
今回は、グラフ化して表示する部分を作っていきます。

もくじ


環境

  • Radxa ROCK 4C+
  • Debian bullseye (Radxa公式イメージの rock-4c-plus_debian_bullseye_kde_b60.img)
  • Grafana 10.2.3

Grafanaのインストール

Grafanaのリポジトリを登録し、aptでインストールします。
Grafana公式ドキュメントにあるコマンドの、gpgファイルの出力先だけ変更しています。

radxa@rock-4c-plus:/var/tmp$ wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/grafana.gpg > /dev/null
radxa@rock-4c-plus:/var/tmp$ echo "deb [signed-by=/etc/apt/trusted.gpg.d/grafana.gpg] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
radxa@rock-4c-plus:/var/tmp$ sudo apt update
radxa@rock-4c-plus:/var/tmp$ sudo apt install grafana

Grafanaを起動します。また、OS起動時に自動起動するようにします。

radxa@rock-4c-plus:/var/tmp$ sudo systemctl enable grafana-server
radxa@rock-4c-plus:/var/tmp$ sudo systemctl start grafana-server

Grafanaの設定

初回ログイン

http://ROCK 4C+のIPアドレス:3000 を開きます。
初期アカウントは admin/admin です。

パスワードを変更します。

ユーザ名をadminから変更したければ、右上角のアイコンをクリック -> Profie をクリックします。
次の画面でName、Usernameを編集して、SaveボタンをクリックすればOKです。

データソースの設定

画面左上の3本線からメニューを開き、Connections -> Data sources を選択します。
Add data source をクリックします。

InfluxDB をクリックします。

各項目を入力または選択します。

  • Name 判別できるような名前を設定し、Defaultスイッチをオンにしておきます。
  • Query language Flux
  • URL http://localhost:8086
  • Auth 全部オフ
  • Organization influxdb設定時に指定したOrganization名
  • Token influxdb設定時に表示されたAPIトークン
  • Default bucket influxdb設定時に指定したBucket名

最後に Save & test ボタンをクリックして、エラーがないことを確認します。


ダッシュボードの作成

グラフを作成

画面左上の3本線からメニューを開き、Dashboards を選択します。
Create Dashboardをクリックします。
(2回目以降は、右上の New ボタンから New dashboard をクリックします。)

Add visualization をクリックします。

Select data source で InfluxDB を選択します。

Query 欄に以下のクエリを入力します。
fileという名前のmeasurement(テーブルのようなもの)からepc(プロパティ)とedt(データ)フィールドを取得するクエリです。
keilogが出力するログには瞬時電力計測値(epc="E7")以外のデータも含まれているので、フィルタリングするためにepcも取得しています。

from(bucket: "bucket1")
  |> range(start: v.timeRangeStart, stop:v.timeRangeStop)
  |> filter(fn: (r) =>
    r._measurement == "BRoute" and
    r._field == "epc" or r._field == "edt"
  )

また、Query optionsを展開して、以下のように設定します。

  • Max data points:20000
  • Min interval:10s

24時間分のグラフを表示させるとき、デフォルトのMax data pointsでは数が足りず以下のようなエラーが出るためです。

また、Max data pointsの値を増やすと、Intervalが自動計算され小さくなります。
(Max data points=20000のとき、Interval=5sになりました。)
ですが、消費電力データの取得間隔である10秒より小さくなっても無駄なので、Min intervalで10秒と指定しています。

瞬時電力測定値(epc="E7")だけをフィルタリングするには、Transform data タブを開きます。
Add transformationボタンをクリックし、Filter data by valuesを選択します。

以下のようにepc="E7"を表すフィルタを設定します。

また、右側のプロパティでグラフの見た目を好みに調整します。
この例の場合は以下のとおりです。

  • visualizationの種類:Time series
  • Panel options -> Title:瞬時電力ヒストリ
  • Graph styles -> Style:Bar
  • Graph styles -> Fill Opacity:100
  • Standard Options -> Unit:Watt(W)
  • Standard Options -> Min:0
  • Thresholds:(赤)6000、(橙)3000、(緑)Base
  • Thresholds -> Show thresholds:As filled regions

設定できたら、右上の Apply ボタンをクリックします。
ダッシュボードにグラフのパネルが追加されます。

さらに、Save dashboardボタン(青い Add の右にあるアイコン)をクリックしてダッシュボード自体を保存します。

同じクエリ結果を共有してゲージを作成

続いて、ゲージ(アナログのスピードメーターのような表示)を追加します。
先ほど追加したグラフと同じデータを使用するので、クエリ結果を共有したほうが効率的ですね。

ダッシュボード画面で、Add → Visualization をクリックします。

Query の Data source は Dashboard を選択します。
Source は先ほど作成したパネル「瞬時電力ヒストリ」を選択します。
これで、「瞬時電力ヒストリ」パネルで実行したクエリ結果を使いまわすことができます。

Transform -> Apply panel transformations from the source panel のスイッチをオンにすると、瞬時電力測定値(epc="E7")のフィルタリングがこちらにも反映されるようです。

右側のプロパティでグラフの見た目を好みに調整します。
この例の場合は以下のとおりです。

  • visualizationの種類:Gauge
  • Panel options -> Title:瞬時電力
  • Gauge -> Show threshold labels:オン
  • Gauge -> Show threshold markers:オン
  • Standard Options -> Unit:Watt(W)
  • Standard Options -> Min:0
  • Standard Options -> Min:10000
  • Standard Options -> Color scheme:From thresholds (by value)
  • Thresholds:(紫)9000、(赤)6000、(橙)3000、(緑)Base

先ほどと同様、Apply ボタンをクリックするとダッシュボードにゲージのパネルが追加されます。

パネルはドラッグ&ドロップで並べ替えることができます。
パネルの追加。変更や並べ替えをした後は、Save dashboardボタンでダッシュボードを保存するのを忘れずに。