Hydroponics

The hydroponic system is a 60-position recirculating NFT rack on the east wall. The useful question is not “what is pH right now?” It is whether nutrient strength, reservoir temperature, east-zone air, VPD, and light stay stable long enough for the roots to live in a predictable environment.

Hydroponic NFT channels in the east zone

This page starts with timelines because hydroponics is mostly drift: nutrients dilute or concentrate, pH walks away from the uptake window, warm afternoons push reservoir temperature up, and low-light days change how aggressively the grow lights need to compensate. Current-value cards are still available in the full dashboard, but they are not the story.

Open the full live hydroponics dashboard.

System Context

  • Location: east zone, the coolest production microclimate in the greenhouse. This matters because NFT roots do not tolerate hot water well.
  • Layout: 3 PVC NFT rails × 2 rows, with 60 positions total.
  • Media: Grodan rockwool cubes in net cups with clay pellet ballast.
  • Lighting: 14 Barrina 2 ft LED grow lights mounted over the rails. Light context is tracked with DLI and grow-light relay timelines.
  • Nutrients: General Hydroponics Flora series.
  • Reservoir heat: the nutrient solution usually sits in the mid-70s Fahrenheit, close enough to the risk boundary that trends matter more than a one-time reading.
  • Measurement: a submerged YINMIK multi-parameter meter reports pH, EC, TDS/ppm, ORP, water temperature, and battery through Home Assistant into TimescaleDB.

The relaunch cutoff is still important: the system was relaunched on 2026-04-17, and the first legitimate calibrated hydroponics point was 2026-04-18 19:04 UTC. Measurements before that were calibration noise or wrong-unit data and should not be used as evidence.

Nutrient Strength Over Time

EC and TDS/ppm are the operator signal for nutrient concentration. A falling line means the plants and makeup water are pulling the solution below the recipe; a rising line usually means evaporation is concentrating salts faster than the reservoir is being diluted.

The operator loop is intentionally manual: sustained low EC/TDS should become a Slack alert to add nutrients, while sustained high EC/TDS should ask for dilution or reservoir replacement. Verdify does not currently automate nutrient dosing, and Iris (our OpenClaw AI agent) does not control any dosing pump.

Daily averages make the slower drift easier to read. This is the chart to use for “is the reservoir gradually going low on ppm?” rather than reacting to one noisy sample.

Chemistry Stability

pH controls nutrient availability. ORP is a rough reservoir-health signal: low or negative ORP can point to biofilm, organic load, or poor oxygenation. The exact number is less important than whether the curve changes after a refill, nutrient addition, cleaning, or warm-water period.

Reservoir Temperature

Water temperature is the hidden failure mode. Warm roots have less dissolved oxygen and more disease pressure. The graph shows the thermal chain from outside air to greenhouse air to reservoir water.

East-Zone Climate

The NFT rack lives in the east zone, not in the greenhouse average. East-zone temperature and east-zone VPD are the crop environment above the channels. These timelines show whether the roots are being asked to support plants through hot, dry air even when the reservoir chemistry looks acceptable.

Light And Grow-Light Context

The hydroponic rack is directly under supplemental lighting. Light affects transpiration, water uptake, and nutrient drawdown, so the hydroponics story needs grow-light context rather than chemistry alone.

Operator Actions

The hydroponics control boundary is deliberately conservative. Climate control stays with the ESP32. Nutrient control stays with a human operator until the measurement path, recipe targets, dosing hardware, and safety checks are mature enough to automate.

Pattern in the timelinesOperator actionWhy it matters
EC/TDS falls below the active recipe band for a sustained windowSlack Jason to add Flora nutrient mix and record the interventionLow ppm can look fine in a single sample but shows up clearly as a multi-day drawdown.
EC/TDS rises while water temperature also risesTop off or dilute; check evaporation and reservoir volumeConcentration plus warm roots increases stress and burn risk.
pH exits 5.5-6.5Adjust pH manually and watch whether it reboundsNutrients can be present but unavailable outside the uptake window.
Water temperature holds above 75°FShade/cool the zone, inspect pump/aeration, and consider reservoir serviceWarm solution reduces oxygen and increases pathogen pressure.
YINMIK battery drops below 20%Charge the probe before trusting trend gapsMissing hydro samples should not be confused with a stable reservoir.

The database already has the pieces for recipe-aware alerting through v_nutrient_lab_status: latest hydro chemistry, recipe targets, and status such as ec_low, ec_high, ph_low, or ph_high. The launch-safe automation boundary is alerting: sustained nutrient drift should write alert_log and post to Slack for a human add/dilute action, not drive dosing hardware.

Latest Status

The latest status table is useful for triage, but it should be read after the trends above.

Data Path

The YINMIK uses a Tuya WiFi backend that encodes some metrics in non-standard scalings. Home Assistant keeps both the vendor/raw path and corrected template sensors visible. The public charts use the corrected pH, TDS, and EC entities because the raw datapoints have known scaling errors; raw-vs-corrected comparisons are useful for calibration, not for operator action. Verdify reads the corrected entities every 5 minutes through the Home Assistant REST API.

Measure

YINMIK probe reads pH, EC, TDS, ORP, water temperature, and battery state.

Decode

LocalTuya receives WiFi datapoints with vendor-specific scaling.

Correct

Home Assistant template sensors apply empirical pH, TDS, and EC corrections.

Ingest

Verdify reads corrected entities every 300 seconds and writes climate.hydro_* columns.

Publish

TimescaleDB powers Grafana panels and this public hydroponics page.

DatasetFields used hereWhy it belongs in the hydroponics story
climatehydro_ph, hydro_ec_us_cm, hydro_tds_ppm, hydro_orp_mv, hydro_water_temp_f, hydro_battery_pctReservoir chemistry and sensor freshness.
climatetemp_east, vpd_eastThe NFT rack lives in the east-zone microclimate.
equipment_stategrow_light_main, grow_light_growSupplemental light affects transpiration and nutrient uptake.
daily_summaryfinal DLI and grow-light runtime rollupsDaily light context for comparing chemistry drift across days.
v_hydro_statuslatest in-range flagsTriage view for pH, EC, temperature, and battery.
v_nutrient_lab_statusrecipe-aware nutrient statusRecipe-aware basis for Slack notifications about low ppm, high EC, or pH drift.

Nutrient interventions are deliberately out-of-band: alerts can ask Jason to add Flora nutrients, dilute, or service the reservoir, but no public page or planner tool is claiming closed-loop nutrient dosing today.

What’s Not Monitored Yet

These gaps matter operationally and are not hidden by the graphs:

  • Dissolved oxygen: the most important missing measurement. A failing air pump or biofilm crash would not be visible until plant symptoms appeared.
  • Water level: no reservoir float switch or pressure reading. Evaporation and leaks are still visual checks.
  • Inline pH/EC: the YINMIK is a single-point submerged probe. It does not see differences between the reservoir and the end of a long NFT channel.
  • Per-zone runoff pH/EC: useful for soil drip systems, but not measured at the center or wall drip outlets today.

Ties To The Broader System

  • East-zone climate control applies directly to the NFT crops; see Zones East.
  • Water for the reservoir shares infrastructure with misting and drip systems.
  • The AI planner can change climate tactics that affect VPD, temperature, and light strategy, but AI-writable tunables do not include nutrient dosing.

Relaunched 2026-04-17. First legitimate data point: 2026-04-18 19:04 UTC, pH 6.21, EC 2,478 uS/cm, TDS 1,248 ppm, water temp 74.7°F.