node-威尼斯人最新

nodered · 2020年08月27日 · 777 次閱讀

node-red 提供了很多 node,这篇文章介绍一下定制化 node 的使用方法。

事前准备

以容器方式启动 node-red 服务,启动命令如下所示:

启动命令:docker run -it -p 1880:1880 -v $pwd/data:/data -e tz=asia/shanghai --name nodered -d nodered/node-red:1.0.4

定制化 node 的使用方式

定制化 node 相关的文件主要有如下相关:

html 文件:node 的种类说明以及显示相关的信息(必须) js 文件:node 的功能实现(必须) package.json:因为 node-red 仍然是使用 npm 进行包的管理,需要符合相应的规范(可选)

部署方式

最简单的方式莫过于直接将相应的 html 文件和 js 文件直接放入如下目录或者其子目录中:

放置目录:node-red/node_modules/@node-red/nodes/

也可以将自己的组件使用 npm 进行打包,然后在 node-red 中进行安装,本文中将直接使用最简单的方式进行验证和说明。

事前准备

node 示例:使用一个可以进行小写转化的定制化 node 示例,这是 node-red 的一个官方示例,基本不做改动,只是为了结果显示清晰,将其种类从 function 设定为 common,这样截图对比的时候不用拖动了。

html 文件内容

liumiaocn:common liumiao$ cat 10-lower-case.html


liumiaocn:common liumiao$

代码说明:上述内容完全使用官方内容,只是将 category 的类别从 function 改为了 common。注意名称命令是为了排序。

js 文件内容

liumiaocn:common liumiao$ cat 10-lower-case.js
module.exports = function(red) {
function lowercasenode(config) {
red.nodes.createnode(this,config);
var node = this;
node.on('input', function(msg) {
msg.payload = msg.payload.tolowercase();
node.send(msg);
});
}
red.nodes.registertype("lower-case",lowercasenode);
}
liumiaocn:common liumiao$

代码说明:整个功能只有 msg.payload.tolowercase();是最为主要的,可以看到是将 payload 的结果直接使用 tolowercase 函数进行转化,所以当 payload 不是 string 类型或者为空时可能会出错,请注意这只是一个官方示例用于进行定制化 node 执行的说明示例。

部署定制化 node

本文示例中将上述名为 lower-case 的 node 放至 common 种类中,首先进入到 node-red 的容器中:

liumiaocn:~ liumiao$ docker exec -it nodered sh
~ $ cd ~/node_modules/@node-red/nodes/core/common
~/node_modules/@node-red/nodes/core/common $ ls
20-inject.html 21-debug.js 25-catch.html 25-status.js 90-comment.html 98-unknown.js
20-inject.js 24-complete.html 25-catch.js 60-link.html 90-comment.js lib
21-debug.html 24-complete.js 25-status.html 60-link.js 98-unknown.html
~/node_modules/@node-red/nodes/core/common $

可以看到其在页面上的显示顺序主要是靠前面的两位数字,所以这里我们也如法炮制,将事前准备的内容放置于此:

~/node_modules/@node-red/nodes/core/common $ vi 10-lower-case.html
~/node_modules/@node-red/nodes/core/common $ vi 10-lower-case.js
~/node_modules/@node-red/nodes/core/common $ ls
10-lower-case.html 20-inject.js 24-complete.html 25-catch.js 60-link.html 90-comment.js lib
10-lower-case.js 21-debug.html 24-complete.js 25-status.html 60-link.js 98-unknown.html
20-inject.html 21-debug.js 25-catch.html 25-status.js 90-comment.html 98-unknown.js
~/node_modules/@node-red/nodes/core/common $

这样部署已经完成,接下来就可以重启并确认结果了

结果确认 重启 node-red 容器 ~/node_modules/@node-red/nodes/core/common $ exit
liumiaocn:~ liumiao$ docker restart nodered
nodered
liumiaocn:~ liumiao$

结果确认 可以在左侧的 common 类别中的第一个即可看到我们新加的名称为 lower case 的 node 了

node 功能确认 根据代码我们知道,这个 node 实现的功能就是 tolowercase,我们创建一个 flow 来进行功能确认。

缺省方式创建如下三个节点并进行连接和部署,执行结果如下所示

原因是因为 input 的数据的类型,这个 node 提供的功能就是需要其 payload 后可以使用 tolowercase 函数,这里我们将其改为 string 即可

重新部署再次执行,可以看到正常动作

但是小写转化的功能并没有确认,改一下字符串的内容

重新部署再次执行,就可以看到被转化为小写字符的输出结果了

来源:

nodered 澳门人威尼斯3966官网:

noderedgithub:

nodered 英文社区:

nodered 中文社区:https://www.iotschool.com/topics/node81

nodered 中文社区 qq 群:8604461

暫無回覆。
需要 登錄 後方可回應,如果你還沒有帳號按這裡 註冊
网站地图