
外出先からガレージドアを開けたい場面は多い。しかし従来のIoTソリューションはポートフォワードや固定IPが必要で、ルーターの設定変更が避けられなかった。GitHubユーザー93miata25が公開したESP32ベースのガレージドアコントローラーは、Webhookポーリング方式でこの問題を解決する。
このシステムは、ESP32、Androidアプリ、クラウド上のPHP Webhookスクリプトの3要素で構成される。ポーリング方式を採用した点が特徴だ。通常のIoTデバイスはインターネットからの直接アクセスを受け付けるが、このプロジェクトではESP32側から定期的にWebhookサーバーに問い合わせる。
動作の流れはこうだ。Androidアプリがコマンドをクラウド上のWebhookに送信すると、PHPスクリプトがキューファイルに保存する。ESP32は5秒ごとにWebhookをポーリングし、コマンドがあれば取得してガレージドアを作動させる。作動後、ドアの開閉状態をWebhookに報告する。
このアーキテクチャにはいくつかの利点がある。ポートフォワードが不要で、動的DNSも必要ない。ESP32側がすべての通信を開始するため、ルーターのファイアウォール設定を変更せずに済む。無料のWebホスティングサービスでも動作する。
欠点は0~5秒の遅延が発生することだ。しかし製作者は、自宅内ではローカルWiFi経由の即時制御も可能にしている。ローカルモードではHTTPリクエストを直接ESP32に送信でき、遅延なく作動する。
ハードウェア構成は標準的だ。ESP32開発ボード、5Vリレーモジュール、リードスイッチを使用する。リレーはガレージドアオープナーのボタン端子に接続し、リードスイッチがドアの開閉状態を検知する。ESP32のGPIO 23がリレー制御、GPIO 22がリードスイッチ入力だ。
Androidアプリはカスタムデザインされており、ガレージドアの開閉をアニメーションで表示する。リアルタイムのステータス監視、複数デバイス管理、SSL証明書のバイパス機能を搭載する。アプリはKotlinで開発され、Android Studio 4.0以降でビルドできる。
セキュリティについて、製作者は認証キーの重要性を強調している。Webhookと ESP32ファームウェアの両方で同じAUTH_KEYを設定する必要がある。推奨される生成方法はopenssl rand -base64 32だ。HTTPSの使用も推奨されている。
オプションでAlexa統合も可能だが、製作者はセキュリティの観点から「Alexaデバイスの音声範囲内にいる誰でもガレージドアを作動できる。家族、客、窓の外の人、配達員なども含まれる」と忠告している。
GitHubリポジトリには詳細なドキュメントが揃っている。SETUP.md、CONFIGURATION_GUIDE.md、WEBHOOK_SETUP_GUIDE.md、ADD_ALEXA_INSTRUCTIONS.mdなどが用意され、段階的なセットアップ手順を説明している。

