Arduinoから取得した情報をMackerelで見る
ゴールデンウィーク暇すぎて,以前衝動買いしたArduinoで何か作れないかと思い立ち, 部屋の温湿度を見られるようにしようということになりました.
TL;DR
Arduino→PC
使用した部品は以下の通りです.見た限りDHT11以外はArduinoをはじめようキットに含まれているようなので,そっちを買うのが手っ取り早いです. (なお,僕はこのキットを日本橋にて9000円で買ったのですが,同等品がAmazonにて4000円以下で売られていることをTwitterで教えられめっちゃ不機嫌になったのでAmazonで買うことをおすすめします)
- Arduino Leonardo
- USBケーブル
- 温湿度センサ DHT11
- カーボン抵抗 10kΩ
- ブレッドボード
- ジャンプワイヤ 4本くらい
Arduinoと部品を以下のような感じで繋いでいきます.
https://www.arduino.ccからAuduinoのIDEをインストールしたら,「スケッチ>ライブラリをインクルード>ライブラリを管理」から,「DHT sensor library」を検索してインストールします.
ライブラリをインストールしたら,早速Arduinoで実行してみます. GitHubに上げているwatcher.inoをIDEにコピペしてみてください.
ArduinoをUSBで接続したあと「ツール>シリアルポート」を確認し,接続したあとに現れた項目を選択します.また「ツール>マイコンボード」でArduino Leonardoを選択します.そして「スケッチ>マイコンボードに書き込む」を実行すると,Arduinoにプログラムが書き込まれます.
書き込みが終わったら正しく動作しているか確認してみましょう.「ツール>シリアルモニタ」を開くと,Arduinoから送信されるシリアル通信を表示できます.(ボーレートは9600bpsとしておきます)
PC→Mackerel
Arduino側が完成したら,常時起動してArduinoからの信号をMackerelに送信するPCを用意します*1.今回は自室の片隅で動いている録画サーバーにぶっ込むこととします.ちょうどこのサーバーでは既にMackerelを導入していたので好都合でした.
PC側で実行するスクリプトは,シリアル通信を受信して標準出力を行うだけなので,各自お好きな言語で書いたらいいと思います.今回はJavaScriptで書きました.作成するスクリプトの出力は,以下のページの仕様に従うようにします.
具体的には,プログラムを実行すると,{出力項目の名前}\t{出力項目の値}\t{UNIX時間}
という行を表示したい項目(温度,湿度など)の行数だけ出力するようにします.
また,環境変数MACKEREL_AGENT_PLUGIN_META
に1が設定された状態で実行すると,1行目に# mackerel-agent-plugin
を,
2行目からは設定情報を含むJSON形式のテキストを出力するようにします.
$ node main.js odango.humidity.my_room 19.00 1462368181053 odango.temperature.my_room 22.95 1462368181053 $ env MACKEREL_AGENT_PLUGIN_META=1 node main.js # mackerel-agent-plugin { "graphs":{ "odango.temperature":{ "label":"Temperature", "unit":"float", "metrics":[ {"name":"my_room","label":"My Room"} ] }, "odango.humidity":{ "label":"Humidity", "unit":"percentage", "metrics":[ {"name":"my_room","label":"My Room"} ] } } }
もし僕の書いたコードをそのまま使うのであれば,GitHubからコードをcloneしたあとmetrics.sample.json
とdefs.sample.json
をそれぞれ
metrics.json
,defs.json
という名前でコピーし,適宜JSONの内容を書き換えて下さい.
スクリプトが完成したら,Mackerelの設定ファイル(/etc/mackerel-agent/mackerel-agent.conf
)に以下の内容を追記します.
[plugin.metrics.arduino] command = "node /path/to/script/main.js" # 作成したスクリプトを実行するコマンド
忘れずにArduinoを接続したら,mackerel-agentを再起動してmackerel.ioを見てみましょう.1分ごとにグラフが伸びていくはずです.
所感
電子工作ができなくても,ArduinoとMackerelどちらもシンプルな仕組み&ネット上に情報がたくさんあるので,拍子抜けするくらい簡単に終わります.興味のある方はぜひ.
ただ,Mackerelの無料アカウントでは1日しか情報を表示できないのが残念.せめて7日だけでも…
Arduinoをはじめよう 第3版 (Make:PROJECTS)
- 作者: Massimo Banzi,Michael Shiloh,船田巧
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/11/28
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る
Arduinoをはじめよう 互換キット UNO R3対応互換ボード 初心者専用実験キット 基本部品セット20 in 1 Arduino sidekick basic kit
- 出版社/メーカー: vership
- メディア: おもちゃ&ホビー
- この商品を含むブログを見る
EasyWordMall DHT11温湿度センサーモジュール Arduino用
- 出版社/メーカー: Apple Trees E-commerce co., LT
- メディア: その他
- この商品を含むブログを見る
*1:「常時起動しているPC」のハードルが高いようなら,Raspberry Piを使うのもいいでしょう