シャッター5台をAlexaで声操作、架け橋はAqara M3
家族が家の機器に触れる入口は、これまでmandoのWeb画面だけでした。スマホでシャッターの開閉ボタンを押す形です。それはそれで動いていますが、両手が空いていない時や、スマホを探すのが面倒な時は「声でも動かせたら楽だよね」という話が家族内で出ていました。
もう一つの入口として声を足したい、というのがこの記事の出発点です。
最初に考えた道と、Amazon側の壁
声の入口として最初に検討したのは、家全体を1つのMatter製品としてAmazon Echoに直接認識させる案でした。Matterのデバイス側プロトコルを自作する別プロジェクトを進めていて、Apple HomeとHome Assistant側のMatterサーバでは実機での動作確認が取れています。ただAmazon Echoだけは、クラウド側の証明書検証が厳しくなった時期以降、未認証のデバイスをうまく受け付けてくれなくなっていました。日本向けの解除を待つ方針にして、ここはいったん保留にしています。
新しい音声端末を自作する案も検討しましたが、「常設したいと確信できるまではお金をかけない」という方針のまま、こちらも見送りました。
すでに家にあった橋:Aqara M3のシーン同期
別の道を探していたときに気づいたのが、ThreadとZigbeeのハブとして家に置いていたAqara M3の「シーン同期」機能です。Aqaraアプリでシーンを作ってシーン同期を有効にすると、そのシーンがAlexaのルーティンから呼べる1つのスイッチとしてAlexa側に見えるようになります。Aqara M3自体はMatter認証済みのブリッジ機器なので、作ったシーンはそのまま、普段matが管理しているMatterファブリックの中に、ふつうのオン・オフ機器として現れます。
つまり「アレクサ、シャッター開けて」と言うと、Alexaのルーティンがそのシーンをオンにし、matがいつもの機器と同じやり方でその変化をsubscribeし、casadがルールとして受け取る、という流れです。Echoを直結する特別なコードは何も要りません。
2026年9月13日、まずテスト用のシーンで「アレクサ、テストをつけて」と話しかけ、約5秒後に自動でオフへ戻る様子まで含めて、この経路が実際につながっていることを確認しました。
実際に声で動かしているもの
同じ日に、シーンを本番用に作り直して実際の機器に配線しました。
| 声の合図 | 動く機器 |
|---|---|
| シャッター開けて/閉めて | 電動シャッター5台(ECHONET Lite) |
| テレビつけて/消して | リビングのテレビ |
| 電気つけて/消して | リビング照明(グループ) |
| デスクライトつけて/消して | 書斎のデスク照明 |
| キッチンの電気つけて/消して | キッチン照明(ECHONET Lite) |
シャッターはcasadのルールで声のきっかけを受け取り、5台を順番に動かします。casaのrules.tomlには、同じlaneを共有するルールは1台ずつ順番に動かすという仕組みがあり、もともとは時刻トリガーでの一斉closeの例としてREADMEに載っている構成です。これをAlexaのトリガーにそのまま使っています。
[[rules]]
name = "声でシャッターを開ける"
when = { device = "alexa_shutter_open", attribute = "onoff", equals = true }
lane = "shutter"
then = [
{ action = "invoke", device = "shutter1", command = "set", args = ["open_close_operation", "open"] },
{ action = "invoke", device = "shutter2", command = "set", args = ["open_close_operation", "open"] },
{ action = "invoke", device = "shutter3", command = "set", args = ["open_close_operation", "open"] },
{ action = "invoke", device = "shutter4", command = "set", args = ["open_close_operation", "open"] },
{ action = "invoke", device = "shutter5", command = "set", args = ["open_close_operation", "open"] },
]
alexa_shutter_openは、Aqara M3のシーンに対応するMatterデバイスをcasaの設定に登録した名前です。devices.tomlでは通常のMatter機器と同じ書き方で、ノードIDだけ指定すれば済みます。シャッター自体はもともと時刻トリガー(朝7時・夕方18時)でも同じlaneを使って動いているので、声のルールを追加しても一斉に競合する心配はありません。
選んだこと、捨てたこと
既存のAqara M3を橋に使う。新しい音声端末は買わない。 Echoの直結がうまくいかなくても、声の入口自体は今すぐ欲しかったので、すでに家にある機器の機能を転用する道を選びました。自作の音声端末を作る案もありましたが、常設する確信が持てるまではお金をかけない方針のままです。
シャッターは一斉ではなく順番に動かす。 1つのECHONET Liteゲートウェイに5台がつながっている構成なので、同時に送ると取りこぼす懸念があります。laneで1台ずつ順番に送る、もともとの時刻トリガーの設計をそのまま声のトリガーにも使っています。
全部の機器を声につなげない。 声でつないだのはシャッター・テレビ・照明の一部だけです。エアコンや給湯器など、誤操作のリスクが大きい機器はまだ声の入口に出していません。
住んでみてどうか
テスト用のシーンと、シャッターの開閉は実際に声で動くところまで確認できました。テレビと照明はシーンの配線自体は済んでいますが、配線した全ルールがcasadのログ上で正しく受信されているかまでは、まだ1つずつ確認し切っていません。
Echo直結の自作プロジェクトはまだ止まったままです。Amazon側の解除を待つか、別の方法を考えるかは、声の入口がもう少し家族の生活に定着してから判断しようと思っています。
次にやること
配線したルールを1つずつ実際に声で試して、casadのログと突き合わせる作業がまだ残っています。テレビは声操作とは別に電源の信頼性でもう一つ課題があり、それはまた別の記事にする予定です。
- リポジトリ: github.com/nogu3/casa
- 関連記事: 家族が触るmandoの照明ボタン、家のOSは3段階で応える
- 関連記事: 自作Rust製ツール6本でスマートホームを一元管理する全体構成