2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

アイリスオーヤマのシーリングライトをMatter化する - 解析編

Posted at

【警告・免責事項】本記事の内容を模倣しないでください

本記事は、市販のIoT機器がどのような通信プロトコルで制御されているかを技術的に解析・検証すること(リバースエンジニアリングによる学習) を目的として執筆されています。

筆者は、製品の改造を推奨・助長する意図は一切ありません。以下の理由により、本記事の内容を真似することはお止めください。

  • 火災・感電のリスク: 100V(AC電源)を扱う家電製品の分解・改造は、生命に関わる感電事故や、火災の原因となる重大なリスクを伴います。

  • 法的リスク: 無線モジュールの変更等は電波法に抵触する恐れがあり、また製品の改造は電気用品安全法(PSE)の適合性等に影響を与える可能性があります。

  • 保証の喪失: 分解した時点でメーカー保証は一切受けられなくなります。

万が一、本記事の内容を参考にして事故、故障、損害、法的トラブル等が発生した場合でも、筆者は一切の責任を負いません。全て自己責任であることを理解した上で、技術的な読み物としてお楽しみください。

背景と目的

2022年に購入したアイリスオーヤマのWi-Fi対応シーリングライト(CL8DL-6.0UAIT)を愛用しています。LED照明としてのハードウェア寿命は十分残っているものの、スマートホームデバイスとしては以下の「UXの限界」を購入時から感じていました。

  • OSレベル統合の欠如
    iPhoneユーザーにとって、コントロールセンターやロック画面から照明を制御できないのは致命的です。「照明のためだけに専用アプリを起動する」というアクションは、日常操作として許容し難いフリクションがあります。

  • クラウド制御によるレイテンシと不安定さ
    AlexaやGoogle Assistant連携は可能ですが、クラウドを経由するため、音声コマンドから実行までに数秒のラグが生じます。また、インターネット回線の状況によっては反応しないこともあり、使う上での信頼性に欠けていました。

  • Matter対応製品の選択肢不足
    「Matter対応かつ日本仕様のシーリングライト」への買い替えを検討しましたが、市場にはODELIC製品(SH8362LDR等/約9,000円)など選択肢が極端に少なく、コストパフォーマンスも良くありません。

「ハードウェアは健全だが、ソフトウェア(通信仕様)が陳腐化している」

この課題を解決するため、まだ使える筐体はそのままに、内部の頭脳だけを物理的にハックしてMatter対応させ、Apple HomeKitのネイティブデバイスとして爆速で操作できるようにする ことをプロジェクトの最終目標としました。

ハードウェア調査

筐体を分解し内部を確認したところ、メインの制御基板とは独立したドーターボード(無線モジュール基板)がコネクタ接続されている構成でした。

まず感動したのは、アイリスオーヤマの基板設計の丁寧さです。 基板のシルク印刷が非常に明瞭で、特に無線モジュールとメイン基板の結合部分には 「RX」「TX」 というピンアサインがハッキリと印字されていました。リバースエンジニアリングを行う上で、テスターを当てて信号線を探す手間が省けるこの仕様は、改造者にとって非常にありがたいポイントです。
RX/TXシルク印刷が見える画像

チップ構成と役割分担

基板上の主要なチップを確認し、システム構成を特定しました。

  • 無線モジュール: Tuya TYWE3S ESP8266をベースとした、IoT界隈では非常にメジャーなWi-Fiモジュールです。

  • メインMCU: STMicroelectronics STM32F070F6 LEDのPWM制御や調光・調色のロジックを担っているのは、このSTM32マイコンのようです。

メインボードのMCUの実装

ドーターボードの実装

つまり、「TYWE3S (通信担当)」 がアプリからの指令を受け取り、UART経由で 「STM32 (制御担当)」 に命令を投げている、明確な分業体制であることが読み取れます。

【検証1】汎用アプリ「Smart Life」は使えるのか?

中身がTuya製モジュールであるなら、アイリスオーヤマ純正アプリではなく、Tuyaの汎用アプリ(Smart Life / Tuya Smart)で直接操作できる可能性があります。もしこれが可能なら、面倒な改造は不要になります。

淡い期待を抱きペアリングを試みましたが、結果は「登録失敗」でした。

デバイスの検出までは進むものの、登録の最終ステップで弾かれてしまいます。 後に解析したProduct ID (uYE7SN7...) から推測するに、メーカー側で OEM ID制限(アイリスオーヤマ純正アプリ以外からの登録を拒否する設定) がかけられているようです。

