Alexa-localが突然使えなくなった!【対処法】

スマートホーム
スポンサーリンク
このエントリーをはてなブックマークに追加

はじめに

我が家はNode-redでスマートハウス-LG製テレビを操作してみるで書いたように、テレビなどの家電をAamazon echoから操作するためにnode-red-contrib-alexa-localを使っていた。
しかし、2019年9月初旬、今まで動いていたものが突然動かなくなった!!!node-redの画面を見ると各デバイスの状況が「Discovery」になっている(正常時はOnline)!

原因:Amazon echo側の仕様変更

Alexa-localのGitHub Issueの情報によると、Amazon echo側の仕様変更により、今まではAmazon echoがデバイスを探す時に、同じネットワーク内のホストの全てのポートをスキャンしていたようだが、今回の仕様変更により「80」番ポートだけがスキャン対象になったとのこと。Alexa-localでは、各デバイスごとに待ち受けポートを複数開いてListenしているため、Alexa-localのやり方では複数のデバイスを操作することはできなくなった。

解決策:node-red-contrib-amazon-echoに乗り換え

node-red-contrib-amazon-echoという、仮想的なハブ「Amazon Echo Hub」を経由して各デバイスを操作するものに乗り換えることで解決できそうです。
node-red-contrib-amazon-echoもインターネット経由ではなく完全ローカルで動作するので、node-red-contrib-alexa-home-skillなどインターネット経由のものと比較して、動作が速い&セキュリティ的に安全というのがポイントです。

ポート80の競合問題

Amazon Echoの新仕様では、デバイスのスキャンは80番ポート限定になったので、node-red-contrib-amazon-echoを使って、「Amazon Echo Hub」を80番ポートで公開するという仕様になる。

しかし、80番ポートは、大体の場合ApacheなどWebサーバが使用しているため、他のプロセスはこのポートを使用できない。Webサーバ側のポートを変えるのはいろいろと使いづらくなるので、「Amazon Echo Hub」側を変更するしかない。でも、Amazon echoは80番ポートしかスキャンしてくれない。さて、どうするか。

全体構成

解決策の全体構成は、以下の図の通り。1つのLinuxOSの中で、複数のプロセスが1つのポートを利用する事は不可である。このため「Amazon Echo Hub」は81番ポートで動作させるが、1つのNICに2つ目のIPアドレスを追加し、追加したIPアドレスの80番ポートへのリクエストを81番ポートに転送する。

IPアドレスの追加

私が利用しているUbuntsu 18.4の場合、/etc/netplan/50-cloud-ini.yamlに記載することで、1つのNICに複数のIPアドレスを割り当てることが可能である。

ファイルに追記して保存したら、設定を反映して確認する。

以上のように、NICに2つ目のIPアドレスが追加された。

ApacheのListen IPアドレスの限定

Apacheはデフィルトの設定では、全てのIPアドレスの80番ポートでListenする。これを、192.168.0.1だけListenするように「/etc/apache2/ports.conf」変更する。なお、443ポートは特に変更の必要はないが、80番ポートと揃ってないと気持ち悪いので合わせて変更。

書き換えたら、設定を反映し、Telnetコマンドで片方だけ接続できるか確認。

Amazon echo Hubの待ち受けポート変更

node-redに追加したAmazon Echo Hubノードをダブルクリックし、ポートの設定を81番ポートに変更する。

iptablesでポートを転送

最後にiptablesを使って、192.168.0.2の80番ポートに来たリクエストを81番ポートに転送する設定を行う。

これで設定は完了。Amazon Echoでデバイスを検索すれば、設定したデバイスが見つかるはずである。
iptablesの設定は再起動すると消えてしまうので「/etc/iptables/rules.v4」への記載もお忘れなく。

記事が参考になったら、ブログランキングに協力(クリック)して貰えると嬉しいです。
ブログランキング・にほんブログ村へ
スポンサーリンク
naka-kazz

昼間はIT企業に勤めてますが、プライベートでは「育児×家事×IoT」をテーマに家のスマートホーム化に取り組んでいます。Androidアプリも作っているので使って下さい。
E-mail:naka.kazz.d@gmail.com

naka-kazzをフォローする
スマートホーム 開発者向け
naka-kazzをフォローする
育児×家事×IoT

コメント

タイトルとURLをコピーしました