このプロジェクトについて

TaupunktLueftung は、露点差に基づくインテリジェントな換気制御のための ESP32 ベースのシステムです。地下室、洗濯室、物置など湿気の多い部屋の効率的かつ完全自動のターゲット乾燥に最適です。 本システムは、屋内と屋外の温度・湿度を(SHT31 や DHT22 などのセンサー、または MQTT 経由で)測定し、露点を計算して、乾燥条件が整ったとき、つまり外気が水分を吸収できるとき(逆に湿気を持ち込まないとき)にのみ換気を動作させます。湿度制御モードでは、除湿または加湿によって目標の湿度レベルを維持しようとします。 換気はリレーで切り替えられます。最適な構成はファン2台で、乾燥した空気を取り入れ、湿った空気を排出します。これにより、対象を絞った除湿のための効果的な気流が生まれます。 ## 機能 - 対象を絞った除湿のための露点制御換気 – 露点分析アルゴリズムがその差に基づいて換気を制御します。 - WiFi 認証情報は、ブラウザでアクセスポイント(`TaupunktLueftung-Setup`)を介して設定され、永続的に保存されます。`secrets.h` を手動で編集する必要はありません。 - ライブデータ表示、リアルタイムチャート(時間別・日別・月別ビュー)、設定エリアを備えた Web インターフェース。 - **ライト/ダークデザイン(Light/Dark/System)** – ドロップダウンで切り替え可能、選択はブラウザに保存されます。 - Web インターフェース全体に対する**ログイン保護(HTTP Basic Auth)**。ユーザー名とパスワードは運用中に変更可能。 - 過冷却に対するオプションの温度保護。 - 低湿になりすぎるのを防ぐオプションの乾燥保護。 - 希望の湿度レベルを維持するためのオプションの湿度制御モード。 - **センサー故障時のフェイルセーフ**:センサーエラーが続くと、前回の状態のまま無期限に運転を続けるのではなく、安全措置として換気が自動的にオフになります。 - 境界領域でのファン/リレー保護のための遅延時間を調整可能。 - MQTT インターフェース(Publish & Subscribe)+ Home Assistant オートディスカバリー。 - モジュール式:センサーソース(ハードウェアまたは MQTT データ)を「Sensor source」エリアで直接切り替え可能。 - ファームウェアバックアップ:アップデート前に現在実行中のファームウェアを `.bin` として保存可能。 - WiFi 認証情報は、他の設定を失うことなく Web インターフェースのボタンでリセット可能。 - OTA(Over-the-Air)ファームウェアアップデートに対応。Arduino IDE から USB で最初に書き込んだ後、カスタマイズしたファームウェアは Arduino IDE から OTA アップデートするか、Web インターフェースからファームウェアファイルをアップロードして更新できます。 - パフォーマンス最適化(v4.2 以降):CSS/JavaScript は、ページアクセスのたびに ESP32 から再読み込みするのではなく、ブラウザにキャッシュされます。WiFi 修正によりモデムスリープモードを完全に無効化(WiFi 再接続後の顕著な遅延を防止)。MQTT 再接続試行をスロットリングし、到達不能なブローカーが Web インターフェースをブロックしないようにします。 ## 必要な部品とセットアップ ### ハードウェア部品 | コンポーネント | 説明 | 参考価格(EUR) | | --- | --- | --- | | **ESP32 Dev Board**(例:DOIT) | WiFi 内蔵マイコン | 6〜10 EUR | | **SHT31 センサー(屋内、オプションで屋外)** | 温湿度、I2C、高精度 | 各 5〜8 EUR | | **DHT22 センサー(屋外、代替)** | 温湿度、デジタル単線、安価 | 3〜5 EUR | | **LED(3個)** + 抵抗(220〜470Ω) | ステータス表示:緑、黄、赤 | 1〜2 EUR | | **リレーモジュール(1チャンネル)** | 換気制御用 | 2〜4 EUR | | **ジャンパーワイヤー / ブレッドボード** | セットアップとテスト用 | 2〜5 EUR | | **エンクロージャー(オプション)** | ESP32 と配線の保護 | 3〜8 EUR | **合計コスト:** 構成と調達先に応じて約 **20〜30 EUR**。 ### セットアップと配線 **ESP32 ピン配置:** | ESP32 ピン | 機能 | 接続先 | | --- | --- | --- | | GPIO17 | DHT22 データライン | DHT22(10kΩプルアップで GND へ) – DHT22 バリアントのみ | | GPIO16 | リレー | Relay IN | | GPIO2 | 緑 LED | 抵抗 + LED | | GPIO18 | 赤 LED | 抵抗 + LED | | GPIO19 | 黄 LED | 抵抗 + LED | | GPIO21 | SDA(I2C データ) | SHT31 屋内 **および** SHT31 屋外(共有バス) | | GPIO22 | SCL(I2C クロック) | SHT31 屋内 **および** SHT31 屋外(共有バス) | | 3.3V/GND | 電源 | すべてのコンポーネント | ### 簡易 ASCII 回路図 +----------------------------+ | ESP32 Dev | | | | GPIO17 --> DHT22 data | (only DHT22 variant) | GPIO16 --> Relay IN | | GPIO2 --> Green LED | | GPIO18 --> Red LED | | GPIO19 --> Yellow LED | | GPIO21 --> SDA (SHT31) | | GPIO22 --> SCL (SHT31) | +-------------+--------------+ | 3.3V / GND LED:アノード(長いピン)→ 抵抗 → GPIO / カソード(短いピン)→ GND ### 屋外センサーの選択 このプロジェクトでは、屋外センサーとして2種類のセンサータイプに対応しています: - **SHT31(推奨)** – デジタル I2C センサー。DHT22 よりもはるかに高精度で安定しています(一般的に ±2% RH 対 DHT22 の ±2〜5% RH)。変化への応答が速く、低温でも信頼性の高い値を提供します。また、DHT22 の独自の単線タイミングよりも堅牢で干渉を受けにくい I2C プロトコルを使用します。小さな露点差に基づく制御では、センサー精度の高さが換気判断の品質に直接影響します。 - **DHT22** – より安価で精度は低いですが、I2C アドレス設定なしのシンプルな3線配線で済みます。 **SHT31 を2つ使う場合の注意:** 屋内とオプションの屋外 SHT31 はどちらも I2C を使用するため、両方のセンサーを**共有バス**(SDA = GPIO21、SCL = GPIO22)上で動作させることができます – 追加のデータラインは不要です。ESP32 が2つのセンサーを区別できるように、SHT31 にはアドレス選択用の `AD`/`ADR` ピンがあります: | センサー | ADDR/AD ピン | 設定後の I2C アドレス | | --- | --- | --- | | SHT31 屋内 | オープンまたは GND へ | `0x44`(デフォルト) | | SHT31 屋外 | **3.3V** に接続 | `0x45` | *(一部の SHT31 モジュールには追加の `AL`/`ALR` ピンがあります – これはアラーム/割り込み出力であり、アドレス選択とは関係ありません。接続しないでください。)* **屋外センサータイプの設定:** Web インターフェースで設定できる屋内/屋外モード(ハードウェアまたは MQTT)とは異なり、屋外センサーに SHT31 と DHT22 のどちらを使うかは、意図的にソースコード内の**コンパイル時設定**になっています。これにより、コンパイル時に実際に必要なセンサーライブラリだけが含まれ、フラッシュメモリを節約し、存在しない可能性のある2つ目のセンサーとの不要な I2C 通信を避けることができます。 センサータイプを変更するには: 1. `TaupunktLueftung.ino` を開きます。 2. `//#define SENSOR_TYP_AUSSEN_SHT31` という行を見つけます。 3. **SHT31 屋外**(リポジトリのデフォルト)の場合:その行を有効(コメントアウトしない)のままにします。 4. **DHT22 屋外**の場合:行頭にコメントマーカー `//` を戻し、DHT22 がピン17に接続されていることを確認します。 **自分でコンパイルせずに使えるビルド済みファームウェア:** GitHub の各 [リリース](https://github.com/mallewski/TaupunktLueftung/releases) には、**2つの既製 `.bin` ファイル** – `TaupunktLueftung_dht22.bin` と `TaupunktLueftung_sht31.bin` – が自動的に含まれています。Web インターフェースで OTA アップデート時にハードウェアに合うファイルを選択するだけで、Arduino IDE のインストールは不要です。 ### 注意事項 - **リレーモジュール:** 230V の換気ファンを切り替えるために使用できます。**注意:** 主電圧は資格のある担当者のみが接続する必要があります。 - **MQTT:** 外部センサーデータを受信するには、MQTT ブローカー(例:Mosquitto または Home Assistant)が必要です。オートディスカバリーに対応しています(Home Assistant 互換)。 - **Web インターフェース:** MQTT やセンサーソース、しきい値などのすべての設定は、ブラウザインターフェースから直接設定でき、ログイン(ユーザー名/パスワード)で保護されています。 - **初回書き込み後のデフォルト認証情報:** ユーザー名 `admin`、パスワードは自己コンパイルファームウェアの場合 `secrets.h`(`CONFIG_PASSWORD`)の値、または [...]。どちらも後で Web インターフェースの Settings → Access(Login)で変更できます。 ### ファンの推奨 小さな地下室には 100〜150 m³/h。スマートホームシステム(Home Assistant など)と連携する WiFi スマートプラグを使用することもできます。 ### 電源とデカップリング 3.3V と GND の間に、電源ピンのできるだけ近くにコンデンサを配置します。最も効果的なのは、2つのコンデンサを並列に組み合わせる方法です。短い電圧低下用の**電解コンデンサ(470〜1000 µF)**と、短い高周波ノイズスパイク用の**セラミックコンデンサ(100 nF)**です – 電解コンデンサだけでは高周波成分を十分に処理できません。 ### Home Assistant 統合(MQTT) 既存の Home Assistant センサーは、オートメーション経由でセンサーソースとして利用できます([Guide: HA sensors via MQTT](https://github.com/mallewski/TaupunktLueftung/blob/main/docs/Anleitung_HA_Sensoren_via_MQTT.md) を参照)。 このプロジェクトが気に入った場合や役に立った場合は、コーヒーを一杯ごちそうしていただけると嬉しいです。