Raspberry PiにNode-REDをインストールして、Raspberry Piで取得できるデータをニフティクラウド mobile backendに格納できるようにします。
はじめに
流行り始めた時にRaspberry Piを買ってLチカ(LEDをチカチカさせる)させて満足していました。
その後あまり触っていなかったのですが、Node-RED勉強会に参加して、これを利用すればRaspberry Piで色々簡単に試すことができるようになると思い、この記事を書くことにしました。
前準備
Raspberry PiにNode-REDをインストールして準備しましょう。
このヘルプを参考にインストールしました。
格納するノードを作る
Node-REDのデフォルトではニフティクラウド mobile backendに格納するノードがないので、自分で作るしかないです。なので、頑張って作っていきます。
{
"name" : "node-red-ncmb-datastore",
"version" : "0.0.1",
"description" : "NIFTY Cloud mobile backend DataStore node for node-red",
"dependencies": {
},
"keywords": [ "node-red" ],
"node-red" : {
"nodes": {
"ncmbds": "ncmbds/ncmbds.js"
}
},
"dependencies": {
"ncmb": "~2.0.2"
}
}
module.exports = function(RED) {
"use strict";
var NCMB = require("ncmb");
function NCMBDataStore(config) {
RED.nodes.createNode(this,config);
this.appkey = config.appkey;
this.clikey = config.clikey;
this.classname = config.classname;
this.fieldname = config.fieldname;
var node = this;
this.on('input', function(msg) {
var ncmb = new NCMB(this.appkey, this.clikey);
var NCMBClass = ncmb.DataStore(this.classname);
var ncmbClass = new NCMBClass();
ncmbClass.set(this.fieldname, msg.payload);
ncmbClass.save()
.then(function(){
node.info("message is saved.");
})
.catch(function(err){
node.info(err.text);
});
node.send(msg);
});
}
RED.nodes.registerType("ncmbds",NCMBDataStore);
}
<script type="text/javascript">
RED.nodes.registerType('ncmbds',{
category: 'NIFTY Cloud',
color: '#3FADB5',
defaults: {
name: {value:""},
appkey: {value:"", required:true},
clikey: {value:"", required:true},
classname: {value:"", required:true},
fieldname: {value:"", required:true}
},
inputs:1,
outputs:0,
icon: "db.png",
label: function() {
return this.name||this.appkey||this.clikey||this.classname||this.fieldname||"ncmbds";
}
});
</script>
<script type="text/x-red" data-template-name="ncmbds">
<div class="form-row">
<label for="node-input-name">Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
<br/>
<div class="form-row">
<label for="node-input-appkey">APP-Key</label>
<input type="text" id="node-input-appkey" placeholder="APPKey">
</div>
<div class="form-row">
<label for="node-input-clikey">Clinet-Key</label>
<input type="text" id="node-input-clikey" placeholder="CLIKey">
</div>
<br/>
<div class="form-row">
<label for="node-input-classname">ClassName</label>
<input type="text" id="node-input-classname" placeholder="ClassName">
</div>
<div class="form-row">
<label for="node-input-fieldname">FieldName</label>
<input type="text" id="node-input-fieldname" placeholder="FieldName">
</div>
</script>
ファイルを作成して、インストールしていきます。
npm install -g .
インストールが完了したら、Node-REDを起動しましょう。
node-red-pi --max-old-space-size=128
起動がうまくいきましたら、ブラウザで接続しましょう。
http://127.0.0.1:1880/
以下のようなノードが追加されているはずです。
実際に動かしてみよう
データが格納されることを確認したいので、injectノードを置いてデータを発行させていきます。
incjectノードとncmbdsノードを置いてつなげます。
ncmbdsノードに必要な値を設定してきましょう。
ncmbdsノードをダブルクリックし、設定画面を表示させます。
「Name」には、ノードの名前を設定します。今回は「ncmbtest」と設定します。
「APP-Key」には、ニフティクラウド mobile backendのAPIキーのアプリケーションキーを設定します。
「Client-Key」には、ニフティクラウド mobile backendのAPIキーのクライアントキーを設定します。
「ClassName」には、格納するデータストアのクラス名を指定します。今回は「nodered」と設定します。
「FieldName」には、格納するデータストアのフィールド名を指定します。今回は「message」と設定します。
設定が完了したら、Deployボタンを押して、変更内容を反映させましょう。
incjectノードのボタンを押して、動作させます。
では、格納されているか確認してみましょう。
格納されていましたね。
ノードの情報を変更してみる
incjectノードの情報を変更して、格納される値が変化するかを確認してみます。
「Payload」を「string」に変更し、「test message」と設定します。
Deployボタンを押して変更内容を反映させます。
incjectノードのボタンを押して、動作させます。
先ほど設定した文字列が格納されていましたね。
おわりに
今回は力尽きたので、Raspberry Piらしい使い方を別の機会に書きたいと思います。