mcpField
N
node-red

node-red

github.com/jwiegley開発2088 回インストール6 週間前に更新
リポジトリ

node-red について

node-redは、Node-REDのフロー作成、変更、検証、デプロイを支援するスキルです。MQTT、HTTP API、データ処理やAdmin API経由のデプロイ向けに、スクリプト、資料、テンプレートを提供します。

主な機能

  1. 01フローテンプレートとノードIDの生成
  2. 02フローJSONと接続の検証
  3. 03スクリプトによるノード接続
  4. 04ノードスキーマとAPI資料の提供
  5. 05Admin API経由のフローデプロイ

活用シーン

  1. 01MQTTのパブリッシュ/サブスクライブフロー作成
  2. 02HTTP APIやデータパイプラインの構築
  3. 03フロー設定や配線のデバッグ
  4. 04Node-REDフローのデプロイと確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jwiegley/claude-prompts --skill node-red

インストール後、Claude Code で/node-redを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/boilerplate/
function_async.js
function_context.js
assets/templates/
http_api_flow.json
mqtt_flow.json
references/
api_reference.md
function_snippets.md
node_schemas.md
plugins.md
scripts/
create_flow_template.py
generate_uuid.py
validate_flow.py
wire_nodes.py

詳細

Node-RED フロー開発

このスキルは、Admin API を通じたフローの作成、変更、検証、デプロイなど、Node-RED 開発を包括的にサポートします。

このスキルを使用する場面

次の場合にこのスキルを使用してください:

  • Node-RED フロー(flows.json ファイル)を作成または変更するとき
  • MQTT、HTTP API、またはデータパイプラインの統合を構築するとき
  • フロー設定のデバッグまたは検証を行うとき
  • function ノードとコンテキストストレージを扱うとき
  • Node-RED Admin API を通じてフローをデプロイするとき
  • 要件を Node-RED フローの実装に変換するとき

利用可能なリソース

スクリプト(scripts/)

一般的な Node-RED の操作には、次の Python スクリプトを実行します:

  • generate_uuid.py - 有効な Node-RED ノード ID を生成します

    python scripts/generate_uuid.py [count]
    
  • validate_flow.py - フローの JSON 構造とワイヤ接続を検証します

    python scripts/validate_flow.py <flow.json>
    
  • wire_nodes.py - ノードをプログラムで接続します

    python scripts/wire_nodes.py <flow.json> <source_id> <target_id> [output_port]
    
  • create_flow_template.py - ボイラープレートフローを生成します

    python scripts/create_flow_template.py <mqtt|http-api|data-pipeline|error-handler> [output.json]
    
リファレンス(references/)

必要に応じて、以下の詳細なリファレンスを参照してください:

  • node_schemas.md - すべての Node-RED ノードタイプの完全なスキーマ
  • api_reference.md - 例を含む Node-RED Admin API のドキュメント
  • function_snippets.md - 再利用可能な function ノードのコードパターン
アセット(assets/)

次のテンプレートとボイラープレートファイルを使用します:

  • templates/mqtt_flow.json - エラー処理を含む MQTT pub/sub フロー一式
  • templates/http_api_flow.json - CRUD 操作と認証を備えた REST API
  • boilerplate/function_async.js - 非同期 function ノードのパターン
  • boilerplate/function_context.js - コンテキストストレージの例

基本的なワークフロー

新しいフローの作成
  1. 必要なフローのタイプ(MQTT、HTTP API、データ処理など)を決定します
  2. scripts/create_flow_template.py を使用してテンプレートを生成します
  3. 要件に合わせてテンプレートを変更します
  4. scripts/validate_flow.py を使用してフローを検証します
  5. Admin API を通じてデプロイするか、flows.json として保存します
既存のフローの変更
  1. flows.json ファイルを読み込み、解析します
  2. タイプと ID でノードを特定します
  3. 次の項目を維持しながら変更します:
    • ワイヤ接続(ノード ID の配列)
    • タブ参照(z プロパティ)
    • ノードの座標(x、y)
  4. 保存する前に変更を検証します
  5. 必要に応じて scripts/wire_nodes.py を使用してノードを接続します
function ノードの操作

function ノードについては、次を参照してください:

  • 非同期操作については assets/boilerplate/function_async.js
  • コンテキストストレージについては assets/boilerplate/function_context.js
  • 特定のパターンについては references/function_snippets.md

