.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

ちょっと触ることになったので。

  • IBM英国Hursley研究所のメンバーを中心に開発
  • OSSであり、Node.jsが動く環境であればどこでも動かせる。

機能

モノのインターネットを配線するための

特徴

  • Apache NiFiと同じ、flow-based programmingツール。
  • NiFiは、NiFiMiNiFiに分かれているが、Node-REDは、分かれていない。
    • クラウドやローカルのPC、Raspberry Piで動作させることが可能。
    • BLEや各種センサープロトコルに対応したプラグインが豊富
    • エッジ側で動作させる事に主眼をおいて開発されている。

詳細

サブ・プロジェクト

Dashboard

Node-REDのダッシュボードUI

Node generator

Open APIドキュメントや関数ノードのソースなど、
様々なソースからNode-REDノードモジュールを生成するCLI

Command Line Tool

Node-REDインスタンスをリモートで管理できるCLI

Flow Connection Gateway

システム間の接続インタフェース(API)を統合管理する技術

インストール

ローカル

Node.jsのインストール後にnpmでインストールする。

コンテナ

Docker環境を準備して、以下を行う。

  • Docker Build
  • Dockerfile
    FROM nodered/node-red
    
    RUN mkdir -p $HOME/.node-red
    RUN cd $HOME/.node-red
    RUN npm install node-red-contrib-aedes
  • ビルド
    >docker build -t nodered-sample:p1 .
  • Docker Compose
  • docker-compose.yml
    version: '3.4'
    
    services:
      nodered_sample:
        image: nodered-sample:p1
        ports:
          - "1880:1880"
          - "1883:1883"
  • 起動
    >docker-compose up

※ portsは、ホスト側:コンテナ側で、1880は、HTTP。1883は、MQTT。

使い方

編集

起動したら、以下のURLにアクセスする。

http://localhost:1880/

フロー・エディタが起動する。

実行

フロー・エディタでフローの定義が完了したら、デプロイ・ボタンを押下。

IMP/EXP

フローのインポート / エクスポート

  • Ctrl + i で インポート
  • Ctrl + e で エクスポート

パターン

Lチカ

センサー

リクエスト

HTTPリスナ

  • HTTPは、フローエディタ(トップ・ページ)とAPI(サブ・ディレクトリ)で共用
  • 以下はサンプルのフロー(コチラの手順で、インポート可能)
    [
        {
            "id": "f6f2187d.f17ca8",
            "type": "tab",
            "label": "Flow 1",
            "disabled": false,
            "info": ""
        },
        {
            "id": "3e63d5c0.89476a",
            "type": "http in",
            "z": "f6f2187d.f17ca8",
            "name": "HTTP Endpoint",
            "url": "hoge/:param",
            "method": "get",
            "upload": false,
            "swaggerDoc": "",
            "x": 160,
            "y": 320,
            "wires": [
                [
                    "3dcdaca5.9f0f64"
                ]
            ]
        },
        {
            "id": "7027d3d1.6d81fc",
            "type": "debug",
            "z": "f6f2187d.f17ca8",
            "name": "Debug",
            "active": true,
            "tosidebar": true,
            "console": true,
            "tostatus": true,
            "complete": "payload",
            "targetType": "msg",
            "statusVal": "payload",
            "statusType": "auto",
            "x": 420,
            "y": 260,
            "wires": []
        },
        {
            "id": "4cd59e40.9521f",
            "type": "http response",
            "z": "f6f2187d.f17ca8",
            "name": "HTTP Response",
            "statusCode": "200",
            "headers": {},
            "x": 500,
            "y": 340,
            "wires": []
        },
        {
            "id": "3dcdaca5.9f0f64",
            "type": "template",
            "z": "f6f2187d.f17ca8",
            "name": "page",
            "field": "payload",
            "fieldType": "msg",
            "format": "handlebars",
            "syntax": "mustache",
            "template": "<!DOCTYPE html>\n<html lang=”en”>\n<head>\n<title>Response Named Parameters</title>\n</head>\n<h1>Page found Named Parameters {{req.params.param}}</h1>\n</html>",
            "output": "str",
            "x": 330,
            "y": 340,
            "wires": [
                [
                    "4cd59e40.9521f",
                    "7027d3d1.6d81fc"
                ]
            ]
        }
    ]
  • 以下のようにアクセスして動作確認する。
    (サブ・ディレクトリが、Web APIになる。)
    http://localhost:1880/hoge/hogehoge

MQTTリスナ

  • MQTTは、
    • 処理ノードnode-red-contrib-mqtt-brokerを使用する。
    • また、brokerの定義とは別に、MQTT inも必要になる。
    • MQTT outは、別のMQTTクライアントを使用する。
  • 以下はサンプルのフロー(コチラの手順で、インポート可能)
    [
        {
            "id": "f6f2187d.f17ca8",
            "type": "tab",
            "label": "Flow 1",
            "disabled": false,
            "info": ""
        },
        {
            "id": "1d2a9951.8880c7",
            "type": "aedes broker",
            "z": "f6f2187d.f17ca8",
            "name": "",
            "mqtt_port": 1883,
            "mqtt_ws_port": "",
            "cert": "",
            "key": "",
            "certname": "",
            "keyname": "",
            "dburl": "",
            "usetls": false,
            "x": 240,
            "y": 100,
            "wires": [
                [
                    "b9d42de9.5a91f"
                ]
            ]
        },
        {
            "id": "b9d42de9.5a91f",
            "type": "debug",
            "z": "f6f2187d.f17ca8",
            "name": "",
            "active": true,
            "tosidebar": true,
            "console": true,
            "tostatus": false,
            "complete": "payload",
            "targetType": "msg",
            "statusVal": "",
            "statusType": "auto",
            "x": 450,
            "y": 100,
            "wires": []
        },
        {
            "id": "70b86e52.71106",
            "type": "mqtt in",
            "z": "f6f2187d.f17ca8",
            "name": "",
            "topic": "hoge",
            "qos": "2",
            "datatype": "auto",
            "broker": "e9b0ae32.61f46",
            "x": 210,
            "y": 160,
            "wires": [
                [
                    "ba2f427b.97b3f"
                ]
            ]
        },
        {
            "id": "ba2f427b.97b3f",
            "type": "debug",
            "z": "f6f2187d.f17ca8",
            "name": "",
            "active": true,
            "tosidebar": true,
            "console": true,
            "tostatus": false,
            "complete": "payload",
            "targetType": "msg",
            "statusVal": "",
            "statusType": "auto",
            "x": 460,
            "y": 160,
            "wires": []
        },
        {
            "id": "e9b0ae32.61f46",
            "type": "mqtt-broker",
            "name": "hoge",
            "broker": "localhost",
            "port": "1883",
            "clientid": "",
            "usetls": false,
            "compatmode": false,
            "keepalive": "60",
            "cleansession": true,
            "birthTopic": "",
            "birthQos": "0",
            "birthPayload": "",
            "closeTopic": "",
            "closeQos": "0",
            "closePayload": "",
            "willTopic": "",
            "willQos": "0",
            "willPayload": ""
        }
    ]
  • MQTTクライアントには、mosquitto_pubを使用する。
    mosquitto_pub -h localhost -p 1883 -t message -m 'hoge' -d
    ※ localhostの部分は、FQDN名やIPアドレスなどでもOK(当たり前だが
  • 参考

参考

Node-RED

https://nodered.org/

Qiita

  • 目からウロコ!Node-REDの

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-02-09 (火) 13:56:15 (18d)