第七章 有话说出来 ——让HomeAssistant说话
导读: “没声音,再好的戏也出不来”,这是谁做的广告来的?做啥的广告来的?不重要了,反正说的还挺对。
让设备说话有两种方式,一种是真的说话,通过外放设备播放声音;另一种是Notification“通知”,通知可以发送到手机,发送到即时通讯软件,发送到电视等等。
1、推送“通知”
比起说话,“通知”简单一些,也很实用。系统内建了Notify,我们要做的就是加载它,并做好规则。在Configuration.yaml中,加入notify:
如果要在电视上接收“通知”,需要把电视接入HA(homeassistant),以LG电视为例:
电视的IP需要设置为固定IP,并且记录它的mac地址,按照上面格式一并写入。重新启动HA。
在上次Node基础上,增加一个Call service部件,连接好。(我这里比昨天多加了一个判断是否已打开(not on)的模块来避免重复发送开关指令。
以LG电视为例,部署之后就可以测试了,是不是非常简单。其他设备也是一样的,手机商店搜索Home assistant安装,并登录HA之后,就可以在Node部件的Service中找到对应的手机名字,改为手机,“通知”就会推送到手机。如果手机没有收到,那么到HA管理页->侧边栏->配置->集成->“+”,有两个需要添加,1、Home Assistant iOS,2、Mobile APP。添加后就不会有问题了。
2、说话
最开始购置入门装置时介绍过,购置一个小度或者是Google home(mini),这样就可以作为外放设备,用来说话。Google home的添加和刚才的Home Assistant iOS一样,在同样的地方,添加即可。小度的话需要在Configuration.yaml中加载一个组件。
而在一开始我们也已经添加了tts引擎,如果没有,那么记得也写进去。百度的tts引擎需要申请一下:
申请百度账号,进入https://ai.baidu.com/tech/speech/tts 页面选择立即使用,创建应用,按照说明即可,选项全部默认。之后就会看到app id,api key, secret key,对应填好。
保存并重新启动HA。 剩下的事情和“通知”差不多了,都是采用Node-red来操作。只不过就是Domain换成了tts,service换成了语音引擎,Entity Id写入你接入的设备。
Data部分同样是
{"message": "你想要说的话"}
百度支持中英文,不过有时候会说的比较别扭,Google也支持中英文,建议在Data中加入"language":"zh-cn"(中文)"en-us"(英文),发音更纯正准确。
{"message": "你想要说的话","language": "zh-cn"}
如果你能够使用Google的服务,那么加上IFTTT可以拓展出好多好多的实用功能,比如将通知转发至即时通讯软件Line(免费),比如定制Google的语音命令等等。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~









清风明月新电
校验提示文案
值得就买Worthbuy
校验提示文案
清风明月新电
校验提示文案
值得就买Worthbuy
校验提示文案