2014年6月22日日曜日

ArduinoからEthernetで直接fluentdにPOSTする

IMG_0993

ArduinoにEthernet Shieldを載せることで、Arduinoから直接各種サーバにデータを送ることができるようになります。ArduinoでA/D変換した電圧値をfluentdに送付することで、簡易ロガーとして活用することもできます。

fluentd側

Ethernet経由で受信するだけなので in_http が動くようにします。サンプルどおりで大丈夫です。

Arduino側

fluentd の in_http はPOSTで受け取るので、サイトのWebClientを参考にしてPOSTを送信するスケッチを作成します。

  • servername:fluentdサーバのドメイン名 or IPアドレス
  • serverPort:fluentdサーバのポート
  • pageName:fluentdに送信する際のタグ(スラッシュ含む)
  • params:fluentdに送信するJSON(json=で始まる)

コード中のこれらの変数を適宜書き換え、POSTメソッドの生データを組み立てて送信する形になります。

目的

回路の性能測定の際、電圧・電流を長時間モニタすることがあります。専用機器を使うものなのですが、機器自体が高価で、なかなか手が出ないものです。A/D変換し値を保存できればよいので、Arduino + fluentdの組み合わせで簡易ロガーとして使用します。fluentd側がが受信した時刻を記録できるので、ネットワークの遅延を気にしない程度の間隔ならば、複数のArduinoで計測記録の同期をとるのも容易です。

また、センサネットワークのセンサそのものに組み込むには高機能高コストですが、別途なんらかの無線とかで受信したセンサの値をネットワークに送信する母艦としても使えると思います。