基于node-red工具实现自定义节点

本文参考了node-red官方文档并结合自己的学习过程进行了总结

1.node-red介绍

node-red虚拟化开发工具是一个基于nodejs的可在浏览器上进行开发和设计的iot工具,它本身自带了一部分组件,同时用户也可以根据需要自定义新的组件加入到工具中,这些组件本身可以是硬件设备,web API或者在线服务,通过这些组件用户可以向搭建流程图一样编写自己的应用程序,组件本身屏蔽了一些底层具体实现,可以让用户把更多精力放在应用本身上。

由于node-red自带组件有限,况且许多用户会有一些个性化节点需求,node-red提供了自定义节点的功能,这也是其一大特点。

2.自定义节点构成

node组件本身一般包括两份文件:js文件和html文件,js文件主要定义了组件具体做些什么事情,有什么样的功能;html文件主要定义了组件的属性,组件编辑框格式和帮助信息。

js文件的基本格式如下:


module.exports = function(RED) {
    function YourFunctionName(config) {
        RED.nodes.createNode(this,config);
	this.on('input', function(msg){ 
			// 对输入的消息进行处理.
	});
	this.send(msg); //将消息输出
	this.close('close', function(){
		// 在重新deploy后,如节点需要清空一些状态,需注册该回调函数.
	});
    }   
    RED.nodes.registerType("nodetype",YourFunctionName);
}


当通过浏览器登录到node-red开发工具后,各节点都会向node-red进行注册,注册节点类型为”nodetype”,该类型名字自己可以随便起,但要注意js中的类型名要与html中一致,并声明回调函数YourFunctionName,该函数实现了创建实例节点并注册一些监听函数。

html文件格式如下:


<script type="text/javascript">
    RED.nodes.registerType('nodetype',{
        category: 'function', //节点分类
        color: '#a6bbcf', //节点背景颜色
        defaults: {
            name: {value:""} //以json格式定义一些属性值,在节点拖动到sheet中时,会通过config参数传递
        },
        inputs:1, //节点输入 0 or 1
        outputs:1, //节点输出 0 or more
        icon: "file.png", // 节点使用图标
        label: function() { //节点标签
            return this.name||"nodetype";
        }
    });
</script>
 
<script type="text/x-red" data-template-name="nodetype">
    <div class="form-row"> //编辑框中每一行格式,一般是标签加输入框
        <label for="node-input-name"><i class="icon-tag"></i> Name</label> //此处for的值应与defaults对象一致
        <input type="text" id="node-input-name" placeholder="Name"> //此处id应与for一致
    </div>
</script>
 
<script type="text/x-red" data-help-name="nodetype">
    <p>A simple node that converts the message payloads into all lower-case characters</p> //节点提示信息
</script>

3.编写package.json文件

编写package.json文件可以使节点通过npm安装,package.json格式如下:


{
    "name"         : "node-red-samplenode",
    "version"      : "0.0.1",
    "description"  : "A sample node for node-red",
    "dependencies": { //说明该模块依赖的其它模块
    },
    "keywords": [ "node-red" ],
    "node-red"     : {
        "nodes": {
            "sample": "sample/sample.js" //该js文件即你要编写的js文件名
        }
    }
}


4.部署新节点


编辑完上述两个文件,将其放入到node-red目录中的nodes文件夹下重新启动node-red工具即可在面板上看到新添加的node节点

基于node-red工具实现自定义节点

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...