2017年12月28日木曜日

Google Home:喋らせるぞ!!(日本語)

日本語を喋らせてみよう!!

喋り始めたので次は日本語に挑戦です。
引き続き、
「GoogleHomeスピーカーに外部からプッシュして自発的に話してもらいます」
を参照させてもらいました。ありがとうございます。

日本語を喋らせるには「example.js」を修正します。
  • 喋る内容が日本語であることを伝える
  • デバイスが日本語対応であることを伝える
ことが必要です。
pi@raspberrypi:~/google-home-notifier $ vi example.js

修正箇所をdiffしました。(前回の修正も含んでいます)
pi@raspberrypi:~/google-home-notifier $ cat example.js.diff
8,9c8,9
< var deviceName = 'Google Home';
< var ip = '192.168.1.20'; // default IP
---
> var deviceName = 'livingroom';
> var ip = '192.168.3.28'; // default IP
24c24
<   var language = 'pl'; // default language code
---
>   var language = 'ja'; // default language code
29c29,30
<   googlehome.ip(ip, language);
---
>   googlehome.device(deviceName, language);
>   googlehome.ip(ip);
65c66
<   var language = 'pl'; // default language code
---
>   var language = 'ja'; // default language code
70c71,72
<   googlehome.ip(ip, language);
---
>   googlehome.device(deviceName, language);
>   googlehome.ip(ip);

準備ができたので、サーバを起動して喋らせてみます。
まずは日本語です。
pi@raspberrypi:~/google-home-notifier $ curl -X POST -d "text=ハロー グーグルホーム" https://63f1c2c1.ngrok.io/google-home-notifier
{ text: 'ハロー グーグルホーム' }
Device notified
livingroom will say: ハロー グーグルホーム
やったね♪日本語喋った!!

次に、英語を喋らせてみます。
pi@raspberrypi:~/google-home-notifier $ curl -X POST -d "text=Hello Google Home"  https://63f1c2c1.ngrok.io/google-home-notifier
{ text: 'Hello Google Home' }
Device notified
livingroom will say: Hello Google Home
なんと。。。日本語的な英語だ。。。(@_@;)
カタカナで書いたのと変わらない。。。

平家物語の冒頭を喋らせてみました。
pi@raspberrypi:~/google-home-notifier $ curl -X POST -d "text=祇園精舎の鐘の声、諸行無常の響きあり。" https://63f1c2c1.ngrok.io/google-home-notifier
{ text: '祇園精舎の鐘の声、諸行無常の響きあり。' }
Device notified
livingroom will say: 祇園精舎の鐘の声、諸行無常の響きあり。
ちゃんと漢字も読めてるじゃん♪

ちょっとノロマで抑揚のない日本語ですね^^;
でも、ちゃ~~~んと喋りました。やったね!!
今日はここまで。

2017年12月10日日曜日

Google Home:マルチアクションでニコニコ(^^)

一声で複数の処理を実行させたい!!

GoogleHomeって「ながら操作」ができるのが良いよね!!
朝起きて服を着替えながら「テレビつけて」って言うだけでOK。
リモコンがどこにあるのか探さなくて良い(^^)v

更に使いやすくするには。。。
一声で複数の処理(マルチアクション)させたい!!
で、一つできたよ♪

「ステレオをつけるとTVを消音する。」

て簡単なもの。
TV音声をステレオで聴きたいときに、
「ステレオつけて」「TVの音消して」
て言ってたのが煩わしかった。

設定方法はiftttで同じキーワードで2つ登録するとできた。
  • ステレオの電源ON
  • TVの消音

  • こんな感じ


どのように制御しているのか分からないけど、
レスポンス音声は一度しか言わないので一度に処理しているのかな??

iftttさん、早くマルチアクションをサポートしてくださいm(_ _)m

2017年12月9日土曜日

Google Home:喋らせるぞ!!

帰るコールをGoogle Homeでやりたい!

帰るコールしてますか?!
私はLineで
今○○駅、○○発で帰るよ。
と会社帰りにやっている。マメでしょ(^^;
で、これをGoogle Home的にやりたい!と思いました。
それにはまず、Google Homeに喋ってもらわないとね!!

と言っても何をすれば良いのか???な状態なので
Google先生に聞いてみると
「GoogleHomeスピーカーに外部からプッシュして自発的に話してもらいます」
と教えてくれました。ありがとうございます。
google-home-notifier」を使って喋らせるようです。

早速、参考にしてやってみます。
手元に役割を終えた初代RaspberryPiが眠っていたので
それを使うことにしました。

1.Raspbianをインストール
2017-09-07-raspbian-stretch-lite.img
をダウンロードしてインストールする。
その後
  • IPアドレスの固定
  • アップデートとアップグレード
  • ロケール、タイムゾーンの変更
  • SDカードのエリア拡張
など初期設定しました。

2.google-home-notifierに必要なソフトをインストール
1)Gitをインストール
インストールに必要となるGitをインストールする。
pi@raspberrypi:~ $ sudo apt-get install git
・・・
pi@raspberrypi:~ $ git --version
git version 2.11.0

