# 凯文总结 > [!NOTE] 凯文说 > 我理解的Node-Red: 它是一个**自动化管理软件**: > - 将你希望实现的功能,用更加易懂的流程逻辑和图例呈现出来,让你进行**模块化**配置。 > - 有多种插件可以联动,比如打通**HA**和**企业微信**,让普通人**不用会代码**也可以操作。 图形化说明:[[HA入门_篇7.1:附件NodeRed用途说明.canvas|HA入门_篇7.1:附件NodeRed用途说明]] # 视频教程 - [B站视频](https://www.bilibili.com/video/BV1vttAebEV9/) - YouTube视频 # 图文教程 ## 目录(共四篇) 1. Node-Red基础安装与使用教程 2. 企业微信的详细配置 3. 进阶模块的使用:Function / Switch等模块应用 4. 常见问题分享:ip白名单 以上内容会整合到我的在线文档:HomeAssistant智能家居系列文章分享 可以关注我获取详细内容 # 一、Node-Red介绍 ==图例== 配置端展示: ![[Pasted image 20240605102006.png]] 手机端展示: <img src="https://www.buda8888.com:30006/images/ReZ-TI/homeassistant/wemedia/HA入门_篇7:HA最强辅助Node-red完整教程/1.jpg" style="max-width:45%;" > ## 功能衍生: 由于NodeRed本身只是一个自动化软件,所以所有的有趣的玩法都是根据大家的需求来的,建议: - **建议的方向**: - 结合==微信==通知,实现自定义推送 - 个人参考:结合==数据库==,推送指定信息到微信,展现指定信息到HA - 网友参考:结合==高德地图==定位,实现距离提醒 - ==总的来说,就是把它结合HA,当成是一个你自己开发的APP来使用== - **不建议的方向**: - 和HA自带的自动化重复的不用摸索 - 和苹果、米家重复的自动化不用摸索 # 二、Node-Red安装教程 ## 2.1 在HA主机中直接安装 - 要求:Supervised版本,有Add-on功能(一般是HA盒子或者主机有,Docker安装没有) - 安装步骤: - 路径:配置 - 加载项 - 右下角加载项商店 - 搜索“node-red”,安装即可 - 图示 ![[Pasted image 20240605105017.png]] ![[Pasted image 20240605105042.png]] ![[1717555867217.png]] ![[Pasted image 20240605105133.png]] 这里我已经安装过了,你们可以按照界面提示按钮安装;另外建议开启“自启动”,“守护”,“侧边栏显示” 按照上述步骤,你的Node-Red就安装好了 ## 2.2 通过Docker独立部署 这里直接贴代码: linux版本 ```ssh docker run -d \ -p 1880:1880 \ -v /mnt/d/DockerDesktop/nodered/data:/data \ -e TZ=Asia/Shanghai \ --restart=unless-stopped \ --name nodered \ nodered/node-red ``` ### Docker代码说明: - 如果报错,可以把“\和回车”删了,不要换行,留空格就行 - -d 让docker后台运行,必须输入 - -p:端口号,必须输入,左边的1880可以根据你自己的需求改,建议保持 - -v 挂载文件夹,:左边的是你想要管理的路径,根据你平时安装的习惯改一个文件夹出来:右边的是Docker容器内部的地址,不要动;这里主要挂载data文件,避免万一重装,内容都没有了 - -e TZ=Asia/Shanghai,+8小时时区设置,建议输入,以免后续时间异常 - --restart=unless-stopped,建议输入,确保自动重启 - - name:容器名称,必须输入 - 最后一行:镜像名称,必须输入 ### 运行 上面步骤安装完成后,会自动运行 然后在浏览器输入:192.168.xx.xx:1880即可登录 默认没有密码,如果你映射到了公网,注意网上搜索一下如何添加密码 ## 2.2 运行界面 ![[Pasted image 20240605110841.png]] 如图所示:Node-Red的管理界面一共分为4大区域 - ①:模块区域:就是选择各种模块,跟搭积木里面的积木零件是一个逻辑 - ②:配置区域:这里是你搭积木的一个过程,把左边的模块拖进来,然后按照一个合理的逻辑链接,它就会按照链接的逻辑来运行 - ③:信息展示区域:运行的提示,配置的时候的细节,debug的信息都在这里展示 - ④:部署:每次改完都点击一下部署才能生效 - ⑤:部署右边的三条杠:安装新模块在这里配置 ## 2.3 安装HA插件 - 如图所示,右上角三条杠 - 节点管理 - 安装 - 搜索“homeassistant” ![[Pasted image 20240605121034.png]] - 安装后,左侧HA的模块随便选一个, 点击Server的小笔,匹配HA ![[Pasted image 20240605121145.png]] - 基本上都是默认的信息,添加一个名字即可,但是如果你是Docker安装,这里的基本URL要添加上对应的HA的ip ![[Pasted image 20240605121308.png]] - 下一步,在HA中,配置 - 集成 - 添加集成 - 搜索“nodered”,根据提示安装nodered集成即可 - 至此,NodeRed就安装并且和HA打通了 # 三、Node-Red基础使用 Node-Red的具体使用还是要靠大家自己举一反三地配置,这里用上面的演示做一个示范案例给大家做个入门 ## 第一步:配置企业微信 这一步请跳转到四、Node-Red插件部分:[[#^c061b5|点击跳转]] ## 第二步:选择触发逻辑 如图所示,最常见的两种触发逻辑:按照时间/手动触发;通过传感器触发 ![[Pasted image 20240605120728.png]] - 按照时间触发,大家可以拖动进去看看,主要就是“重复”这里来配置逻辑 ![[Pasted image 20240605120830.png]] - 按照传感器触发,如图,找到你的HA,选择实体(搜索名称即可),选择一个状态,如我的是“on”,点击完成;这样就完成了一个传感器的触发 ![[Pasted image 20240605121813.png]] ## 第三步:配置执行动作 - 当你配置完微信后,这里就很简单,输入消息名称,消息内容;即可 ![[Pasted image 20240605122036.png]] ## 第四步:点击部署,恭喜你,完成了配置 - 此时,当你一切配置正常,你的nodered即会正常的向你推送消息 - 进阶:如果你想根据**传感器的状态**自动调整推送内容,则需要用到function / switch等模块,帮助你设置更加智能的设备;敬请期待后面的内容 # 四、Node-Red插件 ## 4.1 微信插件的安装与使用 ^c061b5 ### 4.1.1 Node-Red中安装企业微信插件 - 界面右上角三条杠 - 节点管理 - 点击安装 - 搜索“wechat” - 安装“node-red-contrib-bizwechat” ![[Pasted image 20240605113556.png]] - 安装后,在左侧的模块栏,找到企业微信 - 服务端,拖到界面 ![[Pasted image 20240605113702.png]] - 点击箭头,添加新的节点 ![[Pasted image 20240605113736.png]] - 留在下面这个界面,然后去微信里面找参数 ![[Pasted image 20240605113809.png]] ### 4.1.2 企业微信中的配置 - 企业微信的注册这里不指导了 - ==企业微信的配置需求== 1. 需要有一个域名 2. 要有公网ip - 第一步:打开我的企业,获得企业ID ![[Pasted image 20240605115244.png]] - 第二步:点击应用管理 - 创建应用 ![[Pasted image 20240605113909.png]] - 输入logo、应用名称、选择可见范围(可以等于你要通知的人,如果企业就你一个人就选自己的部门) ![[Pasted image 20240605114057.png]] - 创建应用以后,可以找到所需要的两个参数:AgentId和Secret ![[Pasted image 20240605114206.png]] - 点击接收消息,设置API接收 ![[Pasted image 20240605114311.png]] - 点击随机获取,获得Token和EncodingAESKey(这个页面不要关,还缺一个接收消息服务器配置) ![[Pasted image 20240605115405.png]] - 第二步:把以上数据,依次填入4.1.1的node-red配置; - 其中Port - 如果你是Addon安装的nodered,port随便填一个你记的住的端口 - 如果你是Docker安装,填安装时的端口,如1883 - 其中URL:填写你的域名 - 然后点击更新;最后网页访问你的url+端口号(记得路由器做端口转发,这个这里也不教),显示如下画面即成功了 ![[Pasted image 20240605120117.png]] - 第三步:将上述URL填入4.1.2的最后企业微信中的URL部分 - 第四步:测试 - 拖入一个inject和推送 ![[Pasted image 20240605120328.png]] - 配置选择4.1.1的配置,剩下的内容可以自己填; ![[Pasted image 20240605120431.png]] - 点击部署,然后inject ![[Pasted image 20240605120534.png]] - 当你的手机微信收到提示,至此,企业微信就配置成功了。 ## 其他插件(待更新) # 五、Node-Red进阶 如前文所说,我们希望的自动化,应该是可以自动判断不同的场景,进而自动为我们推送不同的消息内容;而不用针对每一个场景做文字跟进,否则就不那么智能了; 这里为大家介绍两个NodeRed的函数模块,通过他们,可以轻松的处理更多消息场景。 ## 5.1 配置总开关 / 区域开关 不知道大家有没有过这样的困扰,想要配置一些“一键xx”的动作,比如一键开关灯; 我之前的场景是:添加辅助元素“开关”,然后选择“组”,然后将所有的开关都添加到这个组; - 缺点:每次新增开关,都要重新添加一次配置;因为忘记增加,时不时会有漏网之鱼,让自己觉得没有那么智能。 而nodered的界面,可以帮助大家做到一次性配置,永久生效。 ![[Pasted image 20240605221604.png]] 对比nodered,可以选择区域,选定区域以后,不用再单独配置某个设备 ![[Pasted image 20240605222010.png]] nodered配置逻辑 ![[Pasted image 20240605222514.png]] Step1: 在HA里面创建一个辅助元素,开关 Step2: 在NodeRed中调用这个辅助元素,然后设置一个如上图所示的自动化 Step3: 自动化的动作,就如上页所示,选定所有区域的开关,执行关闭动作 至此,一键关灯就可以一次配置,长期使用了;甚至未来出现更多的设备,也不用再进行配置(当然如果调整了区域,记得过来优化一下)。 同理,还可以为不同的区域配置不同的一键开关~ ## 5.2 Switch模块应用示例 ![[Pasted image 20240605215931.png]] 如图所示,上面是一个“switch”模块的典型应用案例,即: 当==办公室光线传感器==回传不同的信息时,执行不同场景的动作,其中包括: - 场景一:推送微信消息 - 场景二:关灯 - 场景三:开灯 - 场景四:给小爱音箱发送语音命令 ps 小爱音箱发送语音命令我还不大会配置,里面涉及到什么"siid", "aiid",猜测应该对应小米的开发者中心来设置,如果有懂的小伙伴可以分享下 ## 5.3 Function模块应用示例 Function模块其实就是一段函数命令,正是因为是函数,所以特别强大; 功能就是把输入端的信息,通过函数进行运算,转化为你想要的结果输出。 这部分如果大家不懂代码,建议配合AI使用,让AI教你简单的代码输出。 ![[Pasted image 20240605220742.png]] 可以看到,function就是一段非常标准的代码区域。 # 六、异常情况的处理 ## 6.1 访问ip不在白名单之中 - 需要在微信后台配置“企业可信IP” - 说明:此IP为设备访问外部网站的IP,并非局域网的ip(10或者192开头的都不是) - 步骤1:查询IP地址: - 方式一:通过路由器查询:如果你是软路由或者自己拨号上网的,应该可以在路由器上直接看到ip - 方式二:电脑直接在网页搜索ip地址,一般都会返回:如 ![[Pasted image 20240605095114.png]] - 步骤2:将IP地址填入企业微信应用: - 路径:应用管理 - 企业可信IP ![[Pasted image 20240605095220.png]]