It stays hotter inside
even when the outdoor temp drops.

The numbers that tell the story
30°F
May 30 evening — outdoor cooled to 54°F while the living room held at 84°F. The building couldn't shed heat even with a 30° differential to the outside.
85°F
On a hot day with the PTACs set to 75, the living room still peaks in the mid-80s — right around the outdoor high. The AC can't pull it into a comfortable range; it just tracks the temperature outside.
≈ same
New PTACs installed May 2026 performed about the same as the old ones under comparable heat. Swapping the equipment didn't fix it.
Jun 3
A second, power-hungry floor unit finally cooled the space — but at a cost in electricity and noise. That cost is itself the finding.

The Problem

Top-floor unit in a NYC luxury high-rise with PTAC units. Floor-to-ceiling windows on two walls, flat roof above. The building installed new PTACs in May 2026. Temperatures didn't improve. The building's own HVAC technician confirmed the cause is structural — the roof and windows absorb and radiate heat far faster than the equipment can remove it.

The problem isn't broken equipment. The equipment works. The problem is the building's thermal envelope — and no amount of PTAC maintenance changes that. Humidity isn't the culprit either: indoor moisture held near a comfortable 46%, so the failure is purely thermal — it's the heat, not the air quality.

The Action

Deployed Govee temperature and humidity sensors throughout the living room. Pulled 15-minute readings from through days of continuous monitoring. Layered in Open-Meteo outdoor temperature and humidity at the same 15-minute cadence, aligned to the same timezone, so every indoor/outdoor comparison is apples-to-apples.

As the study evolved, sensor placement changed. Before May 16, two sensors covered the living room and kitchen. On May 16 all four sensors were concentrated in the living room to map the cooling gradient from the PTAC side to the far end. Those changes are marked on the timeline.

The Outcome

Used the data in conversations with the building and HVAC professionals to explore options beyond the current PTACs — including rewiring for a higher-capacity unit. The data made the case clearly: the existing setup can't keep pace with outdoor temperatures on warm days, regardless of which units are installed.

The Tradeoff

The floor unit added June 3 finally cooled the space. But it draws significant electricity and is loud enough that it runs part-time, not continuously. Managing the heat load means keeping shades down, running the unit strategically, and accepting elevated temperatures during parts of the day.

Livability in this apartment means trading off temperature, power cost, noise, and effort. That's not a complaint — it's the finding. The fact that it takes all of that to stay comfortable is precisely what the data shows about the building's envelope performance.

The Real Problem

The hardest part isn't the peak temperature — it's that I'm not home when it happens. I leave in the morning and can't lower the shades when the afternoon sun comes in, can't adjust the units, can't react. On July 8 the outdoor high never even reached 90°F, yet with the shades up and no one home, the living room climbed to 89°F and stayed above 85°F for more than two hours. My dog is home during those hours. That's not a comfort issue — it's a safety one.

This is where the problem becomes one of automation. A structural fix — better glazing, roof insulation — is the root solution. Short of that, what's missing is control I can't exercise remotely: shades that close automatically on solar gain, a thermostat that pre-cools before the peak, temperature alerts when a room crosses a safe threshold. The data doesn't just show the building runs hot. It shows the failure happens exactly when no one can step in.

Temperature over time
Sensors
Range
Y-axis
Vertical lines mark study events: sensor relocation (May 16), new PTACs installed (May 18), floor unit added (Jun 3). Outdoor weather from Open-Meteo (dashed). 72°F comfort and 78°F habitability reference lines shown.

Living room layout — sensor positions

Room ~13'8" × 19'3". Right and bottom walls are full windows. The transect (Jude → Eddie → Heath) runs diagonally from the PTAC across the room to the floor unit — tracking the cooling gradient. Chris sits off the transect on the interior wall as a baseline.

Spatial hypothesis — what the layout predicts

Jude (nearest PTAC)

Predicted coolest on the transect before June 3 (in the direct airstream). After June 3, possibly warmer relative to Heath as the floor unit's influence takes over from the opposite end. Watch for the airflow caveat: a sharp drop may reflect blown air, not room temperature.

Eddie (middle, window wall)

The window wall position may make Eddie the stubborn warm spot after June 3 — too far from the floor unit to benefit much, on maximum solar exposure. If one sensor stays hot after June 3, expect it to be Eddie.

Heath (nearest floor unit)

Predicted hottest before June 3 (farthest from the PTAC, on the window wall). Should flip to coolest after June 3 as the floor unit comes online at the opposite corner. A dramatic post-June-3 drop in Heath is the clearest signal the floor unit is working — if it shows up.

Chris (interior control, off the transect) should be the most stable line across June 3 — least solar gain, equidistant from both units. Divergence from the transect sensors is the gradient; convergence would suggest full room mixing.

Data

Sensors

Four Govee temperature/humidity sensors, nicknamed after actors. Readings at 15-minute intervals. Exported as CSV from the Govee app.

  • Chris Hemsworth — living room, interior wall (control position throughout the study)
  • Jude Law — kitchen counter Apr 1–May 15; relocated to living room near PTAC on May 16
  • Eddie Redmayne — living room (middle of transect, window wall) from May 16 onward
  • Heath Ledger — living room (far end, near floor unit) from May 16 onward

Outdoor weather

Open-Meteo Historical Forecast API — 15-minute cadence, outdoor temperature and humidity, in Fahrenheit and aligned to the America/New_York timezone to match the indoor sensor cadence directly. Coordinates are supplied as a build-time input only and never stored in any output.

Pipeline

Python

A Python script (build_hvac.py) handles all data processing:

  • Reads Govee CSV exports, handles the UTF-8-BOM encoding and 15-min timestamp format
  • Concatenates multiple export files per sensor (sensors were re-exported at different points in the study)
  • Excludes bedroom sensor data entirely — only living room periods are included
  • Deduplicates and resamples to a clean 15-min grid; interpolates small gaps (up to 1 hour) to smooth over brief sensor outages
  • Fetches Open-Meteo for any uncovered outdoor window; reuses cached CSV exports otherwise
  • Aligns all series to the same timezone-aware 15-min grid
  • Outputs payload.json with a built-in anonymization check — scans for identifying strings before writing

Frontend

Vanilla HTML + Canvas

Single self-contained HTML file. No frameworks, no CDN, no external dependencies. Chart rendered with the browser's Canvas 2D API.

  • Multi-sensor line chart with adaptive x-axis (hourly ticks when zoomed to a day, daily ticks when zoomed out)
  • Hover crosshair with tooltip showing all sensor readings at the cursor position
  • Zoom presets snap to key study windows (April heat wave, the April 13 overnight, before/after June 3 floor unit)
  • Per-sensor toggle to isolate individual lines
  • Vertical annotation lines mark study events (sensor relocation, new PTACs, floor unit added)
  • Floor plan showing room geometry and sensor positions (static Tier 1)