One plant, one tent, as the device wrote it down
This is a real grow in a real tent, and this is what our own hardware recorded of it — including the days it was wrong, and the week we broke our own instrument with a bug fix. Every figure below came off the device’s ledger, not off our memory.
A cannabis plant called Mars 1 went into soil on 9 July 2026. It is still alive, in flower, in a 3×2 tent under a single LED fixture, and a Croplock hub has been writing down what happened to it the entire time — 678,009 air-temperature, humidity and leaf-temperature readings through 11 October, plus every decision the control loop made and the reason attached to each one.
We publish this for one reason: almost everything you can read about cultivation hardware is written by the people selling it, about grows that went well. This one is going fine. It also contains a month where our camera called problems that did not exist, a stretch where our own advice is what made the plant sick, an afternoon when the grower saw a fault in the tent before the log did, and five weeks in which the device quietly threw away good readings because a fix we shipped moved something it was calibrated against. All of that is below, because a record that only contains the good days is not a record.
What this page is not. It is the device’s side. The hub knows what the air did, what the loop decided and what the camera saw. It does not know what the grower fed, when he potted up, or why he flipped when he did — so those are absent here rather than guessed at. That asymmetry is the honest shape of the thing, and it is worth knowing before you buy any device that promises to keep your records for you.
The plant










