Machinist(マシニスト)の活用例
IIJ 畠山です。
前回の記事に引き続き、IIJ謹製ツール「Machinist(マシニスト)」のご紹介です。
今回はソースコードなども交えた具体的な活用例について、ご紹介していきます。
やりたい事とその構成
Bルートブログということで、Machinistに投入するデータはスマートメーターBルート活用サービスで保持している電力測定値を使い、Machinistで可視化・拠点比較・監視をを行います。
構成は、手元にあるパソコン(MacBook)を使って、スマートメーターBルート活用サービスの公開APIからデータを取得し、それをMachinistに送信する形です。
まずは電力データの取得
Machinsitにデータを送信する際、Machinist用にデータフォーマットを少し整える必要があります。
簡単にデータ処理を行う関係で、今回は node.js を使って、API経由でデータ取得からデータ整形までのコードを書きました。
<get_InstPower.js>
‘use strict’ var fs = require(‘fs’); var http = require(‘http’); // スマートメーターBルート活用サービス(以下、SMBA)のAPIに接続する var http = require(‘https’); var host = ‘api.pms.iij.jp’; var request = http.get({ ”host” : host, ”port” : 443, ”path” : “/external_api/v1/inst_power/{SMBAのサービスコード}”, ”auth” : “{SMBAのAccessキー}:{SMBAのAccessトークン}” }, function(response) { var body = ”; response.setEncoding(‘utf8’); response.on(‘data’, function(chunk){ body += chunk; }); response.on(‘end’, function(response){ // 最新の値だけ取得する var rcvData = JSON.parse(body); var lastValue = rcvData[rcvData.length-1].value; // Machinistに送信するデータを作成 var toStrObj = {}; toStrObj.agent_id = ” MachinistのエージェントID ”; toStrObj.api_key = ” MachinistのAPIキー ”; toStrObj.metrics = [{namespace : “ID-0001”, name : “Inst Power”, value : lastValue}]; // JSON形式に変換し、tmpという一時ファイルに保存する |
Machinistへの送信
上のコードで生成した一時ファイルを、curlコマンドを使ってMachinistへ送信します。以下のように1行です。
<curlコマンド>
curl -X POST -H “Content-Type: application/json” https://gw.machinist.iij.jp/gateway -d @tmp |
もちろん、データ取得→データ→Machinistへ送信 という一連の流れを1つのプログラムで実装することも可能です。
定期的に繰り返す
上記の部品をひとつにまとめつつ、定期的に「データ取得・Machinistへ送信」を繰り返すようにします。
今回は60秒周期としました。
<定期取得のシェルスクリプト>
#/usr/bin/bash
while : |
あとは、このスクリプトを実行すれば諸々の準備は完了です。
可視化
では、実際に送信したデータをMachinistの画面で見てみましょう。
最新値のグラフと1日分のグラフです。
グラフの種類と色は見やすいよう少しカスタマイズしています。
拠点比較
複数のデータを比較するには、カスタムチャートが便利です。
「カスタムチャートを作成する」ボタンを選択し、比較したいデータを選択します。
あとは、グラフの種類や色などを調整して見た目を整えます。
カスタムチャートで作成したグラフは、リンクURLで第三者と共有することもできます。
監視設定
データの見える化だけではすぐに飽きてしまいますので、監視設定を使ってもう少し賢くしてみます。
先に出てきたオレンジ色の線グラフの値を見ると、就寝時・外出時の数値から待機電力は200W~250Wくらいなのがわかります。
精度は荒いですが、大よその待機電力の数値を見ることで、電気を使っているか、電気を使っていない(就寝時・外出時)の判定を行うことができます。
まず、「電気使用監視」という監視設定を作り、監視設定に条件を追加していきます。
250Wを閾値として、閾値より大きい場合を『電気使用中』、閾値以下の場合を『待機状態』と定義します。
条件の作成が終わったら、作成した条件と監視対象のデータの紐付けを行います。
これで監視設定が完了しました。
監視設定を行うと、対象のデータのグラフの下に監視結果が表示されるようになり、状態変化したときの値と時間が一覧で表示されるようになります。
また、アクション設定を行うことで監視の状態変化に合わせてEメールを送ることもできます。
監視設定の条件をうまく使えば、電気の消し忘れを通知したり、電気の使いすぎを通知するなどの応用も可能です。
最後に
今回のブログでは、スマートメーターBルート活用サービスのAPIを使ったMachinistの活用例をご紹介させていただきました。
今回の例のような外部APIとMachinistの組み合わせはいろいろ応用が利きます。相性が良さそうなところだと、気象情報、為替レートなどです。それ以外にも、SNSのフォロワー数やいいねの数といった情報も時間経過によって変化するのでMachinsitで可視化しても面白いと思います。
Machinistに興味をお持ちいただいた方は、是非アカウントを作成してみてください。
↓ ベータ版 無料アカウント作成はこちらから https://machinist.iij.jp/ |