Introduction
Node-REDでニフティmBaaSを使って、サーバーにデーター登録する実装のまとめ
Node-REDとは
Node-RED is a tool for wiring together hardware devices, APIs and online services in new and interesting ways.
From home page
Practice
First flow: http://nodered.org/docs/getting-started/first-flow.html
Second flow: http://nodered.org/docs/getting-started/second-flow.html
新しいノードを作る
こちらのDocumentのベースに作成しました。
- STEP 1: nodeには二つのファイルが必要
- HTMLファイル:ncmb-node.html
<script type="text/javascript">
RED.nodes.registerType('ncmb',{
category: 'function',
color: '#a6bbcf',
defaults: {
name: {value:""},
appkey: {value:""},
clientkey: {value:""}
},
inputs:3,
outputs:1,
icon: "file.png",
label: function() {
return this.name||"ncmb";
}
});
</script>
<script type="text/x-red" data-template-name="ncmb">
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
<div class="form-row">
<label for="node-input-appkey"><i class="icon-tag"></i> App Key</label>
<input type="text" id="node-input-appkey" placeholder="AppKey">
</div>
<div class="form-row">
<label for="node-input-clientkey"><i class="icon-tag"></i> Client Key</label>
<input type="text" id="node-input-clientkey" placeholder="ClientKey">
</div>
</script>
<script type="text/x-red" data-help-name="ncmb">
<p>A simple node that test with NCMB data register</p>
</script>
* Javascriptファイル: ncmb-node.js
var NCMB = require("ncmb");
// Require main module
var RED = require(process.env.NODE_RED_HOME+"/red/red");
function NcmbNode(config) {
RED.nodes.createNode(this,config);
this.appkey = config.appkey;
this.clientkey = config.clientkey;
var node = this;
this.on('input', function(msg) {
this.log("[FROM NODE] start action");
this.log(this.name);
this.log(this.appkey);
this.log(this.clientkey);
var ncmb = new NCMB(this.appkey,this.clientkey);
var IoTData = ncmb.DataStore("IoTData");
var obj = new IoTData();
obj.set("message", msg.payload)
.save()
.then(function(gameScore){
// 保存後の処理
msg.payload = "Save Success";
node.send(msg);
})
.catch(function(err){
// エラー処理
msg.payload = "Save Fail";
node.send(msg);
});
});
}
RED.nodes.registerType("ncmb", NcmbNode);
- nodeを保存する場所を設定
- 設定ファイル:「ユーザーフォルダー」/.node-red/settings.js
- 設定箇所
// Node-RED scans the `nodes` directory in the install directory to find nodes.
// The following property can be used to specify an additional directory to scan.
//nodesDir: '/home/nol/.node-red/nodes', ★ここで更新
- 確認
コンソールで、以下のようにコマンド実施
node-red
injectノードを追加し、ダブルクリックします。
TopicにmessageDataを入れます。
ncmbノードを追加し、ダブルクリックします。
appkey, clientkey を入れます。こちらの情報はニフティクラウドmbaasにてアプリ作成する時に自動的に発行されたキーです。
debugノードを追加します。3ノードを以下のようにリンク付けます。
終わったら、Deployをし、messageDataノードの隣にあるボタンをクリックし、mbaasのデーターストアにてサーバーにてデーターが保存され、debugにてメッセージ確認します。
これで今後はセンサーデーターと連携できたらなと・・
Trouble shooting
(1) "Waiting for missing types to be registered:" Error
1 Dec 15:50:48 - [info] Waiting for missing types to be registered:
1 Dec 15:50:48 - [info] - lower-case
Javascriptファイルでは何かエラーがあったりとかすると上記の確認をすると、
このようにエラーがでましたね。
しかもnodeが上手くインポートされていないよと表示ありました。
; や )のようなタイピングミスだったので、すぐ修正できましたが、
何かデバッグ的なログが欲しかったです。