iobroker/homeassistant/nr小爱同学功能增强之智能语音留言系统

还没有写完

缘起

妈妈在家帮忙看家,但是她不爱看手机,有时候有啥事情通知她,如果发信息到手机她经常会错过。家里也有个摄像头,但是遇到她不在家的时候也挺麻烦的。
小爱音箱刚出来的时候,我就期待有个留言功能。大概就是通过手机给小爱同学留言,家里发现有人的时候,就可以通知她,如果她读取了相关信息,跟小爱说一下我收到信息了,同时系统通知我已经收到留言。可惜小爱同学的留言功能一直停留在只能现场给音箱留言,留言之后,还需要人主动问询有啥留言才会播报,这距离我的期待有很远的距离。
哈哈,还好我的特长就是抱大腿,我自己把基本逻辑弄清楚,求助三木大神,他半个小时就给我甩了一条基础流程。真羡慕这些会写代码的大神。
三木大佬的基础版教程在此:
利用音箱TTS功能和企业微信配合实现语音留言板

总体思路

  • 微信发送留言内容至nodered,nr进行处理并储存;
  • 人体检测传感器被触发,通过小爱音箱报送未读信息,包括信息时间、发信人、具体内容等;
  • 在没有按无线开关清除留言之前,人体触发则一直报送,保证消息到达性。
  • 按无线开关,停止播送,表示已经读取了相关信息。

前置软硬件基础

  • 搭载iobroker/homeassistant/nodered的n1、黑白群晖、其他linux主机等;
  • 小爱音箱–我用的是最早那款ai音箱,其他版本按理应该也行,成功的请后面留言;
  • 小米人体检测和无线按钮开关
  • 如果是加强升级版,可以附加摄像头一枚。
  • 安装iobroker或者homeassistant,在此基础上安装nodered。

操作过程

一、安装iobroker或者homeassistant以及在此基础上安装nodered插件。

具体的教程,我已经很详细写过,请看:

二、在nodered上安装企业微信插件和小爱同学插件

具体的教程,我已经很详细写过,请看:

三、绿米网关及其子设备接入iobroker或者homeassistant)

四、上面的系统和节点都设置好,把附件的流文件导入nodered

五、具体设置方式

1. 在企业微信web管理后台端,新建一个命名为“语音助手”的应用


2.在设定用户节点,把你企业微信的联系人的id改为具体人的名称。
比如你自己的企业微信id名称为shuaige,那就改为你的名字“大帅哥”,你老婆的id为lingzhiling,你就改为“林志玲”。

3.添加你的对应人体触发节点。


4.填加无线开关控制信息,
当你按了无线开关,就会停止触发播放,表示已经有人读取了这条信息。

3和4两部,因为我的设备是用iob接入的,如果你是用ha接入,把相应的节点替换掉就可以了。

后续

有时间再把摄像头识别是谁接受了这条信息的流程也补上。
小爱音箱智能留言.json (9.0 KB)

3 个赞

其中一个关键点是用户id,可以参考这个帖子提取。

这个可以有 我先看看 装修好再弄

这个就更具体了。有一点是否可以考虑,不立即删除留言,在24小时之后再删除。老年人有时候留言没有听清楚,可能想多听几遍。但后续麻烦又来了,还要增加重复收听的触发。好在一般家里留言不是很多。但留言对于老人和孩子,太重要了。还有一点没有搞明白,怎么做到发给特定人的?

等我想想 可以探讨一下
可以结合显示屏,我就用了一个小米废旧平板,把留言显示在上面,语音提醒有留言和读取留言,具体的内容可以在留言板上查看或者删除,用lovelace的list功能。

我突然有个想法,可以利用摄像头抓拍人脸识别,能知道是谁读取了留言。

我昨天的想法是,家里的留言应该不太避讳别人听到,只是应该听的人一定要听到。而留言基本上都是进屋之后,过个1分钟,让人喘口气,然后根据进来的人是谁,播报一遍。如果是人本来就在屋里,那就先播报谁谁有留言了。只要这个人在屋里,我就认为他听见了,没听清楚就再来一遍。我家老人不会看屏幕的,耳朵也不太好,但是他知道有留言就要听 :smile:

大神好请问call service节点怎么设置:
屏幕快照 2020-04-18 上午10.09.47

可以实现,配合监控识别或者指纹锁,知道是谁触发了,老人和小孩就不删留言,其他一律删除

我觉得你这样,要弄个全屋音箱系统,每个房间都有声音,那样播报漏率会小很多,老人的话,可以间隔二十分钟再报,报三次然后再删除,应该会听到了

其实我不太担心收信人会漏掉,因为毕竟在家里,只要有人了才播报,并且可以重复播报,一般不会漏掉留言。
现在最难的,或者是我一直没有搞明白的是,发信人怎么发给具体的用户?我在手机中一直就没有找到可以选成员的地方。 :sob:

简单解决,提供思路试试:
发信息的时候,前面加上:留言to xxx,…,后面用nr识别留言 too xxx就可以了,麻烦了点。

老大,我现在就是这样处理的,截取开始的六个字符,去匹配预定义的用户名并转成收信人。我对企业微信不熟悉,总觉得应该可以选择成员的,一直没找到 :sweat_smile:

弄个二维数组
补字数

感谢萝卜大神分享,买个人体传感器抄作业,小爱play,成功再来回帖