从Node-RED与微信推送谈起
追加修改(2021-08-02 15:39:51):
注意:文中遗漏了重要的一步,一定要放一个服务端节点在流当中,并选择我们填好的配置,然后再部署,否则这个服务是相当于没有启动的。谢谢评论区的小伙伴,是大家帮忙找到了错漏之处,非常感谢!!!
到
从本篇开始,将慢慢来完善Home Assistant这个系列。
为何由此谈起?
大家可能会比较好奇,既然是写Home Assistant,为何却从Node-RED与微信推送谈起,因为Home Assistant涉及到的内容比较宽泛,如果第一篇就写如何搭建它,可能会显得比较空洞,之前没有接触过的童鞋不太好接受,毕竟搭建并不是核心的内容,找不到成就感
。所以本文先从Node-RED谈起,并在其中完成一个简单实用的流(只有4个节点),为后续的内容建立基础。
当我们谈智能家居时,究竟在谈什么?
顾名思义,智能家居的关键是智能。如果你看过某些宣传片或者听别人讲起也或正在使用,那么可能会有所感受,我个人觉得智能家居的核心是自动化,而不是手机或者语音控制,既是根据场景、行为、环境等条件尽可能减少人工操作而达到预期的家居控制。最简单的例子:人离开自动关闭灯光。
而在自动化这条路上,目前个人用的比较多的,也是比较推荐的就是Node-RED,这也是篇一选择从它谈起的原因,当然它和Home Assistant的联动,我们后面再说,本篇暂时不提。
作者家的平台接入了哪些 ?
从图上可以看出,其实我家接入的设备并不多,因为平台是在装修完成几年后才搭建的,现在接入的设备也是逐渐替换掉了老的设备才接入的。所以大家若有兴趣,也可以像我一样,先搭好平台,在家居的设备需要更换的时候,再更换为能接入平台的新设备,不必在意现在的是否能完全接入。
Node-RED是什么?如何安装?
引用两段百度到的内容:
Node-RED是一个物联网编程工具,它以新颖和有趣的方式,将硬件设备、应用接口和在线服务连接到一起。. 它不仅提供了一个基于浏览器的编程环境和丰富的节点类型,使流程的创建变得非常容易,而且还为流程的运行提供了运行环境,实现了一键部署的能力.
Node-RED 是构建物联网(IOT, Internet of Things)应用程序的一个强大工具,其重点是简化代码块的“连接”以执行任务。它使用可视化编程方法,允许开发人员将预定义的代码块(称为“节点”,Node)连接起来执行任务。连接的节点,通常是输入节点、处理节点和输出节点的组合,当它们连接在一起时,构成一个“流”(Flows)。
如果不能理解,先继续往下看,全篇看完以后相信就能有一定的了解。
我们先在群晖中安装Node-RED,打开群晖中的Docker,在注册表中搜索nodered,下载nodered/node-red这个镜像,参考下面的截图:
下载完成后我们双击该镜像,然后点击高级设置先配置下
勾上启用自动重新启动
继续点击存储空间,添加文件夹,按下图进行设置,在添加过程中新建docker目录下的nodered文件夹即可:
接着点击端口设置,按下图设置端口(后期我们需要用到反向代理把它给开放到公网,所以本地端口先用1881端口,1880留到反向代理用):
接着点击环境,单击加号,添加环境变量,可变填写“TZ”,值为“Asia/Shanghai”,用来解决容器与主机的时间相差8小时的问题。
点击应用,回到常规设置页面,取消勾选“向导完成后运行此容器”
第三步:在File Station中找到第二步新建的 docker/nodered 文件夹,并对该文件夹增加 Everyone 的完全控制权限。右键nodered文件夹,属性->权限->新增,在权限编辑器中的用户或组找到Everyone,然后设置读取和写入权限,然后点击完成即可,参考下图:
设置好后,我们回到docker中把刚刚配置好的容器启动起来。然后访问http://你的群晖IP:1881,就能看到庐山真面目啦
:
一个界面的介绍:
默认情况下Node-RED是不需要密码进行访问的,所以现在还不能把它开放到公网,我们需要给它设置使用密码登录,请大家参考它的官方文档
说起来其实也不复杂,先停止容器,找到docker/nodered目录中的settings.js文件,取消注释下面的内容:
adminAuth: {
type: "credentials",
users: [
{
username: "admin",
password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
permissions: "*"
}
]
}
password后面的字符串需要自己用想设置的密码去生成一个,在线生成链接:,Rounds默认就好:
用生成好的字符串替换掉文件中的字符串,然后再启动Node-RED即可看到需要密码进行登陆了:
账号admin,密码为你设置的密码,登陆以后我们先把微信推送的插件安装上,点击右上角三横线,点击设置:
点击控制板->安装->搜索栏输入biz,然后在搜索结果中安装截图中的插件:
安装完成后,暂时不要关闭页面,一会儿再回来继续配置。接下来我们说说企业微信。
为什么要用企业微信?如何注册企业微信?
在智能家居中,或多或少都需要消息通知的功能。既然是通知,那么时效要求就比较高,并且及时能被相应的人员看到。所以我选择使用企业微信,因为它的推送服务稳定
,当然如邮件、短信等等方式也行,这里只谈企业微信。
首先注册,官网在这里,打开官网后直接点击立即注册即可。个人注册不用进行认证,使用也不会产生费用,注册流程很简单,这里就不截图了。
注册完成后,需要在应用管理中,创建自建应用:
接着上传应用logo,可以网上找个图片,填写应用名称,选择可见范围(直接选择整个组织即可):
接下来就是配置环境了,稍微有点麻烦,大家一定要看仔细,我们需要在企业微信中首先获取到企业ID:
然后点击应用管理,往下滑动,点开我们刚刚创建的应用,先记录下AgentID,然后点击Secret后面的查看(这里需要自己先在手机上安装好企业微信,用完后可以卸载掉):
然后找到接收消息,点击设置API接收(截图上是因为配置过了,所以显示的是已启用API接收):
按照下图对API接收消息进行设置(设置完成后不要点击保存,点了也没用,需要先配置到Node-RED,这边点击保存的时候会进行验证):
这样我们就在企业微信中拿到了所有需要的信息,不要关闭页面。
现在回到Node-RED进行配置,在页面左边往下滑动,找到企业微信中的推送节点,拖动到工作区中,然后双击它,打开编辑对话框,点击铅笔按钮进行配置:
接下来就把我们在企业微信中记录到的信息全部填进去。这里需要注意,前面在企业微信中填写的URL是加了端口号的,这里URL和端口需要分开填写,同时还要保证这个URL外网能访问到,也就是必须得有公网哦:
填写完成后,依次点击左上角添加->完成->部署。然后再回到企业微信点击保存,若配置没有问题即可保存成功,若有问题可根据错误提示进行排查,也可在评论里留言咨询
。
保存成功后,在微信中关注下企业微信插件,点击我的企业->微信插件,用手机微信扫描该页面的二维码:
关注后就能看到该企业和应用了,我是置顶了的:
接下来先记下自己企业微信的账号,在通讯录中:
记下后就可以关掉企业微信后台。
Node-RED配置
回到Node-RED,向工作区添加一个http in的节点,并双击进行编辑:
继续添加http response节点,无需编辑,保持默认:
继续添加function节点,并双击进行编辑,输入以下内容:
msg.payload = msg.payload.text;
msg.touser = '前边获取到你的微信账号'; //这样推送信息就只会发送你,如果要发送给所有人就使用:@all
return msg;
再双击推送,修改下它的标题
接着把这些节点连接起来,并点击部署:
到此Node-RED也配置完成。
群晖短信服务配置
打开群晖后台,控制面板->通知设置->短信->新增短信服务提供商,注意IP地址和端口哈,和自己的一致:
https://192.168.1.10:1881/Home_NAS?to=886888888888&text=Hello world
点击下一步后,点新增,这步是为了验证Node-RED的权限,先生成一个加密的字符串,这里用的是Base64加密,可以在这里生成https://base64.us/,假如我们Node-RED的密码是admin:
参数填入:Authorization,值填入:Basic YWRtaW4=
点击保存,然后继续下一步,照图中进行选择:
点击完成,回到短信页面后随便填入个电话号码,然后点击寄送测试短信:
这时手机就会收到消息:
最后至于需要推送哪些内容,就看自己的规则了:
快去试试吧
写在最后
写了这么多,只实现了一个小小的功能,只放在这个场景甚至可以说是可有可无的功能,因为邮件同样可以,使用邮件客户端也能正常推送。但正因为有了这些点滴的积累,后面的使用才会越来越顺畅,自动化的复杂度在该系列的后续中也会越来越高,在复杂度提高了以后现在的积累也会让大家更加容易理解。
同时本篇的推送服务在后续篇章中也非常常用,如电费不足的通知、燃气费缴费的通知等等。要跟着作者继续下去这篇是的必备的基础哦。
好了,今天就到这里,同样欢迎收藏、评论、点赞。对了,还有打赏
,下次再见
。













































校验提示文案
校验提示文案
校验提示文案
校验提示文案
疑问:NR的端口是1880,那3001端口是什么作用,连接bizwechat的吗?
另外发现一个问题,我的NR端口如果设置了反向代理,登录成功后NR页面就会一直提示和服务器断开连接,如果取消反代就不会。
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
在群晖设置nodered反代理是1881和1880两个端口吗
校验提示文案
这一句怎么理解,卡在这里了
校验提示文案
校验提示文案
大神,我到这步就不成功了,怎么新建短信服务器呀,上面这个网址我只改IP地址后,提示URL需要4个参数,配置不成功呀。。
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
用内网ip或者外网域名都可以打开3001的那个文字页面。
企业微信那边ip白名单也添加了。
路由器端口映射也做了对应调整。
但是群晖点击测试消息nr就是没反应。
然后我把所有的网络部署设置切换到之前docker安装的nr再测试就能正常发送消息。
不知道是HA安装的nr和DOCKER安装的NR有什么设置的区别吗?
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
校验提示文案
1,在群晖 Docker 容器里停掉 nodered,编辑-添加3001到3001端口的映射;
2,开启 Docker 容器里的 nodered;
3,nodered 管理页面,把左侧下面企业微信-服务端 拖到中间,按上面“推送”的参数填,port 是 3001.
4,完成,部署;
5,浏览器直接访问域名:3001,页面返回如下:
bizwechat(企业微信版本的pushbear)
欢迎使用由 flashsoft 大佬 ,F 大佬 , smarthomefans 提供的企业微信版本的pushbear。如果你看到这个界面证明你已经安装成功了
如需发现更多好玩的智能家居玩法请访问这里
校验提示文案
校验提示文案
校验提示文案