2)Node.jsをインストール
実行に必要となるNode.jsをインストールする。
これが意外に難しかった。

Google先生に聞きながら何回もやり直して
Raspberry Pi に Node.js をインストールする(nvm利用)
を参照しながら行ってやっと成功しました。

①古いnodeをアンインストールする。
pi@raspberrypi:~ $ sudo at pt-get autoremove node.js

②nvmをインストールするディレクトリを作成し属性変更する。
pi@raspberrypi:~ $ sudo mkdir /usr/local/nvm
pi@raspberrypi:~ $ sudo chmod 777 /usr/local/nvm

③nvm.gitリポジトリのクローンを作成する。
pi@raspberrypi:~ $ git clone https://github.com/creationix/nvm.git /usr/local/nvm

④nvmを使えるようにする。
pi@raspberrypi:~ $ source /usr/local/nvm/nvm.sh

⑤nvmでインストールできるnodeのバージョン一覧を表示する。
pi@raspberrypi:~ $ nvm ls-remote
        v6.12.2   (Latest LTS: Boron)
         v8.9.3   (Latest LTS: Carbon)
         v9.2.1
など表示される。

⑥nodeをインストールする。
v9.2.1,v8.9.3はエラーがいっぱいでインストールできなかったよ。。。(T_T)
なのでv6.12.2をインストールした。
pi@raspberrypi:~ $ nvm install nvm install v6.12.2

⑦node, npm のバージョンを確認する。
pi@raspberrypi:~ $ node -v
v6.12.2
pi@raspberrypi:~ $ npm -v
3.10.10

⑧ログイン時にnvm,nodeの起動するように設定する。
pi@raspberrypi:~ $ sudo vi /etc/profile.d/nvm.sh

修正箇所をcatしました。
pi@raspberrypi:~ $ cat /etc/profile.d/nvm.sh
source /usr/local/nvm/nvm.sh

3.google-home-notifierをインストール
1)インストール前処理
RaspberryPiの準備があります。

pi@raspberrypi:~ $ curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
pi@raspberrypi:~ $ sudo apt-get install nodejs
pi@raspberrypi:~ $ sudo apt-get install git-core libnss-mdns libavahi-compat-libddnssd-dev

2)本体のインストール
本体部分はListenerのところに記載されています。

pi@raspberrypi:~ $ git clone https://github.com/noelportugal/google-home-notifier
pi@raspberrypi:~ $ cd google-home-notifier
pi@raspberrypi:~ $ npm install

3)インストール後処理
browser.jsの修正が必要です。

pi@raspberrypi:~/google-home-notifier $ vi node_modules/mdns/lib/browser.js

修正箇所をdiffしました。
pi@raspberrypi:~/google-home-notifier/node_modules/mdns/lib $ cat browser.js.diff
119c119
< , 'DNSServiceGetAddrInfo' in dns_sd ? rst.DNSServiceGetAddrInfo() : rst.getaddrinfo()
---
> , 'DNSServiceGetAddrInfo' in dns_sd ? rst.DNSServiceGetAddrInfo() : rst.getaddrinfo({families:[4]})

4.google-home-notifierを設定する。
1)Google Homeのデバイス名とIPアドレスを調べる。
デバイスの設定画面を表示するとデバイス名は中程に、
私のはlivingroomです。

IPアドレスは一番下に表示されています。
私のは192.168.3.28です。

2)example.jsにデバイス名とIPアドレスを指定する。
pi@raspberrypi:~ $ cd google-home-notifier
pi@raspberrypi:~/google-home-notifier $ vi example.js

修正箇所をdiffしました。
pi@raspberrypi:~/google-home-notifier $ cat example.js.diff
8,9c8,9
< var deviceName = 'Google Home';
< var ip = '192.168.1.20'; // default IP
---
> var deviceName = 'livingroom';
> var ip = '192.168.3.28'; // default IP

5.喋らせてみる。
以上で設定完了です。喋らせてみます。

1)サーバを実行します。
「&」を付けてバックグラウンドで実行させると便利です。
pi@raspberrypi:~/google-home-notifier $ node example.js &

[1] 10362
pi@raspberrypi:~/google-home-notifier $ *** WARNING *** The program 'node' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node>
*** WARNING *** The program 'node' called 'DNSServiceRegister()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node&f=DNSServiceRegister>
Endpoints:
    http://192.168.3.28:8091/google-home-notifier
    https://23f67145.ngrok.io/google-home-notifier
