6
3

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 1 year has passed since last update.

Node-REDAdvent Calendar 2021

Day 17

爆速でNode-REDカスタムノードを作成・公開する手順

Last updated at Posted at 2021-12-17

はじめに

以前、ハンズオンへ参加してNode-REDのカスタムノードを開発するのは敷居が高いと思っていましたが、「公式とおりの手順を踏まないといけない」という先入観を捨てて、「自分が作ったカスタムノードを他の人にも早く使って欲しい」という思いを優先して、思い立ったら爆速(最短、最速)で作成・公開する私の手順を共有したいと思います。

公式の手順

公式(本家サイト)

公式(日本語サイト)

参考になるQiita記事

どこの手順を省略できるか

Node-REDカスタムノードを作成・公開して利用するまでの一般的な流れは①〜⑤です。

スクリーンショット 2021-12-17 13.18.22.png

実は② GitHub は必須ではありません。(①→③→④が最短パスです。)
npm、④ Node-REDライブラリ への登録・公開は必須です。

②' は enebular が npm、Node-REDライブラリへカスタムノードを登録・公開せずに、enebular ユーザへ共有することができるサービス(機能)です。

環境準備

gitコマンドを使うことは必須ではありませんが、npmコマンドは必須です。

ベースとするカスタムノード

ブラウザでGitHubへアクセスしてZIPファイルをダウンロードするか、gitコマンドでcloneします。

git clone https://github.com/kitazaki/enebular-privatenode-contrib-test01

カスタマイズが必要な要素

Node-REDのカスタムノードとして動作するのに必要なファイルは

  • package.json
  • test01.html
  • test01.js

の3ファイルですが、npmへ登録するためには

  • README.md

の1ファイルが追加で必要です。

これまでに作ったカスタムノード

### node-red-contrib-kitazaki-test01

ベースとなるカスタムノードそのままです。

### node-red-contrib-ina-sensor

商業雑誌 (シェルスクリプトマガジン) の連動企画で BitTradeOne から Jetson Nano と Raspberry Pi (以降、ラズパイ) で共通で使用可能な電力測定ボードを発売する企画の製作に協力することになり、Node-RED から電力測定ボードを操作するノードを作成しました。

電力測定ボードには テキサス・インスツルメント社製デジタル出力電流・電力・電圧モニター IC (INA260) と 単色有機 EL ディスプレイ (SSD1306) が搭載されています。
単色有機 EL ディスプレイ (SSD1306) については既にノードが公開されており、このノードは INA260 を操作するためのノードです。

INA260 は I2C 接続方式でアクセスする仕様のため、Jetson Nano と ラズパイ でノードを共通化でき、内部で i2c-bus npm モジュールとina226 npm モジュールを使用しています。これらの npm モジュールを使用するために package.json の dependencies オブジェクトへ定義を追加する必要があります。

package.json
{
  "name": "node-red-contrib-ina-sensor",
  "version": "1.0.1",
  "description": "a node-red node for the ina226 and ina260 sensor module",
  "main": "ina.js",
  "scripts": {},
  "repository": {
    "type": "git",
    "url": "git+https://github.com/kitazaki/node-red-contrib-ina-sensor.git"
  },
  "keywords": [
    "node-red",
    "ina226",
    "ina260",
    "raspi",
    "current",
    "sensor",
    "voltage",
    "power",
    "kitazaki"
  ],
  "dependencies": {
    "i2c-bus": "^5.2.0",
    "ina226": "^2.0.0"
  },
  "author": "kitazaki",
  "license": "Apache-2.0",
  "bugs": {
    "url": "https://github.com/kitazaki/node-red-contrib-ina-sensor/issues"
  },
  "homepage": "https://github.com/kitazaki/node-red-contrib-ina-sensor#readme",
  "node-red": {
    "nodes": {
      "ina": "ina.js"
    }
  }
}

### node-red-contrib-lifewill-emodiversity

LIFULLさんが公開したLIFEWILL Emodiversity APIをNode-REDから利用するノードです。
ヒーローズ・リーグ 2021のサポーター(メインスポンサー)としてLIFULLさんが加わりましたが、応募〆切直前だった(2021年11月15日〆切に対して、2021年10月27日に追加した)こともあり、実装のための動作確認にあまり時間を掛けられないことから、「爆速でカスタムノードを作成・公開しよう」と思い立ったのがきっかけです。

LIFEWILL Emodiversity API へ HTTP アクセスするために axios npm モジュールを使用しています。この npm モジュールを使用するために package.json の dependencies オブジェクトへ定義を追加する必要があります。

package.json
{
  "name": "node-red-contrib-lifewill-emodiversity",
  "version": "0.0.4",
  "description": "a node-red node for LIFE WILL Emodiversity API",
  "main": "emodiversity.js",
  "scripts": {},
  "repository": {
    "type": "git",
    "url": "git+https://github.com/kitazaki/node-red-contrib-lifewill-emodiversity.git"
  },
  "keywords": [
    "node-red",
    "lifewill",
    "emodiversity",
    "lifull",
    "kitazaki"
  ],
  "dependencies": {
    "axios": "^0.21.1"
  },
  "author": "kitazaki",
  "license": "Apache-2.0",
  "bugs": {
    "url": "https://github.com/kitazaki/node-red-contrib-lifewill-emodiversity/issues"
  },
  "homepage": "https://github.com/kitazaki/node-red-contrib-lifewill-emodiversity#readme",
  "node-red": {
    "nodes": {
      "emotion_analyze": "emotion_analyze.js",
      "emotion_map": "emotion_map.js"
    }
  }
}

登録・公開手順

カスタムノードが完成したら、npm と Node-RED ライブラリへ登録・公開します。

npmへのパッケージ登録・公開

npm publish

Node-REDへのノードライブラリ登録・公開(手動)

まとめ

思い立ったら爆速(最短、最速)でカスタムノードを作成・公開して、他の人が便利さを享受できる習慣が広がるといいですね!
良き Node-RED ライフを!

6
3
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
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?