Node-RED 是一种低代码编程工具,它可以直接在浏览器中编辑节点,每个节点都代表一个功能,然后把他们连在一起就能实现和运行比较复杂的程序了,它在物联网领域用得比较多,因为它提供了丰富的物联网接口,当然用来编程也是没有任何问题的
安装Node-Red 可以安装在多种设备上,包括docker、树莓派、AWS、 Microsoft Azure等等,这里就介绍下群晖下docker的安装,其他安装方式可以参考:https://nodered.org/docs/getting-started/ 打开群晖的【Container Manager】,搜索nodered,选择nodered/node-red最新版镜像进行下载
在等待下载过程中,先创建好 node-red 数据存放的目录。如果对群晖的【Container Manager】套件或者docker不太理解,可以去看我写的docker系列和群晖系列文章
再右键nodered文件夹,选择属性,并设置 nodered 文件夹权限,增加一条权限:Everyone 都可以读取和写入
回到Container Manager套件,运行刚刚下载好的noedered镜像,添加端口映射为1880,设置本地路径为刚刚创建的nodered文件夹,容器路径/data
其他配置保持不变,运行成功后,打开群晖的地址加上1880端口就可以访问到nodered后台了
配置语言进到主界面后,可以先点击右上角的三条线,进入Settings选项
把语言设置为中文,这里需要注意的是要强制刷新浏览器,界面才会变为中文
密码如果需要对 Node-Red 设置密码,需要打开配置文件中的 settings.js 文件,并放开相关代码,如何生成密码可以参考https://nodered.org/docs/user-guide/runtime/securing-node-red官方文档进行配置
使用回到 Node-Red 网页主界面,可以看到左侧一栏有很多的节点,可以把节点拖入到右侧的空白编辑面板中,再点击顶部右上角的部署按钮,即可实现程序的编辑和保存。以下演示了一个简单的程序,点击时间戳左侧小方框,debug输出当前时间戳
选中时间戳节点,可以点击右侧面板的文档图标来查看当前节点的使用说明。点击旁边的小虫子图标,则可以看到debug输出控制台
接下来介绍如何在 Node-Red 中加入第三方模块(以home assistant为例)。点击右侧三条线进入节点管理配置
在控制面板中选择搜索home-assistant-websocket,选择第一个进行安装(如果安装不成功,换个国外IP试试?)
安装完毕后,可以看到主界面左侧多出了home assistant节点
随便拖入一个home assistant模块下的节点到编辑面板中,双击节点设置节点属性,在Server选项中,点击新增一个Server
用浏览器登录到 HomeAssistant 主界面,点击左下角用户名,并点击右侧最下面的创建令牌按钮,创建一个长期访问令牌并复制
把创建好的令牌粘贴到访问令牌输入框中,基本URL填写 HomeAssistant 的地址,最后点击右上角的添加按钮
在编辑面板中拖入inject节点,home assistant的current_state节点,debug节点,并把他们连接起来
双击current_state节点,编辑Server属性为刚刚创建的Home Assistant,entity ID可以随便在HomeAssistant主界面的开发者选项中找一个粘贴进来
现在点击inject,就可以看到 binary_sensor.cgllc_cgpr1_e25e_motion_sensor 实体的状态了
current_state节点是获取节点状态的,当然也可以设置节点的状态,只需要拖入call servier节点,并在属性中配置需要设置的节点以及状态,一定要记得点击右上角的部署,才能生效
后记通过Node-Red中的home assistant节点可以方便的控制HomeAssistant中的设备,如果你稍微懂一些JS语言,那么可以自定义更加个性化的程序来帮你实现一些复杂功能,如果你不懂也没关系,因为Node-Red就没什么代码,只需简单理解各个节点的功能,那同样可以满足你的需求
作者