AI Greenhouse Lessons Learned
A curated operations playbook distilled from Verdify’s planner lesson table. The public page leads with durable greenhouse knowledge; noisy machine extraction rows are collapsed below for auditability.
Launch Priorities
- Gas heat is 3.9x cheaper per BTU than electric for sustained cold.
- Direct relay control stays in firmware.
- Shade cloth, not software, is the missing hot-day fix.
- VPD is the dominant spring constraint.
- Stale plans must be replaced when forecast regime changes.
Those lessons constrain the bounded control surface listed in AI-Writable Tunables.
Generated 2026-05-08 from 48 active rows and 43 retired rows in planner_lessons.
Operational Playbook
These are the launch-facing operating rules Iris (our OpenClaw AI agent) should read first. They are curated from validated lessons; machine extraction details are intentionally pushed into audit tables.
Heat With Gas; Let Thermal Mass Work
- Use electric heat for mild dips and gas heat for sustained cold; gas remains the efficient overnight BTU source.
- Do not chase every spring-morning cold-stress hour with higher heat setpoints. Some score loss comes from crop-band alignment, not plant danger.
- Plan around a 62-66F overnight equilibrium on 48-55F spring nights, especially when humidity can sag VPD below band before dawn.
Evidence: lesson 2 (High, 13x), lesson 91 (High, 6x), lesson 96 (Medium, 1x), lesson 87 (Medium, 2x).
Cooling Is Physics-Limited
- Shade cloth is the real hot-day fix; software can pre-cool, mist, and ventilate, but cannot erase 90F+ solar gain.
- Do not seal the house for humidity trapping when indoor temperature is near the safety ceiling.
- VENTILATE plus misting is the safe outcome when sealed misting cannot overcome solar load.
Evidence: lesson 4 (High, 6x), lesson 89 (High, 3x), lesson 95 (High, 3x).
Tune Misting To Weather Regime
- Reserve aggressive misting for warm, dry, high-VPD days. Cold-dry air can still produce manageable indoor VPD.
- Use moderate mist/fog settings on moderate-dry days to avoid VPD-low overshoot.
- On cool, cloudy, high-RH days, suppress mist and favor ventilation/dehumidification rather than water-use optimization alone.
- Treat the 900s closed-vent experiment as an extreme-dry tool, not a general humidity strategy.
Evidence: lesson 1 (Medium, 9x), lesson 10 (Medium, 4x), lesson 27 (Medium, 10x), lesson 88 (Medium, 3x), lesson 90 (Low, 1x), lesson 93 (Medium, 1x), lesson 98 (Low, 1x), lesson 99 (Medium, 4x), lesson 100 (Low, 1x), lesson 101 (Low, 1x), lesson 102 (Medium, 1x).
Keep Planner Control Bounded
- Use canonical DB parameter names; ESP32 object IDs create duplicate active-plan rows.
- Never set timer parameters to zero. Firmware minimums exist to avoid 5-second relay chatter.
- Do not push unconfirmed zone-specific VPD targets. Use firmware-confirmed global misting tunables instead.
- Replace stale plans when the forecast regime changes, even if the original plan window has not expired.
Evidence: lesson 5 (High, 3x), lesson 7 (High, 11x), lesson 8 (High, 7x), lesson 94 (High, 1x), lesson 97 (Medium, 1x).
Read Scores Through Structural Constraints
- Some cold, heat, and combined compliance loss is structural when crop bands are narrower than the greenhouse’s spring operating envelope.
- Use VPD compliance as the meaningful optimization axis on warm spring days where low temperature compliance is physically unreachable.
- Separate controller failures from crop-band scoring artifacts before changing tunables.
Evidence: lesson 87 (Medium, 2x), lesson 91 (High, 6x), lesson 92 (Medium, 3x).
Current Validated Signals
Active machine lessons are collapsed by operational signal. Duplicate confirmations count as evidence, not separate public guidance.
| Signal | Operational reading | Evidence |
|---|---|---|
| Cold-night bias and moderate-day fog tuning | Repeated confirmations collapse to one signal: cold nights need heat/cool bias coordination, while moderate days need fog_escalation around 0.4 to avoid VPD-low overshoot. | Low; 19x; lesson rows 66-84 |
| Mild-day baseline misting | Baseline misting around engage 1.4-1.5 with 30-35s gaps works on mild, moderate-RH days; reserve stronger settings for genuinely dry VPD pressure. | Low; 6x; lesson rows 45, 56 |
| Gas heat economics | Gas heater (heat2, 75K BTU, USD 0.623/hr) is 3.9x more cost-effective per BTU than electric (heat1, 5K BTU, USD 0.167/hr). | High; 13x; lesson rows 2 |
| Canonical parameter names | ALWAYS use canonical DB parameter names: vpd_high (not set_vpd_high_kpa), mister_engage_kpa (not vpd_mister_engage_kpa), mister_all_kpa (not vpd_mister_all_kpa), temp_low (not… | High; 11x; lesson rows 7 |
| DLI sensor correction | Sensor DLI reads 25-40% of actual plant-available light due to LDR saturation at ~28K lux + morning tree shadow. | High; 8x; lesson rows 3 |
| Timer zero safety | Never set timer parameters to 0. | High; 7x; lesson rows 8 |
| Cooling physics limit | Physics-limited: 55,600 BTU/hr solar gain vs 15,000-22,000 BTU/hr cooling capacity. | High; 6x; lesson rows 4 |
| Morning crop-band cold scoring | Cold stress hours are dominated by crop profile band alignment on spring mornings, not actual plant danger. | High; 6x; lesson rows 91 |
| Dispatcher owns temp_high | temp_high=82F is enforced by the band dispatcher from crop profiles. | High; 3x; lesson rows 5 |
| Sealed mist thermal risk | Never seal the greenhouse for humidity trapping when indoor temp exceeds safety_max - 5°F. | High; 3x; lesson rows 89 |
| Sealed mist cycles to ventilation | SEALED_MIST will cycle to THERMAL_RELIEF within 10 min at these conditions — solar gain outpaces single-zone mister cooling ~7:1. | High; 3x; lesson rows 95 |
| Unconfirmed zone VPD targets | Zone-specific VPD target setpoints (vpd_target_south, vpd_target_west, vpd_target_center, vpd_target_east, mister_center_penalty) are NOT confirmed by ESP32 readback — they… | High; 1x; lesson rows 94 |
| 900s closed-vent extreme-dry experiment | Extreme-dry evidence supports a longer closed-vent mist window, but superseded duplicates are historical confirmations rather than separate guidance. | Medium; 10x; lesson rows 27 |
| Warm-dry misting posture | On dry days, lower mister_engage_kpa to 1.3 (from 1.6) before the morning VPD ramp (6 AM waypoint). | Medium; 9x; lesson rows 1 |
| Cold-dry misting posture | Cold-dry days (outdoor <55F with <25% RH) produce minimal VPD stress because temperature is the dominant VPD driver, not humidity alone. | Medium; 4x; lesson rows 10 |
| Mist suppression plus ventilation | Mist/fog suppression alone can preserve dew-point safety but leave VPD below band for most of the day. | Medium; 4x; lesson rows 99 |
| Moderate-dry fog overshoot | fog_escalation 0.3 kPa + aggressive misting (engage 1.3-1.4, gap 15-35s) eliminates VPD_high stress but creates 6-7h VPD_low stress on moderate dry days (70°F peak). | Medium; 3x; lesson rows 88 |
| Warm-side crop-band scoring | On warm days (outdoor >65°F), the narrow crop band upper limit (69.3°F) guarantees low temp compliance regardless of planner actions. | Medium; 3x; lesson rows 92 |
| Structural overnight heat score loss | Overnight heat stress (3-4h) when slab retains 62-63F but nighttime temp_high band is 62-65F from crop profiles is structural. | Medium; 2x; lesson rows 87 |
| Overcast cold misting | On overcast cold days, use conservative misting posture (engage 1.6, gap 45s). | Medium; 1x; lesson rows 93 |
| Slab overnight equilibrium | Slab thermal mass delivers 62-65°F overnight equilibrium when outdoor is 48-55°F, not the commonly predicted 65-70°F. | Medium; 1x; lesson rows 96 |
| Stale plan regime changes | Plans must be replaced when forecast regime changes (e.g., extreme-dry → cool-overcast cold front). | Medium; 1x; lesson rows 97 |
| Cloudy high-humidity dry-ramp avoidance | When cloud cover and outdoor humidity are both high, avoid dry-ramp misting posture and raise mist thresholds early enough to prevent VPD-low accumulation. | Medium; 1x; lesson rows 102 |
| When current indoor humidity is already high on a mild day, prioritize avoiding VPD-low… | When current indoor humidity is already high on a mild day, prioritize avoiding VPD-low over preempting forecast dry-window VPD-high unless outdoor RH is actually below ~30% and… | Medium; 1x; lesson rows 103 |
| Tight crop-band misting and heat bias | When crop bands are unusually tight, misting must engage below the band ceiling and heat periods need cooling bias to avoid oscillation. | Low; 1x; lesson rows 65 |
| Moderate-warm over-misting | On moderate-warm days where outdoor VPD peaks under 2.0 kPa, aggressive misting presets (engage 1.3, gap 15-20s) cause 1-2h VPD-low stress from over-humidification. | Low; 1x; lesson rows 90 |
| Cool high-RH recovery posture | Cool, cloudy, high-RH recovery days are VPD-low and condensation problems; suppress mist and use ventilation when dew-point margin allows. | Low; 1x; lesson rows 98 |
| Do not carry dry posture into cool/cloudy periods | Do not carry aggressive dry-day mist/fog posture into cool/cloudy periods. | Low; 1x; lesson rows 100 |
| Cool cloudy conservative fog | On cool cloudy spring days, conservative fog and long mist gaps can prevent VPD-high breakouts even if solar briefly exceeds forecast, but can still produce 1-2h VPD-low stress. | Low; 1x; lesson rows 101 |
Machine Extraction Audit
The raw planner_lessons stream is preserved here for traceability. It is not the reading order for operations; row-level dumps stay off the public reading path.
Grouped audit trail: 91 raw rows collapsed into 37 signals
| Rows | Status | Signal | Audit note |
|---|---|---|---|
| 66-84 | 19 active | Cold-night bias and moderate-day fog tuning | Repeated confirmations collapse to one signal: cold nights need heat/cool bias coordination, while moderate days need fog_escalation around 0.4 to avoid VPD-low overshoot. |
| 43-49, 51-56 | 2 active, 11 retired | Mild-day baseline misting | Baseline misting around engage 1.4-1.5 with 30-35s gaps works on mild, moderate-RH days; reserve stronger settings for genuinely dry VPD pressure. |
| 2 | 1 active | Gas heat economics | Gas heater (heat2, 75K BTU, USD 0.623/hr) is 3.9x more cost-effective per BTU than electric (heat1, 5K BTU, USD 0.167/hr). |
| 7 | 1 active | Canonical parameter names | ALWAYS use canonical DB parameter names: vpd_high (not set_vpd_high_kpa), mister_engage_kpa (not vpd_mister_engage_kpa), mister_all_kpa (not vpd_mister_all_kpa), temp_low (not… |
| 3 | 1 active | DLI sensor correction | Sensor DLI reads 25-40% of actual plant-available light due to LDR saturation at ~28K lux + morning tree shadow. |
| 8 | 1 active | Timer zero safety | Never set timer parameters to 0. |
| 4 | 1 active | Cooling physics limit | Physics-limited: 55,600 BTU/hr solar gain vs 15,000-22,000 BTU/hr cooling capacity. |
| 91 | 1 active | Morning crop-band cold scoring | Cold stress hours are dominated by crop profile band alignment on spring mornings, not actual plant danger. |
| 5 | 1 active | Dispatcher owns temp_high | temp_high=82F is enforced by the band dispatcher from crop profiles. |
| 89 | 1 active | Sealed mist thermal risk | Never seal the greenhouse for humidity trapping when indoor temp exceeds safety_max - 5°F. |
| 95 | 1 active | Sealed mist cycles to ventilation | SEALED_MIST will cycle to THERMAL_RELIEF within 10 min at these conditions — solar gain outpaces single-zone mister cooling ~7:1. |
| 94 | 1 active | Unconfirmed zone VPD targets | Zone-specific VPD target setpoints (vpd_target_south, vpd_target_west, vpd_target_center, vpd_target_east, mister_center_penalty) are NOT confirmed by ESP32 readback — they… |
| 27-29, 32-41 | 1 active, 12 retired | 900s closed-vent extreme-dry experiment | Extreme-dry evidence supports a longer closed-vent mist window, but superseded duplicates are historical confirmations rather than separate guidance. |
| 1 | 1 active | Warm-dry misting posture | On dry days, lower mister_engage_kpa to 1.3 (from 1.6) before the morning VPD ramp (6 AM waypoint). |
| 10 | 1 active | Cold-dry misting posture | Cold-dry days (outdoor <55F with <25% RH) produce minimal VPD stress because temperature is the dominant VPD driver, not humidity alone. |
| 99 | 1 active | Mist suppression plus ventilation | Mist/fog suppression alone can preserve dew-point safety but leave VPD below band for most of the day. |
| 88 | 1 active | Moderate-dry fog overshoot | fog_escalation 0.3 kPa + aggressive misting (engage 1.3-1.4, gap 15-35s) eliminates VPD_high stress but creates 6-7h VPD_low stress on moderate dry days (70°F peak). |
| 92 | 1 active | Warm-side crop-band scoring | On warm days (outdoor >65°F), the narrow crop band upper limit (69.3°F) guarantees low temp compliance regardless of planner actions. |
| 9, 93 | 1 active, 1 retired | Overcast cold misting | On overcast cold days, use conservative misting posture (engage 1.6, gap 45s). |
| 87 | 1 active | Structural overnight heat score loss | Overnight heat stress (3-4h) when slab retains 62-63F but nighttime temp_high band is 62-65F from crop profiles is structural. |
| 96 | 1 active | Slab overnight equilibrium | Slab thermal mass delivers 62-65°F overnight equilibrium when outdoor is 48-55°F, not the commonly predicted 65-70°F. |
| 97 | 1 active | Stale plan regime changes | Plans must be replaced when forecast regime changes (e.g., extreme-dry → cool-overcast cold front). |
| 102 | 1 active | Cloudy high-humidity dry-ramp avoidance | When cloud cover and outdoor humidity are both high, avoid dry-ramp misting posture and raise mist thresholds early enough to prevent VPD-low accumulation. |
| 103 | 1 active | When current indoor humidity is already high on a mild day, prioritize avoiding VPD-low… | When current indoor humidity is already high on a mild day, prioritize avoiding VPD-low over preempting forecast dry-window VPD-high unless outdoor RH is actually below ~30% and… |
| 57-65 | 1 active, 8 retired | Tight crop-band misting and heat bias | When crop bands are unusually tight, misting must engage below the band ceiling and heat periods need cooling bias to avoid oscillation. |
| 90 | 1 active | Moderate-warm over-misting | On moderate-warm days where outdoor VPD peaks under 2.0 kPa, aggressive misting presets (engage 1.3, gap 15-20s) cause 1-2h VPD-low stress from over-humidification. |
| 98 | 1 active | Cool high-RH recovery posture | Cool, cloudy, high-RH recovery days are VPD-low and condensation problems; suppress mist and use ventilation when dew-point margin allows. |
| 100 | 1 active | Do not carry dry posture into cool/cloudy periods | Do not carry aggressive dry-day mist/fog posture into cool/cloudy periods. |
| 101 | 1 active | Cool cloudy conservative fog | On cool cloudy spring days, conservative fog and long mist gaps can prevent VPD-high breakouts even if solar briefly exceeds forecast, but can still produce 1-2h VPD-low stress. |
| 11 | 1 retired | Mister water budget zero safety | mister_water_budget_gal must NEVER be 0 or below 200. |
| 6 | 1 retired | Dispatcher reboot correction | The dispatcher auto-corrects ESP32 reboot corruption (zeroed params) and retries failed batch pushes within 5 minutes. |
| 15, 21 | 2 retired | Forecast deviation replanning | Trigger a same-cycle replan to the maximum validated dry-day misting posture immediately. |
| 25 | 1 retired | Vent/fog defaults | Vent coordination and fog graduation parameters are new (April 2026). |
| 42 | 1 retired | Overnight bias_cool oscillation guard | Overnight heating without bias_cool causes severe vent oscillation and cold stress. |
| 26, 30-31 | 3 retired | Weekend dry experiment placeholder | Maintain the experiment targeting weekend dry hours. |
| 50 | 1 retired | Mild-day misting plus reboot/setpoint split | Mixed extraction: the mild-day misting result is separate from reboot/setpoint cold-stress evidence. Do not read this as one causal axis. |
| 86 | 1 retired | Internal test row | Internal create-path test retained only for DB audit; not operational guidance. |
Lesson Lifecycle
- Hypothesis — Planner proposes a theory during a planning cycle
- Test — Specific setpoint changes are made with measurable expected outcomes
- Validate — Next cycle scores the result (1–10) and extracts findings
- Graduate — If finding is significant, it’s added to this page at confidence “low”
- Confirm — Each re-validation bumps confidence (low → medium at 3×, high at 5×)
- Supersede — If a better approach is found, old lesson is marked superseded