GET example:
curl -X GET https://23f67145.ngrok.io/google-home-notifier?text=Hello+Google+Home
POST example:
curl -X POST -d "text=Hello Google Home" https://23f67145.ngrok.io/google-home-notifier

こんな感じで実行されます。

いっぱいワーニングが出てますが気にしないで良いみたいです^^;
使い方としてGET exampleとPOST exampleの2種類が表示されています。
POSTを使った方が指定しやすいですね。

2)クライアントからサーバにPOSTする。
サンプルをそのままコピペです^^;
pi@raspberrypi:~/google-home-notifier $ curl -X POST -d "text=Hello Google Home"  https://23f67145.ngrok.io/google-home-notifier

上手く処理されると

{ text: 'Hello Google Home' }
Device notified
livingroom will say: Hello Google Home

と表示されて喋りました!
やった~。ついに喋りました!!先人の皆さんありがとうございます。
 
録画してみました。
 
次は日本語だ。今日はここまで。

2017年12月7日木曜日

Photo Frame:Raspberry Pi のデジタルフォトフレームができたよ♪

デジタルフォトフレームの完成!!

液晶パネルのコントロール基板とRaspberryPiを
どのように組込むかずっと悩んでいた。

液晶パネルの背面に基板を取り付けようと思って、
金属ステーやプラスチックパネルなど考えていましたが、
そんな時、100円ショップCanDoで木製トレーを発見!!
サイズも240mm x 160mmで丁度よい。
厚さも適度で加工もしやすい。
CG-117 Natural wooden cafe tray(French)
木製カフェトレー(フレンチ)という型番です。

トレーに基板を配置してビス位置にマーカーして3mm径のドリルでギュイーン!!
防塵のため伏せても使えるように、液晶パネルに接続するコネクター用のスリットも開けておいた。

伏せるとこんな感じ

ビスは3M 10mmを使用して基板を取付けてみた。
HDMIケーブルが70cmあってトグロを巻いている。。。
売っていた一番短いのを買ったのだけど^^;

液晶パネルの固定は元々付いていたフォトフレームの裏蓋を
適当な大きさに切って木ネジで止めました。
下部の余白部分はダンボールで作っているので重みにも耐えられます(^^)v

液晶パネルの背面に置いてコントロール基板からのコネクタを液晶パネルに接続。
電源プラグも差し込んで準備完了!
裏返すには電源ケーブルを引き出す切り欠きを側面に開けなくては。。。^^;

電源ON!!
Rasbianのブート画面が表示された。ちゃんと動いてるよん♪

ちょっと古い画像^^;

できた~!!
立派なデジタルフォトフレームになったよ♪♪♪
逆光で色が綺麗に出てないですね^^;
一日中点けっぱなしももったいないので、
簡易デジタルタイマーで点灯時間をコントロールしています。


月~金と土日で分けて設定できて良いです。
電源はブチッと切れますがRaspbian自体は今のところちゃんと動いてます。
いつクラッシュしても良いようにSDのバックアップしておこっと。

やったね、初期バージョン完成!!
思い立ってから2年もかかっちゃいました。。。^^;


2017年11月11日土曜日

Google Home:赤外線リモコンでTV(Wooo)を操作するよ

TVを赤外線で操作するよ♪

コンセントが操作でき気を良くしたところで。。。
次はTV(Wooo)をGoogle Homeから操作するよ。
TVを操作するには赤外線リモコンの代わりが必要になる。
Google先生に聞いてみるとNature remoが心地よく使えるようだ。
ということで早速手に入れたよ。

人気爆発のようで納品まで時間がかかったよ^^;

こんな感じでRemoの箱の上でセットアップです。

スマホからソフトをダウンロードしてサクサクと進めます。
具体的なセットアップ方法はGoogle先生に聞くとサッと分かるので、
省略~~~~^^;

1点だけ途中でハマったのでメモっておきます。
参考になれば幸いです。

まず、RemoのWifiに接続します。

この後に家のWifiを探しに行くのですが、



ずっと探して見つけられない状態になってしまいました。
原因はスマホのWifiオプションでWiFi+てのがあるのですが、
それがONになっているとダメなようです。

どうにか接続できたよ♪

さて、TVを追加するよ。
「+」をタップして、

Woooのリモコンの「電源」ボタンをRemoに向けて押すよ。

名称とアイコンを選択して「電源」ボタンを登録。

機器の名称とアイコンを選択して登録。

機器アイコンをタップして開くと「電源」ボタンが登録されている。
これを、1つづつ繰り返すよ。。。ふっ~

こんな感じにドンドン追加するよ。
地デジの1CHとBSの1CHは異なるので注意!!

ついでにエアコンも登録したよ。
我家は三菱の2011年式の霧ヶ峰です。
Nature remoはエアコンが得意というだけあって
複数の候補がリストアップされたので先頭のを選んだよ。

