前回の記事で設計したmandoの新機能loopを、2026年10月7日に実際に配備しました。リビングの照明7台を音楽のBPMに合わせてクラブ風に動かすカードが、家族のスマホのmando画面に増えます。1週間使ってもらった結果、10月12日にこの機能は撤去されました。設計の答え合わせです。

配備して最初に出た不具合

配備した日のうちに「停止が遅い」という声がありました。調べると、mandoの停止処理自体は14msで終わっていたのに、ループの直後に送る「電球色・明るさ100%に戻す」groupcastコマンドが照明に届いていませんでした。Threadのマルチキャストは、送信が連続した直後の1発が捨てられやすいという癖があります。ループが終わった直後の1発がまさにそれでした。

対処は、戻すコマンドを即時に1回、1.5秒後にもう1回送る形に変更しました。これで停止ボタンを押してから照明が戻るまでは約1.5秒です。副作用として、ループ中からその後1分ほどは個別の照明やセンサーへの通信が失敗しやすくなることも分かりました。128BPMだと毎秒5〜6発のマルチキャストが飛ぶので、その間はメッシュが詰まって他の機器の反応が鈍ります。クラブ中は他のMatter機器が大人しくなる前提で使う、という運用上の割り切りです。

機器が壊れそうなので送信経路を変えた

本人から「機器が壊れそうなので負荷を下げたい」という話が出ました。原因を追うと、groupcastコマンドはLAN側とThread側の両方に送られていて、そのうちLAN側の1発はNAS上のThread境界ルーター(Primary BBR)経由でThreadメッシュにもう一度注入される仕組みになっていました。結果として、1回のコマンドでメッシュに2回分の負荷がかかっていたことになります。

Thread境界ルーターのパケットカウンタで実測したところ、groupcastを連続送信したときの負荷は次のようになりました。

経路境界ルーターの送信数メッシュで聞こえた再送数
LAN側とThread側の両方(旧)162337〜338
Thread側のみ(新)80218〜234

対処として、Thread側の経路が確立している間はLAN側へのコピーを止めるオプションをmatに追加しました。Thread側が未確立のときだけ警告を出しつつLAN側に流す、というフォールバックも残しています。境界ルーターへの送信は半分に、メッシュ全体の再送も3割以上減りました。見た目の動きは変わっていません。

電球が1台壊れた

10月7日、最初のクラブ照明を試した直後、リビングの照明のうち1台が反応しなくなりました。工場リセットでも復旧しなかったため、同じ日に予備の電球に交換しています。クラブ照明が原因だったと証明はできませんが、否定もできません。考えられる筋は2つです。

1台目は通信の洪水でファームウェアが固まるパターンで、これは前述のThread側のみへの送信変更で軽くなります。もう1つは、電球が明るさや色の状態を不揮発メモリに保存する書き込みの消耗です。変更のたびに書き込む実装だと、毎秒4〜5回×60分のループで1セッションあたり1万回を超える書き込みになります。フラッシュメモリの寿命は一般に1万〜10万回程度で、Nanoleafの実装がどちらに近いかは分かりません。こちらは送信経路を変えても効きません。

安全側に倒すため、設定だけを変更しました。BPMのプリセットを曲のBPMそのものではなく半分の値(2拍に1回のパルス)にし、1回の最大稼働時間も60分から15分に短縮しています。これで1セッションの書き込みはおよそ1,000回まで落ちました。コードは変えていません。

結局、不要だった

1週間ほど家族に使ってもらった結論は、「不評で、そもそも必要なかった」でした。10月12日、mandoの設定ファイルからclub_livingのデバイス定義を1行削除し、配備しました。画面からクラブのカードは消えています。

mando側のloopというデバイス種別のコード自体と、matに追加したThread側のみの送信オプションはどちらも残したままです。削除したのは設定ファイルの1行だけで、mandoやmatのコードは一切触っていません。これは前回の記事で設計した「mandoはコマンドの中身を知らず、設定ファイルで機器を増減する」という方針どおりの撤去で、機能を使い切ったあとの最速の答え合わせになりました。

住んでみて

Thread側のみに送信経路を絞る変更は、クラブ照明がなくなったいまも、他のMatter機器へのgroupcastコマンド全部に効いています。機能自体は不要だと分かりましたが、そのために調べたメッシュの負荷の話は無駄にはなりませんでした。

作って、配備して、1週間使ってもらって、要らなければ畳む。今回いちばん答え合わせになったのは、機能の出来栄えより、家族が実際に触ってどう感じるかの方が優先される、という当たり前の事実でした。