function ノードで利用可能なオブジェクト:

  • msg - メッセージオブジェクト
  • node - ノード API(send、done、error、warn、log、status)
  • context - ノードスコープのストレージ
  • flow - フロースコープのストレージ
  • global - グローバルストレージ
  • RED - ランタイム API
  • env - 環境変数
フローのデプロイ

Admin API を通じてフローをデプロイするには:

  1. 現在の設定を取得します:

    GET /flows
    
  2. 必要に応じて設定を変更します

  3. 適切なデプロイタイプを指定してデプロイします:

    POST /flows
    Headers: Node-RED-Deployment-Type: full|nodes|flows|reload
    
  4. デプロイが成功したことを確認します

一般的なパターン

メッセージフローの構造

Node-RED のすべてのメッセージは次のパターンに従います:

  • 主なデータは msg.payload に格納
  • トピック/カテゴリは msg.topic に格納
  • 一意の ID は msg._msgid に格納
  • 必要に応じて追加プロパティを格納
エラー処理

次の方法でエラー処理を実装します:

  1. function ノード内の try-catch ブロック
  2. エラーを捕捉する Catch ノード
  3. ノードの状態を監視する Status ノード
  4. 専用のエラー出力ワイヤ
環境変数

設定には環境変数を使用します:

  • ノードのプロパティ内:$(ENV_VAR_NAME)
  • function ノード内:env.get("ENV_VAR_NAME")
  • Docker 経由:-e KEY=value
コンテキストストレージのレベル

適切なコンテキストレベルを選択します:

  • ノードコンテキスト:単一のノード内でのみ使用
  • フローコンテキスト:フロー/タブ内で共有
  • グローバルコンテキスト:システム全体で共有
  • 永続化:再起動後も保持(settings.js で設定)

検証チェックリスト

フローをデプロイする前に、次の項目を確認してください。

  • JSON 構文が有効である
  • すべてのワイヤー接続が既存のノード ID を参照している
  • タブ参照(z プロパティ)が正しい
  • Function ノードの JavaScript 構文が有効である
  • 必要な設定ノード(MQTT ブローカーなど)が存在する
  • 環境変数が正しく参照されている
  • エラー処理が実装されている

クイックコマンド

Node-RED の UUID を 5 つ生成します。

python scripts/generate_uuid.py 5

MQTT フローテンプレートを作成します。

python scripts/create_flow_template.py mqtt my-mqtt-flow.json

フローファイルを検証します。

python scripts/validate_flow.py flows.json

2 つのノードを接続します。

python scripts/wire_nodes.py flows.json inject-node-id debug-node-id

Node-RED の設定

デフォルトのファイルの場所
  • フロー:~/.node-red/flows_<hostname>.json
  • 設定:~/.node-red/settings.js
  • カスタムノード:~/.node-red/node_modules/
Node-RED の実行
  • 通常モード:node-red
  • セーフモード(フローを実行しない):node-red --safe
  • カスタムフローファイル:node-red myflows.json

ベストプラクティス

  1. 適切なノードタイプを使用する:簡単な変換には、Function ノードよりも Change ノードを優先してください
  2. エラー処理を実装する:重要な経路には必ず Catch ノードを含めてください
  3. フローを文書化する:Comment ノードとノードの説明を使用してください
  4. タブで整理する:論理的な機能やシステムごとにフローを分けてください
  5. バージョン管理:意味のあるコミットメッセージを付けて、flows.json を git に保存してください
  6. 段階的にテストする:小さな変更を頻繁にデプロイしてテストしてください
  7. パフォーマンスを監視する:Status ノードとデバッグ出力を適切に使用してください

トラブルシューティング

一般的な問題について:

  • 無効な JSON:scripts/validate_flow.py を使用して構文エラーを見つけてください
  • ワイヤーの破損:接続されているすべてのノード ID が存在することを確認してください
  • 設定の不足:ブローカーやサーバーの設定が含まれていることを確認してください
  • Function のエラー:まず JavaScript を単独でテストしてください
  • API のデプロイに失敗する:認証を確認し、リビジョンの競合を確認してください

追加リソース

詳細な仕様と例について:

  • ノードのプロパティの詳細は references/node_schemas.md を参照してください
  • API 操作は references/api_reference.md を確認してください
  • テスト済みのコードパターンには references/function_snippets.md を使用してください
  • 出発点として assets/templates/ のテンプレートをコピーしてください

コメント