The story so far
chapter by chapter YouDiagnosisDeviceEvery number below is the device’s own, read from the hub on 2026-10-11 and frozen there. This is the same record the grower sees on the unit — not a version written for a website.
Seedling
Jul 12 → Jul 27 15DAYS-
Jul 22
Camera pod started watching
First daily photo
Veg
Jul 27 → Sep 6 41DAYS- Jul 27 Moved to Veg
- Jul 27 Moved into Veg Space
-
Jul 27
Camera flag dismissed
You looked and saw nothing to act on -
Jul 27
Called as mobile-nutrient family — Nitrogen, Potassium, or Magnesium
old lower growth, in soil, pH 6.2 -
Jul 31
Called as location-based family — pH unknown, lockout not ruled out
new upper growth, in soil -
Jul 31
Called as location-based family — pH unknown, lockout not ruled out
new upper growth, in soil -
Aug 10
Camera flag dismissed
Likely a false alarm from the camera — carry on. Re-check if it changes. -
Aug 10
Camera flag dismissed
Likely a false alarm from the camera — carry on. Re-check if it changes. -
Aug 10
Camera flag dismissed
Likely a false alarm from the camera — carry on. Re-check if it changes. -
Aug 31
Root zone recorded
soil, wick
Flower
Sep 6 → now 36DAYS- Sep 6 Moved to Flower
-
Sep 21
Observation
First pistils seen by eye: Mars 1 is female. Seen 2026-09-21 (time approximate); recorded 2026-09-24 at Curtis's word. -
Sep 23
Your line
Late September Mid-Atlantic high humidity in full effect, now 86% at 9:00 PM, was 93% this morning. -
Sep 23
Your line
Late September Mid-Atlantic high humidity in full effect, now 86% at 9:00 PM, was 93% this morning. -
Sep 23
Posted the page
Posted Day 77's page -
Sep 24
Posted the page
Posted Day 78's page -
Sep 25
Your line
Stretch time, hard to keep the camera far enough away from rapidly growing plant, and new fan leaves from blocking not just light, but the camera's view. -
Sep 26
Your line
Defoliated -
Sep 26
Pruning/Training
Defoliation -
Sep 27
Posted the page
Posted Day 81's page -
Sep 28
Posted the page
Posted Day 82's page -
Oct 1
Female - first pistils
On this plant. Seen by cam-pod-1. -
Oct 4
Posted the page
Posted Day 88's page -
Oct 9
Your line
Plant growing into the light, so I took it off the pulleys and affixed it directly to the roof poles, and cranked it from 75% to 100%. I'll see how the DLI is now.
What the tent did
The hub logs air temperature and humidity every minute, leaf-surface temperature alongside them, and from mid-August the light at the canopy as well. Weeks are seven days from 9 July. Ranges are true minima and maxima across every logged minute of the week — not comfortable averages. A tent that touched 33 °C touched 33 °C.
| Week | Dates | Air °C min–avg–max |
RH % min–avg–max |
Leaf VPD avg kPa |
What the record shows |
|---|---|---|---|---|---|
| 1 | 9–15 Jul | 25.0–29.6–36.7 | 30–55–92 | 1.26 | Not the tent — a seedling tray. No control loop running. |
| 2 | 16–22 Jul | 22.3–27.2–32.7 | 38–77–95 | 0.85 | Not the tent. Very wet air, averaging 77% — this week matters later. |
| 3 | 23–29 Jul | 20.1–25.5–29.3 | 53–76–92 | 0.62 | Into the tent on the 27th (mixed week). The loop starts: 281 decisions. |
| 4 | 30 Jul–5 Aug | 25.4–27.4–33.7 | 51–71–91 | 0.71 | 586 decisions. 277 advisories to dehumidify — a new room being chased into band. |
| 5 | 6–12 Aug | 24.8–27.2–28.8 | 60–71–77 | 0.87 | 977 decisions, 486 of them “below band”. Fungal-risk advisories begin. |
| 6 | 13–19 Aug | 25.2–27.8–31.5 | 48–69–83 | 0.89 | 664 decisions, 10 over-temperature fan runs. Fungal risk on 561 advisories. |
| 7 | 20–26 Aug | 23.3–27.0–30.6 | 46–69–89 | 0.90 | Canopy light measured from the 17th. 56 “leaf above safe cap” advisories. |
| 8 | 27 Aug–2 Sep | 23.7–26.3–28.9 | 56–68–78 | 0.86 | Calmer: 177 decisions. The light schedule becomes a ledger row of its own. |
| 9 | 3–9 Sep | 20.2–25.2–29.2 | 56–66–81 | 0.94 | Advanced to flower, 6 Sep 18:55. “Vent floor” advisories appear for the first time. |
| 10 | 10–16 Sep | 21.4–25.9–33.0 | 50–66–86 | 0.93* | Twelve-hour days from the 12th. 908 decisions — disease-pressure purging begins. |
| 11 | 17–23 Sep | 20.4–24.9–29.8 | 59–69–78 | 0.81* | First pistils seen by eye on the 21st, day 15 of flower: a female. The grower logs late-September humidity “in full effect”. The device logged the air; a person saw the plant. |
| 12 | 24–30 Sep | 20.6–23.3–27.7 | 60–68–73 | 0.81 | Stretch pushes the tops into the camera and new fan leaves fill its view; 40 of 84 frames come back inconclusive. Defoliated on the 26th, and the tops are back in frame. The mold-pressure purge fires most days. |
| 13 | 1–7 Oct | 20.8–24.0–28.2 | 55–65–73 | 0.94 | 1 Oct: the device wrote “female” into the record itself — pistil tufts on seven hourly close-ups, ten days after the grower saw them. The first sex call the device has ever made. The mold-pressure purge fired on six of the seven days. Defoliated on the 6th. |
| 14† | 8–11 Oct | 21.3–23.4–26.0 | 46–58–69 | 1.05 | Drier air at last: the room fell to 40% and the tent followed. 9 Oct: the light moved to the roof and up to 100%; the same afternoon one leaf reading jumped two degrees and the loop acted on it — fan off, humidifier on, for a minute (see below). In the dark the fan stopped for a few minutes once an hour, a rule misfiring. |
† Week 14 is four days so far, not seven. * In week 10 and the first two days of week 11 the device fell back to air-derived VPD on 24% and 36% of its decisions respectively, because it had stopped trusting the leaf sensor. It was wrong to — see below. Those two averages are mixtures, and we would rather say so than print a clean number.
Four times the device was wrong
This is the part we would leave out if we were selling you a story instead of a record.
1. The camera called problems that were not there, for a month
Between 16 July and 12 August the camera pod reported “pest” nine times and “deficiency” fifteen times. Nothing was found on the plant on any of those days. Most of those calls came off frames the camera had not focused properly — a seedling is a small thing a long way from a fixed lens — and the model answered the question it was asked instead of refusing it.
We shipped a gate on 10 August that makes the device decline to name a problem it cannot actually see. The last finding of any kind in this run is dated 12 August. To 18 September the camera had run 369 more analyses and returned no finding on every completed one, while still marking roughly a third of frames inconclusive rather than guessing at them. We will not claim the gate is the sole cause — the plant also grew into a healthier, better-lit subject over the same period — but the behaviour we wanted is the behaviour in the log.
2. Our own target range is what made the seedling sick
Through the week of 16 July the tent sat at an average of 77% humidity, peaking at 95%. The plant developed an iron deficiency in its newest growth. The uncomfortable part is that it was not out of range — it was holding the seedling humidity band our own knowledge pack specifies, and at that temperature holding that band requires roughly 80% humidity, which is very nearly an instruction to stop transpiring. Iron only reaches new growth by riding the transpiration stream.
We wrote that one up in full, including what we changed: In band, and sick anyway.
3. The grower saw the fan fault before the log did
On 13 September the loop was running the exhaust fan against high fungal pressure, and a retry rule held the fan off for thirty minutes while the tent climbed from 64% to 74% humidity against a 61% room. There was drier air available the whole time. The person standing in front of the tent noticed before the record did.
The rule was rewritten the same afternoon: a purge now needs a real humidity gradient to pull against, runs for at least ten minutes once it starts, and the waiting period only binds when there is genuinely no drier air to be had. The day after, the dashboard’s alert and its humidity badge were caught disagreeing with each other — also by a person, also fixed.
4. We moved the reference with a bug fix, and the device threw away good readings for five weeks
Leaf-surface temperature is the measurement this whole product is built around, so this one is worth being precise about — and the first version of this page got it wrong, which is why it is written out in full.
An infrared leaf sensor reads two things: the leaf in front of it, and its own internal housing. If the leaf reading collapses onto the housing reading, the sensor has stopped seeing the leaf and started seeing itself, so the device refuses the reading and falls back to air. From late August that refusal started firing, and we assumed the sensor was failing.
It is not. Measured across the whole run, the leaf reading relative to air has moved 0.02 °C. The leaf channel never drifted at all — under the lamp this week it reads 1.5 °C below air and it still jumps the instant the light comes on and settles back as the plant transpires, exactly as it did in August. What moved was the housing, by 3.9 °C.
And it moved because of us. On 17 August we shipped a fix that made the sensor pods actually go to sleep between readings — they never had been. A sleeping board runs cooler, and the housing sits on that board. A week later its temperature stepped down and stayed down. The threshold that decides whether a housing is healthy had been measured on the bench two weeks earlier, on the hot board, before the fix. So the number describing “normal” was a snapshot of a bug.
The result: for five weeks the device discarded good leaf readings and steered on air-derived VPD instead, on a quarter to a half of its decisions. It wrote the reason on every one of those rows, and nobody read them. Two things here are ours and both are open: a calibration that quietly encoded a temporary state of our own software, and a failure so graceful it was silent. A device that degrades politely will run for weeks on a reference that has moved out from under it. The sensor was never the problem.
What it missed entirely
On 2 September the grower saw a pale yellow band on the tips and margins of the newest growth. The device recorded no finding that day, and it has no entry for the symptom at all. Our reading afterwards, from the record around it — the light dimmed since late August, plain water, leaf VPD sitting low through the preceding week — is that it was a low-transpiration flush rather than a feeding problem. That is an interpretation, not a measurement, and the device did not make it.
We are leaving it here because a page about what a device recorded should say where the record is blank.
Where the run is now
As of 11 October, day 95 of the run and day 36 of flower, the tent ran 21.7–23.4–25.1 °C at 54.2–59.4–69.1% humidity over the last twenty-four hours, across 1,785 readings. Over the week from 5 October it ran 20.8–23.3–26.0 °C and 46.0–59.5–71.6%, with the leaf averaging 22.4 °C. The room it vents into touched 40% this week, the driest since the run began, and the mold-pressure model fired on two days against six the week before.
On 9 October one leaf reading moved two plugs, and the box was wrong. At 16:12 the leaf sensor reported 26.05 °C where the reading seventy seconds earlier was 23.87. The loop took it at face value: leaf VPD 1.54 kPa, above the flower band, so at 16:13:06 it switched the exhaust fan off and the humidifier on. Four seconds later its own advisory said the opposite — air VPD was inside the band, and “raising RH would move an air reading that is already correct”. The tent went from 56 to 67% humidity in one reading. The next leaf reading was 24.16; sixty-eight seconds after the fan stopped, the loop wrote “below band” and put it back on, and the humidifier stopped a minute later. Why the sensor read 26 is not in the record — its own housing temperature did not move. What the loop did with it is. Filed as a bug the next morning; a fix that requires two consecutive readings before a plug changes state is running on this tent as a development build, and is not released. The same week the fan stopped for two or three minutes once an hour in the dark, twenty-two times, each time declining a purge because the vent was “spent” — a rule misfiring, not the plant, and its fix is in the same unreleased build; on the first morning with it, the hourly stop did not happen.
The grower moved the light on the 9th — “Plant growing into the light, so I took it off the pulleys and affixed it directly to the roof poles, and cranked it from 75% to 100%”, typed into the record at 13:04. The tent’s light meter, read before and after, moved by less than two percent: raising the fixture and turning it up came out close to even at the sensor. The tops are now so near the lens that the camera focuses at about 25 cm on every dark frame, against 67 cm the night before; whether the camera or the plant moved is not established. The pistil check still sees tufts on nearly every lit close-up (11 of 13 on the 10th), but the two frames taken at that close focus scored almost no patches, and the health read called 42 of the week’s 81 frames inconclusive.
The record also shows thirteen version rows this week — the hub ran eight different builds between the 6th and the 10th as fixes were tested on this tent. The plant did not notice; the rows are there so that anyone reading a decision from that week can see which software made it.
The paragraphs below are the week to 4 October, left as written.
As of 4 October, day 88 of the run and day 29 of flower, the tent ran 22.4–23.5–24.5 °C at 62.3–66.5–68.9% humidity over the last twenty-four hours, across 2,774 readings. Over the week from 28 September it ran 21.5–24.7–28.2 °C and 62.3–67.7–71.8%, with the leaf averaging 24.1 °C.
On 1 October the device called the plant’s sex on its own, and wrote it down. A new check on the camera’s hourly close-up of the tops went live on the hub at 12:27 that day. It looks for pistil tufts — clusters of cream filaments at the bud sites, not a first lone pair — and it found them on the next close-up at 13:05 and on every one after it to lights-off, at a confidence of 1.0 each time. The record took the call at 19:05, after the seventh sighting: female, from pistils, camera pod. For scale, the grower saw pistils by eye on 21 September and wrote it down on the 24th, so the device’s row is ten days behind a person looking closely, and because it waits for tufts it always will be. It has repeated the sighting on every lit close-up since: 12 of 12 on 2 October, 11 of 12 on the 3rd. What it has not yet done is look at a plant with no pistils, so we do not know how it behaves on a male, which is the half of the question that matters.
The camera’s health read was being handed the wrong picture, and that was ours. Of the 83 frames analysed this week, 46 came back “no finding” and 37 “inconclusive”. On 2 October we found the hub had been white-balancing every frame before the camera’s health check scored it — a correction the check was never trained on. With it removed, the check certified 10 of 12 frames the next day against 1 of 10 the day before, on the same plant and the same framing. One day, one plant: it says the mismatch was real, not that the check is right.
The mold-pressure model fired on six of the seven days, at risk indices of 71 to 97 and tent humidity of 66 to 70%. The room it vents into averaged 65.5% over the week, so the fan still has a few points of headroom and no more. On the 29th the hub re-adopted the humidifier plug after losing track of it — a row in the record, nothing the plant would have noticed.
The paragraphs below are the week to 27 September, left as written.
This week the plant outgrew the camera. Flower stretch pushed the tops up toward the pod, and new fan leaves grew across its view. Of the 75 frames the camera analysed this week, 53 came back “inconclusive” and 22 “no finding”: it was mostly looking at leaves. The grower noted it in the log on 25 September and defoliated on the 26th. The frames after that are sharp again at the top of the plant, and white pistils are plain to the eye at several bud sites. To be clear about who saw them: a person looked at those frames; the device did not flag anything.
The plant showed sex, and the device did not call it — a person did. On 21 September, day 15 of flower, two clear pairs of cream stigmas were visible at a node on the main stem in the camera’s own native-resolution frame. That is textbook timing and it is the single most useful thing a camera could tell a grower from regular seed, where roughly half of plants are male and a male ruins a crop within days. Our stage classifier looked at that same frame and returned “vegetative” at 0.9999999997, four captures running. It was not miscalibrated; it was answering a different question, having been trained on photographs of finished flower. The device is blind to the event it should be best at. We are building the detector that would catch it and it does not work yet. (Update, 1 October: it works now, ten days late, and the record above says how.)
The number a once-a-season measurement cannot hold
Leaf vapour-pressure deficit is calculated from the temperature of the leaf, not the air, and the two are not the same. The usual way to account for that is to measure the gap once with a handheld thermometer, round it, and enter it as a fixed offset. Our hub measures it every reading instead, so we can say what that gap actually did. Over the ten days to 21 September, across 240 paired hourly readings:
| Leaf minus air | Value |
|---|---|
| Coldest hour | −2.24 °C |
| Mean across ten days | −1.06 °C |
| Warmest hour | +1.04 °C |
| Total spread | 3.29 °C |
| Daily mean, 18 September | −1.67 °C |
| Daily mean, 21 September | −0.19 °C |
The gap moves by more than three degrees, and its sign changes — the leaf spends part of the cycle warmer than the air around it. A single measurement taken on the 18th and rounded would have been entered as −2. The same measurement taken today would be entered as 0. Neither is wrong on the day it was taken; both are wrong for most of the rest of the run.
We do not know why it moves, and we checked the obvious answer first. The tempting explanation is the photoperiod — a leaf under a lamp is cooled by its own transpiration, a leaf in the dark is not, so you would expect the gap to be one thing by day and another by night. Split across the 240 hours, it is not: the lights-on mean is −1.05 °C and the lights-off mean is −1.07 °C. Two hundredths of a degree apart. Whatever moves this number day to day, it is not the lights, and we are not going to publish a mechanism we have not measured.
What this number is not. It is our own sensor measuring both sides, and we run it at an emissivity of 1.0 where a leaf is nearer 0.98 — a known, deliberate, uncorrected bias documented in our firmware, because substituting a textbook figure would trade a measured bias for an unmeasured one. That bias shifts the whole curve up or down. It cannot manufacture a three-degree swing or flip a sign. You can run these numbers for your own tent. So take the spread as the finding and treat the absolute figures as carrying that caveat, which is also why the calibration against a contact thermometer is still outstanding work rather than a closed question.
The fungal-pressure model stayed high for most of the week and has only just eased. It fired around two dozen separate times between the 14th and the 20th, touching its maximum index of 100 more than once. The last one was at 18:28 on the 19th; nothing since. In flower, at those humidities, that is the model doing its job rather than malfunctioning — how humid, and for how long, is the question it is built around.
And the fan still cannot answer it. “Vent floor” remains the most common advisory the device emits — 89 of them this week. The arithmetic has not changed: this morning the tent is at 71% and the room it vents into is at 68%, so there is about three points of headroom and no more. The exhaust fan can only ever pull in the air of the room around it, and that room is damp.
The new thing this week is the device declining to act. On 13 September we changed the purge rule so a purge has to earn its start on a real humidity gradient, run a minimum dwell, and then leave a spent vent alone. Since then the log reads 120 purge runs against 151 refusals — it is now saying no more often than it says yes. (Those are state changes. The raw ledger holds 136 and 153 rows, because the loop re-states a decision as well as changing it, and counting rows would over-report how often the fan actually started.) That is the intended behaviour and it is still worth watching, because a rule that declines too readily looks exactly like a rule that is working.
The camera found nothing all week, and we are counting that as a miss rather than a clean bill of health. Thirty-two frames came back “no finding” and forty-seven were inconclusive — out of focus as the canopy fills the frame. A week of flower under sustained fungal pressure is exactly when a camera ought to have an opinion, and ours did not offer one. Nothing was entered by hand this week either: no watering, no maintenance, no notes.
How to check any of this
Every figure on this page came from one SQLite file on the hub in that tent: per-minute sensor readings, the control loop’s own decision rows with the reason attached to each one, the camera’s verdicts, the lifecycle events and the grower’s entries. It is the same database the grower can open, export and keep. There is no copy of it on our servers, because there are no servers — which is also why this page is a written account rather than a live feed.
Vapour pressure deficit is the one derived number here: the ledger stores temperature and humidity, and we computed VPD from them with the same formula the device uses. We then checked our figures against the VPD the device had independently stored on its own decision rows for the same minute. The median disagreement is between 0.000 and 0.016 kPa per week. That check is why the column is allowed to be on the page at all.
The run is Mars Hotel Summer ’26, from seed by Lovin In Her Eyes, started 9 July 2026 in a 3×2 tent under a single 1000-series LED. Regular seed, soil, wick-watered from a reservoir under a fabric pot, propagated before the device was watching. The grower keeps a diary of his own side of it on a growers’ forum; this page is the machine’s side.
Corrections. The first version of this page, published 18 September, said the leaf sensor had been “losing its grip”. A second read of the record that afternoon showed the sensor was fine and our own calibration had gone stale behind a firmware fix; section four is rewritten and says so. An earlier draft also said the twelve-hour photoperiod began on 7 September — the phase advance did, the photoperiod did not change until the 12th.
Recorded through 11 October 2026, read from the hub the same morning. The run is still going, so these numbers move.