Categories: 工作・開発

ESP32でガレージドアを遠隔制御、Webhookポーリングでポートフォワード不要に

外出先からガレージドアを開けたい場面は多い。しかし従来の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などが用意され、段階的なセットアップ手順を説明している。

関連情報

GitHub – 93miata25/esp32-garage-door-controller

FabScene編集部

FabScene編集部