CowaY空気清浄機をクラウド不要に改造
原題: Reverse engineering my Coway air purifier to ditch the cloud
なぜ重要か
IoTデバイスがクラウド依存のまま販売終了・サービス終了になるリスクを、ローカル制御で回避する手法の実例として注目される。
エンジニアのScott J. Goldmanは、Coway Airmega IconSのWi-Fi通信をリバースエンジニアリングし、メーカーのクラウドサービスを経由せずにローカルネットワーク経由で直接制御できる仕組みを構築した。これにより、年に数回発生していたサービス障害やアカウント停止問題を回避し、Apple HomeのGood Nightボタンと空気清浄機を安定的に連携させることに成功した。
2017年にカリフォルニア州で山火事が相次いだことを機に、Bay Area在住のGoldmanは空気清浄機Coway Airmegaを購入した。その後、Wi-Fi対応モデルであるAirmega IconS(現在は販売終了)に買い替え、既存のHome Assistant用IoCareインテグレーションを利用してApple Homeと連携させていた。
ところが、このインテグレーションはCowaYのクラウドサーバーを経由して動作するため、問題が絶えなかった。Cowayがサーバーへの過剰アクセスを理由にアクセスをブロックしたこと、アプリのIoCareからIoCare+への刷新でインテグレーション自体の書き直しが必要になったこと、スクレイピング対象のHTMLが変更されて動作不能に陥ったこと——そして最悪のケースとして、Goldmanのアカウントが突然停止され、数週間にわたってリモート操作が一切できなくなったことも起きた。
こうした経緯から、Goldmanはクラウドを完全に排除するローカル制御の実現に踏み切った。まず機器のWi-Fi通信をキャプチャし、MQTT over TLSで自社サーバーと通信していることを特定。証明書のピン留めが施されていたが、ファームウェア解析と中間者プロキシを組み合わせて通信内容を解読した。最終的に、ローカルネットワーク内のHome AssistantからMQTTコマンドを直接送信できるカスタムインテグレーションを実装。クラウド経由の経路を完全に切り離すことに成功した。
現在、Good Nightボタンを押すとCowaYのサーバーを介さずに空気清浄機のファン速度が即時変更され、妻の希望する白色雑音の音量に自動調整される仕組みが安定稼働している。