feat(shelly): optimize dew point ventilation setpoints, duty cycle, and night-window gating

- Raise target humidity setpoints from 40% to 55% with a 2% hysteresis shut-off
- Eliminate 9999-min unlimited runtime bypass and strictly cap bursts at 35 min
- Rebalance duty cycle to 1:1 ratio (35 min run, 35 min cooldown rest)
- Implement Shelly internal RTC time-of-day check to restrict routine drying to 02:00-07:00
- Add delta-T guard requiring spread >= 3.5°C and max 20 min bursts when outside is >8°C colder
- Update AGENTS.md documentation to reflect optimized gates and thresholds
This commit is contained in:
Moritz Graf
2026-10-20 15:46:30 +02:00
parent 28eedea372
commit 9903194316
3 changed files with 65 additions and 34 deletions
+11 -11
View File
@@ -25,20 +25,20 @@ In warm months, blowing outdoor air into a cool cellar can heat up the cellar ma
* **Ceiling Protection**: If $T_{in} \ge 20^\circ\text{C}$, the fan is **only** permitted to run if outdoor air is cooler than inside ($T_{out} \le T_{in}$).
* **Warming Allowance**: If $T_{in} < 20^\circ\text{C}$, gentle warming is permitted, but outdoor temperature cannot exceed $20^\circ\text{C}$ ($T_{out} \le 20^\circ\text{C}$).
### 3. Seasonal Target Humidities
* **Cold / Winter Mode** ($T_{in} < 14^\circ\text{C}$ or $T_{out} < 10^\circ\text{C}$): Targets **50% RH**. Once 50% RH is reached, the fan stops to preserve cellar warmth.
* **Warm / Summer Mode**: Targets **40% RH** for maximum drying.
### 3. Target Humidities
* **Target Humidity**: Set to **55% RH** (with a 2% hysteresis shut-off down to 53% when ventilating). Once 55% RH is reached, the fan rests to preserve cellar warmth and prevent excessive wall moisture desorption.
* **Hard Cold Floor**: The fan is blocked if $T_{in} \le \text{mindesttemperatur}$ (default 10°C).
### 4. 2-Tier Scheduling & Optimal Night Window
In Central Europe / Germany, the diurnal temperature and absolute humidity minimum occurs in early morning (~03:00–07:00, peak around 05:00):
* **Urgent Drying ($RH_{in} > 60\%$)**: Runs 24/7 whenever psychrometric and temperature guards allow.
* **Routine Drying ($40\% \le RH_{in} \le 60\%$)**: Restricted to the **optimal night window (03:00–07:00)** to exploit maximum dew point spread.
In Central Europe / Germany, the diurnal temperature and absolute humidity minimum occurs in early morning (~02:00–07:00, peak drying yield around 03:00–05:00 at ~7.6 g/m³ outdoor vapor content):
* **Urgent Drying ($RH_{in} > 60\%$ or Mold Critical)**: Evaluated and run 24/7 whenever psychrometric and temperature guards allow.
* **Routine Drying ($53\% \le RH_{in} \le 60\%$)**: Strictly restricted to the **optimal night window (02:00–07:00)** to exploit maximum dew point spread and prevent wasteful daytime runs.
* **Thermal Delta Guard**: If $T_{in} - T_{out} > 8.0^\circ\text{C}$ (very cold outside draft), spread requirement increases by +1.5°C (spread $\ge 3.5^\circ\text{C}$) and burst duration is throttled to 20 min max.
### 5. Duty Cycle & Thermal Equilibrium
To allow cellar air and thermal wall mass to equilibrate and prevent non-stop continuous blowing:
* **Max Continuous Runtime**: 90 minutes.
* **Cooldown Rest**: 45 minutes pause after hitting max continuous runtime.
* **Max Continuous Runtime**: Strictly capped at **35 minutes** (scaled dynamically between 15 and 35 min based on dew point spread; no unlimited 9999 bypass).
* **Cooldown Rest**: **35 minutes pause** (1:1 duty cycle) after hitting max runtime to allow concrete and masonry moisture desorption.
---
@@ -53,11 +53,11 @@ To allow cellar air and thermal wall mass to equilibrate and prevent non-stop co
│ YES
[ Overheating Safe (Tout vs Tin)? ]
│ YES
[ Cellar RH > Target (40% / 50%)? ]
[ Cellar RH > Target Setpoint (55%)? ]
│ YES
[ Dew Point Spread > Threshold (2°C)? ]
[ Urgent (>60%) OR Night Window (02-07)? ]
│ YES
[ Urgent (>60%) OR Night Window (03-07)? ]
[ Dew Point Spread > Required Threshold? ]
│ YES
┌────────┴────────┐
▼ ▼