一、背景
Node-RED背景介绍
Node-Red是IBM公司开发的一个可视化的编程工具。它允许程序员通过组合各部件来编写应用程序。这些部件可以是硬件设备(如:Arduino板子)、Web、API(如:WebSocket in和WebSocket out)、功能函数(如:range)或者在线服务(如:email)。
Node-Red提供基于网页的编程环境。通过拖拽已定义node到工作区并用线连接node创建数据流来实现编程。程序员通过点击‘Deploy’按钮实现一键保存并执行。程序以JSON字符串的格式保存,方便用户分享、修改。
Node-Red基于Node.js,它的执行模型和Node.js一样,也是事件驱动非阻塞的。理论上,Node.js的所有模块都可以被封装成Node-Red的一个或几个node。(Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。 Node.js 的包管理器 npm是全球最大的开源库生态系统。)
Node-RED一个开源的、流程导向的编程工具,旨在帮助用户使用流程图形式来连接物联网设备、API、服务和应用程序,以实现自动化和交互式的应用程序。Node-RED基于JavaScript,使用了Node.js运行时环境,并提供了一个基于Web的可视化编辑器来创建和管理流程。
具体其他学习教程可以参考我之前写的文章
node-red学习一:设置http get请求和设置response响应
node-red学习二:nodered上下文全局变量
我对Node-Red的认知
1、首先Node-Red内存占用小,安装方便
2、响应低代码流行的趋势,只用网页即可完成所有开发
3、功能强大,提供大量的组件,只要有DIY的精神,同样也可以完成复杂的逻辑
我要做什么?
1、需要检查局域网内,某些IP是否存在
2、同事提供了个bat脚本,功能就是通过ping去查询ip是否存在
3、定时去执行他,通过node-red
二、nodered能否运行Windows的批处理文件
一开始,我想查找是否有运行bat脚本的插件。通过关键词:CMD、Bat等去查找,并没有找到自己想要的答案。
后面,我就想原生的功能是不是就支持了,于是我看了一下nodered的标准功能,看到了。
我看到了exec模块。
进过查找,exec模块,是可以调用本地的运行文件。
而刚刚好,我把nodered安装到本地了,直接运行就十分方便了。
我把两个文件,放置到指定路径,比如D盘的D:\opensource中
ip_list.txt
ping_check.bat
通过把 exec 的配置,即可调用 ping_check.bat 文件,例如
三、判断bat脚本执行的结果
通过nodered判断脚本执行的结果是非常简单的。例如
:: 输出不通的IP
if not defined failed_ips (
echo Success
) else (
echo False:!failed_ips!
)
通过 Success 判断成功,通过 False判断失败。可以使用 switch脚本进行处理,如图
四、使更加灵活一点
作为低代码开发,自然希望修改都在Web界面进行操作。但是通过我上面的说明,修改 ping_check.bat、ip_list.txt需要到node-red安装服务器上进行操作十分麻烦。
能不能都在Web界面操作呢。
我关注到了一个标准功能:写入文件 和 template
‘template’可以把 ping_check.bat、ip_list.txt 的内容写到里面,并且借助‘写入文件’ node-red安装服务器上的对应位置
例如:
简而言之,就是在web页面把内容编写好,并且储存到指定为止。
然后在具体进行调用
五、总结
要实现Node-red调用bat文件,前提是Node-red必须安装在windows系统中。
编写的经过是使用 写入文件 和 template 把文件写到指定路径。再使用 EXEC去调用,然后通过Switch判断输出结果。
个人看法:
虽然很多网友觉得node-red的API接口很low,编程不够灵活,但是不可否认node-red强大的地方。往往判断一个软件好不好用,是在于一些场景。比如node-red用在某些场景上(数据监控、定时备份)等,的的确确带来简便、好用等效果。
低代码的确还是值得推崇的