GoogleHomeを買いました。
豆知識を教えてくれたり、ピカチュウと話せたりと、純粋に楽しい!
さらに、IFTTTを使えばGoogleHome→Lineと連携させてしゃべった内容をLineに送ることもできます。
でも、IFTTTではLine→GoogleHomeのように他のサービスをトリガーにしてGoogleHomeをしゃべらせることはどうやらできないようです。急にしゃべりはじめると怖いから?
でも、自分では気づかないことをしゃべって教えて欲しい!
Raspberry Piとgoogle-home-notifierでしゃべらせる
調べてみたところ、Raspberry PiとNode.jsのライブラリを使う方法がありました。
GoogleHomeスピーカーに外部からプッシュして自発的に話してもらいます
[LINEに送信したメッセージを、Google Homeで読み上げ、家族に通知]
(https://qiita.com/daaaaaasuke/items/5e95983166667094f42f)
これだ!と思ったもののそもそもRaspberry Piを触ったこともないのでそのセットアップからやってみます。
1. Raspberry Pi3を購入する
Amazonでこちらを購入
何がよいのかわからなかったので、適当にいろいろ入ってそうなセットにしましたhttps://www.amazon.co.jp/dp/B01MR4SQV5/ref=psdc_2151902051_t1_B076X2H479
- Raspberry Pi3 Model B
- Raspbianプリインストールmicro SDカードが付属
- 電源ON,OFFができる電源ケーブルが付属
- その他電源ケーブル、LANケーブル、HDMIケーブル等が付属
2. Raspberry Pi3の起動とPCからコマンド操作
PCはMacBook Air OSX Yosemite(10.10.5) です。
ラズパイが到着してから気づいたのですが、ラズパイはマウスとキーボードを有線接続しないと初期設定できないらしい。残念ながらちょうどいいのが手元にない、わざわざ買うのももったいない。
調べてみたところ、Macからssh接続してコマンド操作することができるらしい。
まずラズパイのSSH設定を有効にする必要があるとのこと。
raspberry pi 3でSSH接続できない?
SDカードに直接sshディレクトリを作ればイケるとのことなので
RaspbianOSが入ったSDカードをMacにセットし、以下を実行する。
touch /Volumes/boot/ssh
ディレクトリができていることを確認(sshがあればOK)
ls -l /Volumes/boot/
その後、
- SDカードをMacから抜きラズパイ本体にセット
- 付属のLANケーブルでラズパイとルーターを接続
- 付属のHDMIケーブルでラズパイとモニターを接続
- スイッチがOFFになっていることを確認して電源ケーブルをラズパイにつなぐ
- 電源ケーブルのスイッチをON
- モニターでラズパイが立ち上がることを確認
- macのターミナルを立ち上げssh接続コマンドを実行
ssh -X pi@raspberrypi.local
- パスワードを入力する(デフォルトは
raspberry
) - ターミナルに「pi@raspberrypi:~ $」が表示されたらssh接続OK
ちゃんと起動した!(ただしキーボードもマウスもないので画面上は操作できない)
3. Raspberry Pi3の初期設定と画面操作
ssh接続したターミナルで初期設定します。
初期パスワードは全てのラズパイで共通なので早めに変更する。
VNCを設定すると画面操作がPCからできるらしい。
VNCは以下を参考にRealVNCにしてみました。
http://izmiz.hateblo.jp/entry/2017/09/22/230146
https://www.8yazaki.jp/raspi/14_realvncserver_install/
- 最新化(30分くらいかかる)
sudo apt-get update
sudo apt-get upgrade
- パスワード変更
- 設定画面を表示
sudo raspi-config
- メニューの「1 Change User Password」を選択してEnter
- 画面がターミナルにもどる。指示の通り新しいパスワードを2回入力する
- 「passwd: password updated successfully」と表示されたらOK
- VNC設定(ラズパイ側)
- RealVNC をインストール
sudo apt-get install realvnc-vnc-server
- 設定画面を表示
sudo raspi-config
- 「5 Interfacing Options」を選択してEnter
- 「P3 VNC」を選択してEnter
- 質問にYESを選択してEnter
- VNC設定(Mac側)
- Real VNCからアプリをダウンロード
- アプリを起動し、アドレスを入力する
raspberrypi.local:5900
- ユーザー名(pi)と先程設定したパスワードを入力する
VNC越しにラズパイの画面が見れました!
これで有線のマウスとキーボードをラズパイに繋がなくてもPCのマウスとキーボードで画面操作できます。
4. Node.jsをインストール
画面が見れるようになりましたが、コマンド操作が続きます。
次はNode.jsのインストールです。すでにNode.jsはインストール済みですが、v4.8.2なので相当古いです。そしてnpmは入っていません。Node.jsもあまり詳しくはありませんが、どうやらNode.jsとそのバージョンを管理するモジュールとをセットで導入するようです。
- https://nodejs.org/ja/ でLTSバージョンを確認する(作業時は8.11.1でした)
- 上で確認したLTSである8系をインストールできるように設定
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
- インストールする
sudo apt-get install -y nodejs
-
node -v
でLTSバージョンが表示されたらOK -
npm -v
で何らかのバージョンが表示されたらOK(作業時は5.6.0でした)
おそらくこのままでも動くのですが、今後Node.jsをバージョンアップしやすくするためにバージョン管理モジュール「n」を入れます。
sudo npm cache clean
sudo npm install npm n -g
sudo n lts
-
node -v
でLTSバージョンが表示されたらOK -
npm -v
で何らかのバージョンが表示されたらOK(作業時は5.6.0でした)
以下を参考にしました。
https://qiita.com/setouchi/items/437e4b62e4210871496f
https://qiita.com/seibe/items/36cef7df85fe2cefa3ea
https://github.com/tj/n
sudo n ltsでインストールしたNode.jsはこの手順の最初にインストールしたNode.jsとは別もののはずなのですが、この手順の最初にインストールしたnodeとnpmを削除するべきなのかがわからず...
詳しい方がいたら教えてください。
5. google-home-notifierをインストール
まだまだコマンド操作が続きます。
google-home-notifierのインストールにはgit cloneする方法と単純にnpmする方法があるみたいでしたが、簡単そうなnpm方式にしました。
- 必要なパッケージを追加
sudo apt-get install git-core libnss-mdns libavahi-compat-libdnssd-dev
- 本当にインストールするか聞かれるのでYで進める
- ラズパイに任意のディレクトリを作り、作業ディレクトリとする。
- 作業ディレクトリ内でNode.jsの設定ファイルを作成する
npm init
- いろいろ聞かれるが適当にEnter連打でとりあえずOK
- 作業ディレクトリ内でgoogle-home-notifierをインストールする
npm install google-home-notifier
これで初期設定が整ったはず...
以下を参考にしました。
https://qiita.com/azipinsyan/items/db4606aaa51426ac8dac
https://qiita.com/ktetsuo/items/8c9cd5714e231aa6ae09
google-home-notifier
※備忘
google-home-notifierにはラズパイなら以下のコマンドを実行しろ、と買いてありましたが、すでに前の手順でNode.jsの8系を入れているので今回は実行していません。
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install nodejs
6. 簡単に一言喋らせてみる
まず、Google HomeのIPを調べます。
https://qiita.com/shun91/items/aba1a554d829126945f6
https://www.gesource.jp/weblog/?p=8082
次にRaspberry PiからGoogle Homeを喋らせるで使われていたソースをそのまんま作業ディレクトリにコピーしました。
const googlehome = require('google-home-notifier');
const language = 'ja';
googlehome.device("Google-Home", language);
googlehome.ip("192.168.xxx.xxx"); // 上で調べたGoogle HomeのIPに書き換える
googlehome.notify('こんにちは。私はグーグルホームです。', function(res) {
console.log(res);
});
作業ディレクトリ内で以下を実行
$ node main.js
しゃべったーーー!日本語がぎこちない!笑
長くなったので一旦区切ります。
続きはこちら
LINEのメッセージをGoogleHomeで読み上げる LINE連携編