ESP32-S3を使って、Python・Excel・Node-RED・Home Assistantなど、好きなソフトから制御できる汎用I/Oデバイス「esp32io」シリーズを個人開発しています。
この記事は、「今このプロジェクトで何ができるか」を最短で把握できるハブ記事です。開発の詳しい経緯は本文後半の「なぜこの形になったか」に、実際に試した活用例は「活用例」にまとめています。
📦 何ができるか
- USB / Wi-Fi(HTTP) / MQTT、好きな通信方式でESP32-S3のI/Oを制御
- DI×6 / DO×6 / ADC×2 / PWM×2 / I2C(BME280・MPU6050・VL53L1X・OLED対応)
- Python・Node-RED・Excel VBA・curlなど、JSONさえ扱えれば何からでも制御可能
- MQTT版はHome AssistantのMQTT Discoveryに対応。配線するだけでYAML設定なしにエンティティが自動登録される
- 工場の24V機器(オムロンLYシリーズ相当のリレーなど)を想定した絶縁・保護回路つきのハードウェア設計も公開
🏠 Home Assistantでの見え方
初回セットアップは、http://<device_ip>/ または http://ESP32IO-MQTT-XXXXXX.local(mDNSホスト名)で設定ポータルにアクセスし、Wi-Fi情報とMQTTブローカーの接続先を入力するだけです。詳しくは esp32io-mqtt-firmware のREADMEを参照してください。
電源を入れてこの設定をするだけで、以下のようにDI/DO/ADC/PWMが個別エンティティとして登録できます。複数台を同一ネットワークに追加しても、デバイスIDがデバイス固有の値のためトピックが衝突せず、それぞれ別デバイスとして認識されます(実機2台で確認済み)。
🔀 HTTP版・MQTT版、どちらを使うか
| こんな人におすすめ | 選ぶべきもの |
|---|---|
| Home Assistantで自動検出したい、非同期でイベント駆動したい | MQTT版(esp32io-mqtt-firmware) |
| シンプルなHTTPリクエストで叩きたい、ブローカーを立てたくない | HTTP版(esp32io-firmware) |
| Excel VBA・curlなど軽量な環境から使いたい | どちらでも可(生JSON API) |
Pythonクライアントは両版ともPyPI公開済みです(pip install esp32io / pip install esp32io-mqtt)。工場の24Vリレー・センサーを安全に接続したい場合は esp32io-hw を参照してください。
🚀 はじめに
- まずはESP32-S3-DevKitC-1などの開発ボードに、用途に応じて esp32io-firmware または esp32io-mqtt-firmware を書き込み
- 3.3V〜5Vのロジックレベルで使う場合は、開発ボードだけでそのまま利用可能です(esp32io-hw は不要)
- 工場の24V機器など、絶縁・保護回路が必要な環境で使う場合は esp32io-hw のハードウェアを追加で用意
- Pythonから使う場合は
pip install esp32ioまたはpip install esp32io-mqtt - Node-REDからは標準のHTTPリクエストノード、またはMQTTノードでそのまま接続可能
🧰 動作環境をまだお持ちでない方へ
MQTT版を試すには、MQTTブローカー(Mosquitto等)とHome Assistantの環境が必要です。お持ちでない場合は、以下の記事で一括構築できます。
👉 Raspberry Pi 4 で Node-RED / Mosquitto / Home Assistant を Docker Compose で一元管理する
📚 活用例
- YAML不要!ESP32-S3とMQTT Discoveryで作る自宅IoTデバイス(Home Assistant自動連携) — LED点灯・ボタン検知・I2Cセンサー値表示をMQTT Discoveryで自動エンティティ化する手順
今後、Node-REDやExcelからの制御など、他の活用例も順次追加していきます。
📖 なぜこの形になったか
最初は「シリアル通信でPythonから制御したい」という小さな動機から始まりました。JSONでコマンド・応答をやり取りする設計にしていたことが、その後の展開でそのまま活きています。
- USB(シリアル)版 → 配線の制約をなくすためWi-Fi(HTTP)版へ
- HTTP版 → ポーリング特有の不安定さ(応答待ちのタイムアウト、状態変化の取りこぼし)が気になり、MQTT版へ
- MQTT版 → Home Assistantとの相性の良さから、Discovery対応・Pythonクライアント公開
- ハードウェアも、家庭用途から工場の24V機器を扱う産業用途まで見据えた絶縁・保護回路つきの設計に発展
各段階の詳しい技術的な経緯は、以下にまとめています。
- USB版〜HTTP版まで: 開発記録 / 完成版アップデート記事
- MQTT対応: 自作のESP32-S3ベースIoTデバイス「ESP32IO」をMQTT対応へアップデート
🗺️ プロジェクト全体像
リポジトリ構成やライセンス、最新情報はGitHub organization側にまとめています。
⚠️ ご利用される場合
個人開発のプロジェクトなので、認証や第三者検証などは受けていません。特に工場設備など実運用で使う場合は、事前にご自身の環境や負荷条件に合うか確認をお願いします。詳しい注意事項はesp32io-hwのREADMEにまとめています。
質問・要望があれば、お気軽にコメントください。今後も機能追加や活用事例を公開していく予定です。


