你现在口齿伶俐吗?如果你有什么难以启齿的话,不妨让 Google Home 用 10 行话替你表达!

大家好,
我是Mandai,Wild团队负责开发工作的成员。
去年年底,我在公司年终聚会上收到了一台 Google Home,但它一直放在家里落灰,所以我把它带到办公室,让它自由发挥。
你需要什么
这次你只需要一台 Google Home(或迷你版)和一台电脑。
你不一定需要树莓派电脑。
如果只是想让它发出声音,google-home-notifier 的任何能运行
在 Windows 系统上,重新编译 node-gyp 似乎是主要难点。
以下文章或许对你有帮助。
就我而言,我计划执行此操作时,CentOS 虚拟机正在运行,因此我能够在虚拟机中快速创建它。
此外,如果您安装了 Node.jscron模块,您还可以发送定时通知。
准备
- 查找您的 Google Home 的本地 IP 地址
- 安装 node.js
- 安装电脑和 Google Home 之间通信所需的库
- 使用 npm 安装所需的模块
- npm install google-home-notifier
- npm install cron(可选)
查找您的 Google Home 的本地 IP 地址
在安卓设备上,Google Home 应用找到这些信息
点击左上角的三条横线显示菜单,然后选择“设备”。
如果已成功连接到 Google Home,请选择“设置”,您的 IP 地址应显示在底部。
安装 node.js
你可以使用 yum,但最好使用最新版本。
这次我使用的是 node.js v8.9.4。
安装电脑和 Google Home 之间通信所需的库
如果在准备好 Node.js 环境后尝试使用 npm 安装 google-home-notifier,可能会遇到以下错误:
npm install google-home-notifier > [email protected] install /home/vagrant/Documents/googlehome/node_modules/mdns > node-gyp rebuild make: 进入目录“/home/vagrant/Documents/googlehome/node_modules/mdns/build” CXX(target) Release/obj.target/dns_sd_bindings/src/dns_sd.o 在包含自 ../src/dns_sd.cpp:1:0 的文件中: ../src/mdns.hpp:32:20: 致命错误:dns_sd.h:没有该文件或目录 #include [email protected] 没有描述 npm WARN [email protected] 没有仓库字段。 npm ERR! 代码 ELIFECYCLE npm ERR! 错误号 1 npm ERR! [email protected] 安装:`node-gyp rebuild` npm ERR! 退出状态 1 npm ERR! npm ERR! [email protected] 安装脚本执行失败。 npm ERR! 这可能不是 npm 的问题。上方可能还有其他日志输出。 npm ERR! 本次运行的完整日志可在以下位置找到: npm ERR! /home/vagrant/.npm/_logs/2018-03-17T06_56_20_006Z-debug.log
错误信息显示要包含的头文件 dns_sd.h 不存在,但可以通过运行以下命令安装该头文件。
sudo yum install avahi-compat-libdns_sd-devel
由于 node-gyp 的原因,您在使用 npm 安装时可能会遇到错误,但 node-gyp 只是一个使用 node.js 自动编译用 C++ 编写的源代码的工具,就像本例中一样,因此问题通常是缺少构建所需的文件。
nvm进行安装可能会让清理工作更容易!
使用 npm 安装所需的模块
你只需要从 npm 安装必要的模块即可。
最低要求是安装 google-home-notifier;没有它,无法与 Google Home 集成。
此外,安装 node-cron 可以使其定期发出语音提示,非常适合为您的家居环境增添一些趣味。
# 创建工作环境 mkdir path/to/project cd path/to/project npm init # 安装 google-home-notifier npm install google-home-notifier # 安装用于定期执行(cron)的模块 npm install cron
简易酱汁
我们将提供的代码非常简单,所以我们先向您展示一下。
// sample1.js const googlehome = require('google-home-notifier'); const googlehome_name = '您的 Google Home 名称'; // 您的 Google Home 的名称(任意名称均可) const googlehome_ip = 'xxx.xxx.xxx.xxx'; // 您的 Google Home 的 IP 地址 const language = 'ja'; // 您希望 Google Home 使用的语言(美国用户为英语) const message = '我们聊聊吧'; // 您想说的话 googlehome.device(googlehome_name, language); googlehome.ip(googlehome_ip); googlehome.notify(message, (res) => { console.log(res); });
将上述源代码保存为 sample1.js。
使用以下命令执行它。
node sample.js
几乎不需要解释,但有三处需要修改,请根据您的实际情况进行修改。
- googlehome_name
- googlehome_ip
- 语言
需要注意的是第 8 行和第 9 行。
似乎很多人都会在这里卡住。通常情况下,只需使用第 8 行中分配给 Google Home 的名称即可进行名称解析(DNS 查询),但经常会失败,因此需要在第 9 行指定 IP 地址。
如果您指定了 IP 地址,您可能会认为第 8 行是不必要的,但由于语言设置似乎只能通过 device() 方法完成,因此我特意将两者都包含在内。
将其发展成可以定期执行的程序。
google-home-notifier 模块做得非常出色,我几乎不需要做任何改动,所以我决定在此基础上进行扩展,使其能够定期发送消息,最好使用 cron 任务。我将
尝试使用 npm 模块的 cron 功能,而不是 Linux 内置的 cron 工具。
// sample2.js const googlehome = require('google-home-notifier'); const CronJob = require('cron').CronJob; const messages = require('./messages'); // 描述执行间隔和消息内容的文件 const googlehome_name = '您的 Google Home 名称'; // 您的 Google Home 的名称(任意名称均可) const googlehome_ip = 'xxx.xxx.xxx.xxx'; // 您的 Google Home 的 IP 地址 const language = 'ja'; // 您希望 Google Home 使用的语言(美国用户默认为英语) googlehome.device(googlehome_name, language); googlehome.ip(googlehome_ip); messages.forEach((m) => { new CronJob({ cronTime: m.schedule, onTick: () => { googlehome.notify(m.message, (res) => { console.log(res); }); }, start : true, timeZone: 'Asia/Tokyo', }); });
下面是一个定义文件,其中包含口语句子和时间表。
// messages.js 模块导出 = [ // 语法几乎与 Linux cron 相同 { schedule: '0 0 10,13,16,19,22 * * *', message: 'Hogehoge' }, // 注意秒的概念在开头 { schedule: '0 0 22 * * *', message: 'Test' }, // 使用数字、星号、逗号、连字符和斜杠来编写 { schedule: '0 */5 9-18 1,2,3 * *', message: '一月、二月和三月,每天 9:00 到 18:00 每 5 分钟播报一次' }, ];
如果你把 messages.js 文件加厚,它会告诉你各种各样的信息,你可能会觉得很有趣一段时间。
概括
拥有一个能说话的设备就让事情变得如此有趣。
最重要的是,google-home-notifier 的抽象程度令人难以置信;它几乎做到了用户无需任何操作。你只需要提供一个参数,告诉它你想让它说的话,这简直太棒了。我认为这种功能应该更普及。
如果把它集成到 Google Home 套件中,销量肯定会更好,但也许这样做有点过头了?
就这样。
0
