2021年8月7日土曜日

esp32からtelegrafへ内部情報などをUDPで投げつける

今日は

時系列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 件のコメント:

コメントを投稿

ページ引っ越しました

このページは、以下に引っ越しました。内容も逐次移行中です。引き続きよろしくお願いします。  https://hkaji.github.io →こちら