こんにちは。
今回は開発者さんが対応してくれたおかげで事なきを得ました。
しかし所詮は有志開発者による野良ソリューションです。
サーバーも開発者さんが準備したものにタダ乗りさせてもらっている状況であり、いつ利用できなくなるかという不安は今後も付き纏います。
そこで、そうした外部サービスに依存せずローカル環境だけで同じ仕組みを再現しようという試み。
長くなりそうなのでシリーズ化します。
■おさらい
まずは Node-RED Alexa Home Skill Bridge の簡単なおさらいから。
イギリスのITエンジニアBen Hardillさんが余暇プロジェクトとして作成したソリューションです。
- Alexaカスタムスキル「Node-RED」
- Node-REDカスタムノード「node-red-contrib-alexa-home-skill」
- Node-RED Alexa Home Skill Bridgeサーバ(ユーザ登録、デバイス定義)
という構成。
これらをすべて結びつけることで、Alexaへの発話をトリガーとしてNode-REDにパラメータ付きで処理フローを到達させることができます。
3.のデバイス定義は仮想のもので、例えば私の場合はスマートライトとして定義しています。
スマートライトのプロパティは細かく、明るさプロパティは0%〜100%までの値を取れるので、Alexaへの発話パターンもNode-REDに渡せるパラメータも100パターン作れることになります。
■前提
今回ローカル置換させる私の環境について挙げておきます。
- Amazon Echo Show 5 第1世代
非常に古いモデルですが、後述するMatter対応はファームウエアのアップデートで適用済み(のはず。ただしWi-Fiのみ)。
上述のAlexaカスタムスキル「Node-RED」をインストール済み。 - Node-RED v4.1.0
Raspberry Pi 4B で常時稼働中です。
上述のNode-REDカスタムノード「node-red-contrib-alexa-home-skill」をインストール済み。
■失敗談
ローカル環境でAlexaとNode-REDを結びつけるにはMatter規格で接続するのが良さそう。
Node-REDのカスタムノードには既にMatter対応を謳うものがいくつか存在しますが、そのどれもAlexaがデバイスとして認識してくれませんでした。
AppleのHomeKitや、GoogleHomeでは成功例があるようですが、AmazonEchoではどうも上手くいかないみたいです。
これを機にスマートスピーカーを変えてしまおうかとも考えました。
でも数万円の出費も薄給サラリーマンには厳しく、無料で出来るならそれに越したことはありません。
■方針
上述のインストール済みスキル・ノードを別の仕組みに置き換えていく作業となります。
現在考えている構成は以下のとおり。
- Amazon Echo Show 5 第1世代
そのまま使います。 - Home Assistant
オープンソースのスマートホームサーバOSです。
Matterやその他の規格をカバーします。
Node-RED Alexa Home Skill Bridge の代替となる肝ですね。
インストール先はRaspberry Pi 4B となりますが、すでにいろんなアプリケーションが動いているので、共存させるためにDockerコンテナ上に構築します。
ここで Node-RED Alexa Home Skill Bridge 同様に仮想デバイスを定義し、Matter規格を通じてAlexaに認識させます。 - Node-RED v4.1.0
上述のとおり Raspberry Pi 4B で稼働中の構成をそのまま使います。
Home Assistant との接続はMQTTプロトコルを使う予定。
■今回はここまで
Amazon Echoの世代の古さがネックになるかもしれないと懸念しています。
Amazonの発表によれば Echo Show 5 第1世代 もMatterコントローラとして機能するはずですが、「失敗談」の項でも述べたとおり、AlexaのMatterデバイス登録はかなり厳格なもよう。
今回もHome Assistant上に仮想デバイスを構築してそれをAlexaに登録するわけですが、ちゃんと認識してくれるのか・・・・?
.

