[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

你现在很健谈吗? 难的事情就交给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

对于 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 套餐中,可能会卖得更好,但会不会太多了?

 
就是这样。

如果您觉得这篇文章有帮助,请点赞!
0
加载中...
0 票,平均:0.00 / 10
1,722
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

写这篇文章的人

关于作者

万代洋一

我的主要工作是为社交游戏开发 Web API,但我也很幸运能够做很多其他工作,包括营销。
此外,我在 Beyond 中的肖像权被视为 CC0。