この検証により、非破壊でのスマートホーム統合は不可能であり、「物理的なファームウェアの書き換え(ESPHome化)」 が唯一の解決策であると腹が決まりました。

【検証2】無線モジュールを抜いても動くのか?

「通信と制御が分かれている」という仮説を証明するため、物理的な切り離しテストを行いました。 メイン基板から通信ドーターボード(TYWE3S)を完全に引き抜いた状態で、シーリングライトの電源を入れてみたところ、以下の結果が得られました。

  • 赤外線リモコン: 問題なく反応(ON/OFF、調光、調色すべて可)。
  • 壁スイッチ操作: 壁スイッチの瞬時切り替え(カチカチッ)による全灯/常夜灯の切り替えも動作。
  • リセット動作: リモコンによるリセット操作も受け付ける。

結論:無線機能は「オプション」に過ぎない
この検証により、通信ボードは純粋にWi-Fi機能(UARTゲートウェイ)のみを担っており、照明としてのコアロジックは全てSTM32側で完結していることが確定しました。

これはハックを行う上で最大の安心材料です。 万が一、ESPHomeの書き込みに失敗したり、無線モジュールがフリーズしたとしても、「照明としては壊れない(物理リモコンや壁スイッチで操作できる)」 という強力なフェイルセーフが担保されているからです。

方針:Tuya MCU Protocol

「Smart Life」アプリでの登録には失敗(OEMロックによる弾かれ)しましたが、ハードウェア構成はTuya標準そのものです。 Tuyaデバイスは独自のUARTプロトコル(Tuya MCU Protocol)で通信していますが、幸いなことに開発ドキュメントが豊富に公開されており、ESPHomeにも標準コンポーネントが存在します。

  • ハードウェアは分離可能で安全。
  • 通信線(RX/TX)は明示されている。
  • プロトコルは既知。

ハードウェア的にもソフトウェア的にも、「これならいけるのでは?」 と確信しました。ここから解析フェーズへと移行します。

Tuya MCUプロトコルの基礎

解析結果を見る前に、Tuya製品が共通で使用している通信ルール(プロトコル)について簡単に触れておきます。
Tuyaのデバイスは、「Tuya MCU Protocol」 という独自のシリアル通信仕様で動いています。基本構造は以下の通りです。

  1. パケット構造すべての通信データは 55 AA というヘッダー(開始信号)から始まります。
[Header] [Ver] [Cmd] [Length] [Data.....] [Checksum]
 55 AA    00    06    00 05    01 01 01    0E
  • Header: 55 AA (固定。ここを見ればTuyaだと分かる)
  • Cmd: コマンドタイプ(命令の種類)
  • Data: 実際の制御内容(DPIDなど)
  1. 重要なコマンド (Cmd)
    ログ解析で特に注目すべきは以下の2つです。
コマンド 方向 意味
0x06 Wi-Fi → MCU 命令 (Send Command)
アプリから「点灯しろ」などの指示が来る時。
0x07 MCU → Wi-Fi 報告 (Report Status)
本体が「点灯しました」と状態を返す時。
  1. データポイント (DPID)
    Tuyaでは、機能ごとに番号(DPID: Data Point ID)が割り振られています。データ部は[DPID] [Type] [Len] [Value] の構造になっています。
  • DPID 1: 電源 (Switch)
  • DPID 3: 明るさ (Bright)
  • etc...
    この仕組みさえ分かれば、流れている16進数の羅列が「意味のある会話」として読めるようになります。

解析戦略:UARTスニッフィング

通信プロトコルを特定し、ESPHomeの設定ファイルを作成するためには、「どの機能(電源、明るさ等)が、どのID(DPID)に割り当てられているか」を知る必要があります。

そこで、稼働中のTuyaモジュールとMCUの会話を横から盗み聞きする UARTスニッフィング(盗聴) を行います。

使用ハードウェア

解析には手元にあった Seeed Studio XIAO ESP32C6 を使用しました。 非常に小型で扱いやすく、ハードウェアシリアルを備えているため、高速なUART通信の解析に最適です。

配線とロジック

TuyaモジュールとMCUは、RX/TXの2本の線で会話しています。

  • Line 1 (Command): アプリ → Tuyaモジュール → MCU (命令)

  • Line 2 (Report): MCU → Tuyaモジュール → アプリ (報告)

この両方の会話を同時に記録するため、Xiao ESP32C6側で 「ハードウェアシリアル」と「ソフトウェアシリアル」を併用 する構成にしました。

