LoginSignup
8
8

More than 3 years have passed since last update.

LINEのメッセージをGoogleHomeで読み上げる RaspberryPiセットアップ編

Last updated at Posted at 2018-05-04

GoogleHomeを買いました。
豆知識を教えてくれたり、ピカチュウと話せたりと、純粋に楽しい!
さらに、IFTTTを使えばGoogleHome→Lineと連携させてしゃべった内容をLineに送ることもできます。

でも、IFTTTではLine→GoogleHomeのように他のサービスをトリガーにしてGoogleHomeをしゃべらせることはどうやらできないようです。急にしゃべりはじめると怖いから?

でも、自分では気づかないことをしゃべって教えて欲しい!

Raspberry Piとgoogle-home-notifierでしゃべらせる

調べてみたところ、Raspberry PiとNode.jsのライブラリを使う方法がありました。
GoogleHomeスピーカーに外部からプッシュして自発的に話してもらいます
LINEに送信したメッセージを、Google Homeで読み上げ、家族に通知

これだ!と思ったもののそもそも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を喋らせるで使われていたソースをそのまんま作業ディレクトリにコピーしました。

main.js
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連携編

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8