Node-RED
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-[[戻る>ビッグデータ]]
--[[EAI/ETL]], [[IoT]]
--[[JavaScript]] > [[Node.js]]
*目次 [#p4950304]
#contents
*概要 [#w5f8f945]
ちょっと触ることになったので。
-IBM英国Hursley研究所のメンバーを中心に開発
-[[OSS]]であり、[[Node.js]]が動く環境であればどこでも動か...
**特徴 [#f29d4780]
[[Apache NiFi]]と同じ、[[flow-based programming>Apache Ni...
-エッジ側で動作させる事に主眼をおいて開発されている。
-デバイス側でも動作する(BLEや各種センサープロトコルに対...
-[[NiFi>Apache NiFi]]は、[[NiFi>Apache NiFi]]と[[MiNiFi>A...
**機能 [#c7d723fd]
モノのインターネットを配線するための
***ビジュアル・ツール [#bdd8abc9]
Node-REDエディタ
***様々な[[ノード>#w409bcd4]] [#g8ecc579]
***[[サブ・プロジェクト>#j5c78bd4]] [#f7d2ea48]
**実行場所 [#v250752e]
ローカルのPCやクラウド、[[Raspberry Pi]]上で動作させるこ...
***ローカル [#e020a9de]
デスクトップPC上の開発環境でも動作する。
***サーバー [#p85428c8]
サーバとしても動作する。
-[[HTTPリスナ>#c41fb0f0]]
-[[MQTTブローカ>#d7d08977]]
***デバイス(クライアント) [#r8830ed1]
[[Raspberry Pi]]などのデバイス(クライアント)上でも動作...
*詳細 [#t65c368d]
**サブ・プロジェクト [#j5c78bd4]
***Dashboard [#q1df2e67]
Node-REDのダッシュボードUI
-参考
--node-red-dashboard (node) - Node-RED~
https://flows.nodered.org/node/node-red-dashboard
***Node generator [#m9ef37e0]
Open APIドキュメントや関数ノードのソースなど、~
様々なソースからNode-REDノードモジュールを生成するCLI
-参考
--Node-REDのノード開発容易化ツール Node generator~
https://www.slideshare.net/BMXUG/noderednode-generator
***Command Line Tool [#t2a1d423]
Node-REDインスタンスをリモートで管理できるCLI
-参考
--Command-line Administration : Node-RED~
https://nodered.org/docs/user-guide/node-red-admin
--コマンドラインAdminツール : Node-RED日本ユーザ会~
https://nodered.jp/docs/user-guide/node-red-admin
***Flow Connection Gateway [#rd209052]
システム間の接続インタフェース(API)を統合管理する技術
-参考
--日立、プログラミングツール「Node-RED」の連携を~
容易に実現する技術開発 | マイナビニュース~
https://news.mynavi.jp/article/20170809-a139/
**インストール [#faa4b3f3]
***ローカル [#t521f095]
[[Node.js]]のインストール後に[[npm]]でインストールする。
-参考
--Windowsで実行する : Node-RED日本ユーザ会~
https://nodered.jp/docs/getting-started/windows
***コンテナ [#v1bd1f63]
[[Docker環境>VM起動後の開発環境のセットアップ]]を準備して...
-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
※ [[MQTTブローカ>#d7d08977]]を動かすため、追加インストー...
--ビルド
>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は、[...
**使い方 [#i7061f5a]
***編集 [#p70b6662]
起動したら、以下のURLにアクセスする。
>http://localhost:1880/
フロー・エディタが起動する。
***実行 [#q69a2a62]
フロー・エディタでフローの定義が完了したら、デプロイ・ボ...
***IMP/EXP [#i100cf05]
フローのインポート / エクスポート
-Ctrl + i で インポート
-Ctrl + e で エクスポート
**ノード [#w409bcd4]
主要なノードの説明
***入力グループ [#acaaa02b]
-Injectノード~
指定の間隔で日時などの文字列を生成
-[[HTTPリスナ (≒ http inノード)>#c41fb0f0]]
-[[MQTTブローカ (→ mqtt inノード)>#d7d08977]]
-, etc.
***出力グループ [#x5b667db]
-Debugノード~
Debug出力を行う。
-[[HTTPリスナ (http responseノード)>#c41fb0f0]]
-, etc.
***機能グループ [#eb3f6148]
-プログラミング
--switchノード~
IF文に相当する。
--commentノード~
commentを書く
--functionノード~
JavaScriptで処理を実装
-文字列処理
--changeノード~
文字列を代入/置換/削除/移動する。
--splitノード~
文字列を分割する。
--joinノード~
splitで分割した文字列を結合する。
--htmlノード~
htmlから文字を抜く。
--templateノード~
template(html等)に文字を埋める。
-通信クライアント系
--http requestノード~
HTTP/HTTPSクライアント
--emailノード~
IMAP/POP3クライアント
--feedparseノード~
RSSリーダー
***コミュニティで開発されたノード [#j5b1a8a0]
-random~
ランダムな値を生成
-bigtimer~
タイマーイベントを発生
-dashboard~
ダッシュボード(HTML)のUI
-worldmap~
地図(HTML)を出力するUI
**パターン [#m9f5424d]
***HTTPクライアント [#bbcb7002]
***HTTPリスナ [#c41fb0f0]
-HTTPは、フローエディタ(トップ・ページ)とAPI(サブ・デ...
-以下はサンプルのフロー([[コチラ>#i100cf05]]の手順で、イ...
[
{
"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...
"output": "str",
"x": 330,
"y": 340,
"wires": [
[
"4cd59e40.9521f",
"7027d3d1.6d81fc"
]
]
}
]
-以下のようにアクセスして動作確認する。~
(サブ・ディレクトリが、Web APIになる。)
http://localhost:1880/hoge/hogehoge
-参考
--HTTPエンドポイントを作成 : Node-RED~
https://cookbook.nodered.jp/http/create-an-http-endpoint
--Node-Red Web Server -HTTP-IN and HTTP Response Nodes - ...
https://stevesnoderedguide.com/http-in-http-response-nodes
***[[MQTT>#c99af2b6]]ブローカ [#d7d08977]
-MQTTブローカには、
--node-red-contrib-mqtt-brokerを使用する。
--受信したメッセージを使用するには「MQTT in」も必要になる。
--別のMQTTブローカにメッセージを送信するには、[[MQTTクラ...
-以下はサンプルのフロー([[コチラ>#i100cf05]]の手順で、イ...
[
{
"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クライアント>#wc492176]]を使用して、上記のMQTTブロ...
***[[MQTT>#c99af2b6]]クライアント [#wc492176]
-「MQTT out」ノードを使用する。
-mosquitto_pubを使用する。
mosquitto_pub -h localhost -p 1883 -t message -m 'hoge' -d
※ localhostの部分は、FQDN名やIPアドレスなどでもOK(当たり...
***[[Node-RED On Rasbian]] [#z32de00f]
IoTデバイス上で実行させるフロー
**セキュリティ [#m52b57e8]
***HTTPSの有効化 [#rc68b637]
Node.js + Expressの設定で行うことが出来る。
***エディタと管理API [#oa8fad41]
-認証
--従来は、httpAdminAuthでBasic認証をサポートしていたが、...
--現在は、httpAdminAuthではなく、adminAuthを使用する。
--<node-red>/user-authentication.jsにカスタムユーザ認証を...
--[[Passport>https://www.passportjs.org/]]で、OpenID/OAut...
-カスタム・ミドルウエア~
httpAdminMiddlewareを使用できる。
***管理APIの認可 [#da2bb084]
-/auth/tokenエンドポイントが、ROPCを実装している。
-ココで入手したaccess_tokenをAuthorization: Bearerに指定...
***[[ダッシュボード>#q1df2e67]] [#c6e9b967]
ダッシュボードだけに適用する場合、~
node-red-dashboard自体に設定がある。
-参考
--Node-REDのダッシュボードだけにBasic認証をかけるメモ – 1...
https://www.1ft-seabass.jp/memo/2020/02/29/node-red-dashb...
***HTTP Inノード [#v321debe]
-認証
--httpNodeAuthを使用する。
--httpAdminAuthと同じ仕組み。
-CORS~
httpNodeCorsを使用する。
-カスタム・ミドルウエア~
httpNodeMiddlewareを使用できる。
-参考
--Node-REDのhttp inノードでBasic認証を有効にする - Qiita~
https://qiita.com/takeyan/items/19b894197d30b65626c5
--Node-RED の http-in ノードに~
Basic 認証をかける : まだプログラマーですが何か?~
http://dotnsf.blog.jp/archives/1072144184.html
***その他 [#c08f2839]
-httpStaticAuth~
静的コンテンツに対する認証。
***参考 [#j1a2c737]
-Node-RED日本ユーザ会
--認証~
https://nodered.jp/docs/api/admin/oauth
--セキュリティ~
https://nodered.jp/docs/user-guide/runtime/securing-node-...
*参考 [#k91a47ac]
-Node-RED - Wikipedia~
https://en.wikipedia.org/wiki/Node-RED
-Steves Node-Red Guide~
https://stevesnoderedguide.com/
-IoTアプリ開発をノンコーディングで!~
Node-REDはこう活用しよう【デブサミ2019】 (1/2):CodeZine...
https://codezine.jp/article/detail/11416
-Node-REDがつなぐ技術と人 〜~
Node-RED Con Tokyo 2019レポート | さくらのナレッジ~
https://knowledge.sakura.ad.jp/22342/
-書籍:Raspberry Pi 3でつくる IoTプログラミング~
https://book.mynavi.jp/ec/products/detail/id=64776
**Node-RED [#dc631c34]
https://nodered.org/
-Node-RED日本ユーザ会~
https://nodered.jp/
-Dockerで実行する : Node-RED日本ユーザ会~
https://nodered.jp/docs/getting-started/docker
**MQTT [#c99af2b6]
-[[IoT関連の通信プロトコル - マイクロソフト系技術情報 Wik...
-1分でIoT環境を構築!Node-RED上でMQTTブローカを立ち上げる...
https://qiita.com/zuhito/items/d8ac0f602e0f09b02eac
-MeshbluでオープンソースのIoTをはじめよう~
Part5: RESTとMQTTのメッセージングとデータ保存 | masato's ...
http://masato.github.io/2015/07/17/meshblu-compose-curl-m...
**Qiita [#l3ffae29]
-Node-RED事始め~
https://qiita.com/joeartsea/items/93e8483a31292067c654
-動かして理解するDockerでのNode-RED環境構築~
https://qiita.com/KMiura95/items/b399be0358b003f4e53e
-目からウロコ!Node-REDの
--デザインパターン10選~
https://qiita.com/zuhito/items/e9abfd6f1ba188f908ed
--アンチパターン10選~
https://qiita.com/zuhito/items/442a8b99c597150f8472
-Node-RED Advent Calendar
--2015~
https://qiita.com/advent-calendar/2015/nodered
--2016~
https://qiita.com/advent-calendar/2016/nodered
--2017~
https://qiita.com/advent-calendar/2017/nodered
--2018~
https://qiita.com/advent-calendar/2018/nodered
-Node-REDが動作するコンテナをビルドして Kubernetes で実行...
--(1/3)~
https://qiita.com/MahoTakara/items/86c0d1072d1cd34187d5
--(2/3)~
https://qiita.com/MahoTakara/items/605b1e32ddf22fb7b910
--(3/3)~
https://qiita.com/MahoTakara/items/8cfa4d0be22277869084
--(番外編)~
https://qiita.com/MahoTakara/items/2529c4a66519fb459e5d
終了行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-[[戻る>ビッグデータ]]
--[[EAI/ETL]], [[IoT]]
--[[JavaScript]] > [[Node.js]]
*目次 [#p4950304]
#contents
*概要 [#w5f8f945]
ちょっと触ることになったので。
-IBM英国Hursley研究所のメンバーを中心に開発
-[[OSS]]であり、[[Node.js]]が動く環境であればどこでも動か...
**特徴 [#f29d4780]
[[Apache NiFi]]と同じ、[[flow-based programming>Apache Ni...
-エッジ側で動作させる事に主眼をおいて開発されている。
-デバイス側でも動作する(BLEや各種センサープロトコルに対...
-[[NiFi>Apache NiFi]]は、[[NiFi>Apache NiFi]]と[[MiNiFi>A...
**機能 [#c7d723fd]
モノのインターネットを配線するための
***ビジュアル・ツール [#bdd8abc9]
Node-REDエディタ
***様々な[[ノード>#w409bcd4]] [#g8ecc579]
***[[サブ・プロジェクト>#j5c78bd4]] [#f7d2ea48]
**実行場所 [#v250752e]
ローカルのPCやクラウド、[[Raspberry Pi]]上で動作させるこ...
***ローカル [#e020a9de]
デスクトップPC上の開発環境でも動作する。
***サーバー [#p85428c8]
サーバとしても動作する。
-[[HTTPリスナ>#c41fb0f0]]
-[[MQTTブローカ>#d7d08977]]
***デバイス(クライアント) [#r8830ed1]
[[Raspberry Pi]]などのデバイス(クライアント)上でも動作...
*詳細 [#t65c368d]
**サブ・プロジェクト [#j5c78bd4]
***Dashboard [#q1df2e67]
Node-REDのダッシュボードUI
-参考
--node-red-dashboard (node) - Node-RED~
https://flows.nodered.org/node/node-red-dashboard
***Node generator [#m9ef37e0]
Open APIドキュメントや関数ノードのソースなど、~
様々なソースからNode-REDノードモジュールを生成するCLI
-参考
--Node-REDのノード開発容易化ツール Node generator~
https://www.slideshare.net/BMXUG/noderednode-generator
***Command Line Tool [#t2a1d423]
Node-REDインスタンスをリモートで管理できるCLI
-参考
--Command-line Administration : Node-RED~
https://nodered.org/docs/user-guide/node-red-admin
--コマンドラインAdminツール : Node-RED日本ユーザ会~
https://nodered.jp/docs/user-guide/node-red-admin
***Flow Connection Gateway [#rd209052]
システム間の接続インタフェース(API)を統合管理する技術
-参考
--日立、プログラミングツール「Node-RED」の連携を~
容易に実現する技術開発 | マイナビニュース~
https://news.mynavi.jp/article/20170809-a139/
**インストール [#faa4b3f3]
***ローカル [#t521f095]
[[Node.js]]のインストール後に[[npm]]でインストールする。
-参考
--Windowsで実行する : Node-RED日本ユーザ会~
https://nodered.jp/docs/getting-started/windows
***コンテナ [#v1bd1f63]
[[Docker環境>VM起動後の開発環境のセットアップ]]を準備して...
-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
※ [[MQTTブローカ>#d7d08977]]を動かすため、追加インストー...
--ビルド
>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は、[...
**使い方 [#i7061f5a]
***編集 [#p70b6662]
起動したら、以下のURLにアクセスする。
>http://localhost:1880/
フロー・エディタが起動する。
***実行 [#q69a2a62]
フロー・エディタでフローの定義が完了したら、デプロイ・ボ...
***IMP/EXP [#i100cf05]
フローのインポート / エクスポート
-Ctrl + i で インポート
-Ctrl + e で エクスポート
**ノード [#w409bcd4]
主要なノードの説明
***入力グループ [#acaaa02b]
-Injectノード~
指定の間隔で日時などの文字列を生成
-[[HTTPリスナ (≒ http inノード)>#c41fb0f0]]
-[[MQTTブローカ (→ mqtt inノード)>#d7d08977]]
-, etc.
***出力グループ [#x5b667db]
-Debugノード~
Debug出力を行う。
-[[HTTPリスナ (http responseノード)>#c41fb0f0]]
-, etc.
***機能グループ [#eb3f6148]
-プログラミング
--switchノード~
IF文に相当する。
--commentノード~
commentを書く
--functionノード~
JavaScriptで処理を実装
-文字列処理
--changeノード~
文字列を代入/置換/削除/移動する。
--splitノード~
文字列を分割する。
--joinノード~
splitで分割した文字列を結合する。
--htmlノード~
htmlから文字を抜く。
--templateノード~
template(html等)に文字を埋める。
-通信クライアント系
--http requestノード~
HTTP/HTTPSクライアント
--emailノード~
IMAP/POP3クライアント
--feedparseノード~
RSSリーダー
***コミュニティで開発されたノード [#j5b1a8a0]
-random~
ランダムな値を生成
-bigtimer~
タイマーイベントを発生
-dashboard~
ダッシュボード(HTML)のUI
-worldmap~
地図(HTML)を出力するUI
**パターン [#m9f5424d]
***HTTPクライアント [#bbcb7002]
***HTTPリスナ [#c41fb0f0]
-HTTPは、フローエディタ(トップ・ページ)とAPI(サブ・デ...
-以下はサンプルのフロー([[コチラ>#i100cf05]]の手順で、イ...
[
{
"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...
"output": "str",
"x": 330,
"y": 340,
"wires": [
[
"4cd59e40.9521f",
"7027d3d1.6d81fc"
]
]
}
]
-以下のようにアクセスして動作確認する。~
(サブ・ディレクトリが、Web APIになる。)
http://localhost:1880/hoge/hogehoge
-参考
--HTTPエンドポイントを作成 : Node-RED~
https://cookbook.nodered.jp/http/create-an-http-endpoint
--Node-Red Web Server -HTTP-IN and HTTP Response Nodes - ...
https://stevesnoderedguide.com/http-in-http-response-nodes
***[[MQTT>#c99af2b6]]ブローカ [#d7d08977]
-MQTTブローカには、
--node-red-contrib-mqtt-brokerを使用する。
--受信したメッセージを使用するには「MQTT in」も必要になる。
--別のMQTTブローカにメッセージを送信するには、[[MQTTクラ...
-以下はサンプルのフロー([[コチラ>#i100cf05]]の手順で、イ...
[
{
"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クライアント>#wc492176]]を使用して、上記のMQTTブロ...
***[[MQTT>#c99af2b6]]クライアント [#wc492176]
-「MQTT out」ノードを使用する。
-mosquitto_pubを使用する。
mosquitto_pub -h localhost -p 1883 -t message -m 'hoge' -d
※ localhostの部分は、FQDN名やIPアドレスなどでもOK(当たり...
***[[Node-RED On Rasbian]] [#z32de00f]
IoTデバイス上で実行させるフロー
**セキュリティ [#m52b57e8]
***HTTPSの有効化 [#rc68b637]
Node.js + Expressの設定で行うことが出来る。
***エディタと管理API [#oa8fad41]
-認証
--従来は、httpAdminAuthでBasic認証をサポートしていたが、...
--現在は、httpAdminAuthではなく、adminAuthを使用する。
--<node-red>/user-authentication.jsにカスタムユーザ認証を...
--[[Passport>https://www.passportjs.org/]]で、OpenID/OAut...
-カスタム・ミドルウエア~
httpAdminMiddlewareを使用できる。
***管理APIの認可 [#da2bb084]
-/auth/tokenエンドポイントが、ROPCを実装している。
-ココで入手したaccess_tokenをAuthorization: Bearerに指定...
***[[ダッシュボード>#q1df2e67]] [#c6e9b967]
ダッシュボードだけに適用する場合、~
node-red-dashboard自体に設定がある。
-参考
--Node-REDのダッシュボードだけにBasic認証をかけるメモ – 1...
https://www.1ft-seabass.jp/memo/2020/02/29/node-red-dashb...
***HTTP Inノード [#v321debe]
-認証
--httpNodeAuthを使用する。
--httpAdminAuthと同じ仕組み。
-CORS~
httpNodeCorsを使用する。
-カスタム・ミドルウエア~
httpNodeMiddlewareを使用できる。
-参考
--Node-REDのhttp inノードでBasic認証を有効にする - Qiita~
https://qiita.com/takeyan/items/19b894197d30b65626c5
--Node-RED の http-in ノードに~
Basic 認証をかける : まだプログラマーですが何か?~
http://dotnsf.blog.jp/archives/1072144184.html
***その他 [#c08f2839]
-httpStaticAuth~
静的コンテンツに対する認証。
***参考 [#j1a2c737]
-Node-RED日本ユーザ会
--認証~
https://nodered.jp/docs/api/admin/oauth
--セキュリティ~
https://nodered.jp/docs/user-guide/runtime/securing-node-...
*参考 [#k91a47ac]
-Node-RED - Wikipedia~
https://en.wikipedia.org/wiki/Node-RED
-Steves Node-Red Guide~
https://stevesnoderedguide.com/
-IoTアプリ開発をノンコーディングで!~
Node-REDはこう活用しよう【デブサミ2019】 (1/2):CodeZine...
https://codezine.jp/article/detail/11416
-Node-REDがつなぐ技術と人 〜~
Node-RED Con Tokyo 2019レポート | さくらのナレッジ~
https://knowledge.sakura.ad.jp/22342/
-書籍:Raspberry Pi 3でつくる IoTプログラミング~
https://book.mynavi.jp/ec/products/detail/id=64776
**Node-RED [#dc631c34]
https://nodered.org/
-Node-RED日本ユーザ会~
https://nodered.jp/
-Dockerで実行する : Node-RED日本ユーザ会~
https://nodered.jp/docs/getting-started/docker
**MQTT [#c99af2b6]
-[[IoT関連の通信プロトコル - マイクロソフト系技術情報 Wik...
-1分でIoT環境を構築!Node-RED上でMQTTブローカを立ち上げる...
https://qiita.com/zuhito/items/d8ac0f602e0f09b02eac
-MeshbluでオープンソースのIoTをはじめよう~
Part5: RESTとMQTTのメッセージングとデータ保存 | masato's ...
http://masato.github.io/2015/07/17/meshblu-compose-curl-m...
**Qiita [#l3ffae29]
-Node-RED事始め~
https://qiita.com/joeartsea/items/93e8483a31292067c654
-動かして理解するDockerでのNode-RED環境構築~
https://qiita.com/KMiura95/items/b399be0358b003f4e53e
-目からウロコ!Node-REDの
--デザインパターン10選~
https://qiita.com/zuhito/items/e9abfd6f1ba188f908ed
--アンチパターン10選~
https://qiita.com/zuhito/items/442a8b99c597150f8472
-Node-RED Advent Calendar
--2015~
https://qiita.com/advent-calendar/2015/nodered
--2016~
https://qiita.com/advent-calendar/2016/nodered
--2017~
https://qiita.com/advent-calendar/2017/nodered
--2018~
https://qiita.com/advent-calendar/2018/nodered
-Node-REDが動作するコンテナをビルドして Kubernetes で実行...
--(1/3)~
https://qiita.com/MahoTakara/items/86c0d1072d1cd34187d5
--(2/3)~
https://qiita.com/MahoTakara/items/605b1e32ddf22fb7b910
--(3/3)~
https://qiita.com/MahoTakara/items/8cfa4d0be22277869084
--(番外編)~
https://qiita.com/MahoTakara/items/2529c4a66519fb459e5d
ページ名: