Home Assistant 篇一:从Node-RED与微信推送谈起

2021-07-28 15:43:48 93点赞 753收藏 202评论

追加修改(2021-08-02 15:39:51):
注意:文中遗漏了重要的一步,一定要放一个服务端节点在流当中,并选择我们填好的配置,然后再部署,否则这个服务是相当于没有启动的。谢谢评论区的小伙伴,是大家帮忙找到了错漏之处,非常感谢!!!

最近已经写了三篇,从

我家NAS装了啥?可多了创作立场声明:作为一个懒人,本人立场坚定的想一直懒下去,只是看着奖品口水止不住的流,所以也来凑个热闹。#我家NAS装了啥#有奖活动正在火热进行中,分享你家NAS装了啥App,赢取TS-453Dmini!→戳此了解←追加修改(2021-07-1912:21:44):漏了一个默默无闻的Docker镜像:frLab| 247 评论232 收藏2k查看详情


完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代创作立场声明:投#我家NAS装了啥#的稿,准备把那篇里面有意思的都好好写一写,治治自己懒的毛病。欢迎收藏、点赞、关注、打赏,以后还有一系列的文章。对了本篇有点长,可以先收藏再观看,阅读预计需10分钟以上。0准备,然后亲自动手抄作业预计需要半天以上时间。【写作说明】:前几天投稿了我家NAS装了啥,原文frLab| 116 评论61 收藏1k查看详情

再到

家庭IPTV更优方案:内网融合、udpxy、Emby、TiviMate、xteve之前写了一篇我家NAS装了啥?可多了,链接在这里里面列出了自己现在在用的套件和Docker,因为有很多,所以只分享了用途,怎么建设没有写到,后来就准备把部分内容拿出来单独写一写。前面已经写了一篇关于外网访问的(完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、frLab| 31 评论21 收藏440查看详情

从本篇开始,将慢慢来完善Home Assistant这个系列。

为何由此谈起?

大家可能会比较好奇,既然是写Home Assistant,为何却从Node-RED与微信推送谈起,因为Home Assistant涉及到的内容比较宽泛,如果第一篇就写如何搭建它,可能会显得比较空洞,之前没有接触过的童鞋不太好接受,毕竟搭建并不是核心的内容,找不到成就感从Node-RED与微信推送谈起 。所以本文先从Node-RED谈起,并在其中完成一个简单实用的流(只有4个节点),为后续的内容建立基础。

当我们谈智能家居时,究竟在谈什么?

顾名思义,智能家居的关键是智能。如果你看过某些宣传片或者听别人讲起也或正在使用,那么可能会有所感受,我个人觉得智能家居的核心是自动化,而不是手机或者语音控制,既是根据场景、行为、环境等条件尽可能减少人工操作而达到预期的家居控制。最简单的例子:人离开自动关闭灯光。

而在自动化这条路上,目前个人用的比较多的,也是比较推荐的就是Node-RED,这也是篇一选择从它谈起的原因,当然它和Home Assistant的联动,我们后面再说,本篇暂时不提。

作者家的平台接入了哪些 ?

从Node-RED与微信推送谈起

从Node-RED与微信推送谈起

从图上可以看出,其实我家接入的设备并不多,因为平台是在装修完成几年后才搭建的,现在接入的设备也是逐渐替换掉了老的设备才接入的。所以大家若有兴趣,也可以像我一样,先搭好平台,在家居的设备需要更换的时候,再更换为能接入平台的新设备,不必在意现在的是否能完全接入。

Node-RED是什么?如何安装?

引用两段百度到的内容:

Node-RED是一个物联网编程工具,它以新颖和有趣的方式,将硬件设备、应用接口和在线服务连接到一起。. 它不仅提供了一个基于浏览器的编程环境和丰富的节点类型,使流程的创建变得非常容易,而且还为流程的运行提供了运行环境,实现了一键部署的能力.

Node-RED 是构建物联网(IOT, Internet of Things)应用程序的一个强大工具,其重点是简化代码块的“连接”以执行任务。它使用可视化编程方法,允许开发人员将预定义的代码块(称为“节点”,Node)连接起来执行任务。连接的节点,通常是输入节点、处理节点和输出节点的组合,当它们连接在一起时,构成一个“流”(Flows)。

如果不能理解,先继续往下看,全篇看完以后相信就能有一定的了解。

我们先在群晖中安装Node-RED,打开群晖中的Docker,在注册表中搜索nodered,下载nodered/node-red这个镜像,参考下面的截图:

从Node-RED与微信推送谈起

从Node-RED与微信推送谈起

下载完成后我们双击该镜像,然后点击高级设置先配置下

从Node-RED与微信推送谈起

从Node-RED与微信推送谈起

勾上启用自动重新启动

从Node-RED与微信推送谈起

继续点击存储空间,添加文件夹,按下图进行设置,在添加过程中新建docker目录下的nodered文件夹即可:

从Node-RED与微信推送谈起

接着点击端口设置,按下图设置端口(后期我们需要用到反向代理把它给开放到公网,所以本地端口先用1881端口,1880留到反向代理用):

从Node-RED与微信推送谈起

接着点击环境,单击加号,添加环境变量,可变填写“TZ”,值为“Asia/Shanghai”,用来解决容器与主机的时间相差8小时的问题。

从Node-RED与微信推送谈起

点击应用,回到常规设置页面,取消勾选“向导完成后运行此容器”

第三步:在File Station中找到第二步新建的 docker/nodered 文件夹,并对该文件夹增加 Everyone 的完全控制权限。右键nodered文件夹,属性->权限->新增,在权限编辑器中的用户或组找到Everyone,然后设置读取和写入权限,然后点击完成即可,参考下图:

从Node-RED与微信推送谈起

设置好后,我们回到docker中把刚刚配置好的容器启动起来。然后访问http://你的群晖IP:1881,就能看到庐山真面目啦从Node-RED与微信推送谈起

从Node-RED与微信推送谈起

一个界面的介绍:

从Node-RED与微信推送谈起

默认情况下Node-RED是不需要密码进行访问的,所以现在还不能把它开放到公网,我们需要给它设置使用密码登录,请大家参考它的官方文档

说起来其实也不复杂,先停止容器,找到docker/nodered目录中的settings.js文件,取消注释下面的内容:

adminAuth: {

type: "credentials",

users: [

{

username: "admin",

password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",

permissions: "*"

}

]

}

password后面的字符串需要自己用想设置的密码去生成一个,在线生成链接Rounds默认就好:

从Node-RED与微信推送谈起

用生成好的字符串替换掉文件中的字符串,然后再启动Node-RED即可看到需要密码进行登陆了:

从Node-RED与微信推送谈起

账号admin,密码为你设置的密码,登陆以后我们先把微信推送的插件安装上,点击右上角三横线,点击设置:

从Node-RED与微信推送谈起

点击控制板->安装->搜索栏输入biz,然后在搜索结果中安装截图中的插件:

从Node-RED与微信推送谈起

安装完成后,暂时不要关闭页面,一会儿再回来继续配置。接下来我们说说企业微信。

为什么要用企业微信?如何注册企业微信?

在智能家居中,或多或少都需要消息通知的功能。既然是通知,那么时效要求就比较高,并且及时能被相应的人员看到。所以我选择使用企业微信,因为它的推送服务稳定从Node-RED与微信推送谈起 ,当然如邮件、短信等等方式也行,这里只谈企业微信。

首先注册,官网在这里,打开官网后直接点击立即注册即可。个人注册不用进行认证,使用也不会产生费用,注册流程很简单,这里就不截图了。

注册完成后,需要在应用管理中,创建自建应用:

从Node-RED与微信推送谈起

接着上传应用logo,可以网上找个图片,填写应用名称,选择可见范围(直接选择整个组织即可):

从Node-RED与微信推送谈起

接下来就是配置环境了,稍微有点麻烦,大家一定要看仔细,我们需要在企业微信中首先获取到企业ID:

从Node-RED与微信推送谈起

然后点击应用管理,往下滑动,点开我们刚刚创建的应用,先记录下AgentID,然后点击Secret后面的查看(这里需要自己先在手机上安装好企业微信,用完后可以卸载掉):

从Node-RED与微信推送谈起

然后找到接收消息,点击设置API接收(截图上是因为配置过了,所以显示的是已启用API接收):

从Node-RED与微信推送谈起

按照下图对API接收消息进行设置(设置完成后不要点击保存,点了也没用,需要先配置到Node-RED,这边点击保存的时候会进行验证):

从Node-RED与微信推送谈起

这样我们就在企业微信中拿到了所有需要的信息,不要关闭页面。

现在回到Node-RED进行配置,在页面左边往下滑动,找到企业微信中的推送节点,拖动到工作区中,然后双击它,打开编辑对话框,点击铅笔按钮进行配置:

从Node-RED与微信推送谈起

接下来就把我们在企业微信中记录到的信息全部填进去。这里需要注意,前面在企业微信中填写的URL是加了端口号的,这里URL和端口需要分开填写,同时还要保证这个URL外网能访问到,也就是必须得有公网哦:

从Node-RED与微信推送谈起

填写完成后,依次点击左上角添加->完成->部署。然后再回到企业微信点击保存,若配置没有问题即可保存成功,若有问题可根据错误提示进行排查,也可在评论里留言咨询从Node-RED与微信推送谈起

保存成功后,在微信中关注下企业微信插件,点击我的企业->微信插件,用手机微信扫描该页面的二维码:

从Node-RED与微信推送谈起

关注后就能看到该企业和应用了,我是置顶了的:

从Node-RED与微信推送谈起

从Node-RED与微信推送谈起

接下来先记下自己企业微信的账号,在通讯录中:

从Node-RED与微信推送谈起

记下后就可以关掉企业微信后台。

Node-RED配置

回到Node-RED,向工作区添加一个http in的节点,并双击进行编辑:

从Node-RED与微信推送谈起

继续添加http response节点,无需编辑,保持默认:

从Node-RED与微信推送谈起

继续添加function节点,并双击进行编辑,输入以下内容:

msg.payload = msg.payload.text;

msg.touser = '前边获取到你的微信账号'; //这样推送信息就只会发送你,如果要发送给所有人就使用:@all

return msg;

从Node-RED与微信推送谈起

再双击推送,修改下它的标题

从Node-RED与微信推送谈起

接着把这些节点连接起来,并点击部署:

从Node-RED与微信推送谈起

到此Node-RED也配置完成。

群晖短信服务配置

打开群晖后台,控制面板->通知设置->短信->新增短信服务提供商,注意IP地址和端口哈,和自己的一致:

https://192.168.1.10:1881/Home_NAS?to=886888888888&text=Hello world

从Node-RED与微信推送谈起

点击下一步后,点新增,这步是为了验证Node-RED的权限,先生成一个加密的字符串,这里用的是Base64加密,可以在这里生成https://base64.us/,假如我们Node-RED的密码是admin:

从Node-RED与微信推送谈起

参数填入:Authorization,值填入:Basic YWRtaW4=

从Node-RED与微信推送谈起

点击保存,然后继续下一步,照图中进行选择:

从Node-RED与微信推送谈起

点击完成,回到短信页面后随便填入个电话号码,然后点击寄送测试短信:

从Node-RED与微信推送谈起

这时手机就会收到消息:

从Node-RED与微信推送谈起

最后至于需要推送哪些内容,就看自己的规则了:

从Node-RED与微信推送谈起

快去试试吧从Node-RED与微信推送谈起

写在最后

写了这么多,只实现了一个小小的功能,只放在这个场景甚至可以说是可有可无的功能,因为邮件同样可以,使用邮件客户端也能正常推送。但正因为有了这些点滴的积累,后面的使用才会越来越顺畅,自动化的复杂度在该系列的后续中也会越来越高,在复杂度提高了以后现在的积累也会让大家更加容易理解。

同时本篇的推送服务在后续篇章中也非常常用,如电费不足的通知、燃气费缴费的通知等等。要跟着作者继续下去这篇是的必备的基础哦。

好了,今天就到这里,同样欢迎收藏、评论、点赞。对了,还有打赏从Node-RED与微信推送谈起 ,下次再见从Node-RED与微信推送谈起

展开 收起

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

2202元起

DS923+ 双核心 四盘位 NAS网络存储服务器 私有云 文件服务器

DS923+ 双核心 四盘位 NAS网络存储服务器 私有云 文件服务器

4020.64元起

Synology 群晖 DS423+ 4盘位 NAS网络存储 (Intel四核 、无内置硬盘)

Synology 群晖 DS423+ 4盘位 NAS网络存储 (Intel四核 、无内置硬盘)

3329.42元起

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)

Synology 群晖 DS220+ 2盘位NAS (赛扬J4025、2GB)

2179元起

Synology 群晖 DS920+ 4盘位 NAS存储(J4125、4GB)

Synology 群晖 DS920+ 4盘位 NAS存储(J4125、4GB)

2190.84元起

Synology 群晖 DS1821+ 8盘位 NAS(V1500B、4GB)

Synology 群晖 DS1821+ 8盘位 NAS(V1500B、4GB)

7196元起

Synology 群晖 DS1821+ 8盘位NAS (V1500B、4GB)

Synology 群晖 DS1821+ 8盘位NAS (V1500B、4GB)

7500元起

DS223j 双盘位 NAS网络存储服务器 私有云 智能相册 文件自动同步

DS223j 双盘位 NAS网络存储服务器 私有云 智能相册 文件自动同步

1315元起

Synology 群晖 DS1621+ 六盘位NAS (V1500B、4GB)

Synology 群晖 DS1621+ 六盘位NAS (V1500B、4GB)

6699元起

Synology 群晖 DS1522+ 5盘位NAS(锐龙R1600、8GB)

Synology 群晖 DS1522+ 5盘位NAS(锐龙R1600、8GB)

5167.19元起

Synology 群晖 DS423+四盘位中小企业NAS网络存储服务器 备份一体机企业私有云网盘 DS420+升级版

Synology 群晖 DS423+四盘位中小企业NAS网络存储服务器 备份一体机企业私有云网盘 DS420+升级版

3484元起

Synology 群晖 DS720+ 双盘位NAS(J4125、2GB)

Synology 群晖 DS720+ 双盘位NAS(J4125、2GB)

4099元起

synology群晖nas云存储ds920+中小型企业办公网络存储群辉家庭个人私有云盘四盘位NAS备份硬盘服务器ds918+(DS920+希捷企业级16T*4)

synology群晖nas云存储ds920+中小型企业办公网络存储群辉家庭个人私有云盘四盘位NAS备份硬盘服务器ds918+(DS920+希捷企业级16T*4)

14203元起

Synology 群晖 DS723+ 2盘位NAS(R1600、2GB)

Synology 群晖 DS723+ 2盘位NAS(R1600、2GB)

3999元起

Synology 群晖 DS420+ 4盘位NAS (赛扬J4025、2GB)

Synology 群晖 DS420+ 4盘位NAS (赛扬J4025、2GB)

3090元起

Synology 群晖 DS223 2盘位NAS(Realtek RTD1619B、2GB)

Synology 群晖 DS223 2盘位NAS(Realtek RTD1619B、2GB)

2199元起
202评论

  • 精彩
  • 最新
  • 这个 API接收消息 是将 Nodered 的 3001 端口映射出来的吗?是配置了推送就会启动这个端口?我这里也一直没过得去

    校验提示文案

    提交
    坑啊,果然是没有服务端导致的。我就说 3001 端口都没监听咋个回调!

    校验提示文案

    提交
    解决了就好,我发现了可是第一时间就补充到原文了哦 [傻笑]

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 你要是把文中”必须得有公网”写在前面,估计没几个能把你的文章看完了

    校验提示文案

    提交
    哈哈哈,有道理

    校验提示文案

    提交
    收起所有回复
  • 期待大神nodered新手教程

    校验提示文案

    提交
    这个就是最基础的啦 [高兴]

    校验提示文案

    提交
    收起所有回复
  • 试了一下,问题:企业微信API设置那一直不通过,提示“openapi回调地址请求不通过”。实际操作中,bizwechat节点中设置的端口号3001在docker的NR容器中我增加和不增加都提示上面的错误(这些端口都设置了转发),浏览器内网或外网登录3001都是失败的,百度了一下也没找到解决方法。
    疑问:NR的端口是1880,那3001端口是什么作用,连接bizwechat的吗?
    另外发现一个问题,我的NR端口如果设置了反向代理,登录成功后NR页面就会一直提示和服务器断开连接,如果取消反代就不会。

    校验提示文案

    提交
    对的,3001端口是连接bizwechat的,确认下bizwechat配置好以后3001在外网是能够访问的。然后nr反向代理需要在自定义标题中新增WebSocket,可以参考我写的另一篇:去看看

    校验提示文案

    提交
    企业微信不通过,检查3001端口在容器中映射出去没

    校验提示文案

    提交
    还有16条回复
    收起所有回复
  • @frLab 楼主,我觉得你的脑图很漂亮,是哪个软件呢,求推介

    校验提示文案

    提交
    processOn了解下 [高兴]

    校验提示文案

    提交
    才发现是这篇的评论,头图是node-red的一个流,不是脑图哦。

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 大神大神,封面图是用什么软件做的?

    校验提示文案

    提交
    封面就是node-red的一个流,截的图 [小眼睛]

    校验提示文案

    提交
    收起所有回复
  • 请教下,我每天要在网站上看企业有没有报承诺公告,想要实现每天定时给我推送他们报没报的消息,可不可以通过这个实现?

    校验提示文案

    提交
    要抓个包看看才能确认 [高兴]

    校验提示文案

    提交
    我从edge的f12看到请求方法是post,表单数据什么也都有,然后预览看到的信息就是我想要的内容,我想推送这个预览的内容

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • ddocker里面和路由器都放开了3001,外网访问都不行,企业微信还是回调失败。但是访问流程图界面都可以。大神解惑。谢谢

    校验提示文案

    提交
    解决了吗,我也同样问题

    校验提示文案

    提交
    确定NR添加了企业微信的服务器节点吗?

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 运行几天后发现,正常推送的信息仅有【新ip登录的提醒】,其他通知完全收不到,不知道什么原因。我把群晖的所有短信规则都勾选了。

    校验提示文案

    提交
    勾选了和邮件通知一样的内容,然后收到的消息和邮件收到的一致

    校验提示文案

    提交
    短信规则那里,我全选的,但是截至目前,只有[新ip登录提醒],其他类型的消息为什么收不到呢?是不是nodered这里的设置不对?获取不到群晖的所有信息?

    校验提示文案

    提交
    还有8条回复
    收起所有回复
  • 大佬们,话说一切设置正常的条件下,我们直接访问域名:3001会显示什么页面呀,我现在卡openapi回调,设置了nr服务端节点了
    在群晖设置nodered反代理是1881和1880两个端口吗 [喜极而泣]

    校验提示文案

    提交
    我的也是一直卡在这里,nr那边怎么设置呢???你那解决了吗

    校验提示文案

    提交
    我这个解决了,我是在这个容器上添加一个我们在nodered设置的端口解决的,我现在卡发短信,微信不提醒这里了 [喜极而泣]

    校验提示文案

    提交
    还有12条回复
    收起所有回复
  • 找到docker/nodered目录中的settings.js文件,取消注释下面的内容:
    这一句怎么理解,卡在这里了

    校验提示文案

    提交
    在群晖文件管理找到这个目录中的这个文件

    校验提示文案

    提交
    收起所有回复
  • 楼主没说明清楚 3001是什么端口??

    校验提示文案

    提交
    3001是nr里装的微信插件的监听端口,你用的是qc?qc应该是不支持第三方服务的端口

    校验提示文案

    提交
    我有公网的,没事情,直接ddns映射出来的,那3001可以修改其他的号码么?

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 去看看:1881/Home_NAS?to=886888888888&text=Hello world

    大神,我到这步就不成功了,怎么新建短信服务器呀,上面这个网址我只改IP地址后,提示URL需要4个参数,配置不成功呀。。

    校验提示文案

    提交
    系统是黑群6.1,直装的

    校验提示文案

    提交
    我在6.2上试了下,也没有问题。没有6.1的环境测试不了,可以试试按系统提示再加个参数。

    校验提示文案

    提交
    还有18条回复
    收起所有回复
  • 楼主,我在unraid上部署,也是提示“openapi回调地址请求不通过”,请问一下,IP地址用bridge还是br0,两种情况都试过了,都不行。3001的端口号是可以改的是吗,我用自填的8100不行,用3001也不行,端口映射外网也没法访问,只有node的1880外网可以访问,没弄明白问题出在哪

    校验提示文案

    提交
    是不是漏掉了NR要放上企业微信的服务端节点,在节点配置里选好自己的配置,再点部署试试。

    校验提示文案

    提交
    你说的这一步具体怎么操作呢?

    校验提示文案

    提交
    收起所有回复
  • nodered无法加载节点目录怎么解决啊

    校验提示文案

    提交
    映射到nodered的目录给everyone读写权限试试。

    校验提示文案

    提交
    把科学上网改成全局模式好了

    校验提示文案

    提交
    收起所有回复
  • openapi回调地址请求不通过

    校验提示文案

    提交
    检查:3001端口映射出去了吗?NR里面微信插件的服务端放到流程中了吗?然后用域名加端口号访问提示成功了再去企业微信配置。

    校验提示文案

    提交
    收起所有回复
  • 按照上面安装Node-RED的教程安装好了Node-RED,但是通过IP:1881登录的时候是个空白页面。。。。。

    校验提示文案

    提交
    检查docker里端口设置,默认是1880

    校验提示文案

    提交
    收起所有回复
  • 请问推送下面有一行字 marked():input parameter is undefined or null 这个咋回事????收不到信息

    校验提示文案

    提交
    我也是这样 [喜极而泣]

    校验提示文案

    提交
    解决了吗?

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 卡 openapi 回调的同学们:
    1,在群晖 Docker 容器里停掉 nodered,编辑-添加3001到3001端口的映射;
    2,开启 Docker 容器里的 nodered;
    3,nodered 管理页面,把左侧下面企业微信-服务端 拖到中间,按上面“推送”的参数填,port 是 3001.
    4,完成,部署;
    5,浏览器直接访问域名:3001,页面返回如下:

    bizwechat(企业微信版本的pushbear)
    欢迎使用由 flashsoft 大佬 ,F 大佬 , smarthomefans 提供的企业微信版本的pushbear。如果你看到这个界面证明你已经安装成功了

    如需发现更多好玩的智能家居玩法请访问这里

    校验提示文案

    提交
    访问域名:3001有出现欢迎页面,但是微信API回调还是显示openapi回调地址请求不通过,求大神指导

    校验提示文案

    提交
    我跟您一样,我是内网穿透,3001有欢迎界面,但API一直显示回调不通过,请问您是怎么解决的?

    校验提示文案

    提交
    还有5条回复
    收起所有回复
  • 好好修改一下吧,里面问题太多了,既然出教程就要描述清楚,不知楼主为何省去几个关键步骤(端口暴露,节点添加……),留下这么多坑,小白照葫芦画瓢只会浪费时间。想问楼主,中间添加Authorization有什么意义?不说了……

    校验提示文案

    提交
    请问成功了么?能留下一个QQ或者逼得联系方式不?我到最后一步还是收不到消息

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
天猫超级红包
距结束::
每天领现金,最高24888元
红包按钮
最新文章 热门文章
753
扫一下,分享更方便,购买更轻松