Raspberry Piを使ってGoogle Homeに時報サービスをしてもらいましょう
“Google AIY Projects 「Voice Kit」が日本上陸! 早速、組み立ててみたよ!“、
“ダイソンのPure Hot + CoolをGoogle AssistantとHomeKitでリモコン操作できるようにしてみました”、
“Google Home Mini + Chromecast コーラルを使ってNetflixやYouTubeを音声で楽しんでみました“の続きです。
“Google Home“って、喋らないと何もしてくれないなあ。たまには、自分で何か役に立ちそうなことを喋ってくれないかな?と思っていたら、”Raspberry Pi“を使うと、”Google Home”に喋らすことができそうなんので、試してみることにしました。
(1) google-home-notifierというライブラリをインストールします
“Raspberry Pi”に”google-home-notifier“というJava Scriptのライブラリをインストールします。インストール手順は、GitHubのページに掲載されていますので、その通りに実行すればOK。
互換性があるnodejsをインストールします。
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install nodejs
インストールが問題なく完了したことをバージョンを表示してチェックしておきます。
node -v
npm -v
必要なライブラリをインストールします。
sudo apt-get install git-core libnss-mdns libavahi-compat-libdnssd-dev
“google-home-notifier“をインストールします。
npm install google-home-notifier
“node_modules/mdns/lib/browser.js”の中身を編集します。
nano node_modules/mdns/lib/browser.js
Browser.defaultResolverSequence = [
rst.DNSServiceResolve(), 'DNSServiceGetAddrInfo' in dns_sd ? rst.DNSServiceGetAddrInfo() : rst.getaddrinfo({families:[4]})
, rst.makeAddressesUnique()
];
“/home/pi/node_modules/google-home-notifier/example.js”の中身を編集します。
deviceName
の箇所を、ご自身がGoogle Homeに付けた名前に変更します。
“/home/pi/node_modules/google-home-notifier/google-home-notifier.js”の中身を編集します。
deviceAddress
の箇所を、ご自身がGoogle Homeに割り当てられたIPアドレスに変更します。
lang
とgooglettsaccent
の箇所を、”ja
“に変更します。
(2) Google Homeに時報を喋ってもらうようにします
先人の知恵を拝借すると、”googlehome-time-signal“を使えば、簡単に時報を喋ってくれるようになるそうなんですが、うまく動作してくれませんでした。
というわけで、自分で、時報を喋ってくれるJava Scriptのスクリプトを作ってみます。
nano googlehome-time-signal.js
var googlehome = require('google-home-notifier');
var language = 'ja'; // if not set 'us' language will be used
googlehome.device('書斎', language); // Change to your Google Home name
// or if you know your Google Home IP
//googlehome.ip('192.168.1.2', language);
var now = new Date();
var hours = now.getHours();
googlehome.notify(hours.toString() + ’時をお知らせします ', function(res) {
console.log(res);
});
さあ、スクリプトを実行してみましょう。
node googlehome-time-signal.js
(3) 時報スクリプトを定時に実行するようにします
crontabを活用して、毎時ジャストタイムでGoogle Homeが時報を喋ってくれるようにします。
crontab -e
0 * * * * node googlehome-time-signal.js
sudo /etc/init.d/cron start
これで、取り敢えずバージョンが完成しました。ただ、このままだと、真夜中や早朝でも、時報を喋ってくれちゃうので、自作の”googlehome-time-signal.js”に手を入れないとね。
p.s>
普通に使っている場合は良いのですが、POOHのように、外出時には、Homekitで、使わない電源コンセントをオフにしたりしていると、Google HomeのIPアドレスがDHCP的に変わってしまうことがあります。そうすると、今回、ご紹介した範囲では、うまく動作しなくなってしまいます。Google HomeのIPアドレスが変わってしまったら、”google-home-notifier.js”の”deviceAddress”も修正する必要があります。ちょっと調べた感じでは、Google HomeのIPアドレスを固定にはできないようなので、スクリプトの方で対応するしかなさそうなんですが…
p.s> 2018年9月29日追記。
2018年9月21日頃から、Google Homeが指定している通りに喋らないなってしまったので、ネットで調べてみたところ、Google側の仕様変更によるものらしいことが分かりました。暫定的な対処とのことですが、以下のページに記載の通り修正してみたところ、正常に動作するようになりました。
https://qiita.com/ezmscrap/items/24b3a9a8548da0ab9ff5
p.s> 2018年12月28日追記
あれ?そう言えば、最近、Google Homeの時報を聞いてないなあ?と思い、ネットで調べてみたところ、やはりGoogle側の仕様変更によるみたいなので、以下のページに記載の通り修正してみたところ、正常に動作するようになりました。
https://qiita.com/k_keisuke/items/2974ddaf2bf24a3ea32e
|
|
|
“Adobe Stock“でベストショットな写真素材を販売中です。是非ご覧下さい。
ホームページ”THE POOH FILES”にも是非お立ち寄り下さい。