『瀚思彼岸』» 智能家居技术论坛

标题: 稀奇玩法:HA问手机、手机回复文字,然后HA朗读手机的回... [打印本页]

作者: XCray    时间: 2021-10-8 10:52
标题: 稀奇玩法:HA问手机、手机回复文字,然后HA朗读手机的回...
本帖最后由 XCray 于 2021-10-13 12:13 编辑

过程:HA通知(询问)手机、手机输入回复的文字、然后HA把手机回复的文字通过TTS和媒体播放器念出来。

(如果你自己主动想让家里的HA(已配好TTS和媒体播放器)念一段话,5楼朋友说的没错,直接在HA前端弄个input_text,HA看到其改变直接念就行了。当然,这么做要求HA必须已经实现外网可访问,而我说的办法则不要求HA外网可访问)

0. HA侧配置好媒体播放器和TTS后,创建一个自动化:
  1. alias: read-response
  2. description: '朗读手机输入的文字'
  3. trigger:
  4.   - platform: event
  5.     event_type: ios.notification_action_fired
  6. condition: []
  7. action:
  8.   - service: tts.edge_say
  9.     data:
  10.       entity_id: media_player.mpd
  11.       message: '{{trigger.event.data.textInput}}'
  12. mode: single
复制代码

1. HA侧自动化触发或手动执行服务调用:
  1. service: notify.mobile_app_xxphone
  2. data:
  3.   message: "这是Message本体"
  4.   title: 这是通知标题
  5.   data:
  6.     actions:
  7.       - action: "REPLY"
  8.         title: "输入要读出的文字"
复制代码
2. 手机收到通知,此时不要点它,而是摁住它,就会出现键盘,输入文字后点击“发送”按钮即可
[attach]32226[/attach]   [attach]32227[/attach]
[attach]32228[/attach]

灵活运用,这个玩法还是可以解决一些需求的。

~~~~~~~~~~~~~
其实,熟悉的朋友都知道,这个思路的核心是“可响应通知”,就是手机收到HA发来的可响应通知后,可以把一段文字回复给HA,HA就可以利用这段文字做一些动作了(比如开热水器开空调等等)。

当然,手机响应的内容除了输入文字,还有其他选项(包括菜单选择、打开某个链接、拨打某个电话号码等,以及法力无边的快捷指令!);考虑到安全,还可以在手机响应前要求先输入口令!(免得别人拿你的手机瞎回复)
HA侧收到手机响应后的动作也没有任何限制(只要是HA能干的都行)。

这个功能意义就是多了一个手机向HA发送数据(指令)的一个途径,尤其是在不方便部署SSL/域名实现HA外网接入的情况下,可能是手机与HA双向沟通的唯一渠道(我之前也用过短信,但短信多少有点费用问题)。

参考官方文档:Actionable Notifications | Home Assistant Companion Docs (home-assistant.io)



作者: mars.z    时间: 2021-10-8 13:15
羡慕ios的客户端可以发通知,安卓的官方客户端因为的墙的问题,通知功能完全用不了
作者: chenquanhao    时间: 2021-10-8 13:50
嗯,不错不错。之前就在想,怎么可以方便不在家时,小孩看电视时间长了之类的场景,tts语音提醒一下。
作者: 新生活    时间: 2021-10-8 14:58
学习,谢谢分享
作者: chzyh    时间: 2021-10-8 15:45
顶~~~~~ ,不知道啥用 在手机上的ha页面  也可以直接输文字念的
作者: ztrx    时间: 2021-10-8 16:09
有没有办法直接发语音
作者: XCray    时间: 2021-10-8 16:40
本帖最后由 XCray 于 2021-10-10 07:20 编辑
chzyh 发表于 2021-10-8 15:45
顶~~~~~ ,不知道啥用 在手机上的ha页面  也可以直接输文字念的

哈哈,你是明白人

很久之前就看到了移动端的可响应通知(Actionable Notifications)功能,一直没想好到底能干啥,今天突然有了这个想法试了试。

其实我也没想好到底会有什么用,可能主要是自动化触发、ha与手机端的交互更方便吧。

而在ha前端直接输入文字,需要使用者本人触发整个流程(并且手机不在家的话要求HA必须实现外网可访问,而可响应通知没这个要求)。

3楼朋友说的似乎是一个比较适用的场景。

另外比如该做饭了,征求你的意见想吃啥,你就可以回复然后ha念出来。。。

当然,微信短信电话啥的更方便,但这不是捣腾ha么。。。

另外,除了简单的文字,可响应通知还可以做得更多。
作者: XCray    时间: 2021-10-8 16:46
ztrx 发表于 2021-10-8 16:09
有没有办法直接发语音

当然有了!并且方法还很多。

比如在ha的www目录做个小页面,请求麦克风权限,录音后上传,ha侧监控上传目录,有新的音频文件就播放出来。

记得以前有朋友发过用企业微信+nodered实现,但那个显得更麻烦。

其实更方便的是摄像头的对讲、智能音箱等等。但如果说用ha玩的话,我说的录音上传的办法最简单,前提是先要做好外网接入。可响应通知好像还无法上传附件,也许以后会增加这个功能吧。
作者: liangsai12    时间: 2021-10-8 22:38
shaonianzhentan大佬的云音乐集成这个小功能
作者: XCray    时间: 2021-10-8 23:29
liangsai12 发表于 2021-10-8 22:38
shaonianzhentan大佬的云音乐集成这个小功能

