基于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文件格式如下:





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)