【AtmosBot2.1Pi】 InfluxDB + Grafana/ChronografでDashboardを作る
TL;DR
AtmosBotのデータをInfluxDBに書き込むMQTTクライアントを追加する
InfluxDBに書き込んだデータからGrafanaやChronografで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の方がいいなと思う部分、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では外部からアクセスすることができない。
そのため別の方法で外部からアクセスできるようにして、最終的にはAmbientやThingSpeakなどのクラウドサービスに頼らない環境を構築したい。