14
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Node-REDでできること part1 (基本機能編)

Last updated at Posted at 2019-02-13

はじめに

やりたいこと

  • Node-REDでどんなことがどこまでできるのかを調べる
  • part1(基本機能編)では、基本的な機能とその確認を調べました
    • 下記の先人の方のQiita記事ですでにまとまっているので、この確認レベルです

Node-REDのまとめ記事

参考にさせて頂いた記事

最低限の情報

  • まずは、参考記事を読まれることを推奨します
  • Node-REDはNode.jsで作られたフローベースのリアクティブな開発、実行環境です
  • ノードと呼ばれるものを配置、結線することで実現する
    • 入力ノード:フローの起点で、入力端子がなく出力端子だけがある
    • 出力ノード:フローの終点で、出力端子がなく入力端子だけがある
    • 機能ノード:フローの中点で、入力端子と出力端子を持つ
  • データ構造は基本的に自由だが、msgオブジェクトが汎用的に使われmsg.payloadが入出力のデフォルト値になっている
  • フローはコピーやJSONへの書き出しができるが、認証情報は複製されない

動作環境

  • OS : CentOS Linux release 7.5.1804 (Core)
  • Node-RED : v0.19.5
  • docker : 18.09.1
    • Node-REDイメージ : nodere/node-red-docker (IMAGE ID/d4f07b39b24d)
    • Dockerを使いますが、ホストに立てても大丈夫かと思います。

免責事項

  • 検証をして確実と思われる情報を載せておりますが、誤っている可能性もゼロではないので、参考程度にご利用ください
  • 本来はコードと実行結果のコンソールログも載せるべきなのですが、数と量が多いので、一旦は画面イメージまでとさせてください。

調査結果

同時並行アクセス

調べたこと

  • ノードが次の状態に移った際に入力が受け取れるか確認する
    • 状態がNode-REDで1つだと開始状態に戻したりキューが必要になるので、どのようにふるまうか確認
    • 問題なく、複数の処理を同時に行えることが確認できた
      • リアクティブにストリーム/フローとして動作する
  • 複数に出力が分かれた場合に、同時に処理が行えるのか
    • 問題なく、複数の後続ノードの処理に移れた

画面イメージ
pic1.jpg

条件分岐

調べたこと

  • 条件分岐ノードがどのような条件を記載できるのか確認する
    • プロパティのtrue/false、大小、null,空,型比較,文字列が含まれているかなど様々な条件が使える
    • 条件同士のAND/OR結合もできる

画面イメージ
p2.jpg

サブフロー化

調べたこと

  • サブフローの定義によって部分的なフローをモジュール化できるか確認する
    • モジュール化できると再利用性や独立性が高まるので重要
    • サブフロー側で入力と出力のポートの数を指定し、呼び出す側で配置を結線すれば利用できる

画面イメージ
p3.jpg

pic12.jpg

エラー検知/状態変更検知

調べたこと

  • 同じフロー内にあるノードでエラー発生時/状態変更時にイベントを発行するノードがあるので、どのように振舞うか確認する
    • 設定をしていないメールを送信しようとして意図的なエラー/状態変更を起こす
    • 以下のデバッグメッセージが出力された
      1. エラーメッセージ(catchノード)
      2. メール送信中の状態変更(statusノード)
      3. メール送信失敗の状態変更(statusノード)

画面イメージ
p4.jpg

http通信

調べたこと

  • http通信でデータをNode-REDに渡すことができるか。アクセスしたブラウザの画面に意図した情報を表示できるか確認する
    • どちらも問題なくできた
    • また、WebSocketについても動作を確認できた(イメージ画像にはないですが)

画面イメージ
p5.jpg

データの加工

調べたこと

  • 機能ノードにはどのようなものがあり、どんな加工ができるかを確認する
    • 網羅的なノードの種類は、Webサイトや書籍の各所でまとめられているのでそちらを参照されたい
    • 組み込みノードだけでもよくつかわれる、置換、分割、統合、遅延、ソートなどいろいろできる

画面イメージ
p6.jpg

ファイル

調べたこと

  • ファイルアクセスができるか確認する
    • パスやアクセス権限が適切になっていることが前提
    • windowsでも動作を確認
    • watchノードでファイルの変更を監視することもできる

画面イメージ
p7.jpg

コマンド

調べたこと

  • コマンド実行ができるのか確認する
    • Linux/windowsともに問題なく動作する
    • どのシェル/環境が使われるのかまでは調べ切れていない
      • 引数をパラメタで引き渡すことは可能
    • 3つある出力は、標準出力、標準エラー、戻り値

画面イメージ
p8.jpg

メール

調べたこと

  • gmail/キャリアメールにメールを送る/受け取るができるか確認する
    • 問題なくできる
    • msgの特定のフィールドに指定することで、件名/from/cc/bccが指定できる

画面イメージ
pic11.jpg

twitter

  • デフォルトで連携できるノードがあるが、開発者用アカウントが必要なため、検証できていません

ループ

調べたこと

  • ループを既存ノードの組み合わせで実現可能との記事があったので確認する
    • ループ専用のノードはないが、functionノードを使い記述可能
    • 結線がクロスしてしまうがやむおえない?

画面イメージ
p10.jpg

14
26
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
14
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?