”GoogleHomeをもっと活用プロジェクト”の一環!
目的は、外部からのアクションで、GoogleHomeに喋らす です。
環境をシンプルにして実現することを目的としています。
ラズベリーパイ(Raspberry Pi)を購入し利用することで実現できそうですが、今回はWindows10proを利用した環境構築で構築します。
Windowsの場合は、WEBサーバはIISになります、なのでIISでnodejsを起動しGoogleHomeに喋らす仕組みを考えてみましたが、結果的に失敗しました。
《WEBサーバの問題》
GoogleHomeに喋らすプログラムは、Nodejsをバッチ起動することで実現できるのですが、IISからのPHPアプリケーションを介して起動した場合、バックグラウンドユーザーで起動されることになります。バックグラウンドユーザーでは、Nodejsは起動されるのですが、対話型デスクトップ上のアプリケーションへメッセージを送信したり、ポストしたりできないとのことで、当たり前かもしれませんが・・・これを理解するまで結構時間が掛かってしまいました。
結局、Nodejsのサーバ機能をそのまま利用することで実現することにしました。目的にに合わせて、Nodejsのサーバ機能をそのまま使えば良いようです。
《自宅環境へのアクセスについて》
次に問題となったのは、外部からのアクションから、NodejsのWEBサーバへPOSTする方法です。
(NGROK エングロック) サービスを利用する方法が一般的のようですが、使った感じでは、有償版ではないとまともに使えません。また他社のサービスに依存するのもシンプルではありません。結果的にこのサービスを利用せず、ルータに穴を開ける方法を選択しました。
《手順》
(1)IISインストールをします。
Windows機能の追加をします。
ホームページはIISを利用します。ポート番号は、80です。
(2)PHPインストール します。
・Windows版をダウンロードします。
(3)PHP iniファイル編集
・php.ini-production を php.ini リネームし下記の項目を編集します。
extension_dir = "ext"
cgi.force_redirect = 0
cgi.fix_pathinfo = 1
fastcgi.impersonate = 1
fastcgi.logging = 0
extension=php_mbstring.dll
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
safe_mode = Off
safe_mode_exec_dir = C:\inetpub\wwwroot,C:\Users\suga\google-home-notifier
(4)ルータ設定(RT-400MI)
ポートフォワード設定は、80番IIS用と8080番nodeis用を登録します。
-追伸-
Twitterのツイートを、GoogleHomeに喋らす。PHPアプリケーション(専用ページ)から、自由ワードを喋らすなど、まだまだ試行錯誤状態。