基于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节点






相关推荐
<p> 本课程通过一步步的实践演示,带领大家在开源项目的基础上,搭建随心所欲的物联网与智能家居平台。在过程实践中,大家会学习与应用到linux、python、云服务、图像识别、智能语音、单片机、数据库、前端开发等多方面的知识,帮助大家成为IT的全栈工程师。以实战为导向结合物联网各类知识要点学习经典框架进行项目实战,快速掌握智能家居、家庭自动化、物联网等必备基础与实战技巧。带你从零玩转智能家居,了解物联网的整体格局,将零散的知识点通过项目快速串联提升自身成就感 </p> <p> 【更新规则】<br />  视频与参考文档内容,随时更新,与最新的软件版本/云服务环境匹配。 </p> <p> <br /> </p> <p> 【课程特色】<br /> 1.通俗易懂,快速入门<br /> 对物联网、智能家居学习经典实践项目结合技术推导进行形象解释,实例演示。<br /> 2. Python主导,实用高效<br /> 使用物联网领域最主流语言Python及其homeassistant 开源家庭自动化框架作为课程核心工具。<br /> 3. 案例为师,实战护航<br /> 基于真实操作展示,从零开始结合homeassistant与python自创组件、树莓派或者nas完成整个案例实战。<br /> 4. 持续更新,一劳永逸<br /> 会伴随homeassistant的更新与DIY实战项目课程会支持更新下去,逐步加入更多算法与案例。 </p> <p> <br /> </p> <p> 【联系我们】<br /> 官方网站:https://www.hachina.io<br /> QQ学习讨论群(仅限学员加入):741140729 </p> <p> <img src="https://img-bss.csdn.net/201907040403375571.jpg" alt="" /> </p> <p> <br /> </p>
<p> <span style="color:#313d54;font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;font-size:16px;background-color:#ffffff;">Node-RED是工业网物联网的重要组成部分,我最开始接触Node-RED,也算是一个偶然的机会吧,上班后领导安排我的第一个任务就是调研一下Node-RED,我之后上网查了一下,那个时候网上相对于Node-RED的资料也比较少,只知道它是IBM公司的一个开源项目。直到最近,发现许多大公司的产品都支持Node-RED,比如西门子公司的IoT2000,研华公司的WISE PaaS 网关,美国OPTO 22等设备中都安装了Node-RED,表明它在工业物联网和控制中已经广泛应用了。</span> </p> <p> <img src="https://img-bss.csdnimg.cn/202010200935441926.png" alt="" width="1316" height="524" /> </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> 那么工业物联网为什么要用它?它又处于工业物联网那个层次?它具有哪些特性?它帮助物联网解决了什么问题?为什么说它是柔性动态可重构的解决方案呢? </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;">   </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;">   </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> 本门课程,老师将带领你从Node-RED的发展,工业物联网定位开始讲解,并带领着大家进行手把手安装Node-RED,实际操作演练Node-RED,并搭建一个物联网小平台,给大家带来更好的学习效果。 </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> <img src="https://img-bss.csdnimg.cn/202010200936289051.png" alt="" width="1841" height="948" /> </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> <img src="https://img-bss.csdnimg.cn/202010200936561564.png" alt="" width="1920" height="977" /> </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;">   </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;">   </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> 为了能够让小伙伴们快速了解本门课程的结构,本门课程从以下几个方面展开: </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> Node-RED入门 </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> Node-RED安装与配置 </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> Node-RED教学实战 </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> Node-RED的优势与不足 </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> Node-RED能为我们带来什么 </p> <p style="font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif;color:#313d54;font-size:16px;background-color:#ffffff;"> Node-RED总结与展望 </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页