A Plant Lab · May–June 2026

wy2z

A four-device plant lab built to keep a Wyches Yellow tomato and two zinnias alive while I was out of town.

Archived · 2026-06-12

The lab has been decommissioned.

Five weeks unattended, three plants, and a stack of lessons. Everything below is the dashboard frozen at its final state — scroll on for the journal, photos, and what I learned.

Most Recent Capture · Jun 12, 11:30 AM CT · 34d ago

Plant lab — captured Jun 12, 11:30 AM

zinnia a + zinnia b + tomato flagged red — needs attention. 22.6°C / 67%.

Action Taken

⚠ Watering failed · Zinnia B, Tomato

Zinnia A

Alert · 95%

Tall dried stem with a completely desiccated spent zinnia flower at the apex — tan/papery, clearly dead

Very dry soilAction: inspectWatered 34d ago

Zinnia B

Alert · 93%

Central zinnia stem is tan/straw-colored and completely desiccated — no green tissue on the original plant

Very dry soilAction: inspectWatered 34d ago

Tomato

Alert · 88%

Large black fabric/plastic pot on the right — the largest container as expected

Soil unclearAction: inspectWatered 34d ago

Scene Notes

This is a post-outage damage assessment capture. All three intended plants — both Zinnia elegans seedlings and the Wyches Yellow tomato — appear to have died during the 15-day unwatered gap. Zinnia_a and zinnia_b are visibly fully desiccated with brown papery tissue, spent dried flowers, and no recoverable green growth on the original plants. The tomato pot shows no recognizable tomato tissue whatsoever. All green growth visible across the scene is narrow-bladed contamination grass that germinated in the substrate during the unattended period, likely from weed seeds present in the soil mix. The grass in zinnia_b and especially the tomato pot is growing vigorously. Air temp (22.6°C) and humidity (67%) are fine for plant growth but are irrelevant given the state of the original plants. Recommendation: do NOT trigger automated watering for plant recovery purposes — there are no original plants left to save. The operator should manually inspect, confirm plant death, remove dead material, decide whether to replant, and manually water only if restarting with new seedlings. The watering system fix should be verified with a controlled test before trusting it with new plants.

Air · Last 14 Days

Temp °C Humidity %

Recent Captures

Timelapse

98 captures stitched at 10 fps. Rebuilt nightly.

How It Works

IN THE ROOMRaspberry Pi 5ORCHESTRATORDHT11air temp + humidityJetson Orin16MP cameraESP32Wi-Fi → 5V pumpGPIOSSHHTTPThree PlantsZINNIA · ZINNIA · WYCHES YELLOWseeswatersCLOUDphoto+ readingsSupabasePostgres + storageClaudevision verdictYOUISR · 30 minThis DashboardNEXT.JS · VERCELyou are here
System Map

One Raspberry Pi orchestrates four moving parts on a 4-hour clock: a camera that’s a separate computer, a sensor on a GPIO pin, a vision model in a datacenter somewhere, and a Wi-Fi microcontroller that pushes water on command. The full loop — cron to capture to verdict to pump — first ran in production on May 6, 2026.

  1. 01Capture

    Cron fires every four hours from 07:30 to 19:30. The Pi reads the air sensor, paints the OLED with the timestamp, and asks the Jetson for one sharp photo.

  2. 02Upload

    The photo and the air reading land in Supabase — JPEG into Storage, a row into Postgres.

  3. 03Analyze

    Claude reads the photo against a structured prompt and returns a JSON verdict — health color, soil-moisture guess, and an action per plant.

  4. 04Dispense

    If any plant is flagged for water, the Pi POSTs to the ESP32 over Wi-Fi. The ESP32 pulls a GPIO high, which saturates an NPN BJT switching a 5V pump. Water moves from a Brita pitcher through a vinyl tube into the soil. The pump's HTTP ack — duration in milliseconds — lands back in the observation row alongside the verdict.

Cron · 07:30 · 11:30 · 15:30 · 19:30 CT · ran daily, May 3 → June 11, 2026

Build Gallery

Behind the dashboard — photos from the bench during the build.