Node-Red之创建一个简单的Node

创建一个简单的Node,可以将输入的数据转换成小写。

初始化一个npm 项目

  1. 执行命令
npm init

执行过程:

# wjy @ qifang in ~/gitProjects/node-red-dev [21:49:17]
$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (red-dev) node-red-contrib-example-lower-case
version: (1.0.0)
description: node-red-contrib-example-lower-case
entry point: (index.js) lower-case.js
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to /Users/wjy/gitProjects/node-red-dev/package.json:

{
  "name": "node-red-contrib-example-lower-case",
  "version": "1.0.0",
  "description": "node-red-contrib-example-lower-case",
  "main": "lower-case.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}


Is this OK? (yes)

这样一个简单的 npm 进行包管理的项目就算建成了。

在package.json文件中添加 node-red 的信息

将如下代码添加到package.json

"node-red" : {
        "nodes": {
            "lower-case": "lower-case.js"
        }
    }

这里可以指名这个node包含了哪些文件。

更新后的package.json文件为:

{
  "name": "node-red-contrib-example-lower-case",
  "version": "1.0.0",
  "description": "node-red-contrib-example-lower-case",
  "main": "lower-case.j",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "node-red": {
    "nodes": {
      "lower-case": "lower-case.js"
    }
  },
  "author": "",
  "license": "ISC"
}

创建lower-case 节点的 js 和 html 文件

# wjy @ qifang in ~/gitProjects/node-red-dev/lower-case [22:01:03]
$ touch lower-case.js lower-case.html

# wjy @ qifang in ~/gitProjects/node-red-dev/lower-case [22:01:13]
$ ll
total 8
-rw-r--r--  1 wjy  staff     0B  3  2 22:01 lower-case.html
-rw-r--r--  1 wjy  staff     0B  3  2 22:01 lower-case.js
-rw-r--r--  1 wjy  staff   270B  3  2 21:50 package.json

这样一个Node的基本雏型已经有了。

编写 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);
}
  • 这里将这个节点被封装为Node.js模块。
    这个模块导出的函数,会在node-red启动并加载节点时被调用。

参数RED为模块提供对Node-RED运行时api的访问权限。

  • 这里 node.on('input', function(msg)将节点注册input事件的侦听器,每当消息到达节点时,这个事件就会被调用,然后它将有效的输入转换为小写,然后调用send函数以在流中传递消息。
  • 这里 RED.nodes.registerType("lower-case",LowerCaseNode);lower-case这个名字将 LowerCaseNode注册到Node-Red.

编写 lower-case.html

定义编辑器的节点
<script type="text/javascript">
    RED.nodes.registerType('lower-case',{
        category: 'function',
        color: '#a6bbcf',
        defaults: {
            name: {value:""}
        },
        inputs:1,
        outputs:1,
        icon: "file.png",
        label: function() {
            return this.name||"lower-case";
        }
    });
</script>

<script type="text/html" data-template-name="lower-case">
    <div class="form-row">
        <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
        <input type="text" id="node-input-name" placeholder="Name">
    </div>
</script>

<script type="text/html" data-help-name="lower-case">
    <p>A simple node that converts the message payloads into all lower-case characters</p>
</script>

将这个节点安装到当前的Node-Red

  1. ~/.node-red执行安装
npm i ~/gitProjects/node-red-dev/lower-case

执行过程:

# wjy @ bogon in ~/.node-red [22:34:12]
$ npm i ~/gitProjects/node-red-dev/lower-case
npm notice created a lockfile as package-lock.json. You should commit this file.
+ node-red-contrib-example-lower-case@1.0.0
added 1 package in 0.73s

  1. 重新启动Node-Red
wjy @ wujiayudeMBP in ~/gitProjects/node-red on git:master x [22:34:58] 
$ npm run start

> node-red@1.2.3 start /Users/wjy/gitProjects/node-red
> node packages/node_modules/node-red/red.js

2 Mar 22:35:01 - [info] 

Welcome to Node-RED
===================

2 Mar 22:35:01 - [info] Node-RED version: v1.2.3
2 Mar 22:35:01 - [info] Node.js  version: v12.9.1
2 Mar 22:35:01 - [info] Darwin 20.3.0 x64 LE
2 Mar 22:35:01 - [info] Loading palette nodes
2 Mar 22:35:02 - [info] Settings file  : /Users/wjy/.node-red/settings.js
2 Mar 22:35:02 - [info] Context store  : 'default' [module=memory]
2 Mar 22:35:02 - [info] User directory : /Users/wjy/.node-red
2 Mar 22:35:02 - [warn] Projects disabled : editorTheme.projects.enabled=false
2 Mar 22:35:02 - [info] Flows file     : /Users/wjy/.node-red/flows_bogon.json
2 Mar 22:35:02 - [info] Creating new flow file
2 Mar 22:35:02 - [warn] 

---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.

If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.

You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------

2 Mar 22:35:02 - [info] Starting flows
2 Mar 22:35:02 - [info] Started flows
2 Mar 22:35:02 - [info] Server now running at http://127.0.0.1:1880/
  1. 查看新节点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sMdHGxwg-1614768754065)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p1261)]

配置使用这个简单的节点

  1. 配置需要转换的数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wcygFXqD-1614768754068)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p1262)]

  1. 连接lower-case节点
  2. 点击部署后开始执行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qeSFjDhq-1614768754070)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p1263)]

  1. 查看结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aBM2wehI-1614768754072)(evernotecid://621D2FF6-4E72-4E02-9043-55F31F42819B/appyinxiangcom/22553815/ENResource/p1264)]

这样一个简单的Node就完成了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Node-RED是工业网物联网的重要组成部分,我最开始接触Node-RED,也算是一个偶然的机会吧,上班后领导安排我的第一个任务就是调研一下Node-RED,我之后上网查了一下,那个时候网上相对于Node-RED的资料也比较少,只知道它是IBM公司的一个开源项目。直到最近,发现许多大公司的产品都支持Node-RED,比如西门子公司的IoT2000,研华公司的WISE PaaS 网关,美国OPTO 22等设备中都安装了Node-RED,表明它在工业物联网和控制中已经广泛应用了。 那么工业物联网为什么要用它?它又处于工业物联网那个层次?它具有哪些特性?它帮助物联网解决了什么问题?为什么说它是柔性动态可重构的解决方案呢? ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 本门课程,老师将带领你从Node-RED的发展,工业物联网定位开始讲解,并带领着大家进行手把手安装Node-RED,实际操作演练Node-RED,并搭建一个物联网小平台,给大家带来更好的学习效果。  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 为了能够让小伙伴们快速了解本门课程的结构,本门课程从以下几个方面展开:Node-RED入门Node-RED安装与配置Node-RED教学实战Node-RED的优势与不足Node-RED能为我们带来什么Node-RED总结与展望

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值