From 63cf1a5c3e5757bb4e6d3a7fa4fb1f21793486cd Mon Sep 17 00:00:00 2001 From: hidetak Date: Thu, 7 Mar 2024 00:59:37 +0900 Subject: [PATCH 01/10] add wot-server-td node which is for getting td on server side --- node-red-node-wot/package.json | 3 +- .../src/locales/en-US/wot-server-td.html | 37 ++++ .../src/locales/en-US/wot-server-td.json | 18 ++ .../src/locales/ja/wot-server-property.html | 2 +- .../src/locales/ja/wot-server-td.html | 37 ++++ .../src/locales/ja/wot-server-td.json | 18 ++ node-red-node-wot/src/wot-server-action.ts | 4 +- node-red-node-wot/src/wot-server-config.ts | 11 +- node-red-node-wot/src/wot-server-event.ts | 4 +- node-red-node-wot/src/wot-server-property.ts | 4 +- node-red-node-wot/src/wot-server-td.html | 161 ++++++++++++++++++ node-red-node-wot/src/wot-server-td.ts | 79 +++++++++ 12 files changed, 369 insertions(+), 9 deletions(-) create mode 100644 node-red-node-wot/src/locales/en-US/wot-server-td.html create mode 100644 node-red-node-wot/src/locales/en-US/wot-server-td.json create mode 100644 node-red-node-wot/src/locales/ja/wot-server-td.html create mode 100644 node-red-node-wot/src/locales/ja/wot-server-td.json create mode 100644 node-red-node-wot/src/wot-server-td.html create mode 100644 node-red-node-wot/src/wot-server-td.ts diff --git a/node-red-node-wot/package.json b/node-red-node-wot/package.json index ebc23f9..8c763c3 100644 --- a/node-red-node-wot/package.json +++ b/node-red-node-wot/package.json @@ -35,7 +35,8 @@ "wot-server-end": "dist/wot-server-end.js", "wot-server-property": "dist/wot-server-property.js", "wot-server-action": "dist/wot-server-action.js", - "wot-server-event": "dist/wot-server-event.js" + "wot-server-event": "dist/wot-server-event.js", + "wot-server-td": "dist/wot-server-td.js" } }, "scripts": { diff --git a/node-red-node-wot/src/locales/en-US/wot-server-td.html b/node-red-node-wot/src/locales/en-US/wot-server-td.html new file mode 100644 index 0000000..de46681 --- /dev/null +++ b/node-red-node-wot/src/locales/en-US/wot-server-td.html @@ -0,0 +1,37 @@ + diff --git a/node-red-node-wot/src/locales/en-US/wot-server-td.json b/node-red-node-wot/src/locales/en-US/wot-server-td.json new file mode 100644 index 0000000..31c5baf --- /dev/null +++ b/node-red-node-wot/src/locales/en-US/wot-server-td.json @@ -0,0 +1,18 @@ +{ + "editor": { + "paletteLabel": "Server-TD", + "nameLabel": "Name", + "serverConfigLabel": "Server config", + "thingConfigLabel": "Thing config", + "outputTDAfterServerStartFlagLabel": "TD output after server start", + "outParams1": { + "tabLabel": "Output TD", + "outputLabel": "TD", + "td": { + "label": "TD destination", + "description": "TD destination.", + "placeholder": "TD destination" + } + } + } +} diff --git a/node-red-node-wot/src/locales/ja/wot-server-property.html b/node-red-node-wot/src/locales/ja/wot-server-property.html index 09720bc..b9c28c8 100644 --- a/node-red-node-wot/src/locales/ja/wot-server-property.html +++ b/node-red-node-wot/src/locales/ja/wot-server-property.html @@ -15,7 +15,7 @@

Inputs

プロパティ変更の通知 - any(プロパティの定義による) + -
サーバ側でプロパティに変更があった場合に入力を行います。入力を行うことで観測しているクライアントに通知されます。入力に値を含める必要はありません。 diff --git a/node-red-node-wot/src/locales/ja/wot-server-td.html b/node-red-node-wot/src/locales/ja/wot-server-td.html new file mode 100644 index 0000000..03a3640 --- /dev/null +++ b/node-red-node-wot/src/locales/ja/wot-server-td.html @@ -0,0 +1,37 @@ + diff --git a/node-red-node-wot/src/locales/ja/wot-server-td.json b/node-red-node-wot/src/locales/ja/wot-server-td.json new file mode 100644 index 0000000..b0f3365 --- /dev/null +++ b/node-red-node-wot/src/locales/ja/wot-server-td.json @@ -0,0 +1,18 @@ +{ + "editor": { + "paletteLabel": "Server-TD", + "nameLabel": "名前", + "serverConfigLabel": "サーバ設定", + "thingConfigLabel": "Thing設定", + "outputTDAfterServerStartFlagLabel": "サーバ起動後のTD出力", + "outParams1": { + "tabLabel": "TD出力", + "outputLabel": "TD", + "td": { + "label": "TDの出力先", + "description": "取得したTDの出力先。", + "placeholder": "取得したTDの出力先" + } + } + } +} diff --git a/node-red-node-wot/src/wot-server-action.ts b/node-red-node-wot/src/wot-server-action.ts index 5da6736..07e5dc1 100644 --- a/node-red-node-wot/src/wot-server-action.ts +++ b/node-red-node-wot/src/wot-server-action.ts @@ -45,12 +45,12 @@ module.exports = function (RED) { done() }) - const woTServerConfig = RED.nodes.getNode(config.woTServerConfig) //test + const woTServerConfig = RED.nodes.getNode(config.woTServerConfig) woTServerConfig.addUserNode(node) } RED.nodes.registerType("wot-server-action", WoTServerAction, { credentials: { - inParams_actionName: { type: "text" }, + outParams1_actionArgs: { type: "text" }, }, }) } diff --git a/node-red-node-wot/src/wot-server-config.ts b/node-red-node-wot/src/wot-server-config.ts index 1e04519..d7fe917 100644 --- a/node-red-node-wot/src/wot-server-config.ts +++ b/node-red-node-wot/src/wot-server-config.ts @@ -176,17 +176,26 @@ module.exports = function (RED) { // make thing title list const thingNamesObj = {} for (const userNode of userNodes) { + if (userNode.type === "wot-server-td") { + continue + } thingNamesObj[userNode.getThingProps().title] = true } const thingNames = Object.keys(thingNamesObj) // Generate and Expose a Thing for each Thing title for (const thingName of thingNames) { - const targetNodes = userNodes.filter((n) => n.getThingProps().title === thingName) + const targetNodes = userNodes.filter( + (n) => n.type !== "wot-server-td" && n.getThingProps().title === thingName + ) const thingProps = targetNodes[0]?.getThingProps() || {} await createWoTScriptAndExpose(thingProps, servientWrapper, targetNodes) } node.running = true userNodes.forEach((n) => { + if (n.type === "wot-server-td" && n.getOutputTDAfterServerStartFlag() === true) { + // send trigger to wot-server-td node for getting TD + n.receive({}) + } n.setServientStatus(node.running) }) } catch (err) { diff --git a/node-red-node-wot/src/wot-server-event.ts b/node-red-node-wot/src/wot-server-event.ts index 8fbd57e..cc4497b 100644 --- a/node-red-node-wot/src/wot-server-event.ts +++ b/node-red-node-wot/src/wot-server-event.ts @@ -67,12 +67,12 @@ module.exports = function (RED) { done() }) - const woTServerConfig = RED.nodes.getNode(config.woTServerConfig) //test + const woTServerConfig = RED.nodes.getNode(config.woTServerConfig) woTServerConfig?.addUserNode(node) } RED.nodes.registerType("wot-server-event", WoTServerEvent, { credentials: { - inParams_propertyName: { type: "text" }, + inParams_eventValue: { type: "text" }, }, }) diff --git a/node-red-node-wot/src/wot-server-property.ts b/node-red-node-wot/src/wot-server-property.ts index f5f1736..5114bde 100644 --- a/node-red-node-wot/src/wot-server-property.ts +++ b/node-red-node-wot/src/wot-server-property.ts @@ -60,12 +60,12 @@ module.exports = function (RED) { done() }) - const woTServerConfig = RED.nodes.getNode(config.woTServerConfig) //test + const woTServerConfig = RED.nodes.getNode(config.woTServerConfig) woTServerConfig?.addUserNode(node) } RED.nodes.registerType("wot-server-property", WoTServerProperty, { credentials: { - inParams_propertyName: { type: "text" }, + outParams2_writingValue: { type: "text" }, }, }) diff --git a/node-red-node-wot/src/wot-server-td.html b/node-red-node-wot/src/wot-server-td.html new file mode 100644 index 0000000..99ba7a4 --- /dev/null +++ b/node-red-node-wot/src/wot-server-td.html @@ -0,0 +1,161 @@ + + + + + diff --git a/node-red-node-wot/src/wot-server-td.ts b/node-red-node-wot/src/wot-server-td.ts new file mode 100644 index 0000000..3579fda --- /dev/null +++ b/node-red-node-wot/src/wot-server-td.ts @@ -0,0 +1,79 @@ +import ServientManager from "./servients/servient-manager" + +module.exports = function (RED) { + function WoTServerTD(config) { + RED.nodes.createNode(this, config) + const node = this + this.status({ fill: "red", shape: "dot", text: "not prepared" }) + console.log("*** wot server td node: ", node) + console.log("*** wot server td config: ", config) + + node.setServientStatus = (running: boolean) => { + if (running) { + node.status({ fill: "green", shape: "dot", text: "running" }) + } else { + node.status({ fill: "red", shape: "dot", text: "not prepared" }) + } + } + + node.getOutputTDAfterServerStartFlag = () => { + return config.outputTDAfterServerStartFlag + } + + node.on("input", async (msg, send, done) => { + try { + const woTServerConfig = RED.nodes.getNode(config.woTServerConfig) + const woTThingConfig = RED.nodes.getNode(config.woTThingConfig) + const thing = ServientManager.getInstance().getThing(woTServerConfig.id, woTThingConfig.name) + const tdOutputKey = config.outParams1_tdConstValue + const td = thing.getThingDescription() + msg[tdOutputKey] = td + console.debug("[debug] send td. td: ", td) + send(msg) + done() + } catch (err) { + done(err) + } + }) + + node.on("close", function (removed, done) { + if (removed) { + // This node has been disabled/deleted + } else { + // This node is being restarted + } + done() + }) + + const woTServerConfig = RED.nodes.getNode(config.woTServerConfig) + woTServerConfig?.addUserNode(node) + } + RED.nodes.registerType("wot-server-td", WoTServerTD, { + credentials: { + outParams1_td: { type: "text" }, + }, + }) + + const setOutput = (type, valueName, msg, context, value) => { + if (type === "msg") { + const names = valueName.split(".") + let target = msg + for (let i = 0; i < names.length - 1; i++) { + let n = names[i] + if (target[n] && target[n] instanceof Object) { + target = target[n] + } else { + target[n] = {} + target = target[n] + } + } + target[names[names.length - 1]] = value + } else if (type === "node") { + context.set(valueName, value) + } else if (type === "flow") { + context.flow.set(valueName, value) + } else if (type === "global") { + context.global.set(valueName, value) + } + } +} From b1fdca6c77933a1a76fb75f5b1481b03644b8515 Mon Sep 17 00:00:00 2001 From: hidetak Date: Mon, 11 Mar 2024 02:55:12 +0900 Subject: [PATCH 02/10] add update td node --- node-red-node-wot/package-lock.json | 6 +- node-red-node-wot/package.json | 5 +- node-red-node-wot/src/wot-action.js | 53 ++++-- node-red-node-wot/src/wot-event.js | 148 +++++++-------- node-red-node-wot/src/wot-property.js | 90 +++++---- node-red-node-wot/src/wot-server-td.ts | 2 - node-red-node-wot/src/wot-thing.js | 39 ++-- node-red-node-wot/src/wot-update-td.html | 58 ++++++ node-red-node-wot/src/wot-update-td.js | 51 +++++ node-red-node-wot/test/server-td-test.ts | 125 +++++++++++++ node-red-node-wot/test/update-td-test.ts | 226 +++++++++++++++++++++++ node-red-node-wot/test/util.ts | 26 ++- 12 files changed, 673 insertions(+), 156 deletions(-) create mode 100644 node-red-node-wot/src/wot-update-td.html create mode 100644 node-red-node-wot/src/wot-update-td.js create mode 100644 node-red-node-wot/test/server-td-test.ts create mode 100644 node-red-node-wot/test/update-td-test.ts diff --git a/node-red-node-wot/package-lock.json b/node-red-node-wot/package-lock.json index 61d5608..37cb19a 100644 --- a/node-red-node-wot/package-lock.json +++ b/node-red-node-wot/package-lock.json @@ -1,12 +1,12 @@ { "name": "@thingweb/node-red-node-wot", - "version": "1.0.0", + "version": "1.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@thingweb/node-red-node-wot", - "version": "1.0.0", + "version": "1.0.1", "license": "MIT", "dependencies": { "@node-wot/binding-coap": "0.8.12", @@ -18,7 +18,7 @@ "@node-wot/core": "0.8.12" }, "devDependencies": { - "@types/chai": "^4.3.11", + "@types/chai": "^4.3.12", "@types/chai-as-promised": "^7.1.8", "@types/mocha": "^10.0.6", "@types/node-red": "^1.3.4", diff --git a/node-red-node-wot/package.json b/node-red-node-wot/package.json index 68cad38..d94d03e 100644 --- a/node-red-node-wot/package.json +++ b/node-red-node-wot/package.json @@ -25,6 +25,7 @@ "wot-property": "dist/wot-property.js", "wot-action": "dist/wot-action.js", "wot-event": "dist/wot-event.js", + "wot-update-td": "dist/wot-update-td.js", "wot-server-config": "dist/wot-server-config.js", "wot-thing-config": "dist/wot-thing-config.js", "wot-server-end": "dist/wot-server-end.js", @@ -33,7 +34,7 @@ "wot-server-event": "dist/wot-server-event.js", "wot-server-td": "dist/wot-server-td.js" }, - "version":">=2.0.0" + "version": ">=2.0.0" }, "scripts": { "build": "npm run copy:src2dist && tsc", @@ -52,7 +53,7 @@ "@node-wot/core": "0.8.12" }, "devDependencies": { - "@types/chai": "^4.3.11", + "@types/chai": "^4.3.12", "@types/chai-as-promised": "^7.1.8", "@types/mocha": "^10.0.6", "@types/node-red": "^1.3.4", diff --git a/node-red-node-wot/src/wot-action.js b/node-red-node-wot/src/wot-action.js index 0714161..69ed103 100644 --- a/node-red-node-wot/src/wot-action.js +++ b/node-red-node-wot/src/wot-action.js @@ -4,6 +4,9 @@ module.exports = function (RED) { function invokeActionNode(config) { RED.nodes.createNode(this, config) let node = this + let consumedThing + + this.status({}) if (!config.thing) { this.status({ fill: "red", shape: "dot", text: "Error: Thing undefined" }) @@ -17,15 +20,26 @@ module.exports = function (RED) { return } + const thingNode = RED.nodes.getNode(config.thing) + thingNode.addUpdateTDListener(async (_consumedThing) => { + consumedThing = _consumedThing + }) + this.on("input", function (msg, send, done) { - RED.nodes.getNode(config.thing).consumedThing.then((consumedThing) => { - const uriVariables = config.uriVariables ? JSON.parse(config.uriVariables) : undefined - consumedThing - .invokeAction(config.action, msg.payload, { - uriVariables: uriVariables, - }) - .then(async (resp) => { - const payload = resp ? await resp.value() : "" + if (!consumedThing) { + node.error("[error] consumedThing is not defined.") + done("consumedThing is not defined.") + return + } + const uriVariables = config.uriVariables ? JSON.parse(config.uriVariables) : undefined + consumedThing + .invokeAction(config.action, msg.payload, { + uriVariables: uriVariables, + }) + .then(async (resp) => { + let payload + try { + payload = await resp.value() node.send({ payload: payload, topic: config.topic }) node.status({ fill: "green", @@ -33,17 +47,20 @@ module.exports = function (RED) { text: "invoked", }) done() + } catch (err) { + console.error(`[error] failed to get return value. err: `, err) + done(`[error] failed to get return value. err: ${err.toString()}`) + } + }) + .catch((err) => { + node.warn(err) + node.status({ + fill: "red", + shape: "ring", + text: err.message, }) - .catch((err) => { - node.warn(err) - node.status({ - fill: "red", - shape: "ring", - text: err.message, - }) - done(err) - }) - }) + done(err) + }) }) this.on("close", function (removed, done) { diff --git a/node-red-node-wot/src/wot-event.js b/node-red-node-wot/src/wot-event.js index 89a0f53..2900eca 100644 --- a/node-red-node-wot/src/wot-event.js +++ b/node-red-node-wot/src/wot-event.js @@ -4,8 +4,9 @@ module.exports = function (RED) { function subscribeEventNode(config) { RED.nodes.createNode(this, config) let node = this + let consumedThing + let subscription - this.subscription = undefined this.status({}) if (!config.thing) { @@ -16,95 +17,84 @@ module.exports = function (RED) { return } - RED.nodes - .getNode(config.thing) - .consumedThing.then(async (consumedThing) => { - let subscription - // Repeat until event subscription succeeds. - try { - while (true) { - subscription = await consumedThing - .subscribeEvent( - config.event, - async (resp) => { - if (resp) { - let payload - try { - payload = await resp.value() - } catch (err) { - node.error(`[error] failed to get event. err: ${err.toString()}`) - console.error(`[error] failed to get event. err: `, err) - } - node.send({ payload, topic: config.topic }) + const thingNode = RED.nodes.getNode(config.thing) + thingNode.addUpdateTDListener(async (_consumedThing) => { + if (subscription) { + // Stop if already subscribed + await subscription.stop() + } + consumedThing = _consumedThing + // Repeat until event subscription succeeds. + try { + while (true) { + subscription = await consumedThing + .subscribeEvent( + config.event, + async (resp) => { + if (resp) { + let payload + try { + payload = await resp.value() + } catch (err) { + node.error(`[error] failed to get event. err: ${err.toString()}`) + console.error(`[error] failed to get event. err: `, err) } - node.status({ - fill: "green", - shape: "dot", - text: "Subscribed", - }) - }, - (err) => { - console.error("[error] subscribe events.", err) - node.error(`[error] subscribe events. err: ${err.toString()}`) - node.status({ - fill: "red", - shape: "ring", - text: "Subscription error", - }) - }, - () => { - console.error("[warn] Subscription ended.") - node.warn("[warn] Subscription ended.") - node.status({}) - node.subscription = undefined + node.send({ payload, topic: config.topic }) } - ) - .catch((err) => { - console.warn("[warn] event subscribe error. try again. error: " + err) - }) - if (subscription) { - break - } - await (() => { - return new Promise((resolve) => { - setTimeout(() => { - resolve() - }, 500) - }) - })() + node.status({ + fill: "green", + shape: "dot", + text: "Subscribed", + }) + }, + (err) => { + console.error("[error] subscribe events.", err) + node.error(`[error] subscribe events. err: ${err.toString()}`) + node.status({ + fill: "red", + shape: "ring", + text: "Subscription error", + }) + }, + () => { + console.error("[warn] Subscription ended.") + node.warn("[warn] Subscription ended.") + node.status({}) + subscription = undefined + } + ) + .catch((err) => { + console.warn("[warn] event subscribe error. try again. error: " + err) + }) + if (subscription) { + break } - } catch (err) { - node.status({ - fill: "red", - shape: "ring", - text: "Subscription error", + await new Promise((resolve) => { + setTimeout(resolve, 500) }) - node.error(`[error] failed to subscribe events. error: ${err.toString()}`) } - node.subscription = subscription - - if (node.subscription) { - node.status({ - fill: "green", - shape: "dot", - text: "Subscribed", - }) - } - }) - .catch((err) => { + } catch (err) { node.status({ fill: "red", shape: "ring", text: "Subscription error", }) - node.error(`[error] Failed to create consumed thing for enents. err: ${err.toString()}`) - }) + node.error(`[error] failed to subscribe events. error: ${err.toString()}`) + } + + if (subscription) { + node.status({ + fill: "green", + shape: "dot", + text: "Subscribed", + }) + } + }) - this.on("close", function (removed, done) { - if (removed) { - // This node has been deleted - } else { - // This node is being restarted + this.on("close", async function (removed, done) { + if (subscription) { + // Stop if already subscribed + await subscription.stop() } done() }) diff --git a/node-red-node-wot/src/wot-property.js b/node-red-node-wot/src/wot-property.js index e35097d..7acda80 100644 --- a/node-red-node-wot/src/wot-property.js +++ b/node-red-node-wot/src/wot-property.js @@ -5,6 +5,7 @@ module.exports = function (RED) { RED.nodes.createNode(this, config) let node = this let consumedThing + let subscription this.status({}) @@ -20,16 +21,20 @@ module.exports = function (RED) { return } - RED.nodes.getNode(config.thing).consumedThing.then(async (thing) => { - consumedThing = thing + const thingNode = RED.nodes.getNode(config.thing) + thingNode.addUpdateTDListener(async (_consumedThing) => { + if (subscription) { + // Stop if already subscribed + await subscription.stop() + } + consumedThing = _consumedThing if (config.observe === false) { return } // Repeat until observeProperty succeeds. - let ob while (true) { try { - ob = await consumedThing.observeProperty( + subscription = await consumedThing.observeProperty( config.property, async (resp) => { let payload @@ -59,7 +64,7 @@ module.exports = function (RED) { text: "Observe error", }) } - if (ob) { + if (subscription) { node.status({ fill: "green", shape: "dot", @@ -113,11 +118,10 @@ module.exports = function (RED) { }) }) - node.on("close", function (removed, done) { - if (removed) { - // This node has been deleted - } else { - // This node is being restarted + node.on("close", async function (removed, done) { + if (subscription) { + // Stop if already subscribed + await subscription.stop() } done() }) @@ -127,6 +131,7 @@ module.exports = function (RED) { function writePropertyNode(config) { RED.nodes.createNode(this, config) let node = this + let consumedThing this.status({}) @@ -142,32 +147,49 @@ module.exports = function (RED) { return } - RED.nodes.getNode(config.thing).consumedThing.then((consumedThing) => { - node.on("input", function (msg, send, done) { - const uriVariables = config.uriVariables ? JSON.parse(config.uriVariables) : undefined - consumedThing - .writeProperty(config.property, msg.payload, { - uriVariables: uriVariables, - }) - .then((resp) => { - if (resp) node.send({ payload: resp, topic: config.topic }) - node.status({ - fill: "green", - shape: "dot", - text: "connected", - }) - done() + const thingNode = RED.nodes.getNode(config.thing) + thingNode.addUpdateTDListener(async (_consumedThing) => { + consumedThing = _consumedThing + }) + + node.on("input", function (msg, send, done) { + if (!consumedThing) { + node.error("[error] consumedThing is not defined.") + done("consumedThing is not defined.") + return + } + const uriVariables = config.uriVariables ? JSON.parse(config.uriVariables) : undefined + consumedThing + .writeProperty(config.property, msg.payload, { + uriVariables: uriVariables, + }) + .then((resp) => { + if (resp) node.send({ payload: resp, topic: config.topic }) + node.status({ + fill: "green", + shape: "dot", + text: "connected", }) - .catch((err) => { - node.warn(err) - node.status({ - fill: "red", - shape: "ring", - text: err.message, - }) - done(err) + done() + }) + .catch((err) => { + node.warn(err) + node.status({ + fill: "red", + shape: "ring", + text: err.message, }) - }) + done(err) + }) + }) + + this.on("close", function (removed, done) { + if (removed) { + // This node has been deleted + } else { + // This node is being restarted + } + done() }) } RED.nodes.registerType("write-property", writePropertyNode) diff --git a/node-red-node-wot/src/wot-server-td.ts b/node-red-node-wot/src/wot-server-td.ts index 3579fda..47002ff 100644 --- a/node-red-node-wot/src/wot-server-td.ts +++ b/node-red-node-wot/src/wot-server-td.ts @@ -5,8 +5,6 @@ module.exports = function (RED) { RED.nodes.createNode(this, config) const node = this this.status({ fill: "red", shape: "dot", text: "not prepared" }) - console.log("*** wot server td node: ", node) - console.log("*** wot server td config: ", config) node.setServientStatus = (running: boolean) => { if (running) { diff --git a/node-red-node-wot/src/wot-thing.js b/node-red-node-wot/src/wot-thing.js index 3e759cb..fe653ab 100644 --- a/node-red-node-wot/src/wot-thing.js +++ b/node-red-node-wot/src/wot-thing.js @@ -13,16 +13,22 @@ module.exports = function (RED) { function consumedThingNode(config) { RED.nodes.createNode(this, config) const node = this + let consumedThing + let tdListeners = [] - this.tdLink = config.tdLink - this.td = JSON.parse(config.td) + this.addUpdateTDListener = (listener) => { + tdListeners.push(listener) + if (consumedThing) { + listener(consumedThing) + } + } - this.consumedThing = new Promise((resolve, reject) => { + this.createConsumedThing = async (td) => { let servient = new Servient() if (config.basicAuth) { servient.addCredentials({ - [this.td.id]: { username: config.username.trim(), password: config.password }, + [td.id]: { username: config.username.trim(), password: config.password }, }) } @@ -47,16 +53,21 @@ module.exports = function (RED) { servient.addClientFactory(new ModbusClientFactory()) } - servient - .start() - .then((thingFactory) => { - let consumedThing = thingFactory.consume(this.td) - resolve(consumedThing) - }) - .catch((err) => { - node.error(`[error] failed to start servient. err: ${err.toString()}`) - reject(err) - }) + const thingFactory = await servient.start() + consumedThing = await thingFactory.consume(td) + tdListeners.forEach((listener) => { + listener(consumedThing) + }) + } + + const td = JSON.parse(config.td) + this.createConsumedThing(td).catch((err) => { + node.error(`[error] failed to start servient. err: ${err.toString()}`) + }) + + this.on("close", function (removed, done) { + tdListeners = [] + done() }) } RED.nodes.registerType("consumed-thing", consumedThingNode) diff --git a/node-red-node-wot/src/wot-update-td.html b/node-red-node-wot/src/wot-update-td.html new file mode 100644 index 0000000..ae04e7d --- /dev/null +++ b/node-red-node-wot/src/wot-update-td.html @@ -0,0 +1,58 @@ + + + + + diff --git a/node-red-node-wot/src/wot-update-td.js b/node-red-node-wot/src/wot-update-td.js new file mode 100644 index 0000000..e978173 --- /dev/null +++ b/node-red-node-wot/src/wot-update-td.js @@ -0,0 +1,51 @@ +"use strict" + +module.exports = function (RED) { + function UpdateTDNode(config) { + RED.nodes.createNode(this, config) + let node = this + + this.status({}) + + if (!config.thing) { + this.status({ fill: "red", shape: "dot", text: "Error: Thing undefined" }) + return + } else if (!config.tdSource) { + this.status({ + fill: "red", + shape: "dot", + text: "Error: Choose a td source", + }) + return + } + + const thingNode = RED.nodes.getNode(config.thing) + + this.on("input", async function (msg, send, done) { + let td + if (config.tdSource && config.tdSourceType) { + try { + td = await RED.util.evaluateNodeProperty(config.tdSource, config.tdSourceType, node, msg) + } catch (err) { + return done("cannot evaluate td source") + } + } + try { + await thingNode.createConsumedThing(td) + done() + } catch (err) { + done(err) + } + }) + + this.on("close", function (removed, done) { + if (removed) { + // This node has been deleted + } else { + // This node is being restarted + } + done() + }) + } + RED.nodes.registerType("update-td", UpdateTDNode) +} diff --git a/node-red-node-wot/test/server-td-test.ts b/node-red-node-wot/test/server-td-test.ts new file mode 100644 index 0000000..5062d56 --- /dev/null +++ b/node-red-node-wot/test/server-td-test.ts @@ -0,0 +1,125 @@ +/** + * test for server-td + */ +import "mocha" +import * as chai from "chai" +import chaiAsPromised from "chai-as-promised" +import helper from "node-red-node-test-helper" +import { startFlow, endFlow, getNodeAfterStartFlow } from "./util" + +helper.init(require.resolve("node-red")) + +chai.use(chaiAsPromised) +const assert = chai.assert + +/* + Flow Summary + [Server-side] + 1a. wot-server-event:id.serverevent01 (id.serverconfig01, id.thingconfig01') + 1b. wot-server-td:id.servertd01 (id.serverconfig01, id.thingconfig01') + 2b. helper:id.gettdhelper01 + */ +const targetFlow = [ + // Server-side + { + id: "id.serverevent01", + type: "wot-server-event", + name: "", + eventName: "testEvent", + eventDescription: "test event", + eventDataType: "string", + inParams_eventValueType: "msg", + inParams_eventValueConstValue: "payload", + woTServerConfig: "id.serverconfig01", + woTThingConfig: "id.thingconfig01", + wires: [], + }, + { + id: "id.servertd01", + type: "wot-server-td", + name: "", + outParams1_tdType: "msg", + outParams1_tdConstValue: "payload", + woTServerConfig: "id.serverconfig01", + woTThingConfig: "id.thingconfig01", + outputTDAfterServerStartFlag: true, + wires: [["id.gettdhelper01"]], + }, + { + id: "id.serverconfig01", + type: "wot-server-config", + name: "httpserver", + bindingType: "http", + bindingConfigType: "json", + bindingConfigConstValue: '{"port":8383}', + }, + { + id: "id.thingconfig01", + type: "wot-thing-config", + name: "thing01", + description: "thing01 for test", + }, + { id: "id.gettdhelper01", type: "helper" }, +] + +let eventContent = "test-content" + +describe("Tests for Server TD", function () { + this.timeout(15 * 1000) + before(async function () { + await startFlow(targetFlow, helper, 0) + }) + + after(async function () { + await endFlow("id.serverconfig01", helper) + }) + + beforeEach(function (done) { + done() + }) + + afterEach(function (done) { + done() + }) + + it("get td after server start", function (done) { + getNodeAfterStartFlow("id.gettdhelper01", helper).then((helperNode) => { + helperNode.removeAllListeners("input") + helperNode.on("input", function (msg) { + try { + //@ts-ignore + assert.equal(msg.payload?.title, "thing01") + done() + } catch (err) { + done(err) + } + }) + }) + }) + + it("get td by input", function (done) { + // wait for servient start + new Promise((resolve, reject) => { + setTimeout(resolve, 2000) + }).then(() => { + const helperNode = helper.getNode("id.gettdhelper01") + let sentFlg = false + helperNode.removeAllListeners("input") + helperNode.on("input", function (msg) { + try { + // check after send trigger or not + if (sentFlg) { + //@ts-ignore + assert.equal(msg.payload?.title, "thing01") + done() + } + } catch (err) { + done(err) + } + }) + const serverTDNode = helper.getNode("id.servertd01") + serverTDNode.receive({}) + sentFlg = true + }) + }) +}) diff --git a/node-red-node-wot/test/update-td-test.ts b/node-red-node-wot/test/update-td-test.ts new file mode 100644 index 0000000..001d998 --- /dev/null +++ b/node-red-node-wot/test/update-td-test.ts @@ -0,0 +1,226 @@ +/** + * test for update-td + */ +import "mocha" +import * as chai from "chai" +import chaiAsPromised from "chai-as-promised" +import helper from "node-red-node-test-helper" +import { startFlow, endFlow } from "./util" + +helper.init(require.resolve("node-red")) + +chai.use(chaiAsPromised) +const assert = chai.assert + +/* + Flow Summary + [Server-side] + 1a. wot-server-event:id.serverevent01 (id.serverconfig01, id.thingconfig01') + 1b. wot-server-event:id.serverevent02 (id.serverconfig02, id.thingconfig01') + [Client-side] + 1a. subscribe-event:id.subscribeevent01 (id.consumedthing01) + 2a. helper:id.subscribeeventhelper01 + 1b. update-td:id.updatetd01 (id.consumedthing01) + */ +const targetFlow = [ + // Server-side + { + id: "id.serverevent01", + type: "wot-server-event", + name: "", + eventName: "testEvent", + eventDescription: "test event", + eventDataType: "string", + inParams_eventValueType: "msg", + inParams_eventValueConstValue: "payload", + woTServerConfig: "id.serverconfig01", + woTThingConfig: "id.thingconfig01", + wires: [], + }, + { + id: "id.serverconfig01", + type: "wot-server-config", + name: "httpserver", + bindingType: "http", + bindingConfigType: "json", + bindingConfigConstValue: '{"port":8181}', + }, + { + id: "id.thingconfig01", + type: "wot-thing-config", + name: "thing01", + description: "thing01 for test", + }, + { + id: "id.serverevent02", + type: "wot-server-event", + name: "", + eventName: "testEvent", + eventDescription: "test event", + eventDataType: "string", + inParams_eventValueType: "msg", + inParams_eventValueConstValue: "payload", + woTServerConfig: "id.serverconfig02", + woTThingConfig: "id.thingconfig01", + wires: [], + }, + { + id: "id.serverconfig02", + type: "wot-server-config", + name: "httpserver", + bindingType: "http", + bindingConfigType: "json", + bindingConfigConstValue: '{"port":8282}', + }, + // Client-side + { + id: "id.subscribeevent01", + type: "subscribe-event", + name: "", + topic: "", + thing: "id.consumedthing01", + event: "testEvent", + uriVariables: "", + wires: [["id.subscribeeventhelper01"]], + }, + { id: "id.subscribeeventhelper01", type: "helper" }, + { + id: "id.consumedthing01", + type: "consumed-thing", + tdLink: "", + td: JSON.stringify({ + "@context": [ + "https://www.w3.org/2019/wot/td/v1", + "https://www.w3.org/2022/wot/td/v1.1", + { "@language": "en" }, + ], + "@type": "Thing", + title: "thing01", + securityDefinitions: { nosec: { scheme: "nosec" } }, + security: ["nosec"], + events: { + testEvent: { + description: "", + data: { type: "string" }, + forms: [ + { + href: "http://localhost:8181/thing01/events/testEvent", + contentType: "application/json", + subprotocol: "longpoll", + op: ["subscribeevent", "unsubscribeevent"], + }, + { + href: "http://localhost:8181/thing01/events/testEvent", + contentType: "application/cbor", + subprotocol: "longpoll", + op: ["subscribeevent", "unsubscribeevent"], + }, + ], + }, + }, + id: "urn:uuid:cf950521-8eaf-4e1c-9277-758930e47246", + description: "", + }), + http: true, + ws: false, + coap: false, + mqtt: false, + opcua: false, + modbus: false, + basicAuth: false, + username: "", + password: "", + }, + { + id: "id.updatetd01", + type: "update-td", + name: "", + thing: "id.consumedthing01", + tdSourceType: "msg", + tdSource: "payload", + wires: [], + }, +] + +describe("Tests for Update TD", function () { + this.timeout(15 * 1000) + before(async function () { + await startFlow(targetFlow, helper) + }) + + after(async function () { + await endFlow("id.serverconfig01", helper) + }) + + beforeEach(function (done) { + done() + }) + + afterEach(function (done) { + done() + }) + + it("update td", function (done) { + const clientHelperNode = helper.getNode("id.subscribeeventhelper01") + clientHelperNode.removeAllListeners("input") + let expectedEvent + clientHelperNode.on("input", function (msg) { + try { + assert.equal(msg.payload, expectedEvent) + if (expectedEvent === "event from server02") { + done() + } + } catch (err) { + done(err) + } + }) + const serverEventNode01 = helper.getNode("id.serverevent01") + const serverEventNode02 = helper.getNode("id.serverevent02") + expectedEvent = "event from server01" + serverEventNode01.receive({ payload: "event from server01" }) + serverEventNode02.receive({ payload: "event from server02" }) + new Promise((resolve) => setTimeout(resolve, 500)).then(() => { + const updateTDNode = helper.getNode("id.updatetd01") + updateTDNode.receive({ + payload: { + "@context": [ + "https://www.w3.org/2019/wot/td/v1", + "https://www.w3.org/2022/wot/td/v1.1", + { "@language": "en" }, + ], + "@type": "Thing", + title: "thing01", + securityDefinitions: { nosec: { scheme: "nosec" } }, + security: ["nosec"], + events: { + testEvent: { + description: "", + data: { type: "string" }, + forms: [ + { + href: "http://localhost:8282/thing01/events/testEvent", + contentType: "application/json", + subprotocol: "longpoll", + op: ["subscribeevent", "unsubscribeevent"], + }, + { + href: "http://localhost:8282/thing01/events/testEvent", + contentType: "application/cbor", + subprotocol: "longpoll", + op: ["subscribeevent", "unsubscribeevent"], + }, + ], + }, + }, + id: "urn:uuid:cf950521-8eaf-4e1c-9277-758930e47246", + description: "", + }, + }) + new Promise((resolve) => setTimeout(resolve, 500)).then(() => { + expectedEvent = "event from server02" + serverEventNode01.receive({ payload: "event from server01" }) + serverEventNode02.receive({ payload: "event from server02" }) + }) + }) + }) +}) diff --git a/node-red-node-wot/test/util.ts b/node-red-node-wot/test/util.ts index 09a40f6..0170b6c 100644 --- a/node-red-node-wot/test/util.ts +++ b/node-red-node-wot/test/util.ts @@ -6,10 +6,12 @@ const serverPropertyNode = require("../src/wot-server-property.ts") const serverActionNode = require("../src/wot-server-action.ts") const serverEventNode = require("../src/wot-server-event.ts") const serverEndNode = require("../src/wot-server-end.ts") +const serverTDNode = require("../src/wot-server-td.ts") const thingConfigNode = require("../src/wot-thing.js") const propertyNode = require("../src/wot-property.js") const actionNode = require("../src/wot-action.js") const eventNode = require("../src/wot-event.js") +const updateTDNode = require("../src/wot-update-td.js") const USE_NODES = [ serverConfigNode, @@ -18,28 +20,30 @@ const USE_NODES = [ serverActionNode, serverEventNode, serverEndNode, + serverTDNode, thingConfigNode, propertyNode, actionNode, eventNode, + updateTDNode, ] -const launchFlow = async (flow: any[], helper) => { +const launchFlow = async (flow: any[], helper, waitForServientStart = 2000) => { return new Promise((resolve, reject) => { helper.load(USE_NODES, flow, function () { // Wait for the servient to start. setTimeout(function () { resolve() - }, 2000) + }, waitForServientStart) }) }) } -export const startFlow = async (targetFlow, helper) => { +export const startFlow = async (targetFlow, helper, waitForServientStart = 2000) => { return new Promise((resolve, reject) => { helper.startServer(async function () { try { - await launchFlow(targetFlow, helper) + await launchFlow(targetFlow, helper, waitForServientStart) resolve() } catch (err) { reject(err) @@ -58,3 +62,17 @@ export const endFlow = async (id: string, helper) => { } }) } + +export const getNodeAfterStartFlow = async (id: string, helper, wait = 50, maxCount = 50) => { + for (let i = 0; i < maxCount; i++) { + let node = helper.getNode(id) + if (node) { + return node + } else { + await new Promise((resolve, reject) => { + setTimeout(resolve, wait) + }) + } + } + throw new Error("timeout for getting node") +} From a51f5e081798bd0457bec22b7ff07b449c5786ee Mon Sep 17 00:00:00 2001 From: hidetak Date: Wed, 13 Mar 2024 00:25:40 +0900 Subject: [PATCH 03/10] enable basic auth --- .../src/locales/en-US/wot-thing-config.html | 9 ++ .../src/locales/en-US/wot-thing-config.json | 7 +- .../src/locales/ja/wot-thing-config.html | 9 ++ .../src/locales/ja/wot-thing-config.json | 7 +- .../src/servients/servient-wrapper.ts | 6 ++ node-red-node-wot/src/wot-event.js | 39 ++++---- node-red-node-wot/src/wot-property.js | 92 ++++++++++--------- node-red-node-wot/src/wot-server-action.ts | 5 +- node-red-node-wot/src/wot-server-config.ts | 67 +++++++++++--- node-red-node-wot/src/wot-server-event.ts | 7 +- node-red-node-wot/src/wot-server-property.ts | 7 +- node-red-node-wot/src/wot-thing-config.html | 37 +++++++- node-red-node-wot/src/wot-thing-config.ts | 14 +++ node-red-node-wot/src/wot-thing.js | 7 +- 14 files changed, 225 insertions(+), 88 deletions(-) diff --git a/node-red-node-wot/src/locales/en-US/wot-thing-config.html b/node-red-node-wot/src/locales/en-US/wot-thing-config.html index 3f15dc0..93aaaf7 100644 --- a/node-red-node-wot/src/locales/en-US/wot-thing-config.html +++ b/node-red-node-wot/src/locales/en-US/wot-thing-config.html @@ -10,6 +10,15 @@

