Upgrade to Pro — share decks privately, control downloads, hide ads and more …

9,000円のシーリングライトを Matter化して HomeKit最強のデバイスを作る

Avatar for mongachi mongachi
December 24, 2025

9,000円のシーリングライトを Matter化して HomeKit最強のデバイスを作る

New!!梅キャン勉強会 vol.3での発表資料
https://umeume-oit.connpass.com/event/377185/

Avatar for mongachi

mongachi

December 24, 2025
Tweet

Other Decks in Technology

Transcript

  1.    HomeKit  Matter  ESP32-C6  UART

    9,000円のシーリングライトを 9,000円のシーリングライトを して して HomeKit最強のデバイスを作る HomeKit最強のデバイスを作る 坂上 智朗 大阪工業大学 M1 Matter化 Matter化 〜 完璧なプロトコル解析と、敗北した電源回路 〜
  2.   発表者紹介 坂上 智朗 Tomoaki Sakaue  大阪工業大学 M1

     IoT / Smart Home NextJS PROFILE 大阪工業大学 ロボティクス&デザイン工学研究科 修士1年。 フロントエンドエンジニア。 React/Next.jsが得意。 画面の中だけでなく、IoTや電子工作にも興味があります。 CONTACT / LINKS  @shading6339
  3. 動機と野望 Project: Matter Ceiling Light  現状の課題 (Before)  専用アプリ/クラウド必須

    Tuya Smartアプリを経由する必要があり、インター ネット接続がないと操作不能。  レスポンスが悪い スイッチを押してから点灯するまでに1〜2秒のラグ が発生。  スマートホーム統合が面倒(Home Assistant等の中 継サーバーが必要) 。  Target: アイリスオーヤマ製 LEDシーリングライト  野望と目標 (After)  Tuyaモジュールを ESP32-C6 に換装し、完全ローカ ル制御へ。  Matter over Wi-Fi 対応 Apple HomeKitから追加ハブなしで爆速操作を実現 したい。  サーバーレス構成。 クラウドへの依存を完全に排除し、プライバシーと 可用性を確保。 
  4. STEP 0 ハードウェア調査 Teardown & Analysis  解析の突破口 無線モジュール(TYWE3S)は単なる「UARTゲートウェイ」として機能して いる。

    つまり、ここをESP32に挿げ替えれば乗っ取れる可能性が高い。 決定的な証拠を発見 RX/TX Pinout Main MCU Tuya Module  システム構成と役割分担  TYWE3S 通信担当 (Wi-Fi)  STM32F070 制御担当 (LED)  完全分業制: 通信モジュールと制御用MCUが明確に分かれている 理想的な構成。  親切設計: 基板上に「RX」 「TX」のシルク印刷があり、信号線の 特定が容易。 UART Serial
  5. STEP 0.5 事前検証プロセス Feasibility Study  検証1: 汎用アプリ FAILURE HYPOTHESIS

    中身がTuyaモジュールなら、純正「Smart Life」アプリで直接ペアリ ングできるはず。成功すれば改造不要。  検証2: モジュール切断 SUCCESS HYPOTHESIS 無線モジュールを物理的に引き抜いても、照明としての基本機能(リ モコン・壁スイッチ)は維持されるか?   OEM IDロック ペアリングの最終段階で拒否される。メーカー側で「アイリスオーヤマ純 正アプリ以外は弾く」設定が施されているため、非破壊でのスマート化は 不可能と判明。    フェイルセーフ確認 モジュールなしでも、赤外線リモコンや壁スイッチによる操作は完璧に動 作。 「改造に失敗しても照明としては壊れない」 という最強の安全マージ ンが確保された。  
  6. STEP 1 解析戦略: UARTスニッフィング Intercepting Serial Communication  配線図 (Man-in-the-Middle)

    Tuya TX D7 (RX) Tuya RX D2 (RX) GND GND  ハマりポイント: 送信ピンの無効化 単にSerial.beginするとTXピンが駆動してしまい、通信線に干渉(信号衝突)を起こす。 TXピンを -1 に設定し、ハイインピーダンス(受信専用)にすることが必須。 src/main.cpp PlatformIO void setup() { ...// Initialize Serial Monitor & Downlink void loop() { // 1. TYWE3S -> MCU (Hardware Serial) if (Serial1.available()) { Serial.print("[TYWE3S->MCU]: "); while (Serial1.available()) { uint8_t c = Serial1.read(); Serial.printf("%02X ", c); } Serial.println(); } // 2. MCU -> TYWE3S (Software Serial) if (swSerial.available()) { Serial.print("[MCU->TYWE3S]: "); while (swSerial.available()) { uint8_t c = swSerial.read(); Serial.printf("%02X ", c); } Serial.println(); } }  Xiao ESP32C6と解析対象の接続 Signal Listen Common
  7. STEP 2 解析結果 Decoded Protocol & Discoveries  特定されたDPIDマップ 01

     Power Bool 0 (OFF) / 1 (ON) 03  Brightness Integer 0 〜 100 % 04  Color Temp Integer 0 (Warm) 〜 100 (Cool) ※ DPID 2 (Mode) は未使用または欠番  パケットログの実例 CMD -> 55 AA 00 06 00 05 01 01 00 01 01 0E Command: 0x06 (Control) | DP: 1 (Power) | Val: 1 (ON) <- RPT 55 AA 00 07 00 05 01 01 00 01 01 0F Report: 0x07 (Status) | 本体が「点灯しました」と応答 <- RPT 55 AA 00 07 00 08 03 02 00 04 00 00 00 64 ... Report: 物理リモコン操作時もステータスが報告される!  重要な発見: 物理リモコンの共存 純正の赤外線リモコンで操作した際も、MCUからUART経由でステータス報告 (0x07)が送信されていることを確認。 これにより、「物理操作をHomeKit側にリアルタイム反映する(双方向同期) 」 ことが可能と判明。
  8. システムアーキテクチャ(理想) Components & Data Flow 完全ローカル制御 外部クラウドや専用ブリッジを排除。HomeKit からダイレクトにパケットが飛び、コンマ秒単 位のレスポンスを実現。 制御の乗っ取り

    ESP32-C6が「私は純正Tuyaモジュールです」と 振る舞うことで、メイン基板(STM32)を騙して LEDを制御する。 既存資産の活用 電源回路やLEDドライバ、リモコン受信部は既 存のものをそのまま流用。改造は無線モジュー ルの換装のみ。  iPhone Apple Homeアプリ  Matter over Wi-Fi UART (9600bps)  STM32 Original PCB LED Driver / PSU     ESP32-C6 Matter End Device "Tuya MCU" Emulation NEW
  9. STEP 1 技術的攻略: プロトコル完全解析 Tuya MCU Protocol v1.0  初期化の儀式

    (The Ritual)  データポイント(DP)変換ロジック src/TuyaConverter.cpp C++ // Matter(0-254) to Tuya(0-100) Scaling uint8_t matter_brightness = 127; uint8_t tuya_val = (matter_brightness * 100) / 254; // Construct Tuya Packet frame send_dp_command(DP_ID_BRIGHTNESS, tuya_val);  これをパスしないと点灯しない CMD: 0x00 (Heartbeat) ACK OK 生存確認。ESP32起動直後に送信 CMD: 0x01 (Query Info) JSON RX 製品ID等の情報を取得 CMD: 0x02 (WiFi State) MODE SET Wi-Fi接続状態をMCUへ通知 罠1: 色温度の逆転 Tuyaの値は一般的な直感と逆。0が「暖色」 、100 が「寒色」としてマッピングされている。  0 (Warm) 100 (Cool) 罠2: 常夜灯モード 輝度を下げても常夜灯にはならない。 専用の DP_MODE を "night" に切り替える例外処 理が必要。   常夜灯の挙動が undocumented!!
  10. STEP 2 双方向同期の闇  Sync Issues & Fixes  解決策

    (Stable Sync)  細粒度フラグ制御 単一の「更新中フラグ」ではなく、DPごとのロックを実装。 is_onoff_updating がTrueの間は、OnOff以外のパケット(輝度など)は 通過させる。  過渡状態の無視 常夜灯切り替え時に一瞬発生する不安定な値(例: br=18 )をフィルタリン グ。 状態遷移が完了するまでMatter側への報告を遅延させる。  UARTログの停止 通信タイミングがシビア(9600bps) 。 printf() のブロッキングでパケットを取りこぼすため、運用時は全ログを 無効化。  競合と発振 アプリ操作とリモコン操作が同時に行われると、状態更新通知が無 限にループする。 Brightness Value (Oscillation)  LOOP  HomeKit  ESP32
  11. STEP 3 開発の成果  Phase 1 Complete (USB給電時)  遅延ゼロのレスポンス

    Matter over Wi-Fiにより、タップした瞬間に点灯。 クラウド経由の1〜2秒のラグは過去のものに。  Siri 音声コントロール 「Hey Siri, 電気を消して」で即座に反応。 HomePod mini経由でも完璧に動作。  双方向完全同期 物理リモコンで操作しても、0.1秒以内にiPhone側の表示ステータスが更新される。 9:41    マイホーム  シーリングライト 点灯 • 100%   「勝った。 最強のスマートライトが完成した。」  ただし、USB給電環境下において——  "はい、電気をつけました"
  12. STEP 4 運命のハードウェア実装  Final Integration Phase 「USBでの動作確認は完璧。あとは本体の電源につなぐだけ。 」 誰もが勝利を疑わなかった、運命の瞬間。

    STATUS: ALL GREEN  USB Power  Main PCB 3.3V 01  USB給電を卒業。 デバッグケーブルを取り外す。  02  本体基板と直結 3.3VラインをSTM32基板から拝借。  03  筐体を閉じて天井へ。 あとはスイッチを入れるだけ。  ESP32-C6 Matter Enabled
  13. STEP 5 実機への組み込みと不具合発生  CRITICAL FAILURE  不可逆的な損傷 単なるバグではない。ハードウェアレベルでの破壊。 ESP32C6を取り外した後も、シーリングライトは二度と正常な光を放つことはなかった。

    T+00:00  スイッチON ライトが点灯。 一見、正常に動作しているよ うに見えた。 T+00:05  挙動不安定 Homeアプリからのレスポン スが極端に遅くなる。 Wi-Fi接続が断続的に。 T+00:30 点滅 (チカチカ) ライトが不規則に明滅を開 始。 制御コマンドを一切受け付け ない状態に。  ACTION  緊急取り外し 直ちに電源を切り、ESP32を 取り外して出荷時構成に戻 す。 RESULT  症状継続 純正モジュールに戻しても点 滅が止まらない。 メイン基板(STM32)が破損。
  14. STEP 6 原因考察 (Failure Analysis)  Root Cause & Theory

     電源容量の欠如 市販シーリングライトの制御系電源(3.3V)は、余剰電力がほぼゼロで設 計されている可能性が高い。Tuyaモジュール(低消費電力版)に特化してお り、ESP32のピーク電流に耐えられない。  Brownout & Latch-up Wi-Fi送信バースト時の急激な電圧降下により、同ライン上のSTM32が Brownout(低電圧誤動作)を起こした。最悪の場合、ラッチアップによ り過電流が流れ続け、回路自体が焼損した恐れがある。  検証と対策(Next Steps)  3.3Vラインのリップル・ドロップ測定 (オシロスコープ)  ダミー負荷による電源容量の限界テスト  外部電源の増設またはBOD(Brown-out Detector)設定の見直し  3.3V Line Voltage Drop (Hypothesis) SIMULATION
  15. ご清聴ありがとうございました CONCLUSION まとめ・今後の課題  Project Summary  成果 (Software Works)

     Tuya MCUプロトコルの完全解析完了  ESP32-C6によるMatter over Wi-Fi制御の実装  USB給電環境における制御ロジックの正当性検証  断念 (Hardware Fails)  既設電源回路(3.3V)の容量不足による動作不安定  AC100V回路への介入は「電気工事士」資格が必要かつ高リスク  ハードウェア実装プロジェクトを凍結 今後の判断 安定動作には、外部絶縁DC-DCコンバータの増設や回路改造が必要とな る。 しかし、安全性とコンプライアンス(PSE法等)を最優先し、本プ ロジェクトは「技術検証完了」としてクローズする。  Safety First 「既製品の電源回路を流用する際は、 容量マージンの事前測定が不可欠」  THE LESSON Never assume there is free energy.