你现在很健谈吗? 难的事情就交给Google Home 10行告诉你吧!
你好。
我是Mandai,负责Wild 开发团队。
去年年底,我在公司招待会上收到了一台 Google Home,但由于它在家里积满了灰尘,所以我把它带到了工作场所,让它说我想说的话。
需要准备什么
这次我要用的设备只有Google Home(mini也可以)和一台PC。
PC 不需要是 Raspberry PI。
如果你只是想让它说话,只要
google-home-notifier对于Windows来说,重建node-gyp似乎是一个问题。
这篇文章可能会有所帮助。
就我而言,当我计划执行此操作时,CentOS VM 正在运行,因此我能够使用该 VM 快速创建它。
此外,如果您有节点cron模块,您还可以进行预定的通信。
准备
- 检查Google Home的本地IP
- 安装 Node.js
- 安装PC和Google Home之间通信所需的库
- 使用 npm 安装所需的模块
- npm 安装 google-home-notifier
- npm 安装 cron (可选)
检查Google Home的本地IP
对于 Android,您可以通过Google Home 应用
显示左上角三行的菜单并选择您的设备。
如果您能够连接 Google Home,请选择“设置”,IP 地址应显示在底部。
安装 Node.js
你可以使用 yum,但我更喜欢更新的东西。
这次我使用的是node.js v8.9.4。
安装PC和Google Home之间通信所需的库
当您在准备节点后尝试使用 npm 安装 google-home-notifier 时,您可能会得到类似以下内容的信息。
npm install google-home-notifier > [email protected] install /home/vagrant/Documents/googlehome/node_modules/mdns > node-gyp重建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 ^ 编译终止。 make: *** [Release/obj.target/dns_sd_bindings/src/dns_sd.o] 错误 1 make: 离开目录 `/home/vagrant/Documents/googlehome/node_modules/mdns/build' gyp 构建错误 gyp ERR! stack 错误:`make` 失败,退出代码:2 gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:258: 23) gyp ERR! 堆栈在emitTwo (events.js:126:13) gyp ERR! 堆栈在ChildProcess.emit (events.js:214:7) gyp ERR! 堆栈在Process.ChildProcess._handle.onexit (internal/child_process) .js:198:12) gyp 错误!系统 Linux 3.10.0-693.17.1.el7.x86_64 gyp 错误!命令“/usr/local/bin/node”“/usr/local/lib/node_modules/npm/node_modules /node-gyp/bin/node-gyp.js" "重建" gyp ERR!cwd /home/vagrant/Documents/googlehome/node_modules/mdns gyp ERR!node -v v8.9.4 gyp ERR!node-gyp -v v3 .6.2 gyp 错误!不行 npm 警告[电子邮件受保护]没有描述npm 错误ELIFECYCLE npm 错误! 1 npm 错误! npm ERR! 退出状态 1 npm ERR! 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
易酱
这里准备的代码很简单,我先暴露一下。
// example1.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 = 'Let's chat'; // 您希望 Google Home 说的内容 googlehome.device ( googlehome_name, 语言); googlehome.ip(googlehome_ip); googlehome.notify(消息, (res) => { console.log(res); });
将上述源文件保存为sample1.js。
执行以下命令。
节点示例.js
几乎不需要解释,但是有三个地方要改,请根据自己的环境输入。
- googlehome_name
- googlehome_ip
- 语言
请注意第 8 号线和第 9 号线附近。
似乎很多人都沉迷其中,最初似乎只需第 8 行就可以使用给 Google Home 的名称来解析名称(DNS 查找),但它经常不起作用,所以你可以使用第 9 行指定的 Google Home 名称进行 DNS 查找。
如果指定 IP 地址,则第 8 行是不必要的,但语言设置似乎只能通过 device() 方法完成,所以我故意写了两个。
开发它以便可以定期执行
由于 google-home-notifier 模块制作得非常好,所以我没有太多用它,所以我决定进一步开发它并定期说一些东西,最好是使用 cron,所以我做了类似的事情。会看一下。
我想使用 npm 模块 cron 而不是使用 Linux cron 来实现它。
// example2.js const googlehome = require('google-home-notifier'); const CronJob = require('cron').CronJob; const messages = require('./messages'); // 执行间隔和内容谈论 const googlehome_name = 'Your Google Home Name'; // Google Home 名称(任何都可以) const googlehome_ip = 'xxx.xxx.xxx.xxx'; // Google Home IP 地址 const language = 'ja ';您希望 Google Home 使用的语言(美国英语) googlehome.device(googlehome_name, language); messages.forEach((m) => { new CronJob({ cronTime: m .schedule, onTick: () => { googlehome.notify(m.message, (res) => { console.log(res); }) }, start : true, timeZone: '亚洲/东京', }) });
下面是一个定义文件,其中包含要说的句子和时间表。
// messages.js module.exports = [ // 写法和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 套餐中,可能会卖得更好,但会不会太多了?
就是这样。