エアコンは画面が違う!!
電源オン/オフまで確認したよ。
冬は使わないので、こちらはのんびり試そう。

これで、スマホからリモコン操作ができるようになったよ。
次に、Google Homeから操作できるように設定するよ。

まずは、「ifttt」なるソフトをインストールするよ。
こちらもGoogle先生に聞くと設定方法はでてくるので参考にしてね。
私が作ったAppletを幾つか紹介するね。

・電源オン/オフ(定番ですがまずはここから)
ポイントは電源オン/オフは同じ「電源」ボタンです。
Nature remoは
上記スマホに設定したボタン名称を選択するだけ。
12/5:この機能ではなくChromecast連携でオンオフされていたみたいです。
に設定方法があります。
だから、「やったよ」って言わないんだ。。。

・地デジの1CH(NHK総合)
「1チャンにして」「いっちゃんにして」
など色々試したけど。。。動かなかった。

・BSの1CH
「BS1にして」「BS1」(全角)
など色々試したけど。。。動かなかった。
この設定でも「びーえすいち」はNG(T_T)
「びーえすわん」と英語読みするとOK!
なので「びーえすすりー」「びーえすせぶん」って発音するよ^^;

・青ボタン
「青」ボタンも設定できるよ。
当然、黄色、赤色、緑色ボタンも設定したよ。
黄色だけ「黄色ボタン」にしたよ。

こんな感じで、Google HomeはAIなのに勉強しないので。。。
人間が勉強してGoogle Homeが認識する命令語を探して設定するので、
とっても疲れます(T_T)

それでも頑張ってある程度操作できるようになったよ。
いい感じでしょ!!
でも、音声コマンドを覚えるのが大変。。。^^;

2017年11月5日日曜日

Google Home:コンセントを操作するよ

コンセントで電源をオン/オフするよ♪

我家のステレオはリモコンが付いてない。
自分が機器のところに行ってスイッチをオン/オフする。
面倒くさいと思ったことはないけど、
折角なので「ねえ、Google ステレオつけて」と言ってみたい(^^)v

機器が対応しないのでコンセントでオン/オフすれば良い。
Amazonで探してみるとスマートプラグなるものがあった。
標準でGoogle Homeに対応しているモノもあるようなので、
その中から手頃な価格のWifiスマートプラグ スマートコンセント をポチッとね。



コントロール用のアプリ「SmartLife」をダウンロードして、
プラグをコンセントに挿してネットワークへ参加させる。
そして「ステレオ」と名付けてセットアップ完了!

スマホのタップでオン/オフできるようになった。


今度は、Google Homeから操作できるように設定する。
プラグの属性を表示すると「Googleホームを使用します」ってある。

 ここにはGoogle Homeの設定方法が書いてあるようだ。
でも、中国語じゃ~ん。。。(T_T)

第四歩から設定方法が書いてあるみたい。
HomeControlのDevicesでDmartLifeがあるよって感じかな^^;
で、試してみたよ。

 
「スマートホーム」を選択した。

「+」でデバイスを追加する。

「SmartLife」を選択するとピックアップしてくれたよ♪

「SmartLife」で指定した名前と同じ名称を付けるよ。

このニックネームを合わせることが重要みたい。

これで、準備完了!
で、試してみた。

お~、バッチリ!!

2017年11月3日金曜日

Google Home:SpotifyとChromecastにリンクしてみたよ

音楽と動画を再生してみる♪

TVで宣伝しているようにササッと音楽や動画を再生してみたいよね。
Spotifyは無料アカウントで使えるようなので早速ためしてみた。

Google Homeの「その他の設定」で設定する。
「その他の設定」を選択

サービスから「音楽」を選択

「Spotify」を選択

これで、準備完了!
で、試してみた。

ありゃりゃ~、やっぱ無料アカウントではダメかな。。。(T_T)

PS:11/10
Spotifyの「ステーション」を使うので、アーティストを指定しても似たものも合わせて再生するんだね。無料アカウントの問題ではなかった^_^;

気を取り直して動画(Youtube)を再生してみよっと。

Google Homeの「デバイス」で設定する。
「デバイス」を選択

右上の「点々」から「設定」を選択

デバイス設定のしたの方に「デフォルトのメディア再生」があるよ

「視聴するデバイス」だけCromecastを選択した

これで、準備完了!
で、試してみた。

お~、こっちはそれなりに動いたよ♪

ついでに、ニュースも設定してみた。
サービスから「ニュース」を選択

「ニュース提供元を追加」で選ぶよ
ってもう選択済みじゃん!て言わないで^^;

必要なのをチェックするだけ

これで、準備完了!
「ねえ、Google ニュース」って言うとニュースを読み上げてくれるよ。
面白くないけど^^;