信号元 (Tuya基板) Xiao ESP32C6 (解析機) 役割
GND GND 必須(基準電位を合わせる)
TYWE3S TX (Pin 16) D7 (Hardware RX) 命令 (Downlink) を傍受
TYWE3S RX (Pin 15) D2 (Software RX) 報告 (Uplink) を傍受

XiaoとTuyaモジュールを接続している様子

ハマりポイント: 送信ピンの無効化 単にシリアルを開始するだけでは、Xiao側のTXピンが駆動してしまい通信線に干渉(信号の衝突)を起こします。 Serial1.begin および SoftwareSerial の初期化時に、TXピンを -1に設定 してハイインピーダンス(受信専用)にする必要がありました。

解析用コード (PlatformIO)

実際に使用したスニッファーのコードです。D7とD2に入ってくる信号をひたすらPCのシリアルモニタに流します。

解析結果:DPIDの特定

純正アプリを操作しながらログを取得した結果、以下のデータが得られました。

  1. 電源ON/OFF
    アプリで電源をONにした瞬間のログです。
[CMD ->]: 55 AA 00 06 00 05 01 01 00 01 01 0E
  • 06: Command (命令)
  • 01: DPID 1 (機能ID)
  • 01: Type (Bool)
  • 01: Value (ON)
  1. 明るさと色温度
    スライダーを操作すると、DPID 3 と 4 が変化することがわかりました。
// 明るさをMAX (100%) に設定
[CMD ->]: ... 03 02 00 04 00 00 00 64 ...
// 色温度を寒色 (100%) に設定
[CMD ->]: ... 04 02 00 04 00 00 00 64 ...
  1. 【発見】物理リモコンの挙動とリセット
    解析中に面白い発見がありました。付属の赤外線リモコンを操作しても、UART上にログが流れてくるのです。
[<- RPT]: ... 03 02 ... 64 (明るさ100)
[<- RPT]: ... 03 02 ... 5A (明るさ90)

さらに、リモコンで「明・暗」を高速で繰り返す(リセット操作を行う)と、以下のログが出力されました。

// 直後、Wi-Fiモジュールからブートログ(文字化け)が出力された
[CMD ->]: 10 FC 21 1B FF ...

これは、MCUがリモコン操作を検知し、Wi-Fiモジュールに対してリセット(再起動)をかけたことを意味します。 この挙動から、「ESPHome化しても、物理リモコンの操作は阻害されず、かつその操作結果はHome Assistant側にも反映できる」 ことが確定しました。これは嬉しい誤算です。

まとめ:特定された仕様

以上の解析により、アイリスオーヤマ CL8DL-6.0UAIT のTuya DPIDマップが完成しました。

機能 DP ID データ型 値の範囲
電源 (Power) 1 Bool 0 (OFF) / 1 (ON)
明るさ (Brightness) 3 Integer 0 〜 100
色温度 (Color Temp) 4 Integer 0 (暖色) 〜 100 (寒色)

※DPID 2 が欠番の理由(推測) Tuyaの標準仕様では、通常 DPID 2 は「Work Mode(White/Color/Sceneなどのモード切替)」に割り当てられます。 本機はRGB機能やシーン機能を持たないシンプルな調光・調色モデルであるため、モード切替の必要がなく、DPID 2 が実装されていない(あるいは未使用である)と考えられます。

今後の展望:サーバー不要の「真のMatter化」へ

通信プロトコルの全容は解明されました。 次回はいよいよ「実装編」です。

目指すゴール:完全スタンドアローン

通常、ESPHome化したデバイスをApple HomeKitで操作する場合、Home Assistant等のサーバーをブリッジとして経由させる構成が一般的です。しかし、今回は 「あえてHome Assistantを常時稼働させない」 構成にこだわります。

今回採用した Seeed Studio XIAO ESP32C6 は、Matterプロトコルをネイティブにサポートしています。サーバーやハブといった中間業者を一切介さず、シーリングライト(Xiao)とiPhoneがMatterプロトコルで直接会話する シンプルで強固な構成を目指します。

「Tuyaの脳みそを引っこ抜き、Matterの脳みそ(ESP32C6)に挿げ替える」。 次回、9,000円の高級機に負けない、完全ローカル・サーバー不要・Matterネイティブ な最強のシーリングライトを完成させます。

実装編も近日公開予定です!

最後に……実はこれがZennでの初執筆・初投稿の記事になります。 構成や文章など、読みづらい部分や至らない点があったらすみません🙇‍♂️

「面白かった」「続きが気になる」と思っていただけたら、ぜひ いいね・コメント をいただけると執筆のモチベーションになります!
応援よろしくお願いします!

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?