見出し画像

【AtmosBot2.1Pi】 InfluxDB + Grafana/ChronografでDashboardを作る

TL;DR

  • AtmosBotのデータをInfluxDBに書き込むMQTTクライアントを追加する

  • InfluxDBに書き込んだデータからGrafanaChronografでDashboardを作って可視化する

AtmosBot2.1Piは順調に稼働中だが、システム側のアップグレードを行った。

システム構成

MQTTのBrokerからPublishされたAtmosBot2Pi/dataのデータをInfluxDBへ書き込むクライアントが追加部分。

システム構成図

InfluxDBヘ書き込んだデータはGrafanaやChronografを使いDashboardを生成し、ブラウザーから見ることができるようにする。

Raspberry PiへInfluxDBをインストールする

InfluxDBは時系列データを扱うために設計されたデータベースでSQLiteのようなリレーショナルデータベースRDBとは異なる。AtmosBot2.1PiのようなIoTシステム向きなデータベースのようだ。

InfluxDBのインストール方法は下記を参照にした。

使用しているRaspberry Pi OSはBullseye(32bit)だが、InfluxDB V2がインストールできなかった。そのためInfluxDB V1(v1.8系)を使うことにした。

GrafanaとChronografで可視化する

InfluxDBヘデータが書き込みできればGrafanaとChronografで可視化できる。

ChronografはInfluxDBと同じ会社が開発しているのでInfluxDBがインストールできいていれば同様にaptでインストールできるはず。

また公式サイトにGrafanaのインストール方法が紹介されている。

手順は省略するが、下記のようなDashboardを作成できる。

GrafanaのDashboard
ChronografのDashboard

Grafanaの方がいいなと思う部分、Chronografの方がいいなと思う部分がそれぞれあるが、Grafanaの方が設定項目が細かなカスタマイズができそうだ。

ハマってしまったところ

InfluxDBヘ書き込みはできているのに最初Grafana、ChronografのDashboardで表示されなかった。

原因は書き込んでいるデータが文字列になっていたから。

AtmosBot2.1PiのMQTTのデータのやり取りは文字列を使っている。InfluxDBへ書き込むデータは数値にしないといけなかったが、気づかずに半日近く要してしまった。

最終的にやりたいこと

現在実家のインターネット回線はSpeed Wi-Fi Home 5G L12をmineoのSIMで運用して使っている。mineoのネットワークはCGN(Carrier Grade NAT)を使って構築されている。

実家以外のネットワークからもDashboardにアクセスできるようにしたいが、この環境だとWAN側にグローバルIPアドレスが割り当てられていないため、VPN + DDNSでは外部からアクセスすることができない。

そのため別の方法で外部からアクセスできるようにして、最終的にはAmbientThingSpeakなどのクラウドサービスに頼らない環境を構築したい。

よろしければ、サポートをお願いします。 より多くの方に役立つnoteを書けるよう頑張ります!!