LoginSignup
12
13

More than 5 years have passed since last update.

Raspberry PiにNode-REDをインストールしてmBaaSに保存する

Last updated at Posted at 2015-12-12

Raspberry PiにNode-REDをインストールして、Raspberry Piで取得できるデータをニフティクラウド mobile backendに格納できるようにします。

はじめに

流行り始めた時にRaspberry Piを買ってLチカ(LEDをチカチカさせる)させて満足していました。
その後あまり触っていなかったのですが、Node-RED勉強会に参加して、これを利用すればRaspberry Piで色々簡単に試すことができるようになると思い、この記事を書くことにしました。

前準備

Raspberry PiにNode-REDをインストールして準備しましょう。
このヘルプを参考にインストールしました。

格納するノードを作る

Node-REDのデフォルトではニフティクラウド mobile backendに格納するノードがないので、自分で作るしかないです。なので、頑張って作っていきます。

package.json
{
    "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"
    }
}
ncmbds/ncmbds.js
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);
}
ncmbds/ncmbds.html
<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/

以下のようなノードが追加されているはずです。

addnode.png

実際に動かしてみよう

データが格納されることを確認したいので、injectノードを置いてデータを発行させていきます。
incjectノードとncmbdsノードを置いてつなげます。

connect.png

ncmbdsノードに必要な値を設定してきましょう。
ncmbdsノードをダブルクリックし、設定画面を表示させます。

ncmbsetting.png

「Name」には、ノードの名前を設定します。今回は「ncmbtest」と設定します。
「APP-Key」には、ニフティクラウド mobile backendのAPIキーのアプリケーションキーを設定します。
「Client-Key」には、ニフティクラウド mobile backendのAPIキーのクライアントキーを設定します。
「ClassName」には、格納するデータストアのクラス名を指定します。今回は「nodered」と設定します。
「FieldName」には、格納するデータストアのフィールド名を指定します。今回は「message」と設定します。

設定が完了したら、Deployボタンを押して、変更内容を反映させましょう。

deploy.png

incjectノードのボタンを押して、動作させます。

run.png

では、格納されているか確認してみましょう。

ncmbcon.png

格納されていましたね。

ノードの情報を変更してみる

incjectノードの情報を変更して、格納される値が変化するかを確認してみます。

insetting.png

「Payload」を「string」に変更し、「test message」と設定します。
Deployボタンを押して変更内容を反映させます。

run2.png

incjectノードのボタンを押して、動作させます。

ncmbcon2.png

先ほど設定した文字列が格納されていましたね。

おわりに

今回は力尽きたので、Raspberry Piらしい使い方を別の機会に書きたいと思います。

12
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
13