Details

to this setting are published with the Thing title specified here.
  • Description: Specify the description of the Thing.
  • +
  • + Thing ID: Specify the Thing ID. The specified Thing ID is used as the ID for Thing Description. + If omitted, the ID for Thing Description is automatically generated.
    + Example of Thing ID: "urn:dev:ops:32473-WoTLamp-1234" +
  • +
  • + Use basic authentication: Specifies whether Basic authentication is applied to the Thing.
    + If you use Basic Authentication, please set your user name and password. +
  • The Thing Description is stored in the thingDescriptions variable of the global context with the key of diff --git a/node-red-node-wot/src/locales/en-US/wot-thing-config.json b/node-red-node-wot/src/locales/en-US/wot-thing-config.json index 20e987e..fa4dccd 100644 --- a/node-red-node-wot/src/locales/en-US/wot-thing-config.json +++ b/node-red-node-wot/src/locales/en-US/wot-thing-config.json @@ -1,6 +1,11 @@ { "editor": { "nameLabel": "Thing title", - "descriptionLabel": "Description" + "descriptionLabel": "Description", + "thingIdLabel": "Thing ID", + "securityLabel": "Security:", + "basicAuthLabel": "Use basic authentication", + "usernameLabel": "Username", + "passwordLabel": "Password" } } diff --git a/node-red-node-wot/src/locales/ja/wot-thing-config.html b/node-red-node-wot/src/locales/ja/wot-thing-config.html index d2b3d4a..04afa04 100644 --- a/node-red-node-wot/src/locales/ja/wot-thing-config.html +++ b/node-red-node-wot/src/locales/ja/wot-thing-config.html @@ -10,6 +10,15 @@

    Details

    Descriptionでは、ここで指定したThing名で、本設定を参照するプロパティ、アクション、イベントを公開します。
  • 説明: Thingの説明を指定します。
  • +
  • + Thing ID: Thing IDを指定します。指定したThing IDは、Thing + DescriptionのIDとして利用します。省略した場合は、Thing DescriptionのIDは自動的に生成されます。
    + Thing IDの例: "urn:dev:ops:32473-WoTLamp-1234" +
  • +
  • + Basic認証利用: ThingにBasic認証をかけるかどうかを指定します。
    + Basic認証を利用する場合は、ユーザー名とパスワードを設定してください。 +
  • Thing diff --git a/node-red-node-wot/src/locales/ja/wot-thing-config.json b/node-red-node-wot/src/locales/ja/wot-thing-config.json index 044e695..128d9b0 100644 --- a/node-red-node-wot/src/locales/ja/wot-thing-config.json +++ b/node-red-node-wot/src/locales/ja/wot-thing-config.json @@ -1,6 +1,11 @@ { "editor": { "nameLabel": "Thing名", - "descriptionLabel": "説明" + "descriptionLabel": "説明", + "thingIdLabel": "Thing ID", + "securityLabel": "セキュリティ:", + "basicAuthLabel": "Basic認証利用", + "usernameLabel": "ユーザー名", + "passwordLabel": "パスワード" } } diff --git a/node-red-node-wot/src/servients/servient-wrapper.ts b/node-red-node-wot/src/servients/servient-wrapper.ts index c15efc1..00563d1 100644 --- a/node-red-node-wot/src/servients/servient-wrapper.ts +++ b/node-red-node-wot/src/servients/servient-wrapper.ts @@ -51,6 +51,12 @@ export default class ServientWrapper { return this.things[thingName] } + public addCredentials(title, credentials) { + const thing = this.things[title] + const td = thing.getThingDescription() + this.servient.addCredentials({ [td.id]: credentials }) + } + public async endServient() { if (this.server) { console.debug("[debug] endServient called.") diff --git a/node-red-node-wot/src/wot-event.js b/node-red-node-wot/src/wot-event.js index 2900eca..0afebc4 100644 --- a/node-red-node-wot/src/wot-event.js +++ b/node-red-node-wot/src/wot-event.js @@ -6,6 +6,7 @@ module.exports = function (RED) { let node = this let consumedThing let subscription + let repeatId this.status({}) @@ -19,15 +20,20 @@ module.exports = function (RED) { const thingNode = RED.nodes.getNode(config.thing) thingNode.addUpdateTDListener(async (_consumedThing) => { + if (repeatId) { + clearInterval(repeatId) + repeatId = undefined + } if (subscription) { // Stop if already subscribed await subscription.stop() } + subscription = undefined consumedThing = _consumedThing // Repeat until event subscription succeeds. - try { - while (true) { - subscription = await consumedThing + await new Promise((resolve, reject) => { + repeatId = setInterval(() => { + consumedThing .subscribeEvent( config.event, async (resp) => { @@ -63,24 +69,17 @@ module.exports = function (RED) { subscription = undefined } ) + .then((sub) => { + subscription = sub + clearInterval(repeatId) + repeatId = undefined + resolve() + }) .catch((err) => { console.warn("[warn] event subscribe error. try again. error: " + err) }) - if (subscription) { - break - } - await new Promise((resolve) => { - setTimeout(resolve, 500) - }) - } - } catch (err) { - node.status({ - fill: "red", - shape: "ring", - text: "Subscription error", - }) - node.error(`[error] failed to subscribe events. error: ${err.toString()}`) - } + }, 1000) + }) if (subscription) { node.status({ @@ -92,6 +91,10 @@ module.exports = function (RED) { }) this.on("close", async function (removed, done) { + if (repeatId) { + clearInterval(repeatId) + repeatId = undefined + } if (subscription) { // Stop if already subscribed await subscription.stop() diff --git a/node-red-node-wot/src/wot-property.js b/node-red-node-wot/src/wot-property.js index 7acda80..d9f5ee6 100644 --- a/node-red-node-wot/src/wot-property.js +++ b/node-red-node-wot/src/wot-property.js @@ -6,6 +6,7 @@ module.exports = function (RED) { let node = this let consumedThing let subscription + let repeatId this.status({}) @@ -23,62 +24,67 @@ module.exports = function (RED) { const thingNode = RED.nodes.getNode(config.thing) thingNode.addUpdateTDListener(async (_consumedThing) => { + if (repeatId) { + clearInterval(repeatId) + repeatId = undefined + } if (subscription) { // Stop if already subscribed await subscription.stop() } + subscription = undefined consumedThing = _consumedThing if (config.observe === false) { return } // Repeat until observeProperty succeeds. - while (true) { - try { - subscription = await consumedThing.observeProperty( - config.property, - async (resp) => { - let payload - try { - payload = await resp.value() - } catch (err) { - node.error(`[error] failed to get property change. err: ${err.toString()}`) - console.error(`[error] failed to get property change. err:`, err) + await new Promise((resolve, reject) => { + repeatId = setInterval(() => { + consumedThing + .observeProperty( + config.property, + async (resp) => { + let payload + try { + payload = await resp.value() + } catch (err) { + node.error(`[error] failed to get property change. err: ${err.toString()}`) + console.error(`[error] failed to get property change. err:`, err) + } + node.send({ payload, topic: config.topic }) + }, + (err) => { + node.error(`[error] property observe error. error: ${err.toString()}`) + console.error(`[error] property observe error. error: `, err) + node.status({ + fill: "red", + shape: "ring", + text: "Observe error", + }) } - node.send({ payload, topic: config.topic }) - }, - (err) => { - node.error(`[error] property observe error. error: ${err.toString()}`) - console.error(`[error] property observe error. error: `, err) + ) + .then((sub) => { + subscription = sub + clearInterval(repeatId) + repeatId = undefined + resolve() + }) + .catch((err) => { + console.warn("[warn] property observe error. try again. error: " + err) node.status({ fill: "red", shape: "ring", text: "Observe error", }) - } - ) - } catch (err) { - console.warn("[warn] property observe error. try again. error: " + err) - node.status({ - fill: "red", - shape: "ring", - text: "Observe error", - }) - } - if (subscription) { - node.status({ - fill: "green", - shape: "dot", - text: "connected", - }) - break - } - await (() => { - return new Promise((resolve) => { - setTimeout(() => { - resolve() - }, 500) - }) - })() + }) + }, 1000) + }) + if (subscription) { + node.status({ + fill: "green", + shape: "dot", + text: "connected", + }) } }) @@ -119,6 +125,10 @@ module.exports = function (RED) { }) node.on("close", async function (removed, done) { + if (repeatId) { + clearInterval(repeatId) + repeatId = undefined + } if (subscription) { // Stop if already subscribed await subscription.stop() diff --git a/node-red-node-wot/src/wot-server-action.ts b/node-red-node-wot/src/wot-server-action.ts index 07e5dc1..2659c5a 100644 --- a/node-red-node-wot/src/wot-server-action.ts +++ b/node-red-node-wot/src/wot-server-action.ts @@ -31,9 +31,8 @@ module.exports = function (RED) { } // for wot-server-config - node.getThingProps = () => { - const woTThingConfig = RED.nodes.getNode(config.woTThingConfig) - return woTThingConfig.getProps() + node.getThingNode = () => { + return RED.nodes.getNode(config.woTThingConfig) } node.on("close", function (removed, done) { diff --git a/node-red-node-wot/src/wot-server-config.ts b/node-red-node-wot/src/wot-server-config.ts index d7fe917..aa069f5 100644 --- a/node-red-node-wot/src/wot-server-config.ts +++ b/node-red-node-wot/src/wot-server-config.ts @@ -21,6 +21,16 @@ module.exports = function (RED) { } } + function getSecurityDefinition(scheme) { + let params + if (scheme === "basic") { + params = { scheme, in: "header" } + } else { + params = { scheme } + } + return params + } + async function waitForFinishPrepareRelatedNodes(userNodes: any[], userNodeIds: string[]) { const MAX_CHECK_COUNT = 50 const WAIT_MILLI_SEC = 100 //ms @@ -118,7 +128,13 @@ module.exports = function (RED) { } async function createWoTScriptAndExpose( - thingProps: { title: string; description: string }, + thingProps: { + title: string + description: string + id?: string + securityDefinitions?: any + security?: string[] + }, servientWrapper: ServientWrapper, userNodes: any[] ) { @@ -156,7 +172,6 @@ module.exports = function (RED) { } async function launchServient() { - node.bindingType = node.credentials.bindingType if (config.bindingConfigConstValue && config.bindingConfigType) { node.bindingConfig = RED.util.evaluateNodeProperty( config.bindingConfigConstValue, @@ -168,27 +183,53 @@ module.exports = function (RED) { // create thing const bindingType = config.bindingType const bindingConfig = node.bindingConfig - console.debug("[debug] createServient ", node.id, bindingType, bindingConfig) - const servientWrapper = servientManager.createServientWrapper(node.id, bindingType, bindingConfig) try { await waitForFinishPrepareRelatedNodes(userNodes, config._users) - await servientWrapper.startServient() - // make thing title list - const thingNamesObj = {} + // make thing title list and security definitions + const securityDefinitions = [] + const thingTitles = [] for (const userNode of userNodes) { if (userNode.type === "wot-server-td") { continue } - thingNamesObj[userNode.getThingProps().title] = true + let thingNode = userNode.getThingNode() + if (!thingNode) { + continue + } + let title = thingNode.getProps()?.title + if (title && !thingTitles.includes(title)) { + thingTitles.push(title) + // make security definitions for server + let secDef = getSecurityDefinition(thingNode.getSecurityScheme()) + if (secDef.scheme !== "nosec") { + securityDefinitions.push(secDef) + } + } } - const thingNames = Object.keys(thingNamesObj) + // merge security params to bindingConfig + bindingConfig["security"] = securityDefinitions + console.debug("[debug] createServient ", node.id, bindingType, bindingConfig) + const servientWrapper = servientManager.createServientWrapper(node.id, bindingType, bindingConfig) + await servientWrapper.startServient() // Generate and Expose a Thing for each Thing title - for (const thingName of thingNames) { + for (const thingTitle of thingTitles) { const targetNodes = userNodes.filter( - (n) => n.type !== "wot-server-td" && n.getThingProps().title === thingName + (n) => n.type !== "wot-server-td" && n.getThingNode().getProps().title === thingTitle ) - const thingProps = targetNodes[0]?.getThingProps() || {} - await createWoTScriptAndExpose(thingProps, servientWrapper, targetNodes) + if (targetNodes.length > 0) { + const thingNode = targetNodes[0].getThingNode() + const thingProps = thingNode.getProps() || {} + // add security definition to thingProps + const secScheme = thingNode.getSecurityScheme() + if (secScheme !== "nosec") { + thingProps["securityDefinitions"] = { + sc: getSecurityDefinition(secScheme), + } + thingProps["security"] = ["sc"] + } + await createWoTScriptAndExpose(thingProps, servientWrapper, targetNodes) + servientWrapper.addCredentials(thingProps.title, thingNode.getCredentials()) + } } node.running = true userNodes.forEach((n) => { diff --git a/node-red-node-wot/src/wot-server-event.ts b/node-red-node-wot/src/wot-server-event.ts index cc4497b..1e3f82b 100644 --- a/node-red-node-wot/src/wot-server-event.ts +++ b/node-red-node-wot/src/wot-server-event.ts @@ -28,9 +28,8 @@ module.exports = function (RED) { } // for wot-server-config - node.getThingProps = () => { - const woTThingConfig = RED.nodes.getNode(config.woTThingConfig) - return woTThingConfig.getProps() + node.getThingNode = () => { + return RED.nodes.getNode(config.woTThingConfig) } node.on("input", async (msg, send, done) => { @@ -47,7 +46,7 @@ module.exports = function (RED) { ) } await ServientManager.getInstance() - .getThing(woTServerConfig.id, node.getThingProps().title) + .getThing(woTServerConfig.id, node.getThingNode().getProps().title) .emitEvent(config.eventName, node.inParams_eventValue) console.debug("[debug] emitEvent finished. eventName: ", config.eventName) diff --git a/node-red-node-wot/src/wot-server-property.ts b/node-red-node-wot/src/wot-server-property.ts index 5114bde..76ab7af 100644 --- a/node-red-node-wot/src/wot-server-property.ts +++ b/node-red-node-wot/src/wot-server-property.ts @@ -30,9 +30,8 @@ module.exports = function (RED) { } // for wot-server-config - node.getThingProps = () => { - const woTThingConfig = RED.nodes.getNode(config.woTThingConfig) - return woTThingConfig.getProps() + node.getThingNode = () => { + return RED.nodes.getNode(config.woTThingConfig) } node.on("input", async (msg, send, done) => { @@ -40,7 +39,7 @@ module.exports = function (RED) { const woTServerConfig = RED.nodes.getNode(config.woTServerConfig) await ServientManager.getInstance() - .getThing(woTServerConfig.id, node.getThingProps().title) + .getThing(woTServerConfig.id, node.getThingNode().getProps().title) .emitPropertyChange(config.propertyName) console.debug("[debug] emitPropertyChange finished. propertyName: ", config.propertyName) diff --git a/node-red-node-wot/src/wot-thing-config.html b/node-red-node-wot/src/wot-thing-config.html index bab0083..ff8a745 100644 --- a/node-red-node-wot/src/wot-thing-config.html +++ b/node-red-node-wot/src/wot-thing-config.html @@ -4,7 +4,11 @@ category: "config", defaults: { name: { value: "", required: true }, - description: { value: "" }, + description: { value: "", required: false }, + thingId: { value: "", required: false }, + basicAuth: { value:false }, + basicAuthUsername: { value:"", required:false }, + basicAuthPassword: { value:"", required:false }, }, credentials: {}, label: function () { @@ -13,7 +17,19 @@ labelStyle: function () { return this.name ? "node_label_italic" : "" }, - oneditprepare: function () {}, + oneditprepare: function () { + const $basicAuth = $("#node-config-input-basicAuth") + function toggleBasicAuthContainer() { + // Check if event is triggered by user + if ($basicAuth.prop("checked") === true) { + $(".basicAuthContainer").show() + } else { + $(".basicAuthContainer").hide() + } + } + // Toggle username and password when basic auth is enabled/disabled + $basicAuth.change(toggleBasicAuthContainer) + }, oneditsave: function () {}, }) @@ -62,4 +78,21 @@ +

    + + +
    +

    +
    + + +
    +
    + + +
    +
    + + +
    diff --git a/node-red-node-wot/src/wot-thing-config.ts b/node-red-node-wot/src/wot-thing-config.ts index f94a699..a780c24 100644 --- a/node-red-node-wot/src/wot-thing-config.ts +++ b/node-red-node-wot/src/wot-thing-config.ts @@ -6,6 +6,20 @@ module.exports = function (RED) { return { title: config.name, description: config.description, + id: config.thingId, + } + } + node.getCredentials = () => { + return { + username: config.basicAuthUsername, + password: config.basicAuthPassword, + } + } + node.getSecurityScheme = () => { + if (config.basicAuth) { + return "basic" + } else { + return "nosec" } } } diff --git a/node-red-node-wot/src/wot-thing.js b/node-red-node-wot/src/wot-thing.js index fe653ab..7124a4e 100644 --- a/node-red-node-wot/src/wot-thing.js +++ b/node-red-node-wot/src/wot-thing.js @@ -15,6 +15,7 @@ module.exports = function (RED) { const node = this let consumedThing let tdListeners = [] + let servient this.addUpdateTDListener = (listener) => { tdListeners.push(listener) @@ -24,7 +25,11 @@ module.exports = function (RED) { } this.createConsumedThing = async (td) => { - let servient = new Servient() + node.td = td //for debug + if (servient) { + servient.shutdown() + } + servient = new Servient() if (config.basicAuth) { servient.addCredentials({ From 65b3b1085f09cf4ba82c68f51c6e13dbebf2cf9b Mon Sep 17 00:00:00 2001 From: hidetak Date: Wed, 13 Mar 2024 00:56:55 +0900 Subject: [PATCH 04/10] fixed test due to change in retry interval for failed subscribe attempts --- node-red-node-wot/test/update-td-test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node-red-node-wot/test/update-td-test.ts b/node-red-node-wot/test/update-td-test.ts index 001d998..210eebf 100644 --- a/node-red-node-wot/test/update-td-test.ts +++ b/node-red-node-wot/test/update-td-test.ts @@ -216,7 +216,7 @@ describe("Tests for Update TD", function () { description: "", }, }) - new Promise((resolve) => setTimeout(resolve, 500)).then(() => { + new Promise((resolve) => setTimeout(resolve, 1500)).then(() => { expectedEvent = "event from server02" serverEventNode01.receive({ payload: "event from server01" }) serverEventNode02.receive({ payload: "event from server02" }) From 5de5f6180cd323addfb8adfff5ff28f291234027 Mon Sep 17 00:00:00 2001 From: hidetak Date: Thu, 21 Mar 2024 23:09:42 +0900 Subject: [PATCH 05/10] modified for simplify typedinput process --- node-red-node-wot/package-lock.json | 2 +- node-red-node-wot/package.json | 4 +- node-red-node-wot/src/wot-server-action.html | 75 +++-------------- node-red-node-wot/src/wot-server-action.ts | 6 +- node-red-node-wot/src/wot-server-config.html | 83 ++++--------------- node-red-node-wot/src/wot-server-config.ts | 58 ++++++++----- node-red-node-wot/src/wot-server-end.html | 75 +++-------------- node-red-node-wot/src/wot-server-end.ts | 30 +------ node-red-node-wot/src/wot-server-event.html | 74 +++-------------- node-red-node-wot/src/wot-server-event.ts | 30 +------ .../src/wot-server-property.html | 74 +++-------------- node-red-node-wot/src/wot-server-property.ts | 29 +------ node-red-node-wot/src/wot-server-td.html | 73 ++-------------- node-red-node-wot/src/wot-server-td.ts | 29 +------ node-red-node-wot/src/wot-thing-config.html | 36 -------- node-red-node-wot/src/wot-thing-config.ts | 4 +- node-red-node-wot/src/wot-update-td.html | 2 +- node-red-node-wot/src/wot-update-td.js | 1 + 18 files changed, 109 insertions(+), 576 deletions(-) diff --git a/node-red-node-wot/package-lock.json b/node-red-node-wot/package-lock.json index 37cb19a..004a63b 100644 --- a/node-red-node-wot/package-lock.json +++ b/node-red-node-wot/package-lock.json @@ -36,7 +36,7 @@ "typescript": "^4.9.5" }, "engines": { - "node": ">=8.0.0" + "node": ">=14.0.0" } }, "node_modules/@babel/code-frame": { diff --git a/node-red-node-wot/package.json b/node-red-node-wot/package.json index d94d03e..da8fdb5 100644 --- a/node-red-node-wot/package.json +++ b/node-red-node-wot/package.json @@ -12,7 +12,7 @@ "node-red" ], "engines": { - "node": ">=8.0.0" + "node": ">=14.0.0" }, "repository": { "type": "git", @@ -34,7 +34,7 @@ "wot-server-event": "dist/wot-server-event.js", "wot-server-td": "dist/wot-server-td.js" }, - "version": ">=2.0.0" + "version": ">=1.3.7" }, "scripts": { "build": "npm run copy:src2dist && tsc", diff --git a/node-red-node-wot/src/wot-server-action.html b/node-red-node-wot/src/wot-server-action.html index ae0c2b7..f6a35d2 100644 --- a/node-red-node-wot/src/wot-server-action.html +++ b/node-red-node-wot/src/wot-server-action.html @@ -5,16 +5,17 @@ color: "#a2dea0", defaults: { name: { value: "" }, - actionName: { value: "", required: true }, actionDescription: { value: "" }, actionInputDataType: { value: "string", required: true }, actionOutputDataType: { value: "string", required: true }, outParams1_actionArgsType: { value: "msg", + required: true }, outParams1_actionArgsConstValue: { value: "payload", + required: true }, woTServerConfig: { type: "wot-server-config", @@ -27,9 +28,6 @@ required: true, }, }, - credentials: { - outParams1_actionArgs: { type: "text" }, - }, inputs: 0, outputs: 1, outputLabels: function (index) { @@ -61,66 +59,14 @@ id: "tab-outParams1-settings", label: this._("editor.outParams1.tabLabel"), }) - prepareInOutParamSetting( - "outParams1", - { - name: "actionArgs", - types: ["msg"], - defaultType: "msg", - defaultValue: "payload", - required: true, - }, - this - ) - }, - oneditsave: function () { - saveInOutParamSetting( - "outParams1", - { - name: "actionArgs", - types: ["msg"], - defaultType: "msg", - defaultValue: "payload", - required: true, - }, - this - ) + $("#node-input-outParams1_actionArgsConstValue").typedInput({ + defaultType: "msg", + defaultValue: "payload", + types: ["msg"], + typeField: "#node-input-outParams1_actionArgsType", + }) }, }) - const prepareInOutParamSetting = (inOrOutParams, params, _this) => { - const { name, types, defaultType, defaultValue, required } = params - const varName = `${inOrOutParams}_${name}` - if (!_this[`${varName}Type`]) { - _this[`${varName}Type`] = defaultType - } - if (this[`${varName}Type`] == "str") { - $(`#node-input-${varName}ConstValue`).val("") - } else { - if (_this[`${varName}ConstValue`] == "") { - $(`#node-input-${varName}ConstValue`).val(_this.credentials[varName]) - } else { - _this.credentials[varName] = _this[`${varName}ConstValue`] - $(`#node-input-${varName}`).val(_this.credentials[`${varName}`]) - } - } - $(`#node-input-${varName}Type`).val(_this[`${varName}Type`]) - $(`#node-input-${varName}`).typedInput({ - default: defaultType, - typeField: $(`#node-input-${varName}Type`), - types: types, - }) - $(`#node-input-${varName}`).typedInput("type", _this[`${varName}Type`]) - } - const saveInOutParamSetting = (inOrOutParams, params, _this) => { - const varName = `${inOrOutParams}_${params.name}` - if ($(`#node-input-${varName}Type`).val() != "str") { - _this[`${varName}ConstValue`] = $(`#node-input-${varName}`).val() - $(`#node-input-${varName}ConstValue`).val(_this[`${varName}ConstValue`]) - } else { - $(`#node-input-${varName}ConstValue`).val("") - _this[`${varName}ConstValue`] = "" - } - } })() @@ -181,10 +127,9 @@
    - - + + -
    diff --git a/node-red-node-wot/src/wot-server-action.ts b/node-red-node-wot/src/wot-server-action.ts index 2659c5a..0ed7118 100644 --- a/node-red-node-wot/src/wot-server-action.ts +++ b/node-red-node-wot/src/wot-server-action.ts @@ -47,9 +47,5 @@ module.exports = function (RED) { const woTServerConfig = RED.nodes.getNode(config.woTServerConfig) woTServerConfig.addUserNode(node) } - RED.nodes.registerType("wot-server-action", WoTServerAction, { - credentials: { - outParams1_actionArgs: { type: "text" }, - }, - }) + RED.nodes.registerType("wot-server-action", WoTServerAction) } diff --git a/node-red-node-wot/src/wot-server-config.html b/node-red-node-wot/src/wot-server-config.html index 04c5c08..5d03d20 100644 --- a/node-red-node-wot/src/wot-server-config.html +++ b/node-red-node-wot/src/wot-server-config.html @@ -22,12 +22,9 @@ category: "config", defaults: { name: { value: "", required: true }, - bindingType: { value: "http" }, - bindingConfigType: { value: "json" }, - bindingConfigConstValue: { value: "{}" }, - }, - credentials: { - bindingConfig: { type: "object" }, + bindingType: { value: "http", required: true }, + bindingConfigType: { value: "json", required: true }, + bindingConfigConstValue: { value: "{}", required: true }, }, label: function () { return this.name || this._("editor.configLabel") @@ -37,16 +34,12 @@ }, oneditprepare: function () { // 入力パラメータの指定項目作成 - createInOutParamSetting( - { - name: "bindingConfig", - types: ["json"], - defaultType: "json", - defaultValue: "{}", - required: true, - }, - this - ) + $("#node-config-input-bindingConfigConstValue").typedInput({ + defaultType: "json", + defaultValue: "{}", + types: ["json"], + typeField: "#node-config-input-bindingConfigType", + }) BINDING_TYPE_LIST.forEach((type) => { $("#node-config-input-bindingType").append(``) @@ -57,62 +50,16 @@ $("#node-config-input-bindingType").on("change", () => { const selectedBindingType = $("#node-config-input-bindingType").val() if (selectedBindingType === this.bindingType && this.bindingConfigConstValue !== "{}") { - $("#node-config-input-bindingConfig").typedInput("value", this.bindingConfigConstValue) + $("#node-config-input-bindingConfigConstValue").typedInput("value", this.bindingConfigConstValue) } else { - $("#node-config-input-bindingConfig").typedInput( + $("#node-config-input-bindingConfigConstValue").typedInput( "value", JSON.stringify(BINDING_CONFIG_DEFAULT[selectedBindingType]) ) } }) - }, - oneditsave: function () { - saveInOutParamSetting( - { - name: "bindingConfig", - types: ["json"], - defaultType: "json", - defaultValue: "{}", - required: true, - }, - this - ) - }, - }) - - const createInOutParamSetting = (params, _this) => { - const { name, types, defaultType, defaultValue, required } = params - if (!_this[name + "Type"]) { - _this[name + "Type"] = defaultType } - if (_this[name + "Type"] == "str") { - $(`#node-config-input-${name}ConstValue`).val("") - } else { - if (_this[name + "ConstValue"] == "") { - $(`#node-config-input-${name}ConstValue`).val(_this.credentials[name]) - } else { - _this.credentials[name] = _this[name + "ConstValue"] - $(`#node-config-input-${name}`).val(_this.credentials[name]) - } - } - $(`#node-config-input-${name}Type`).val(_this[name + "Type"]) - $(`#node-config-input-${name}`).typedInput({ - default: defaultType, - typeField: $(`#node-config-input-${name}Type`), - types: types, - }) - $(`#node-config-input-${name}`).typedInput("type", _this[name + "Type"]) - } - const saveInOutParamSetting = (params, _this) => { - const { name } = params - if ($(`#node-config-input-${name}Type`).val() != "str") { - _this[`${name}ConstValue`] = $(`#node-config-input-${name}`).val() - $(`#node-config-input-${name}ConstValue`).val(_this[`${name}ConstValue`]) - } else { - $(`#node-config-input-${name}ConstValue`).val("") - _this[`${name}ConstValue`] = "" - } - } + }) })() @@ -126,14 +73,12 @@
    - + -
    diff --git a/node-red-node-wot/src/wot-server-config.ts b/node-red-node-wot/src/wot-server-config.ts index aa069f5..d830c81 100644 --- a/node-red-node-wot/src/wot-server-config.ts +++ b/node-red-node-wot/src/wot-server-config.ts @@ -72,12 +72,10 @@ module.exports = function (RED) { const finish = (payload) => { resolve(payload) } - userNode.send([ - { - _wot: { finish }, - }, - null, - ]) + let msg = { + _wot: { finish }, + } + userNode.send([msg, null]) }) }) if (!props.content.readOnly) { @@ -100,13 +98,10 @@ module.exports = function (RED) { resolve() } } - userNode.send([ - null, - { - _wot: { finish }, - [props.outputAttr]: v, - }, - ]) + let msg = {} + setOutput("msg", props.outputAttr, msg, node.context(), v) + msg["_wot"] = { finish } + userNode.send([null, msg]) }) }) } @@ -119,10 +114,10 @@ module.exports = function (RED) { const finish = (payload) => { resolve(payload) } - userNode.send({ - _wot: { finish }, - [props.outputArgs]: args, - }) + let msg = {} + setOutput("msg", props.outputArgs, msg, node.context(), args) + msg["_wot"] = { finish } + userNode.send(msg) }) }) } @@ -287,9 +282,28 @@ module.exports = function (RED) { }) } - RED.nodes.registerType("wot-server-config", WoTServerConfig, { - credentials: { - bindingConfig: { type: "object" }, - }, - }) + RED.nodes.registerType("wot-server-config", WoTServerConfig) + + const setOutput = (type, valueName, msg, context, value) => { + if (type === "msg") { + const names = valueName.split(".") + let target = msg + for (let i = 0; i < names.length - 1; i++) { + let n = names[i] + if (target[n] && target[n] instanceof Object) { + target = target[n] + } else { + target[n] = {} + target = target[n] + } + } + target[names[names.length - 1]] = value + } else if (type === "node") { + context.set(valueName, value) + } else if (type === "flow") { + context.flow.set(valueName, value) + } else if (type === "global") { + context.global.set(valueName, value) + } + } } diff --git a/node-red-node-wot/src/wot-server-end.html b/node-red-node-wot/src/wot-server-end.html index 7ac3c6c..ef8a0b0 100644 --- a/node-red-node-wot/src/wot-server-end.html +++ b/node-red-node-wot/src/wot-server-end.html @@ -7,14 +7,13 @@ name: { value: "" }, inParams_returnValueType: { value: "msg", + required: true }, inParams_returnValueConstValue: { value: "payload", + required: true }, }, - credentials: { - inParams_returnValue: { type: "text" }, - }, inputs: 1, outputs: 0, icon: "arrow.png", @@ -45,66 +44,14 @@ label: this._("editor.inParams.tabLabel"), }) - prepareInOutParamSetting( - "inParams", - { - name: "returnValue", - types: ["msg"], - defaultType: "msg", - defaultValue: "payload", - required: true, - }, - this - ) - }, - oneditsave: function () { - saveInOutParamSetting( - "inParams", - { - name: "returnValue", - types: ["msg", "str", "num", "env"], - defaultType: "str", - defaultValue: "payload", - required: true, - }, - this - ) + $("#node-input-inParams_returnValueConstValue").typedInput({ + defaultType: "msg", + defaultValue: "payload", + types: ["msg"], + typeField: "#node-input-inParams_returnValueType", + }) }, }) - const prepareInOutParamSetting = (inOrOutParams, params, _this) => { - const { name, types, defaultType, defaultValue, required } = params - const varName = `${inOrOutParams}_${name}` - if (!_this[`${varName}Type`]) { - _this[`${varName}Type`] = defaultType - } - if (this[`${varName}Type`] == "str") { - $(`#node-input-${varName}ConstValue`).val("") - } else { - if (_this[`${varName}ConstValue`] == "") { - $(`#node-input-${varName}ConstValue`).val(_this.credentials[varName]) - } else { - _this.credentials[varName] = _this[`${varName}ConstValue`] - $(`#node-input-${varName}`).val(_this.credentials[`${varName}`]) - } - } - $(`#node-input-${varName}Type`).val(_this[`${varName}Type`]) - $(`#node-input-${varName}`).typedInput({ - default: defaultType, - typeField: $(`#node-input-${varName}Type`), - types: types, - }) - $(`#node-input-${varName}`).typedInput("type", _this[`${varName}Type`]) - } - const saveInOutParamSetting = (inOrOutParams, params, _this) => { - const varName = `${inOrOutParams}_${params.name}` - if ($(`#node-input-${varName}Type`).val() != "str") { - _this[`${varName}ConstValue`] = $(`#node-input-${varName}`).val() - $(`#node-input-${varName}ConstValue`).val(_this[`${varName}ConstValue`]) - } else { - $(`#node-input-${varName}ConstValue`).val("") - _this[`${varName}ConstValue`] = "" - } - } })() @@ -122,17 +69,15 @@
    - -
    diff --git a/node-red-node-wot/src/wot-server-end.ts b/node-red-node-wot/src/wot-server-end.ts index 6af98c1..42eb2bf 100644 --- a/node-red-node-wot/src/wot-server-end.ts +++ b/node-red-node-wot/src/wot-server-end.ts @@ -5,7 +5,6 @@ module.exports = function (RED) { node.on("input", async (msg, send, done) => { try { - node.inParams_returnValue = node.credentials.inParams_returnValue if (config.inParams_returnValueConstValue && config.inParams_returnValueType) { node.inParams_returnValue = RED.util.evaluateNodeProperty( config.inParams_returnValueConstValue, @@ -30,32 +29,5 @@ module.exports = function (RED) { done() }) } - RED.nodes.registerType("wot-server-end", WoTServerEnd, { - credentials: { - inParams_propertyName: { type: "text" }, - }, - }) - - const setOutput = (type, valueName, msg, context, value) => { - if (type === "msg") { - const names = valueName.split(".") - let target = msg - for (let i = 0; i < names.length - 1; i++) { - let n = names[i] - if (target[n] && target[n] instanceof Object) { - target = target[n] - } else { - target[n] = {} - target = target[n] - } - } - target[names[names.length - 1]] = value - } else if (type === "node") { - context.set(valueName, value) - } else if (type === "flow") { - context.flow.set(valueName, value) - } else if (type === "global") { - context.global.set(valueName, value) - } - } + RED.nodes.registerType("wot-server-end", WoTServerEnd) } diff --git a/node-red-node-wot/src/wot-server-event.html b/node-red-node-wot/src/wot-server-event.html index ffef77a..b322ab0 100644 --- a/node-red-node-wot/src/wot-server-event.html +++ b/node-red-node-wot/src/wot-server-event.html @@ -10,9 +10,11 @@ eventDataType: { value: "string", required: true }, inParams_eventValueType: { value: "msg", + required: true }, inParams_eventValueConstValue: { value: "payload", + required: true }, woTServerConfig: { type: "wot-server-config", @@ -25,9 +27,6 @@ required: true, }, }, - credentials: { - inParams_eventValue: { type: "text" }, - }, inputs: 1, outputs: 0, icon: "arrow.png", @@ -57,66 +56,14 @@ label: this._("editor.inParams.tabLabel"), }) - prepareInOutParamSetting( - "inParams", - { - name: "eventValue", - types: ["msg"], - defaultType: "msg", - defaultValue: "payload", - required: true, - }, - this - ) - }, - oneditsave: function () { - saveInOutParamSetting( - "inParams", - { - name: "eventValue", - types: ["msg"], - defaultType: "msg", - defaultValue: "payload", - required: true, - }, - this - ) + $("#node-input-inParams_eventValueConstValue").typedInput({ + defaultType: "msg", + defaultValue: "payload", + types: ["msg"], + typeField: "#node-input-inParams_eventValueType", + }) }, }) - const prepareInOutParamSetting = (inOrOutParams, params, _this) => { - const { name, types, defaultType, defaultValue, required } = params - const varName = `${inOrOutParams}_${name}` - if (!_this[`${varName}Type`]) { - _this[`${varName}Type`] = defaultType - } - if (this[`${varName}Type`] == "str") { - $(`#node-input-${varName}ConstValue`).val("") - } else { - if (_this[`${varName}ConstValue`] == "") { - $(`#node-input-${varName}ConstValue`).val(_this.credentials[varName]) - } else { - _this.credentials[varName] = _this[`${varName}ConstValue`] - $(`#node-input-${varName}`).val(_this.credentials[`${varName}`]) - } - } - $(`#node-input-${varName}Type`).val(_this[`${varName}Type`]) - $(`#node-input-${varName}`).typedInput({ - default: defaultType, - typeField: $(`#node-input-${varName}Type`), - types: types, - }) - $(`#node-input-${varName}`).typedInput("type", _this[`${varName}Type`]) - } - const saveInOutParamSetting = (inOrOutParams, params, _this) => { - const varName = `${inOrOutParams}_${params.name}` - if ($(`#node-input-${varName}Type`).val() != "str") { - _this[`${varName}ConstValue`] = $(`#node-input-${varName}`).val() - $(`#node-input-${varName}ConstValue`).val(_this[`${varName}ConstValue`]) - } else { - $(`#node-input-${varName}ConstValue`).val("") - _this[`${varName}ConstValue`] = "" - } - } })() @@ -165,10 +112,9 @@
    - - + + -
    diff --git a/node-red-node-wot/src/wot-server-event.ts b/node-red-node-wot/src/wot-server-event.ts index 1e3f82b..38d87b6 100644 --- a/node-red-node-wot/src/wot-server-event.ts +++ b/node-red-node-wot/src/wot-server-event.ts @@ -36,7 +36,6 @@ module.exports = function (RED) { try { const woTServerConfig = RED.nodes.getNode(config.woTServerConfig) - node.inParams_eventValue = node.credentials.inParams_eventValue if (config.inParams_eventValueConstValue && config.inParams_eventValueType) { node.inParams_eventValue = RED.util.evaluateNodeProperty( config.inParams_eventValueConstValue, @@ -69,32 +68,5 @@ module.exports = function (RED) { const woTServerConfig = RED.nodes.getNode(config.woTServerConfig) woTServerConfig?.addUserNode(node) } - RED.nodes.registerType("wot-server-event", WoTServerEvent, { - credentials: { - inParams_eventValue: { type: "text" }, - }, - }) - - const setOutput = (type, valueName, msg, context, value) => { - if (type === "msg") { - const names = valueName.split(".") - let target = msg - for (let i = 0; i < names.length - 1; i++) { - let n = names[i] - if (target[n] && target[n] instanceof Object) { - target = target[n] - } else { - target[n] = {} - target = target[n] - } - } - target[names[names.length - 1]] = value - } else if (type === "node") { - context.set(valueName, value) - } else if (type === "flow") { - context.flow.set(valueName, value) - } else if (type === "global") { - context.global.set(valueName, value) - } - } + RED.nodes.registerType("wot-server-event", WoTServerEvent) } diff --git a/node-red-node-wot/src/wot-server-property.html b/node-red-node-wot/src/wot-server-property.html index bdf3617..716d9e0 100644 --- a/node-red-node-wot/src/wot-server-property.html +++ b/node-red-node-wot/src/wot-server-property.html @@ -12,9 +12,11 @@ propertyObservableFlag: { value: true, required: true }, outParams2_writingValueType: { value: "msg", + required: true, }, outParams2_writingValueConstValue: { value: "payload", + required: true, }, woTServerConfig: { type: "wot-server-config", @@ -27,9 +29,6 @@ required: true, }, }, - credentials: { - outParams2_writingValue: { type: "text" }, - }, inputs: 1, outputs: 2, outputLabels: function (index) { @@ -62,66 +61,14 @@ label: this._("editor.outParams2.tabLabel"), }) - prepareInOutParamSetting( - "outParams2", - { - name: "writingValue", - types: ["msg"], - defaultType: "msg", - defaultValue: "payload", - required: true, - }, - this - ) - }, - oneditsave: function () { - saveInOutParamSetting( - "outParams2", - { - name: "writingValue", - types: ["msg"], - defaultType: "msg", - defaultValue: "payload", - required: true, - }, - this - ) + $("#node-input-outParams2_writingValueConstValue").typedInput({ + defaultType: "msg", + defaultValue: "payload", + types: ["msg"], + typeField: "#node-input-outParams2_writingValueType", + }) }, }) - const prepareInOutParamSetting = (inOrOutParams, params, _this) => { - const { name, types, defaultType, defaultValue, required } = params - const varName = `${inOrOutParams}_${name}` - if (!_this[`${varName}Type`]) { - _this[`${varName}Type`] = defaultType - } - if (this[`${varName}Type`] == "str") { - $(`#node-input-${varName}ConstValue`).val("") - } else { - if (_this[`${varName}ConstValue`] == "") { - $(`#node-input-${varName}ConstValue`).val(_this.credentials[varName]) - } else { - _this.credentials[varName] = _this[`${varName}ConstValue`] - $(`#node-input-${varName}`).val(_this.credentials[`${varName}`]) - } - } - $(`#node-input-${varName}Type`).val(_this[`${varName}Type`]) - $(`#node-input-${varName}`).typedInput({ - default: defaultType, - typeField: $(`#node-input-${varName}Type`), - types: types, - }) - $(`#node-input-${varName}`).typedInput("type", _this[`${varName}Type`]) - } - const saveInOutParamSetting = (inOrOutParams, params, _this) => { - const varName = `${inOrOutParams}_${params.name}` - if ($(`#node-input-${varName}Type`).val() != "str") { - _this[`${varName}ConstValue`] = $(`#node-input-${varName}`).val() - $(`#node-input-${varName}ConstValue`).val(_this[`${varName}ConstValue`]) - } else { - $(`#node-input-${varName}ConstValue`).val("") - _this[`${varName}ConstValue`] = "" - } - } })() @@ -179,10 +126,9 @@
    - - + + -
    diff --git a/node-red-node-wot/src/wot-server-property.ts b/node-red-node-wot/src/wot-server-property.ts index 76ab7af..c002f96 100644 --- a/node-red-node-wot/src/wot-server-property.ts +++ b/node-red-node-wot/src/wot-server-property.ts @@ -62,32 +62,5 @@ module.exports = function (RED) { const woTServerConfig = RED.nodes.getNode(config.woTServerConfig) woTServerConfig?.addUserNode(node) } - RED.nodes.registerType("wot-server-property", WoTServerProperty, { - credentials: { - outParams2_writingValue: { type: "text" }, - }, - }) - - const setOutput = (type, valueName, msg, context, value) => { - if (type === "msg") { - const names = valueName.split(".") - let target = msg - for (let i = 0; i < names.length - 1; i++) { - let n = names[i] - if (target[n] && target[n] instanceof Object) { - target = target[n] - } else { - target[n] = {} - target = target[n] - } - } - target[names[names.length - 1]] = value - } else if (type === "node") { - context.set(valueName, value) - } else if (type === "flow") { - context.flow.set(valueName, value) - } else if (type === "global") { - context.global.set(valueName, value) - } - } + RED.nodes.registerType("wot-server-property", WoTServerProperty) } diff --git a/node-red-node-wot/src/wot-server-td.html b/node-red-node-wot/src/wot-server-td.html index 99ba7a4..55310fb 100644 --- a/node-red-node-wot/src/wot-server-td.html +++ b/node-red-node-wot/src/wot-server-td.html @@ -26,9 +26,6 @@ required: true, }, }, - credentials: { - outParams1_td: { type: "text" }, - }, inputs: 1, outputs: 1, icon: "arrow.png", @@ -43,7 +40,6 @@ }, onpaletteadd: function () {}, oneditprepare: function () { - console.log("node oneditprepare") // Tab const tabs = RED.tabs.create({ id: "red-tabs", @@ -58,66 +54,14 @@ label: this._("editor.outParams1.tabLabel"), }) - prepareInOutParamSetting( - "outParams1", - { - name: "td", - types: ["msg"], - defaultType: "msg", - defaultValue: "payload", - required: true, - }, - this - ) - }, - oneditsave: function () { - saveInOutParamSetting( - "outParams1", - { - name: "td", - types: ["msg"], - defaultType: "msg", - defaultValue: "payload", - required: true, - }, - this - ) + $("#node-input-outParams1_tdConstValue").typedInput({ + defaultType: "msg", + defaultValue: "payload", + types: ["msg"], + typeField: "#node-input-outParams1_tdType", + }) }, }) - const prepareInOutParamSetting = (inOrOutParams, params, _this) => { - const { name, types, defaultType, defaultValue, required } = params - const varName = `${inOrOutParams}_${name}` - if (!_this[`${varName}Type`]) { - _this[`${varName}Type`] = defaultType - } - if (this[`${varName}Type`] == "str") { - $(`#node-input-${varName}ConstValue`).val("") - } else { - if (_this[`${varName}ConstValue`] == "") { - $(`#node-input-${varName}ConstValue`).val(_this.credentials[varName]) - } else { - _this.credentials[varName] = _this[`${varName}ConstValue`] - $(`#node-input-${varName}`).val(_this.credentials[`${varName}`]) - } - } - $(`#node-input-${varName}Type`).val(_this[`${varName}Type`]) - $(`#node-input-${varName}`).typedInput({ - default: defaultType, - typeField: $(`#node-input-${varName}Type`), - types: types, - }) - $(`#node-input-${varName}`).typedInput("type", _this[`${varName}Type`]) - } - const saveInOutParamSetting = (inOrOutParams, params, _this) => { - const varName = `${inOrOutParams}_${params.name}` - if ($(`#node-input-${varName}Type`).val() != "str") { - _this[`${varName}ConstValue`] = $(`#node-input-${varName}`).val() - $(`#node-input-${varName}ConstValue`).val(_this[`${varName}ConstValue`]) - } else { - $(`#node-input-${varName}ConstValue`).val("") - _this[`${varName}ConstValue`] = "" - } - } })() @@ -149,10 +93,9 @@
    - - + + -
    diff --git a/node-red-node-wot/src/wot-server-td.ts b/node-red-node-wot/src/wot-server-td.ts index 47002ff..959567c 100644 --- a/node-red-node-wot/src/wot-server-td.ts +++ b/node-red-node-wot/src/wot-server-td.ts @@ -46,32 +46,5 @@ module.exports = function (RED) { const woTServerConfig = RED.nodes.getNode(config.woTServerConfig) woTServerConfig?.addUserNode(node) } - RED.nodes.registerType("wot-server-td", WoTServerTD, { - credentials: { - outParams1_td: { type: "text" }, - }, - }) - - const setOutput = (type, valueName, msg, context, value) => { - if (type === "msg") { - const names = valueName.split(".") - let target = msg - for (let i = 0; i < names.length - 1; i++) { - let n = names[i] - if (target[n] && target[n] instanceof Object) { - target = target[n] - } else { - target[n] = {} - target = target[n] - } - } - target[names[names.length - 1]] = value - } else if (type === "node") { - context.set(valueName, value) - } else if (type === "flow") { - context.flow.set(valueName, value) - } else if (type === "global") { - context.global.set(valueName, value) - } - } + RED.nodes.registerType("wot-server-td", WoTServerTD) } diff --git a/node-red-node-wot/src/wot-thing-config.html b/node-red-node-wot/src/wot-thing-config.html index ff8a745..46b2baf 100644 --- a/node-red-node-wot/src/wot-thing-config.html +++ b/node-red-node-wot/src/wot-thing-config.html @@ -10,7 +10,6 @@ basicAuthUsername: { value:"", required:false }, basicAuthPassword: { value:"", required:false }, }, - credentials: {}, label: function () { return this.name || this._("editor.configLabel") }, @@ -30,42 +29,7 @@ // Toggle username and password when basic auth is enabled/disabled $basicAuth.change(toggleBasicAuthContainer) }, - oneditsave: function () {}, }) - - const createInOutParamSetting = (params, _this) => { - const { name, types, defaultType, defaultValue, required } = params - if (!_this[name + "Type"]) { - _this[name + "Type"] = defaultType - } - if (_this[name + "Type"] == "str") { - $(`#node-config-input-${name}ConstValue`).val("") - } else { - if (_this[name + "ConstValue"] == "") { - $(`#node-config-input-${name}ConstValue`).val(_this.credentials[name]) - } else { - _this.credentials[name] = _this[name + "ConstValue"] - $(`#node-config-input-${name}`).val(_this.credentials[name]) - } - } - $(`#node-config-input-${name}Type`).val(_this[name + "Type"]) - $(`#node-config-input-${name}`).typedInput({ - default: defaultType, - typeField: $(`#node-config-input-${name}Type`), - types: types, - }) - $(`#node-config-input-${name}`).typedInput("type", _this[name + "Type"]) - } - const saveInOutParamSetting = (params, _this) => { - const { name } = params - if ($(`#node-config-input-${name}Type`).val() != "str") { - _this[`${name}ConstValue`] = $(`#node-config-input-${name}`).val() - $(`#node-config-input-${name}ConstValue`).val(_this[`${name}ConstValue`]) - } else { - $(`#node-config-input-${name}ConstValue`).val("") - _this[`${name}ConstValue`] = "" - } - } })() diff --git a/node-red-node-wot/src/wot-thing-config.ts b/node-red-node-wot/src/wot-thing-config.ts index a780c24..b0a3482 100644 --- a/node-red-node-wot/src/wot-thing-config.ts +++ b/node-red-node-wot/src/wot-thing-config.ts @@ -24,7 +24,5 @@ module.exports = function (RED) { } } - RED.nodes.registerType("wot-thing-config", WoTThingConfig, { - credentials: {}, - }) + RED.nodes.registerType("wot-thing-config", WoTThingConfig) } diff --git a/node-red-node-wot/src/wot-update-td.html b/node-red-node-wot/src/wot-update-td.html index ae04e7d..a88c251 100644 --- a/node-red-node-wot/src/wot-update-td.html +++ b/node-red-node-wot/src/wot-update-td.html @@ -26,7 +26,7 @@ $("#node-input-tdSource").typedInput({ defaultType: "msg", defaultValue: "payload", - types: ["msg"], + types: ["msg", "json", "str"], typeField: "#node-input-tdSourceType", }) diff --git a/node-red-node-wot/src/wot-update-td.js b/node-red-node-wot/src/wot-update-td.js index e978173..6fbbaef 100644 --- a/node-red-node-wot/src/wot-update-td.js +++ b/node-red-node-wot/src/wot-update-td.js @@ -26,6 +26,7 @@ module.exports = function (RED) { if (config.tdSource && config.tdSourceType) { try { td = await RED.util.evaluateNodeProperty(config.tdSource, config.tdSourceType, node, msg) + console.log("*** update td:", td) } catch (err) { return done("cannot evaluate td source") } From dd64c3734ec9c4e5431c80865033da8ab2487ea9 Mon Sep 17 00:00:00 2001 From: hidetak Date: Thu, 21 Mar 2024 23:17:40 +0900 Subject: [PATCH 06/10] modified for pass lint and format codes --- .../src/locales/en-US/wot-thing-config.html | 6 +++--- .../src/locales/ja/wot-thing-config.html | 4 ++-- node-red-node-wot/src/wot-event.js | 2 +- node-red-node-wot/src/wot-property.js | 2 +- node-red-node-wot/src/wot-server-action.html | 4 ++-- node-red-node-wot/src/wot-server-config.html | 11 ++++++++--- node-red-node-wot/src/wot-server-end.html | 4 ++-- node-red-node-wot/src/wot-server-event.html | 4 ++-- node-red-node-wot/src/wot-thing-config.html | 6 +++--- 9 files changed, 24 insertions(+), 19 deletions(-) diff --git a/node-red-node-wot/src/locales/en-US/wot-thing-config.html b/node-red-node-wot/src/locales/en-US/wot-thing-config.html index 93aaaf7..2346340 100644 --- a/node-red-node-wot/src/locales/en-US/wot-thing-config.html +++ b/node-red-node-wot/src/locales/en-US/wot-thing-config.html @@ -11,12 +11,12 @@

    Details

  • Description: Specify the description of the Thing.
  • - Thing ID: Specify the Thing ID. The specified Thing ID is used as the ID for Thing Description. - If omitted, the ID for Thing Description is automatically generated.
    + Thing ID: Specify the Thing ID. The specified Thing ID is used as the ID for Thing Description. If omitted, + the ID for Thing Description is automatically generated.
    Example of Thing ID: "urn:dev:ops:32473-WoTLamp-1234"
  • - Use basic authentication: Specifies whether Basic authentication is applied to the Thing.
    + Use basic authentication: Specifies whether Basic authentication is applied to the Thing.
    If you use Basic Authentication, please set your user name and password.
  • diff --git a/node-red-node-wot/src/locales/ja/wot-thing-config.html b/node-red-node-wot/src/locales/ja/wot-thing-config.html index 04afa04..28d3d81 100644 --- a/node-red-node-wot/src/locales/ja/wot-thing-config.html +++ b/node-red-node-wot/src/locales/ja/wot-thing-config.html @@ -12,11 +12,11 @@

    Details

  • 説明: Thingの説明を指定します。
  • Thing ID: Thing IDを指定します。指定したThing IDは、Thing - DescriptionのIDとして利用します。省略した場合は、Thing DescriptionのIDは自動的に生成されます。
    + DescriptionのIDとして利用します。省略した場合は、Thing DescriptionのIDは自動的に生成されます。
    Thing IDの例: "urn:dev:ops:32473-WoTLamp-1234"
  • - Basic認証利用: ThingにBasic認証をかけるかどうかを指定します。
    + Basic認証利用: ThingにBasic認証をかけるかどうかを指定します。
    Basic認証を利用する場合は、ユーザー名とパスワードを設定してください。
  • diff --git a/node-red-node-wot/src/wot-event.js b/node-red-node-wot/src/wot-event.js index 0afebc4..ba7a639 100644 --- a/node-red-node-wot/src/wot-event.js +++ b/node-red-node-wot/src/wot-event.js @@ -31,7 +31,7 @@ module.exports = function (RED) { subscription = undefined consumedThing = _consumedThing // Repeat until event subscription succeeds. - await new Promise((resolve, reject) => { + await new Promise((resolve) => { repeatId = setInterval(() => { consumedThing .subscribeEvent( diff --git a/node-red-node-wot/src/wot-property.js b/node-red-node-wot/src/wot-property.js index d9f5ee6..9d4e3ed 100644 --- a/node-red-node-wot/src/wot-property.js +++ b/node-red-node-wot/src/wot-property.js @@ -38,7 +38,7 @@ module.exports = function (RED) { return } // Repeat until observeProperty succeeds. - await new Promise((resolve, reject) => { + await new Promise((resolve) => { repeatId = setInterval(() => { consumedThing .observeProperty( diff --git a/node-red-node-wot/src/wot-server-action.html b/node-red-node-wot/src/wot-server-action.html index f6a35d2..c3f20dd 100644 --- a/node-red-node-wot/src/wot-server-action.html +++ b/node-red-node-wot/src/wot-server-action.html @@ -11,11 +11,11 @@ actionOutputDataType: { value: "string", required: true }, outParams1_actionArgsType: { value: "msg", - required: true + required: true, }, outParams1_actionArgsConstValue: { value: "payload", - required: true + required: true, }, woTServerConfig: { type: "wot-server-config", diff --git a/node-red-node-wot/src/wot-server-config.html b/node-red-node-wot/src/wot-server-config.html index 5d03d20..e1d4a5c 100644 --- a/node-red-node-wot/src/wot-server-config.html +++ b/node-red-node-wot/src/wot-server-config.html @@ -50,7 +50,10 @@ $("#node-config-input-bindingType").on("change", () => { const selectedBindingType = $("#node-config-input-bindingType").val() if (selectedBindingType === this.bindingType && this.bindingConfigConstValue !== "{}") { - $("#node-config-input-bindingConfigConstValue").typedInput("value", this.bindingConfigConstValue) + $("#node-config-input-bindingConfigConstValue").typedInput( + "value", + this.bindingConfigConstValue + ) } else { $("#node-config-input-bindingConfigConstValue").typedInput( "value", @@ -58,7 +61,7 @@ ) } }) - } + }, }) })() @@ -73,7 +76,9 @@
    - + Date: Sat, 23 Mar 2024 00:50:14 +0900 Subject: [PATCH 07/10] fix bugs --- node-red-node-wot/src/wot-thing-config.ts | 7 +++++-- node-red-node-wot/src/wot-update-td.html | 2 +- node-red-node-wot/src/wot-update-td.js | 1 - 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/node-red-node-wot/src/wot-thing-config.ts b/node-red-node-wot/src/wot-thing-config.ts index b0a3482..ce47e80 100644 --- a/node-red-node-wot/src/wot-thing-config.ts +++ b/node-red-node-wot/src/wot-thing-config.ts @@ -3,11 +3,14 @@ module.exports = function (RED) { RED.nodes.createNode(this, config) const node = this node.getProps = () => { - return { + let props = { title: config.name, description: config.description, - id: config.thingId, } + if (config.thingId) { + props["id"] = config.thingId + } + return props } node.getCredentials = () => { return { diff --git a/node-red-node-wot/src/wot-update-td.html b/node-red-node-wot/src/wot-update-td.html index a88c251..16c670b 100644 --- a/node-red-node-wot/src/wot-update-td.html +++ b/node-red-node-wot/src/wot-update-td.html @@ -17,7 +17,7 @@ if (this.name) { return this.name } else { - return "Update-TD" + return "update-TD" } }, oneditprepare: function () { diff --git a/node-red-node-wot/src/wot-update-td.js b/node-red-node-wot/src/wot-update-td.js index 6fbbaef..e978173 100644 --- a/node-red-node-wot/src/wot-update-td.js +++ b/node-red-node-wot/src/wot-update-td.js @@ -26,7 +26,6 @@ module.exports = function (RED) { if (config.tdSource && config.tdSourceType) { try { td = await RED.util.evaluateNodeProperty(config.tdSource, config.tdSourceType, node, msg) - console.log("*** update td:", td) } catch (err) { return done("cannot evaluate td source") } From 5387fcdd4b355a29ddc5389c412f86a640346b67 Mon Sep 17 00:00:00 2001 From: hidetak Date: Sat, 23 Mar 2024 01:48:12 +0900 Subject: [PATCH 08/10] modified README --- node-red-node-wot/README.md | 28 +++++++++++++----- .../screenshots/import-example-flows.png | Bin 0 -> 101860 bytes node-red-node-wot/screenshots/nodes.png | Bin 84307 -> 154242 bytes .../screenshots/thing-config-settings.png | Bin 19152 -> 82766 bytes 4 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 node-red-node-wot/screenshots/import-example-flows.png mode change 100755 => 100644 node-red-node-wot/screenshots/nodes.png diff --git a/node-red-node-wot/README.md b/node-red-node-wot/README.md index ea3aad6..4135a4e 100644 --- a/node-red-node-wot/README.md +++ b/node-red-node-wot/README.md @@ -12,13 +12,15 @@ After installation, the package adds 8 different nodes at the Node-RED palette, Those nodes are as follows and needed to interact with different interaction affordances of a Thing: 1) Read Property node; -2) Write Property node; -3) Invoke Action node; -4) Subscribe Event node; -5) Server-End node; -6) Server-property node; -7) Server-Action node; -8) Server-Event node. +1) Write Property node; +1) Invoke Action node; +1) Subscribe Event node; +1) Update TD node; +1) Server-End node; +1) Server-property node; +1) Server-Action node; +1) Server-Event node; +1) Server-TD node. ![WoT nodes](screenshots/nodes.png) @@ -100,6 +102,8 @@ If you create a new thing config on the properties screen, the following screen Specify the Thing title. The Thing title will be included in the Thing Description. +Description and Thing ID are optional; if Thing ID is not specified, Thing ID will be generated automatically. + Server config and Thing config can be shared across multiple Server-Property, Server-Action, and Server-Event nodes. By sharing configs, you can publish one or more properties, actions, and events to the client as a single Thing. In addition to server config and Thing config, there are necessary settings for each Server-Property, Server-Action, and Server-Event node. For the settings of each node, refer to the node help. Help can be viewed on the Node-RED editor's Help tab. @@ -116,6 +120,14 @@ If you want to check the Thing Description, open the Context Data tab of the Nod ![Reference TD](https://raw.githubusercontent.com/eclipse-thingweb/node-red/main/node-red-node-wot/screenshots/reference-td.png) +The Thing Description can also be obtained using the Server-TD node. + +Also, the client can use the Update TD node to replace the Thing Description. For example, if the server URL is changed, the destination server can be changed without restarting the flow. + +You can get the Example from the Import menu of the Node-RED editor for reference. + +![Import Example Flows](screenshots/import-example-flows.png) + Currently, the supported binding types are HTTP, CoAP, and MQTT. As shown in the table below, each of these types of bindings has its own available/unavailable functions. Available functions are denoted by `✓` and unavailable functions are denoted by `-`. | |http|coap|mqtt| @@ -129,3 +141,5 @@ Currently, the supported binding types are HTTP, CoAP, and MQTT. As shown in the *1: After the connection with the server times out after 1 hour, it is not reconnected Also, it is unclear how to define the flow when the data type is null. + + diff --git a/node-red-node-wot/screenshots/import-example-flows.png b/node-red-node-wot/screenshots/import-example-flows.png new file mode 100644 index 0000000000000000000000000000000000000000..b29cceb723e7d9fd46a23cc538f3454aaa21cd61 GIT binary patch literal 101860 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 literal 0 HcmV?d00001 diff --git a/node-red-node-wot/screenshots/nodes.png b/node-red-node-wot/screenshots/nodes.png old mode 100755 new mode 100644 index 2d4d36043f7ce553b5732403615b046fb461fa35..cc6772631116e1caba7dcf100023c27d888f2e53 GIT binary patch literal 154242 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
  • =+KXr^p`7SPG-fDE_hNOaqjYW8HNBXw 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 F{u_1{Ys>%u diff --git a/node-red-node-wot/screenshots/thing-config-settings.png b/node-red-node-wot/screenshots/thing-config-settings.png index 02e0667c1fb389a8f0ae1ee2d4204ef1168abfcd..0abab08fa5b3fe3bd059657bccc6817cfd0d0551 100644 GIT binary patch literal 82766 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¨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 Q+y?(hiph!QiRgO#FY~lYApigX literal 19152 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 From b9178d321d689dd4ad7dd9e265f4dde7dcd50688 Mon Sep 17 00:00:00 2001 From: hidetak Date: Sat, 23 Mar 2024 01:50:24 +0900 Subject: [PATCH 09/10] add example flows --- .../examples/client-side-flows.json | 302 +++++++++++++ .../examples/server-side-flows.json | 395 ++++++++++++++++++ 2 files changed, 697 insertions(+) create mode 100644 node-red-node-wot/examples/client-side-flows.json create mode 100644 node-red-node-wot/examples/server-side-flows.json diff --git a/node-red-node-wot/examples/client-side-flows.json b/node-red-node-wot/examples/client-side-flows.json new file mode 100644 index 0000000..4eeeed6 --- /dev/null +++ b/node-red-node-wot/examples/client-side-flows.json @@ -0,0 +1,302 @@ +[ + { + "id": "db77b829167cd9b7", + "type": "tab", + "label": "client-side", + "disabled": false, + "info": "", + "env": [] + }, + { + "id": "61630a3c7b474222", + "type": "read-property", + "z": "db77b829167cd9b7", + "name": "", + "topic": "", + "thing": "a18841fe05744488", + "property": "count", + "uriVariables": "{}", + "observe": true, + "x": 460, + "y": 100, + "wires": [ + [ + "322c0bcf28580284" + ] + ] + }, + { + "id": "79fd49c9fbbeb1e7", + "type": "write-property", + "z": "db77b829167cd9b7", + "name": "", + "topic": "", + "thing": "a18841fe05744488", + "property": "count", + "uriVariables": "{}", + "x": 460, + "y": 220, + "wires": [] + }, + { + "id": "93ec4f561fdf3421", + "type": "invoke-action", + "z": "db77b829167cd9b7", + "name": "", + "topic": "", + "thing": "a18841fe05744488", + "action": "upper-case", + "uriVariables": "{}", + "x": 470, + "y": 340, + "wires": [ + [ + "fad6462e13d99af4" + ] + ] + }, + { + "id": "fa02f1dbac1161e9", + "type": "subscribe-event", + "z": "db77b829167cd9b7", + "name": "", + "topic": "", + "thing": "a18841fe05744488", + "event": "exampleEvnet", + "x": 160, + "y": 460, + "wires": [ + [ + "eac3b3f682579b5b" + ] + ] + }, + { + "id": "3f31b3723b36200a", + "type": "update-td", + "z": "db77b829167cd9b7", + "name": "", + "thing": "a18841fe05744488", + "tdSourceType": "msg", + "tdSource": "payload", + "x": 330, + "y": 600, + "wires": [] + }, + { + "id": "eac3b3f682579b5b", + "type": "debug", + "z": "db77b829167cd9b7", + "name": "received event", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "payload", + "targetType": "msg", + "statusVal": "", + "statusType": "auto", + "x": 420, + "y": 460, + "wires": [] + }, + { + "id": "dc716499a751f93f", + "type": "inject", + "z": "db77b829167cd9b7", + "name": "new TD", + "props": [ + { + "p": "payload" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "{\"@context\":[\"https://www.w3.org/2019/wot/td/v1\",\"https://www.w3.org/2022/wot/td/v1.1\",{\"@language\":\"en\"}],\"@type\":\"Thing\",\"title\":\"example-thing\",\"securityDefinitions\":{\"nosec\":{\"scheme\":\"nosec\"}},\"security\":[\"nosec\"],\"properties\":{\"count\":{\"description\":\"count property of example-thing\",\"type\":\"integer\",\"readOnly\":false,\"observable\":true,\"forms\":[{\"href\":\"http://localhost:8080/example-thing/properties/count\",\"contentType\":\"application/json\",\"op\":[\"readproperty\",\"writeproperty\"]},{\"href\":\"http://localhost:8080/example-thing/properties/count/observable\",\"contentType\":\"application/json\",\"op\":[\"observeproperty\",\"unobserveproperty\"],\"subprotocol\":\"longpoll\"},{\"href\":\"http://localhost:8080/example-thing/properties/count\",\"contentType\":\"application/cbor\",\"op\":[\"readproperty\",\"writeproperty\"]},{\"href\":\"http://localhost:8080/example-thing/properties/count/observable\",\"contentType\":\"application/cbor\",\"op\":[\"observeproperty\",\"unobserveproperty\"],\"subprotocol\":\"longpoll\"}],\"writeOnly\":false}},\"actions\":{\"upper-case\":{\"description\":\"change text upper case\",\"input\":{\"type\":\"string\"},\"output\":{\"type\":\"string\"},\"forms\":[{\"href\":\"http://localhost:8080/example-thing/actions/upper-case\",\"contentType\":\"application/json\",\"op\":[\"i.168nvokeaction\"],\"htv:methodName\":\"POST\"},{\"href\":\"http://localhost:8080/example-thing/actions/upper-case\",\"contentType\":\"application/cbor\",\"op\":[\"invokeaction\"],\"htv:methodName\":\"POST\"}],\"idempotent\":false,\"safe\":false}},\"events\":{\"exampleEvnet\":{\"description\":\"event of example-thing\",\"data\":{\"type\":\"string\"},\"forms\":[{\"href\":\"http://localhost:8080/example-thing/events/exampleEvnet\",\"contentType\":\"application/json\",\"subprotocol\":\"longpoll\",\"op\":[\"subscribeevent\",\"unsubscribeevent\"]},{\"href\":\"http://localhost:8080/example-thing/events/exampleEvnet\",\"contentType\":\"application/cbor\",\"subprotocol\":\"longpoll\",\"op\":[\"subscribeevent\",\"unsubscribeevent\"]}]}},\"id\":\"urn:uuid:8c04b6e3-efa9-40eb-afc3-2b21adf2b2fa\",\"description\":\"thing for example\",\"forms\":[{\"href\":\"http://localhost:8080/example-thing/properties\",\"contentType\":\"application/json\",\"op\":[\"readallproperties\",\"readmultipleproperties\",\"writeallproperties\",\"writemultipleproperties\"]},{\"href\":\"http://localhost:8080/example-thing/properties\",\"contentType\":\"application/cbor\",\"op\":[\"readallproperties\",\"readmultipleproperties\",\"writeallproperties\",\"writemultipleproperties\"]}]}", + "payloadType": "json", + "x": 130, + "y": 600, + "wires": [ + [ + "3f31b3723b36200a" + ] + ] + }, + { + "id": "b8623621b379b0c1", + "type": "inject", + "z": "db77b829167cd9b7", + "name": "triggers count property retrieving", + "props": [ + { + "p": "payload" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "", + "payloadType": "str", + "x": 210, + "y": 100, + "wires": [ + [ + "61630a3c7b474222" + ] + ] + }, + { + "id": "322c0bcf28580284", + "type": "debug", + "z": "db77b829167cd9b7", + "name": "value of count property", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "payload", + "targetType": "msg", + "statusVal": "", + "statusType": "auto", + "x": 690, + "y": 100, + "wires": [] + }, + { + "id": "5113a72823dfb569", + "type": "inject", + "z": "db77b829167cd9b7", + "name": "triggers count property writing", + "props": [ + { + "p": "payload" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "999", + "payloadType": "num", + "x": 200, + "y": 220, + "wires": [ + [ + "79fd49c9fbbeb1e7" + ] + ] + }, + { + "id": "50ff215582317f8a", + "type": "inject", + "z": "db77b829167cd9b7", + "name": "triggers action with arguments", + "props": [ + { + "p": "payload" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "Test Text", + "payloadType": "str", + "x": 200, + "y": 340, + "wires": [ + [ + "93ec4f561fdf3421" + ] + ] + }, + { + "id": "fad6462e13d99af4", + "type": "debug", + "z": "db77b829167cd9b7", + "name": "received event", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "payload", + "targetType": "msg", + "statusVal": "", + "statusType": "auto", + "x": 700, + "y": 340, + "wires": [] + }, + { + "id": "7f3d6eb93c5502af", + "type": "comment", + "z": "db77b829167cd9b7", + "name": "Get value of count property", + "info": "", + "x": 180, + "y": 40, + "wires": [] + }, + { + "id": "b938daf466a9911a", + "type": "comment", + "z": "db77b829167cd9b7", + "name": "Write count property value", + "info": "", + "x": 170, + "y": 160, + "wires": [] + }, + { + "id": "9117817f4aacfbea", + "type": "comment", + "z": "db77b829167cd9b7", + "name": "Call to action", + "info": "", + "x": 130, + "y": 280, + "wires": [] + }, + { + "id": "7685f7bd971ff8dc", + "type": "comment", + "z": "db77b829167cd9b7", + "name": "Receives events generated by the server", + "info": "", + "x": 220, + "y": 400, + "wires": [] + }, + { + "id": "f354146ea4e9855b", + "type": "comment", + "z": "db77b829167cd9b7", + "name": "Update TD", + "info": "", + "x": 120, + "y": 540, + "wires": [] + }, + { + "id": "a18841fe05744488", + "type": "consumed-thing", + "tdLink": "", + "td": "{\"@context\":[\"https://www.w3.org/2019/wot/td/v1\",\"https://www.w3.org/2022/wot/td/v1.1\",{\"@language\":\"en\"}],\"@type\":\"Thing\",\"title\":\"example-thing\",\"securityDefinitions\":{\"nosec\":{\"scheme\":\"nosec\"}},\"security\":[\"nosec\"],\"properties\":{\"count\":{\"description\":\"count property of example-thing\",\"type\":\"integer\",\"readOnly\":false,\"observable\":true,\"forms\":[{\"href\":\"http://localhost:8080/example-thing/properties/count\",\"contentType\":\"application/json\",\"op\":[\"readproperty\",\"writeproperty\"]},{\"href\":\"http://localhost:8080/example-thing/properties/count/observable\",\"contentType\":\"application/json\",\"op\":[\"observeproperty\",\"unobserveproperty\"],\"subprotocol\":\"longpoll\"},{\"href\":\"http://localhost:8080/example-thing/properties/count\",\"contentType\":\"application/cbor\",\"op\":[\"readproperty\",\"writeproperty\"]},{\"href\":\"http://localhost:8080/example-thing/properties/count/observable\",\"contentType\":\"application/cbor\",\"op\":[\"observeproperty\",\"unobserveproperty\"],\"subprotocol\":\"longpoll\"}],\"writeOnly\":false}},\"actions\":{\"upper-case\":{\"description\":\"change text upper case\",\"input\":{\"type\":\"string\"},\"output\":{\"type\":\"string\"},\"forms\":[{\"href\":\"http://localhost:8080/example-thing/actions/upper-case\",\"contentType\":\"application/json\",\"op\":[\"i.168nvokeaction\"],\"htv:methodName\":\"POST\"},{\"href\":\"http://localhost:8080/example-thing/actions/upper-case\",\"contentType\":\"application/cbor\",\"op\":[\"invokeaction\"],\"htv:methodName\":\"POST\"}],\"idempotent\":false,\"safe\":false}},\"events\":{\"exampleEvnet\":{\"description\":\"event of example-thing\",\"data\":{\"type\":\"string\"},\"forms\":[{\"href\":\"http://localhost:8080/example-thing/events/exampleEvnet\",\"contentType\":\"application/json\",\"subprotocol\":\"longpoll\",\"op\":[\"subscribeevent\",\"unsubscribeevent\"]},{\"href\":\"http://localhost:8080/example-thing/events/exampleEvnet\",\"contentType\":\"application/cbor\",\"subprotocol\":\"longpoll\",\"op\":[\"subscribeevent\",\"unsubscribeevent\"]}]}},\"id\":\"urn:uuid:8c04b6e3-efa9-40eb-afc3-2b21adf2b2fa\",\"description\":\"thing for example\",\"forms\":[{\"href\":\"http://localhost:8080/example-thing/properties\",\"contentType\":\"application/json\",\"op\":[\"readallproperties\",\"readmultipleproperties\",\"writeallproperties\",\"writemultipleproperties\"]},{\"href\":\"http://localhost:8080/example-thing/properties\",\"contentType\":\"application/cbor\",\"op\":[\"readallproperties\",\"readmultipleproperties\",\"writeallproperties\",\"writemultipleproperties\"]}]}", + "http": true, + "ws": false, + "coap": false, + "mqtt": false, + "opcua": false, + "modbus": false, + "basicAuth": false, + "username": "", + "password": "" + } +] \ No newline at end of file diff --git a/node-red-node-wot/examples/server-side-flows.json b/node-red-node-wot/examples/server-side-flows.json new file mode 100644 index 0000000..3b7fb9d --- /dev/null +++ b/node-red-node-wot/examples/server-side-flows.json @@ -0,0 +1,395 @@ +[ + { + "id": "cf78d0f5c734a1c1", + "type": "tab", + "label": "server-side", + "disabled": false, + "info": "", + "env": [] + }, + { + "id": "202e63ba6adc8a34", + "type": "comment", + "z": "cf78d0f5c734a1c1", + "name": "Notification of server-side property changes", + "info": "", + "x": 250, + "y": 80, + "wires": [] + }, + { + "id": "ada66d68fe81a507", + "type": "comment", + "z": "cf78d0f5c734a1c1", + "name": "Processing in response to read requests", + "info": "", + "x": 840, + "y": 60, + "wires": [] + }, + { + "id": "7973116ae4dd5b38", + "type": "comment", + "z": "cf78d0f5c734a1c1", + "name": "Processing in response to write requests", + "info": "", + "x": 840, + "y": 140, + "wires": [] + }, + { + "id": "55dedaa6ded25815", + "type": "comment", + "z": "cf78d0f5c734a1c1", + "name": "Processing in response to a call to action", + "info": "", + "x": 240, + "y": 240, + "wires": [] + }, + { + "id": "1b9b4b89822a4505", + "type": "comment", + "z": "cf78d0f5c734a1c1", + "name": "Notification of events to clients", + "info": "", + "x": 210, + "y": 360, + "wires": [] + }, + { + "id": "d953be2f767a1189", + "type": "inject", + "z": "cf78d0f5c734a1c1", + "name": "notify property change", + "props": [ + { + "p": "payload" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "", + "payloadType": "str", + "x": 200, + "y": 140, + "wires": [ + [ + "e8a4a494e8f5f37f" + ] + ] + }, + { + "id": "e8a4a494e8f5f37f", + "type": "wot-server-property", + "z": "cf78d0f5c734a1c1", + "name": "count property of example-thing", + "propertyName": "count", + "propertyDescription": "count property of example-thing", + "propertyDataType": "integer", + "propertyReadOnlyFlag": false, + "propertyObservableFlag": true, + "outParams2_writingValueType": "msg", + "outParams2_writingValueConstValue": "payload", + "woTServerConfig": "8ea1eb186841e85e", + "woTThingConfig": "1c0a9615452ce161", + "x": 490, + "y": 140, + "wires": [ + [ + "3cbfdf6405a53157" + ], + [ + "e969b903f974666a" + ] + ] + }, + { + "id": "3cbfdf6405a53157", + "type": "function", + "z": "cf78d0f5c734a1c1", + "name": "property reading process", + "func": "let count = global.get(\"example-thing::count\") || 0\nmsg.payload = count\nreturn msg", + "outputs": 1, + "timeout": 0, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 790, + "y": 100, + "wires": [ + [ + "8cb23c141bd2b38b" + ] + ] + }, + { + "id": "8cb23c141bd2b38b", + "type": "wot-server-end", + "z": "cf78d0f5c734a1c1", + "name": "return to client with count", + "inParams_returnValueType": "msg", + "inParams_returnValueConstValue": "payload", + "x": 1050, + "y": 100, + "wires": [] + }, + { + "id": "e969b903f974666a", + "type": "function", + "z": "cf78d0f5c734a1c1", + "name": "property writing process", + "func": "let count = msg.payload\nglobal.set(\"example-thing::count\", count)\nreturn msg", + "outputs": 1, + "timeout": 0, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 790, + "y": 180, + "wires": [ + [ + "028f6d05faa89b8b" + ] + ] + }, + { + "id": "028f6d05faa89b8b", + "type": "wot-server-end", + "z": "cf78d0f5c734a1c1", + "name": "return to client", + "inParams_returnValueType": "msg", + "inParams_returnValueConstValue": "payload", + "x": 1020, + "y": 180, + "wires": [] + }, + { + "id": "e7ad2187d86fc7c4", + "type": "catch", + "z": "cf78d0f5c734a1c1", + "name": "", + "scope": null, + "uncaught": false, + "x": 140, + "y": 660, + "wires": [ + [ + "01e1f11d37e0ea92" + ] + ] + }, + { + "id": "01e1f11d37e0ea92", + "type": "debug", + "z": "cf78d0f5c734a1c1", + "name": "error", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "true", + "targetType": "full", + "statusVal": "", + "statusType": "auto", + "x": 330, + "y": 660, + "wires": [] + }, + { + "id": "ff3585318a4155cb", + "type": "wot-server-action", + "z": "cf78d0f5c734a1c1", + "name": "upper-case action of example-thing", + "actionName": "upper-case", + "actionDescription": "change text upper case", + "actionInputDataType": "string", + "actionOutputDataType": "string", + "outParams1_actionArgsType": "msg", + "outParams1_actionArgsConstValue": "payload", + "woTServerConfig": "8ea1eb186841e85e", + "woTThingConfig": "1c0a9615452ce161", + "x": 220, + "y": 300, + "wires": [ + [ + "718f49c507b46038" + ] + ] + }, + { + "id": "718f49c507b46038", + "type": "function", + "z": "cf78d0f5c734a1c1", + "name": "property writing process", + "func": "let text = msg.payload\nmsg.payload = text.toUpperCase()\nreturn msg", + "outputs": 1, + "timeout": 0, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 510, + "y": 300, + "wires": [ + [ + "e1433e51ad928ef6" + ] + ] + }, + { + "id": "e1433e51ad928ef6", + "type": "wot-server-end", + "z": "cf78d0f5c734a1c1", + "name": "return to client with return value", + "inParams_returnValueType": "msg", + "inParams_returnValueConstValue": "payload", + "x": 810, + "y": 300, + "wires": [] + }, + { + "id": "741b5cd6ab2cf4b9", + "type": "wot-server-event", + "z": "cf78d0f5c734a1c1", + "name": "send event to client", + "eventName": "exampleEvnet", + "eventDescription": "event of example-thing", + "eventDataType": "string", + "inParams_eventValueType": "msg", + "inParams_eventValueConstValue": "payload", + "woTServerConfig": "8ea1eb186841e85e", + "woTThingConfig": "1c0a9615452ce161", + "x": 410, + "y": 420, + "wires": [] + }, + { + "id": "6ceccdfd164ad23f", + "type": "inject", + "z": "cf78d0f5c734a1c1", + "name": "event occurrence", + "props": [ + { + "p": "payload" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "test-event", + "payloadType": "str", + "x": 180, + "y": 420, + "wires": [ + [ + "741b5cd6ab2cf4b9" + ] + ] + }, + { + "id": "89227d23772205ee", + "type": "comment", + "z": "cf78d0f5c734a1c1", + "name": "Catching exceptions", + "info": "", + "x": 170, + "y": 600, + "wires": [] + }, + { + "id": "b8f65f663573710d", + "type": "comment", + "z": "cf78d0f5c734a1c1", + "name": "Retrieve generated TD (TD can also be retrieved from the global context)", + "info": "", + "x": 340, + "y": 480, + "wires": [] + }, + { + "id": "f2e4e6998c4dfd70", + "type": "wot-server-td", + "z": "cf78d0f5c734a1c1", + "name": "Retrieve generated TD", + "outParams1_tdType": "msg", + "outParams1_tdConstValue": "payload", + "woTServerConfig": "8ea1eb186841e85e", + "woTThingConfig": "1c0a9615452ce161", + "outputTDAfterServerStartFlag": true, + "x": 440, + "y": 540, + "wires": [ + [ + "582194de977619e5" + ] + ] + }, + { + "id": "2971b78046383811", + "type": "inject", + "z": "cf78d0f5c734a1c1", + "name": "triggers TD retrieving", + "props": [ + { + "p": "payload" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "", + "payloadType": "str", + "x": 200, + "y": 540, + "wires": [ + [ + "f2e4e6998c4dfd70" + ] + ] + }, + { + "id": "582194de977619e5", + "type": "debug", + "z": "cf78d0f5c734a1c1", + "name": "TD", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "payload", + "targetType": "msg", + "statusVal": "", + "statusType": "auto", + "x": 650, + "y": 540, + "wires": [] + }, + { + "id": "8ea1eb186841e85e", + "type": "wot-server-config", + "name": "HttpServer", + "bindingType": "http", + "bindingConfigType": "json", + "bindingConfigConstValue": "{\"port\":8080,\"allowSelfSigned\":true}" + }, + { + "id": "1c0a9615452ce161", + "type": "wot-thing-config", + "name": "example-thing", + "description": "thing for example", + "thingId": "", + "basicAuth": false, + "basicAuthUsername": "", + "basicAuthPassword": "" + } +] \ No newline at end of file From ab15b2a35aa631494a514efadfbb6863736d014f Mon Sep 17 00:00:00 2001 From: hidetak Date: Sat, 23 Mar 2024 02:23:20 +0900 Subject: [PATCH 10/10] change support node version and package version --- node-red-node-wot/package-lock.json | 6 +++--- node-red-node-wot/package.json | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/node-red-node-wot/package-lock.json b/node-red-node-wot/package-lock.json index 004a63b..25e41e5 100644 --- a/node-red-node-wot/package-lock.json +++ b/node-red-node-wot/package-lock.json @@ -1,12 +1,12 @@ { "name": "@thingweb/node-red-node-wot", - "version": "1.0.1", + "version": "1.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@thingweb/node-red-node-wot", - "version": "1.0.1", + "version": "1.1.0", "license": "MIT", "dependencies": { "@node-wot/binding-coap": "0.8.12", @@ -36,7 +36,7 @@ "typescript": "^4.9.5" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@babel/code-frame": { diff --git a/node-red-node-wot/package.json b/node-red-node-wot/package.json index da8fdb5..bfc3784 100644 --- a/node-red-node-wot/package.json +++ b/node-red-node-wot/package.json @@ -1,6 +1,6 @@ { "name": "@thingweb/node-red-node-wot", - "version": "1.0.1", + "version": "1.1.0", "description": "Web of Things nodes for Node-RED using node-wot", "author": "Eclipse Thingweb (https://thingweb.io/)", "license": "MIT", @@ -12,7 +12,7 @@ "node-red" ], "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" }, "repository": { "type": "git",
  • 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ண+u?D&yCu`}nAtZ4`h~UKzrg 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 J_PJ|!{|hw#id+By literal 84307 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