# 凯文总结
> [!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]]