4
4

More than 5 years have passed since last update.

Node-RED on Docker - Part4: はじめてのnodeを作成する

Last updated at Posted at 2015-02-13

Node-REDのCreating your first nodeを読むと自分でnodeを定義できるので慣れてくるとNode-REDの可能性がいろいろ見えてきます。MasheryW2O2のESBのような使い方ができます。以前開発で使っていたDataSpider Servistaを利用してセンサーデータハッカソンも開催されたようです。Node-REDはNode.jsで書けるのでアイデア次第でいろいろ使えそうです。

nodeの作り方

前回Dockerホストにカスタムのnodeを追加するディレクトリを/opt/nodesに作成し、settings.jsのnodesDirに指定しました。このディレクトリにjsとhtmlファイルを作成します。

  • js: nodeのロジックを記述
  • html: nodeの設定を記述

lower-caseのサンプル

Creating your first nodeにあるlower-caseのサンプルを実装してみます。

jsファイルにロジックを記述します。

/opt/nodes/99-lower-case.js
module.exports = function(RED) {
  function LowerCaseNode(config) {
    RED.nodes.createNode(this,config);
    var node = this;
    this.on('input', function(msg) {
      msg.payload = msg.payload.toLowerCase();
      node.send(msg);
    });
  }
  RED.nodes.registerType("lower-case",LowerCaseNode);
}

htmlファイルにnodeの設定やアイコンの指定を記述します。

/opt/nodes/99-lower-case.html
<script type="text/javascript">
  RED.nodes.registerType('lower-case',{
    category: 'function',
    color: '#a6bbcf',
    defaults: {
      name: {value:""}
    },
    inputs:1,
    outputs:1,
    icon: "file.png",
    label: function() {
      return this.name||"lower-case";
    }
  });
</script>

<script type="text/x-red" data-template-name="lower-case">
  <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>
</script>

<script type="text/x-red" data-help-name="lower-case">
  <p>A simple node that converts the message payloads into all lower-case characters</p>
</script>

Node-REDの画面

jsとhtmlを作成してからDockerコンテナを起動します。

$ docker run --rm \
  --name node-red \
  -p 1880:1880 \
  -v /opt/nodes:/data/nodes \
  node-red 

Node-REDの画面を開くとfunctionのカテゴリにlower-caseのnodeが追加されました。injectとdebugのnodeを前後につなげます。injectのpayloadには大文字でHELLOと入力しました。deploy後にinject nodeの左のボタンを押すとフローが実行されます。debugにはpayloadの大文字のHELLOが小文字のhelloになって出力されました。

lower-case-node.png

4
4
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
4
4