官方自带的功能,不需要其他组件啊……
作者: yuyuye    时间: 2021-10-9 10:41
感谢分享。
actionable通知一直在用,主要就是一些需要人工判断一下的自动化场景,发个通知手工点一下。
比如平时都是定时开关热水器的,今天家里貌似没人,就可以发通知确认是否还要打开啥的。
作者: XCray    时间: 2021-10-9 11:14
本帖最后由 XCray 于 2021-10-10 07:29 编辑
yuyuye 发表于 2021-10-9 10:41
感谢分享。
actionable通知一直在用,主要就是一些需要人工判断一下的自动化场景,发个通知手工点一下。
比 ...

客气,确实如此,有些比较重大或者有风险的动作在执行前最好还是人来决策一下比较稳妥。
作者: 183608697    时间: 2021-10-10 01:55
学习一下
作者: muxiachuixue    时间: 2021-10-12 12:18
本帖最后由 muxiachuixue 于 2021-10-12 12:30 编辑

利用mqtt服务平台(如巴法云),就可实现在无外网访问条件的情况下,通过siri控制家里HA设备。

场景实例1:
操作者:hey siri,对讲机
siri:什么内容?
操作者:我今天晚点回来,和朋友在外面吃饭
结果:家里小爱同学说出“我今天晚点回来,和朋友在外面吃饭”,也可以同步推送到家里人微信

场景实例2:
操作者:hey siri,家庭助理
siri问:什么内容
操作者:扫地机器人打扫一下客厅
结果:家里扫地机器人去打扫客厅

以上无需HA处在外网环境。

实现大致步骤:
1. 在巴法云中创建一个任意设备(开关、灯都可以)
2. iPhone快捷指令app中调用巴法云mqtt接口,向设备推送mqtt消息,消息内容至少包含两部分,一是消息类型,二是消息内容
3. 巴法云收到mqtt消息后,会把mqtt消息赋值给设备状态
4. node-red里面定义自动化,当收到巴法云mqtt消息时,如果消息类型符合,就执行操作,如调用小爱tts朗读mqtt消息中的消息内容
5. 如需控制家里设备,只需把消息传递给小爱同学,让小爱同学执行这条消息即可

再发散一下,甚至不需要问siri,点击iPhone桌面图标,出现常见的操作菜单,点击菜单即可控制家里HA设备;根据iPhone定位触发的HA设备自动化(HA无外网环境)



作者: XCray    时间: 2021-10-12 12:30
muxiachuixue 发表于 2021-10-12 12:18
利用mqtt服务平台(如巴法云),就可实现在无外网访问条件的情况下,通过siri控制家里HA设备。

场景实例1 ...

嗯,搞明白mqtt后,确实可以玩出很多花样,网上免费的mqtt服务器也有很多。另外,直接用消息就行,不需要非得弄个虚拟开关啥的。
作者: muxiachuixue    时间: 2021-10-12 12:32
本帖最后由 muxiachuixue 于 2021-10-12 12:34 编辑
XCray 发表于 2021-10-12 12:30
嗯,搞明白mqtt后,确实可以玩出很多花样,网上免费的mqtt服务器也有很多。另外,直接用消息就行,不需要 ...

设备就是个实例,承载消息的,巴法云貌似无法直接向HA推送消息,只能用实例做载体。没啥区别,虚拟开关就是一个消息载体的名字而已,设备并不会出现在HA中,不会对你有任何干扰
作者: XCray    时间: 2021-10-12 13:14
本帖最后由 XCray 于 2021-10-12 14:41 编辑
muxiachuixue 发表于 2021-10-12 12:32
设备就是个实例,承载消息的,巴法云貌似无法直接向HA推送消息,只能用实例做载体。没啥区别,虚拟开关就 ...

你说的没错,我们关注的问题本质是消息传递,对虚拟的开关或灯啥的其实我们并没有兴趣。

利用任一mqtt服务器,都可以实现手机向ha/nr传递任何消息的效果,比借助巴法云还简单。

但是,要做到手机锁屏状态下ha/nr这边还能主动向手机发出提醒(而不是手机侧首先发起),好像还是只有官方app能做到,除非有手机上的app能做到锁屏时维持与mqtt服务器的连接并且可以在收到mqtt消息时通知,我不知道有没有这种app,也许有吧?
不过即使有这样的app,我应该也不会选择——我更倾向于官方已有的东西,官方app能解决的,没必要再弄个第三方程序(没准儿还得多注册一个账号)。

作者: fzbxb    时间: 2022-2-2 20:52
有没有类似备忘录的功能,白天想到的内容都记录下来,到家后通过tts播放提醒
作者: chenquanhao    时间: 2022-3-15 21:18
这几天出了点小状况,感觉应该要在alias: read-response的触发那里,加下面两句列明事件数据,不然其他通知的其他操作都会触发这个自动化,虽然如果不是输入文字朗读的操作,触发了也没什么实质影响,但是我在朗读文本前加了一个暂停电视的动作,这就有点尴尬了
  1. event_data:
  2.   actionName: REPLY
复制代码


作者: mengxgh    时间: 2022-3-16 18:03
看了这多,我还是没进门呢。
作者: XCray    时间: 2022-3-16 20:41
fzbxb 发表于 2022-2-2 20:52
有没有类似备忘录的功能,白天想到的内容都记录下来,到家后通过tts播放提醒 ...

很简单呀,自己把自动化改造一下就行了。

手机上可以把录音或文字传递到HA后台,HA上先保存起来,检测到你回家的事件后调用TTS播放或直接播放录音。

当然,还是要求比较好的基础的
作者: chuanzai    时间: 2022-6-9 11:00
mark一下。。。很有意思




欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5