今日は
時系列DBは、3種類構築設定してpi4bのhostやdockerの状況を監視できることを確認しました。本題のマイコン監視に移ります。esp32からUDPでデータを投げるプログラムを作成し、telegrafが受け取れることを確認します。
環境
前回docker上で作成したInfluxDB+telegrafを活用して、esp32から送信したUDPデータをtelegrafが受け取れるようにします。
telegraf.confの変更点
以下の3行がサンプルとしてコメントアウトしてあるのでコメントアウトを外します。
[[inputs.socket_listener]]
service_address = "udp://:8094"
data_format = "influx"
containerを再起動して、telegraf.confを再度読み込ませます。
shell atachしてlogをみると
2021-07-10T06:11:53Z I! [inputs.socket_listener] Listening on udp://[::]:8094
ちゃんとudp:8094が待ち受けになってます。
docker-comose.ymlは、いつもぱっといきません
telegraf containerのポートは待ち受けていますが、外部ネットワークと繋がっていません。あっポートの転送ねと。
docker-compose.ymlの修正
ports:
- "8094:8094"
これでOKかと思いましたが、これだとtcpで転送されます。うーーん。
docker-compose.ymlの再修正
ports:
- "8094:8094/udp"
M5stack側からUDPで投げつける準備
サンプルソースを見ると、UDPポートを宣言して、パケット作って送るだけのようです。
エキスを抽出するとこの4行です。
line = String("temperature value=" + temperature);
// send the packet
udp.beginPacket(host, port);
udp.print(line);
udp.endPacket();
とりあえず、BME280で計測した温度を5秒おきにtelegrafが待ち受ける8094/UDPに投げるプログラムを作成し、M5stackへ書き込みました。ちゃんと動いている感じです。
VScodeのシリアルモニターです。
同じ内容をM5stackのLCDにも表示してます。
chronografで受け取ったデータを確認する
influxdbにデータが格納されたかを確認するためにchronografを使います。port:8890をたたくとブラウザーから接続できます。grafanaと同じようにdatasourceをInfluxDBを指定すると、受け取っているデータがずらっと確認できます。telegrafからのデータにちゃんと「temperature」という項目があり、dashboardを作成してデータを表示させるとこのようにグラフが作成できました。
今日のまとめ
esp32 からtelegrafへudpポートを使ってデータを送信できること確認しました。今後は、複数のデータをまとめて送信する方法を確認して行きたいと思います。
参考リンク
esp32からtelegrafへ
ESP32で取得したデータをgrafanaで表示する。 - Qiita
How to send sensor data to InfluxDB from an Arduino Uno | InfluxData
0 件のコメント:
コメントを投稿