✨ Too Much Information

It started with why is my garage so hot? and did not stay there. One house, one year, 8 sources, 14 sections, and a garage that is still hot.

Every number below is recomputed from the raw exports on each build; none of it is typed in by hand. The code that does that is at github.com/banasiak/tmi. How it got this far is a separate, much longer, story in the Cesspool of Knowledge.

Overview

Every data source this house produces, joined on local calendar date and priced with tariffs extracted from the utility bills themselves. Everything is joined over 7 Aug 2025 – 5 Aug 2026, the span the weather station covers; the bills, the weather proxy and the hourly water meter all reach further back, and four late arrivals exist to check what the first five had already produced.

$2,921

to run this house for a year

Electricity, gas, water, wastewater and refuse, priced with the tariffs transcribed from your bills — every rate below reproduces its source bill to within two cents. See Data & Provenance.

Electricity

$1,905

18,594 kWh over 359 metered days · 52 kWh/day · 65% of the total

Natural gas

$258

18,216 cf · $14.50/mo of that is the fixed access fee

Water

$240

52,444 gal · first 3,000 gal each month are free

Wastewater + refuse

$518

effectively fixed — neither responds to what you do

What this is built from

Granularity matters more than volume here: the same house looks like different things at 5 minutes, a day and a billing period, and several of these exist only to check another one.

Show all 8 sources, their granularity and what each settles
SourceGranularitySpanWhat it settles
AmbientWeather WS-20005 minutes 364 days 44 channels — five sensed zones with temperature, humidity and dew point, plus sun, wind, rain, lightning and the pool probe
El Paso Electric, interval15 minutes 364 days Separates what never switches off from what runs to a timer and what answers the weather
El Paso Electric, billingper bill 35 periods, Jul 2023–Jul 2026 The only source carrying cost, and the only one reaching further back than the year of station data that can be exported
City of Las Cruces UtilityHawk daily,
and hourly
366 days daily;
400 days hourly, continuous
Water and gas. The hourly series is what finds a leak — it puts a clock on irrigation, measures the pool refill directly, shows the float valve replacing evaporation overnight, and caught a split line the daily series structurally could not. The same meter at two granularities, so the two never corroborate each other — where they disagree, the finer one is simply closer
Utility bills, PDFper bill 28 Every rate on this page, written into the tariff engine as a literal value rather than parsed at run time, and re-checked against its source bill on each build — 39 checks, all reproducing their source to within two cents
Appliance nameplatesper machine 7 Turns assumptions into readings: furnace efficiency, pool heater rating, filter flow ceiling, and what the air conditioner is allowed to draw
NOAA GHCN-Dailydaily 2 stations Stands in for the weather the station's export cannot reach — it has been recording far longer than the rolling year that can be downloaded — calibrated against it where the two overlap
NREL PVWatts
the only modeled input here, and the only one not measured at this house
hourly,
typical year
4 roof planes Every plane-of-array figure in the solar section. It is here because the station's own pyranometer sits below the roof ridge and loses its eastern sky — which a due-south plane would average out but an east-west roof cannot

Two of these arrived to check figures already derived — the hourly water and the nameplates — and both overturned what they were meant to confirm, which is why the numbers here are the corrected ones. One source is absent by choice: a charge log from the motorcycle's OpenEVSE, a rolling eight-week window that no amount of care turns into a year.

What things cost

Every figure here is recomputed from the transcribed tariffs on each build, and priced at the rate that actually applied on the day.

Where the money goes

Every line recomputed from the transcribed tariffs, priced at the rate that applied on the day. $2,921 in total.

ElectricityNatural gasWater, wastewater and refuse
$200$400$600Always-on floor$676Cooling$532Wastewater + refuse$518Pool pump$400Other electricity$249Gas access fee$174Other water$169Space heating, electric$48Irrigation$28Space heating, gas$27Water heating + cooking$22Other gas$20Pool evaporation$19Pool refill (one-off)$17Pool + spa heating$14Zone 1 leak$6

Color is the meter, not the category. The top of this chart is two electric bars, and the third is the one stream that answers to nothing you do. The three Other bars are each meter's own remainder — what it measured that the rest of this page could not assign to a named load. They are split by meter rather than pooled, because a single bar spanning three of them would be the one thing this chart's colors cannot say.

Table view
WhatPer yearShareDetail
Always-on floor$67623.1%0.76 kW that never switches off
Cooling$53218.2%4,411 kWh — main HVAC plus about 15% from the patio mini-split
Wastewater + refuse$51817.7%wastewater is tiered on an allowance re-set yearly; refuse is flat
Pool pump$40013.7%3,998 kWh on a 6.75 h timer
Other electricity$2498.5%every electric load too small or too irregular to separate from the meter — vehicle charging among them, plus the customer charge no load can shed
Gas access fee$1746.0%$14.50/month before a single cubic foot
Other water$1695.8%indoor use — showers, laundry, dishes, the tap. Metered, never separately, so it is a remainder rather than a measurement
Space heating, electric$481.6%581 kWh — 97% of it the mini-split, only 19 kWh the furnace blower
Irrigation$280.9%12,600 gal the controller meant to deliver
Space heating, gas$270.9%6,244 cf — the furnace alone
Water heating + cooking$220.8%6,845 cf standing baseline
Other gas$200.7%what the heating signature could not assign to space heating, the water heater or the pool
Pool evaporation$190.7%8,053 gal the float valve replaced, unasked
Pool refill (one-off)$170.6%5,228 gal over two days in March — not an annual cost
Pool + spa heating$140.5%4,704 cf on days with no heating demand
Zone 1 leak$60.2%1,938 gal since 2 June and still rising

Where the electricity goes

Interval data separates three things a monthly bill blends together: what never turns off, what runs to a clock, and what responds to the weather.

Always-on floor

0.76kW

the quietest sustained draw on a median day — 6,548 kWh/yr, 35% of total

Floor, cost

$676/yr

at marginal rates — what the house costs before anyone does anything

Seasonal drift in floor

0.24kW

between the lowest and highest month — largely weather-independent

Weather-independent load

38kWh/day

regression intercept — 73% of consumption survives with zero degree-days

Every interval of the year

Each column is one day; each row a 15-minute slot from midnight to midnight. Power in kW.

00:0006:0012:0018:0000:00AugSepOctNovDecJanFebMarAprMayJunJulAugLessMore · breaks at 0.8, 0.9, 1, 2, 3, 5 kW

The horizontal band across the afternoon and evening is the timer load — it holds the same clock position through every season, which is what distinguishes it from weather-driven use. The summer bulge above and below it is air conditioning. The pale strip across the small hours is the always-on floor.

Table view
DatekWhPeak kWFloor kW
2025-08-0779.87.280.92
2025-08-2163.57.080.68
2025-09-0454.99.40.68
2025-09-1830.94.20.6
2025-10-0250.46.60.6
2025-10-1650.34.760.88
2025-10-3041.34.520.72
2025-11-1338.98.720.6
2025-11-2735.03.240.76
2025-12-1141.63.720.68
2025-12-2543.05.080.64
2026-01-0837.93.560.84
2026-01-2236.73.680.88
2026-02-0540.93.320.84
2026-02-1938.83.640.64
2026-03-0540.43.560.76
2026-03-1941.85.680.72
2026-04-0248.94.720.68
2026-04-1741.66.240.68
2026-05-0140.75.240.72
2026-05-1563.87.040.64
2026-05-2943.96.120.84
2026-06-1259.370.72
2026-06-2667.87.480.72
2026-07-1083.19.80.8
2026-07-2487.67.880.84

The shape of a day, by how hot it was

Median power at each 15-minute slot, grouped by the day's mean outdoor temperature.

Cold day (57d)Mild day (98d)Hot day (42d)
timer block024600:0003:0006:0009:0012:0015:0018:0021:0000:00Cold day (57d)Mild day (98d)Hot day (42d)kW

The timer block sits at the same clock position in all three curves, cold days included — it does not care about the weather. Differencing the hot and mild shapes isolates the cooling load without a submeter: about 35 kWh/day, peaking at 3.16 kW around 14:00.

Table view
TimeCold day (57d)Mild day (98d)Hot day (42d)
00:001.30.91.32
01:001.320.821
02:001.621.070.99
03:001.630.770.95
04:001.660.780.98
05:001.780.790.96
06:002.090.840.98
07:002.120.993.62
08:001.941.082.42
09:001.511.152.38
10:001.221.353
11:001.31.543.15
12:001.311.873.93
13:001.231.994.31
14:001.292.074.92
15:001.282.214.81
16:003.082.694.37
17:003.243.745.91
18:003.253.876.09
19:003.13.565.97
20:003.213.555.91
21:002.493.045.06
22:001.311.882.9
23:001.41.152.16

Every interval of the year, sorted by size

All 34,460 fifteen-minute readings ranked from largest to smallest. The x-axis is rank, not time.

0510.00%0d20%72d40%144d60%215d80%287d100%359d3.0 kW0.76 kWshare of the year at or abovekW

The same three loads the curves above separate, seen here as one shape. The cliff on the left is air conditioning — 2,201 hours a year above 3 kW, 25% of the time. The long flat tail on the right is the floor, and it never reaches zero: the quietest quarter-hour of the entire year still drew 0.48 kW.

Table view
Share of the yearDaysAt or above (kW)
Peak13.8
0.1%0.410.8
0.25%0.99.56
0.5%1.88.32
1%3.67.36
5%185.52
10%364.4
25%903.04
50%1791.36
75%2690.96
90%3230.76
99%3550.64
100% (floor)3590.48

What solar would do here

A grid-tied, net-metered array split across the east and west slopes, priced by rebuilding the actual bill month by month rather than multiplying production by an average rate.

The test that catches the sensor, using nothing outside the data

kt=GHIGsc · E0 · sin α
ktclearness index — the share of the extraterrestrial beam that reaches the groundGHIwhat the station reports, W/m²Gscsolar constant, 1,367 W/m²E0eccentricity correction for the day of yearαsolar altitude — restricted here to above 50°, so a low sun cannot be blamed for a low reading

A clear desert moment should reach 0.78. The median is 0.63, which is why everything below is scaled by ×1.35.

From plane-of-array insolation to kilowatt-hours

E=Hpoa · Pdc · PR
Eannual generation, kWh. The tables below land about 1.6% under what this line gives, because net metering settles per billing month: they price the 11 complete months and scale to twelve, which leaves out a high-sun AugustHpoainsolation on the roof planes, 2,065 kWh/m² — the mean of 2,082 east and 2,047 west, across the 364 days coveredPdcarray size, kW — rated at 1,000 W/m², which is why the areas cancel and no panel efficiency appearsPRperformance ratio, 0.78 — inverter, wiring, soiling, and the temperature derate that matters at 110°F

An 8 kW array against the months it has to cover

Generation split evenly across the east and west slopes, against metered consumption. Complete months only.

ConsumptionGeneration
01,0002,00009/2510/2511/2512/2501/2602/2603/2604/2605/2606/2607/26kWh

Consumption is the context and generation the proposal, so only one of them is drawn as a series. Note how much flatter generation is than consumption: the array varies about 2.4× across the year against the house's 2.1×, because summer heat derates panels and a tilted plane loses to a high sun. The binding month is spring, not summer — that is where generation first catches consumption and surplus starts.

Table view
MonthConsumptionGeneration
09/251,6081,079
10/251,422960
11/251,179719
12/251,351626
01/261,490684
02/261,142807
03/261,3441,133
04/261,3241,325
05/261,5371,503
06/262,1321,476
07/262,4041,317

What each array size returns

Priced by rebuilding both bills from the real tariff, month by month.

Annual bill saving
05001,0001,5004 kW6 kW7 kW8 kW10 kW$/yr

Payback improves with size — 13.9 years at 4 kW against 11.0 at 10 kW — because installed cost per watt falls while every kWh keeps the same value. Cost, panel count, roof area and spill are in the table below.

Table view
Array sizeAnnual bill saving
4 kW623
6 kW934
7 kW1,090
8 kW1,243
10 kW1,495

Every size, in full

Net cost is after the 30% federal credit and New Mexico's 10%. Spill is production that overran the month it was made in.

ArrayPanelsRoof ft²kWh/yr% of useGrossNetSaved/yrSpillPayback25-yr net
4 kW102156,34234%$14,400$8,640$623013.9 yr$6,034
6 kW153229,51352%$18,900$11,340$934012.1 yr$10,671
7 kW1736611,09960%$21,000$12,600$1,090011.6 yr$13,080
8 kW2043012,68569%$23,200$13,920$1,243111.2 yr$15,351
10 kW2451615,85686%$27,500$16,500$1,49581311.0 yr$18,719

The sprinkler saga

Water is the one stream with no weather signature worth fitting: it answers to a clock rather than a thermometer. The meter recovers that clock on its own — the schedule it keeps, the two seasonal settings it steps between, and the volume each cycle delivers.

Irrigation versus everything else

Complete months only, and the two refill days of 29–30 March held out. Each month's metered water, split into the controller's own events and everything left over.

IrrigationLeakEverything else
02,0004,0006,00009/2510/2511/2512/2501/2602/2603/2604/2605/2606/2607/26gallons per month

Meter readings, not a model: the three series sum to the 42,829 gallons actually billed across these 11 months.

The irrigation series steps and the gray one drifts, and those are different things. A cycle has two sizes and changes between them on the day somebody moves the dial — the winter block from November to February is unmistakable. The monthly totals are less tidy than the cycles because they also carry how many watering nights fell in the month, and because a summer cycle tapers through the autumn as the ground cools. The gray series has no settings at all: it runs 108 gal/day across the summer months against 66 in the depths of winter, and it slides between the two because that is what evaporation does. Most of that 41 gal/day gap is the pool topping itself up through the float valve — the pool section predicts it from the weather and gets the seasonal shape right to an R² of 0.86. The rest is hose work and washing vehicles.

The third series is the split line in Zone 1, which is what a controller that cannot ramp looks like when something downstream of it can. It appears in June, it grows, and it is the subject of its own section. Folded into the irrigation series — where a daily meter has no way to separate it — it reads as an irrigation program doing something no irrigation program does.

March is short two days here: 29–30 March put 5,229 gallons through the meter refilling the pool, which would have dwarfed every other bar on the chart.

Table view
MonthIrrigationLeakEverything else
09/251,03402,769
10/251,11802,458
11/2541402,465
12/2561202,029
01/2670502,083
02/2657301,862
03/2690202,268
04/261,50503,427
05/261,22403,746
06/261,4766843,380
07/261,3621,0663,667

Water, by the hour — and the one thing that is broken

The daily meter could say which days water moved. 400 days at hourly resolution say at what hour, how fast, and — on the night one cycle stopped matching every cycle before it — exactly when something broke. That fault closes the section: it is the only live problem on this page, and the only one the daily meter is structurally blind to.

The shape of a day, season by season

Mean gallons in each hour of the day, across every complete day of the year bar the two the pool refill occupies. Every panel on the same scale, each against the annual mean for reference.

SeasonWhole year
Winter — 90 days87 gal on an average day020.040.060.000:0004:0008:0012:0016:0020:00Spring — 89 days146 gal on an average day00:0004:0008:0012:0016:0020:00Summer — 128 days201 gal on an average day020.040.060.000:0004:0008:0012:0016:0020:00Autumn — 91 days113 gal on an average day00:0004:0008:0012:0016:0020:00gal/hour

One spike, in every season, at 20:00 — the controller, which never moves. What changes is its height. Each line averages every day of the season including the four a week the controller sleeps, so the peak here is roughly three-sevenths of a cycle. The rest of the day is flat and low: this household's water is a schedule with a little noise on top, which is why a change in that one hour is visible at all.

Table view
Whole yearWinter — 90 daysSpring — 89 daysSummer — 128 daysAutumn — 91 days
00:001.971.412.123.011.33
01:002.63.881.842.632.05
02:004.324.034.045.523.66
03:003.361.194.015.432.8
04:001.761.211.792.841.22
05:001.591.11.572.461.23
06:002.821.822.823.213.43
07:003.652.482.543.596
08:003.433.033.134.063.49
09:003.773.324.024.733.01
10:004.43.594.136.73.18
11:005.062.926.037.313.96
12:006.633.516.1113.33.59
13:004.732.584.758.732.88
14:004.633.324.876.93.44
15:005.583.866.676.475.33
16:008.033.179.6410.48.92
17:005.823.026.019.175.09
18:005.953.745.2510.14.66
19:007.635.48.7510.75.63
20:0038.822.541.960.630.0
21:005.12.278.086.383.67
22:002.9323.453.882.4
23:002.341.982.383.31.71

What the weather asks for, and what the meter delivered

Monthly means. The prediction uses no water data; the measurement uses no weather data.

PredictedMetered
020.040.0AugSepOctNovDecJanFebMarAprMayJunJulPredictedMeteredgal/day

Two instrument chains with nothing in common — a pool thermometer, a dew point and an anemometer on one side, a water meter on the other — tracing the same four-fold seasonal swing. The gap between them is close to constant, which is the giveaway: it is the household's own overnight draw, 14 gal/day, sitting under the evaporation the whole year.

Table view
PeriodPredictedMetered
Aug34.151.0
Sep20.830.0
Oct24.636.0
Nov17.224.0
Dec12.724.0
Jan12.330.0
Feb15.924.0
Mar27.236.0
Apr31.942.0
May37.142.0
Jun43.548.0
Jul42.548.0

When the controller actually fired

One dot per cycle, placed at the hour the meter recorded it — against the 20:00 it was programmed to use.

00:0006:0012:0018:0024:00set to 20:00power cutpower cutdaylight savingJulAugSepOctNovDecJanFebMarAprMayJunJulAugHour the cycle actually ran

The record holds no cycle at a wrong hour that is also a wrong volume, which is what separates a lost clock from a changed program.

Table view
FromToFires atCyclesWhat it was
2025-07-012025-08-0920:0017as programmed
2025-08-132025-08-3112:009power cut
2025-09-042025-10-2120:0020as programmed
2025-10-262025-10-3107:003power cut
2025-11-062026-03-0720:0052as programmed
2026-03-102026-03-2121:006daylight saving
2026-03-242026-08-0420:0055as programmed

Every irrigation cycle in the record

Gallons through the meter in the 20:00 hour, on each night the controller ran.

BeforeAfter
0100200clean cycle, 114 gal2 JunJulAugSepOctNovDecJanFebMarAprMayJunJulAuggallons per cycle

The winter block in the middle is the controller doing what it was told — 14 minutes of valve-open time against 30 in summer. The rise on the right is not that. Note where the record starts: the same season a year earlier sat at 110 gallons.

Table view
DateDaygallons per cycle
2025-07-01Tue109
2025-07-03Thu109
2025-07-05Sat113
2025-07-08Tue112
2025-07-12Sat115
2025-07-15Tue112
2025-07-17Thu115
2025-07-19Sat110
2025-07-22Tue109
2025-07-24Thu120
2025-07-26Sat111
2025-07-29Tue109
2025-07-31Thu110
2025-08-02Sat107
2025-08-05Tue109
2025-08-07Thu110
2025-08-09Sat109
2025-08-13Wed112
2025-08-15Fri113
2025-08-17Sun110
2025-08-20Wed113
2025-08-22Fri111
2025-08-24Sun121
2025-08-27Wed105
2025-08-29Fri106
2025-08-31Sun122
2025-09-04Thu55
2025-09-06Sat101
2025-09-09Tue99
2025-09-11Thu103
2025-09-13Sat98
2025-09-16Tue96
2025-09-18Thu96
2025-09-20Sat96
2025-09-23Tue97
2025-09-25Thu97
2025-09-30Tue96
2025-10-02Thu95
2025-10-04Sat95
2025-10-07Tue92
2025-10-09Thu93
2025-10-11Sat90
2025-10-14Tue90
2025-10-16Thu92
2025-10-18Sat92
2025-10-21Tue90
2025-10-26Sun90
2025-10-28Tue90
2025-10-31Fri109
2025-11-06Thu41
2025-11-08Sat43
2025-11-11Tue44
2025-11-13Thu43
2025-11-15Sat41
2025-11-18Tue41
2025-11-20Thu39
2025-11-22Sat40
2025-11-27Thu41
2025-11-29Sat41
2025-12-02Tue40
2025-12-04Thu44
2025-12-06Sat46
2025-12-09Tue47
2025-12-11Thu45
2025-12-13Sat47
2025-12-16Tue49
2025-12-18Thu48
2025-12-20Sat49
2025-12-23Tue49
2025-12-25Thu47
2025-12-27Sat50
2025-12-30Tue51
2026-01-01Thu54
2026-01-03Sat56
2026-01-06Tue48
2026-01-08Thu48
2026-01-10Sat70
2026-01-13Tue47
2026-01-15Thu47
2026-01-17Sat52
2026-01-20Tue48
2026-01-22Thu49
2026-01-24Sat47
2026-01-27Tue47
2026-01-29Thu46
2026-01-31Sat46
2026-02-03Tue49
2026-02-05Thu46
2026-02-07Sat48
2026-02-10Tue45
2026-02-12Thu47
2026-02-14Sat47
2026-02-17Tue48
2026-02-19Thu48
2026-02-21Sat48
2026-02-24Tue48
2026-02-26Thu49
2026-02-28Sat50
2026-03-03Tue49
2026-03-05Thu50
2026-03-07Sat64
2026-03-10Tue49
2026-03-12Thu46
2026-03-14Sat47
2026-03-17Tue47
2026-03-19Thu47
2026-03-21Sat46
2026-03-24Tue106
2026-03-26Thu108
2026-03-28Sat124
2026-03-31Tue119
2026-04-02Thu111
2026-04-04Sat154
2026-04-07Tue110
2026-04-09Thu110
2026-04-11Sat116
2026-04-14Tue160
2026-04-16Thu106
2026-04-18Sat107
2026-04-21Tue106
2026-04-23Thu107
2026-04-25Sat106
2026-04-28Tue106
2026-04-30Thu106
2026-05-02Sat106
2026-05-05Tue107
2026-05-07Thu107
2026-05-09Sat141
2026-05-12Tue108
2026-05-14Thu110
2026-05-16Sat109
2026-05-19Tue109
2026-05-21Thu108
2026-05-26Tue109
2026-05-28Thu110
2026-06-02Tue147
2026-06-04Thu149
2026-06-06Sat157
2026-06-09Tue157
2026-06-11Thu154
2026-06-13Sat165
2026-06-16Tue168
2026-06-18Thu167
2026-06-20Sat168
2026-06-23Tue173
2026-06-25Thu195
2026-06-27Sat180
2026-06-30Tue180
2026-07-02Thu186
2026-07-07Tue192
2026-07-09Thu191
2026-07-11Sat214
2026-07-14Tue199
2026-07-16Thu200
2026-07-18Sat199
2026-07-21Tue199
2026-07-23Thu233
2026-07-25Sat208
2026-07-28Tue206
2026-07-30Thu201
2026-08-01Sat206
2026-08-04Tue209

The climb, as a straight line through the cycles

V(t)=V0 + k · t
V(t)gallons in one cycle, t weeks after the breakV0152 gal — the fitted volume at the break itself, already 39 above the clean 114k+7.4 gal per week, fitted by least squares on all 27 cycles since the break

R² 0.84. The intercept is the useful part: the fault did not start at nothing and grow — it arrived as a step of 39 gallons and then began climbing. The line reads 219 gal at the latest cycle against 206 measured, so it slightly over-runs the recent weeks — it describes the climb rather than forecasting it.

The pool explains (almost) everything else

How big it is, then what it explains. Three anomalies across three utilities and one piece of equipment behind all of them — the water-temperature probe turns out to be the most informative sensor in the house.

Why one degree costs what it costs

Vcf=V · ρ · ΔTη · h
Vcfgas burned, cubic feet — 58.2 cf per °F hereVwater heated, 5,000 gal of pool and spa togetherρweight of water, 8.34 lb/gal. One BTU raises one pound one °F, so this is also the BTU per gallon per degree — the specific heat is 1 by definition and never appearsΔTtemperature rise, °F — one, hereηappliance efficiency, 80% — assumed, and the only term on this line that is not measured or a constant of naturehheat content of the gas, 896 BTU/cf, taken from the bill's own Mcf-to-Dth conversion rather than a table

Multiply by the gas rate to get money: $0.25 in January against $0.15 in July. The physics is identical; only the tariff moved.

The moment the pump starts, seen three ways

Every 5-minute sample of the year, averaged by time of day.

Water temperature, rate of changeHousehold electrical loadSolar radiation
00.2pump running0.23 °F / 5 min Water temperature, rate of change (°F / 5 min)23.52 kW Household electrical load (kW)0250500639 W/m² Solar radiation (W/m²)00:0003:0006:0009:0012:0015:0018:0021:0000:00

Read the three panels down the same vertical line. The water spikes at the exact quarter-hour the load steps up, while the sun is already on its way down. Correlation this sharp, across sensors that share no wiring, is about as close to proof as a house gets.

Table view
TimeWater temperature, rate of change (°F / 5 min)Household electrical load (kW)Solar radiation (W/m²)
00:00-0.010.920
00:15-0.010.880
00:30-0.010.880
00:45-0.010.880
01:00-0.010.880
01:15-0.010.880
01:30-0.010.880
01:45-0.020.880
02:00-0.020.880
02:15-0.020.840
02:30-0.010.880
02:45-0.020.880
03:00-0.020.840
03:15-0.020.840
03:30-0.010.880
03:45-0.020.880
04:00-0.020.840
04:15-0.020.880
04:30-0.010.880
04:45-0.010.880
05:00-0.010.880
05:15-0.010.840
05:30-0.010.840
05:45-0.010.840.1
06:00-0.020.880.71
06:15-0.010.922.53
06:30-0.060.926.13
06:45-0.01111.6
07:00-0.011.218.8
07:1501.0426.9
07:300.011.0437.2
07:4501.1654.4
08:0001.1685.5
08:1501.16144
08:30-0.041.16188
08:45-0.021.16235
09:00-01.16282
09:15-0.011.16330
09:300.011.16374
09:450.011.2416
10:00-0.011.28449
10:15-01.24485
10:30-0.021.28515
10:450.011.32548
11:000.021.32569
11:150.031.36589
11:300.031.36603
11:450.081.4617
12:000.031.48625
12:1501.6634
12:300.031.48639
12:450.061.56629
13:000.011.64624
13:150.031.56619
13:300.031.6601
13:450.031.72584
14:000.031.8557
14:150.031.68540
14:300.031.8513
14:450.031.8480
15:000.071.72449
15:150.232.64416
15:300.033386
15:450.042.92343
16:000.032.96310
16:150.123.24273
16:30-0.043.36241
16:450.013.4206
17:00-0.033.36175
17:15-0.043.44149
17:30-0.023.4119
17:45-0.013.5297.2
18:000.013.4878.3
18:1503.4859.9
18:3003.445.2
18:45-0.013.4431.5
19:000.013.4420.6
19:15-0.013.5212.2
19:30-0.043.486.46
19:45-0.033.443.23
20:00-0.033.441.25
20:15-0.023.440.25
20:30-0.043.320.02
20:45-0.033.280
21:00-0.0330
21:15-0.032.920
21:30-0.032.880
21:45-0.022.80
22:00-0.021.80
22:15-01.240
22:30-01.160
22:45-01.120
23:00-01.080
23:15-01.080
23:30-0.0110
23:45-0.010.960

Three ways for a pool probe to read above 100°F

Every excursion, placed by the sun at its peak and the gas burned that day.

02004000200400600800spa soaks — after dark, heater litprobe out of the water — midday sun, gas idleheater running — sun and gas togetherSolar at the peak reading (W/m²)Gas that day (cf)

A soak burns 17× the gas of a dry-probe day at none of the sun, which is what makes those two a reading rather than a judgement call. The point between them is the one that matters: 24 August 2025 has sun and gas, and is the one excursion where the probe was reporting the water's real temperature.

Table view
DaySolar at the peak reading (W/m²)Gas that day (cf)
Mon 19 Jan 2026: 110.8°F, 18:35–19:300504
Sun 8 Feb 2026: 110.8°F, 19:00–20:250416
Tue 31 Mar 2026: 110.7°F, 19:15–20:550228
Sun 24 Aug 2025: 106.7°F, 15:50–16:15242150
Sun 29 Mar 2026: 120.2°F, 15:20–16:2555332.0
Fri 15 May 2026: 106.9°F, 11:30–12:1084924.0
Mon 18 May 2026: 109.9°F, 12:50–17:0584422.0
Sun 21 Jun 2026: 111.6°F, 12:55–12:5585222.0
Wed 6 May 2026: 102.2°F, 13:15–16:2580118.0
Thu 7 May 2026: 104.5°F, 12:05–12:3586918.0

How the house answers the weather

Balance points are fitted rather than assumed at the conventional 65°F. Where the line meets the axis matters as much as its slope: the intercept is load the weather never touches. The monsoon closes the section — Las Cruces takes most of its year's rain in a few violent afternoons between June and September, and the station catches all of it.

Degree-days, integrated over the day's samples rather than its extremes

CDD(Tb)=1N · ∑ max(0, TiTb)
Tieach five-minute outdoor reading, °FNsamples that day — 288 when the station misses nothingTbbalance point, °F — fitted by scanning, not assumed at 65

The conventional (max + min) / 2 form assumes the day is a symmetric curve between its two extremes. Near the balance point — which is exactly where these fits live — that assumption is worth several percent, and the station already reports every five minutes. Heating degree-days are the same with the subtraction reversed.

The energy signature each scatter below is fitting

U=U0 + k · DD(Tb)
Uthe day's metered use — kWh for electricity, cubic feet for gasU0intercept: what the house uses when the weather asks for nothing. This is the number the fit exists to producekslope — the marginal cost of one more degree-dayTbbalance point, scanned over a range and chosen by fit: 70°F cooling, 47°F heating

Fitting the balance point rather than assuming it is what makes the intercept trustworthy: a base temperature that is wrong pushes its error straight into the baseline, and the baseline is what gets called always-on load elsewhere on this page.

Electricity against cooling demand

Daily kWh vs cooling degree-days, balance point fitted at 70°F. R² = 0.74 over 359 days.

025.050.075.01000510.015.020.0Cooling degree-days (base 70°F)kWh per day

The line meets the axis at 38 kWh/day. That intercept is consumption no amount of mild weather removes — it is the floor plus the timer plus everything you plug in. Each cooling degree-day above 70°F adds 2.17 kWh. Cooling starts late, at 70°F, which is a well-behaved house, not a leaky one.

Table view
DayCooling degree-days (base 70°F)kWh per dayRole
27 Jul 202620.6102in fit
26 Jul 202621.0102in fit
1 Aug 202614.695.7in fit
8 Jul 202618.189.9in fit
30 Jul 202622.888.6in fit
9 Aug 202518.388.3in fit
24 Jul 202620.287.6in fit
21 Jun 202617.886.9in fit
23 Jul 202620.286.8in fit
2 Jun 202614.585.0in fit
25 Jul 202620.484.7in fit
7 Jun 202614.684.0in fit
29 Jul 202620.183.7in fit
4 Jul 202620.183.6in fit
6 Jun 202611.883.2in fit
10 Jul 202617.383.1in fit
12 Jul 202616.682.8in fit
28 Jul 202619.982.4in fit
3 Jul 202619.281.9in fit
13 Jun 202615.881.4in fit
27 Jun 202616.981.1in fit
17 Jun 202617.380.8in fit
31 Jul 202620.280.2in fit
5 Jul 202613.380.1in fit
9 Jul 202617.879.9in fit

Gas against heating demand

Daily cubic feet vs heating degree-days, balance point fitted at 47°F.

Explained by the fitHeld out of the fit (17)
02505007501,0000510.0Heating degree-days (base 47°F)Cubic feet per day

Two R² values, because only reporting the flattering one would mislead. On the 347 routine days the fit keeps, R² = 0.83 — heating demand explains those days well. Across all 364 days it is only 0.13, because the 17 days held out of it carry so much volume. Your house starts calling for heat once the outside temperature dips below about 47°F, and burns 19 cf/day when it is not heating at all — that floor is the water heater.

Table view
DayHeating degree-days (base 47°F)Cubic feet per dayRole
4 Apr 202601,122outlier
4 Oct 20250898outlier
13 Jan 20268.49684outlier
19 Jan 20265.96504outlier
6 Apr 20260.05494outlier
23 May 20260444outlier
8 Feb 20263.55416outlier
5 Apr 20260244outlier
17 Jan 20267.99232in fit
31 Mar 20260228outlier
27 Jan 20269.24224in fit
26 Jan 202612.5212in fit
10 Jan 202611.9206in fit
11 Jan 202611.1204in fit
12 Jan 20269.2186in fit
30 Dec 20258.99182in fit
8 Dec 20256.7180in fit
29 Dec 20255.94172in fit
28 Jan 20267.74170in fit
31 Jan 20266.93162in fit
16 Dec 20254.63156in fit
24 Aug 20250150outlier
18 Jan 20269.36148in fit
2 Dec 20253.95146in fit
9 Jan 20265.09138in fit

The line through those points

G=G0 + k · HDD(Tb)
Ggas that day, cubic feetG019 cf/day — what the house burns with no heating demand at all, which is the water heater's standing drawk16.2 cf per degree-day — the envelope, and the only term here that describes the building rather than the weather or the appliancesTbbalance point, 47°F. Fitted, not assumed: every candidate from 45 to 80°F was tried and this one leaves the straightest line

R² 0.83 on the 347 days the fit keeps.

And what a heating degree-day means here

HDD(Tb)=∑ max(0, TbTi)n
Tieach temperature sample that daynsamples in the day — 288 at five-minute spacing

Averaged across the day's samples rather than taken from its mean, and at this balance point the difference is not cosmetic: integrating finds 387 degree-days a year against 147 from daily means, 2.6× more. 103 days average above 47°F and still spend part of the night below it. A daily mean would score every one of them zero.

What the gas meter does across a day

Mean cubic feet in each hour, grouped by the day's mean outdoor temperature. Every panel on the same scale, each against the annual mean for reference.

Temperature bandEvery day
Cold day (22d)181 cf over the day0510.015.020.025.000:0004:0008:0012:0016:0020:00Mild day (100d)45 cf over the day00:0004:0008:0012:0016:0020:00Hot day (85d)19 cf over the day0510.015.020.025.000:0004:0008:0012:0016:0020:00cf/hour

The hot-day panel is the water heater, alone and visible. It is nearly flat at 0.8 cf an hour and totals 19 cf a day — against the 19 cf/day the regression above puts at its intercept, reached by fitting 364 daily totals against degree-days. Two methods with nothing in common agreeing to within a cubic foot. And flat matters: a standing loss looks like this, whereas hot water actually being drawn would show morning and evening humps.

The cold-day panel is the furnace, and it is concentrated: 22 cf in the 06:00 hour alone, 12% of the whole day's gas, which is the recovery from a night setback.

Table view
Every dayCold day (22d)Mild day (100d)Hot day (85d)
00:001.312.640.480.81
01:001.864.640.480.47
02:001.965.180.380.33
03:001.985.180.40.36
04:001.995.090.50.36
05:004.6412.50.720.66
06:008.4922.52.120.89
07:005.3113.61.80.49
08:004.5211.21.420.96
09:003.817.363.440.64
10:004.438.184.560.54
11:002.944.913.240.66
12:002.173.552.30.66
13:001.662.911.360.71
14:001.973.271.940.71
15:005.8411.43.722.42
16:006.716.03.240.87
17:002.815.731.381.32
18:002.694.642.640.8
19:004.028.362.80.89
20:002.64.092.71
21:004.219.451.941.24
22:002.355.360.920.78
23:001.322.820.720.44

How much of the weather gets inside

Indoor temperature swing against outdoor swing, on the 99 mild days when the thermostat is mostly idle.

0246010.020.030.040.0if the house were a tentOutdoor daily temperature swing (°F)Indoor daily swing (°F)

The house passes 11% of each extra degree of outdoor swing through to the inside — the slope of the fit, which is what survives a thermometer reading a little high. In plain averages an outdoor day moves 30°F and the interior 4.1°F, a slightly larger fraction because the line does not pass through the origin. That is a genuinely good envelope, and it agrees with the late 70°F cooling balance point found above — two independent measurements of the same insulation. For contrast, the garage passes 41% of the same extra degree — 4× the house, fitted the same way on the same days — which is what an uninsulated space looks like. Its plain-average figure runs higher still for the same intercept reason, and the zones section ranks all four buildings on it.

Table view
DayOutdoor daily temperature swing (°F)Indoor daily swing (°F)
1 Mar 2026 · outdoor mean 67°F43.97.2
25 Feb 2026 · outdoor mean 63°F39.47
18 Mar 2026 · outdoor mean 69°F41.36.6
26 Feb 2026 · outdoor mean 65°F34.06.6
20 Dec 2025 · outdoor mean 61°F25.36.5
2 Mar 2026 · outdoor mean 65°F40.56.5
12 Mar 2026 · outdoor mean 60°F32.26.5
15 Mar 2026 · outdoor mean 69°F32.06.5
27 Feb 2026 · outdoor mean 65°F38.76.3
15 Nov 2025 · outdoor mean 62°F34.96.1
26 Oct 2025 · outdoor mean 63°F36.86
11 Feb 2026 · outdoor mean 59°F28.66
14 Mar 2026 · outdoor mean 66°F36.45.9
5 Mar 2026 · outdoor mean 62°F33.85.8
31 Oct 2025 · outdoor mean 61°F41.65.8
28 Feb 2026 · outdoor mean 66°F36.25.8
4 Mar 2026 · outdoor mean 61°F34.25.8
10 Feb 2026 · outdoor mean 60°F25.65.6
2 Nov 2025 · outdoor mean 59°F38.55.6
14 Nov 2025 · outdoor mean 61°F36.25.6
25 Dec 2025 · outdoor mean 60°F24.15.6
11 Mar 2026 · outdoor mean 59°F39.65.6
3 Apr 2026 · outdoor mean 68°F30.45.4
19 Mar 2026 · outdoor mean 71°F45.55.4
6 Nov 2025 · outdoor mean 63°F38.05.2

What a day costs, against how warm it was

Every day's electricity and gas priced at the rate that applied to it, against that day's mean outdoor temperature.

0510.040.060.080.0median in each 5°F bandcheapest at 58°FOutdoor mean temperature (°F)Cost that day ($)

Neither meter makes this shape on its own — gas falls as it warms and electricity climbs, so only the sum has a minimum. It sits at 58°F, which is roughly the outdoor temperature at which this house wants nothing from either utility.

Table view
DayOutdoor mean temperature (°F)Cost that day ($)
91°F · $13.4290.613.4
91°F · $13.3691.013.4
88°F · $12.8988.312.9
85°F · $12.5384.612.5
88°F · $11.7988.111.8
90°F · $11.6490.111.6
93°F · $11.5992.811.6
90°F · $11.5090.211.5
85°F · $11.4084.511.4
88°F · $11.3887.711.4
90°F · $11.3790.211.4
84°F · $11.2584.311.3
86°F · $11.2385.511.2
80°F · $11.1280.411.1
90°F · $11.0890.411.1
90°F · $10.9890.111.0
90°F · $10.9590.110.9
87°F · $10.9287.310.9
86°F · $10.8985.810.9
87°F · $10.8586.610.9
87°F · $10.8087.310.8
90°F · $10.7989.910.8
88°F · $10.7687.910.8
89°F · $10.7389.210.7
87°F · $10.6286.910.6

Rain and lightning through the year

Daily totals from the station. Each panel keeps its own scale.

00.511.15 in Daily rainfall (in)0200400469 per day Lightning strikes (per day)020.040.043.4 mph Peak gust (mph)SepOctNovDecJanFebMarAprMayJunJulAug

Rain and lightning arrive together in a narrow season and are absent for the rest of the year. Wind is the exception: the year's strongest gust, 43 mph on 21 April 2026, came in spring with no rain at all. Those are the dust events, and they are a different phenomenon from the summer storms.

Table view
DateDaily rainfall (in)Lightning strikes (per day)Peak gust (mph)
2025-08-070015.9
2025-08-140014.8
2025-08-210011.4
2025-08-280011.4
2025-09-040015.9
2025-09-110012.5
2025-09-180.2118.021.7
2025-09-250013.6
2025-10-02009.2
2025-10-090013.6
2025-10-160015.9
2025-10-230.0217.020.6
2025-10-30008.1
2025-11-060014.8
2025-11-130013.6
2025-11-200.25123.9
2025-11-270011.4
2025-12-040010.3
2025-12-110011.4
2025-12-180010.3
2025-12-250012.5
2026-01-010014.8
2026-01-080028.6
2026-01-150010.3
2026-01-22009.2
2026-01-290014.8
2026-02-050011.4
2026-02-120011.4
2026-02-190020.6
2026-02-260013.6
2026-03-050021.7
2026-03-120011.4
2026-03-190011.4
2026-03-260019.5
2026-04-020015.9
2026-04-090010.3
2026-04-160017.2
2026-04-230023.9
2026-04-300021.7
2026-05-070013.6
2026-05-140017.2
2026-05-210017.2
2026-05-280014.8
2026-06-040.06014.8
2026-06-110012.5
2026-06-180017.2
2026-06-250019.5
2026-07-020013.6
2026-07-090027.3
2026-07-160118.3
2026-07-230011.4
2026-07-300014.8

Rainfall by month

Every month in the record. The year starts and ends mid-August, so August appears twice — as a 25-day bar and a 6-day one.

Rainfall
012308/2509/2510/2511/2512/2501/2602/2603/2604/2605/2606/2607/2608/26inches

September 2025, January 2026 and July 2026 carry the year — and note that they are not all monsoon months, which is the reminder that winter rain here arrives too. A drip system on a fixed weekly schedule waters straight through every one of them; a rain sensor, or a controller that skips after a storm, is the cheapest water saving on this page.

Table view
MonthRainfall
08/250.42
09/252.74
10/250.59
11/250.67
12/250.25
01/261.83
02/260.04
03/260.04
04/260.01
05/260.84
06/261.12
07/261.73
08/260.24

Four boxes in the same weather

The house, patio, garage and shed stand in identical weather and are built to four different standards. That makes the weather an instrument: outdoors supplies the forcing, and each zone's response measures how well it is separated from it.

Shed

1.09×

of the outdoor swing · 1 h behind
+5°F on the daily low, +8°F on the high

Garage

0.58×

of the outdoor swing · 3 h behind
+16°F on the daily low, +3°F on the high

Patio

0.19×

of the outdoor swing · follows its thermostat
+17°F on the daily low, -7°F on the high

House

0.14×

of the outdoor swing · follows its thermostat
+20°F on the daily low, -6°F on the high

One day, four buildings — the 30 hottest days of the year

Every panel on the same scale, each against the same outdoor curve.

ZoneOutdoors
Shedpeaks 16:0070.080.090.010011000:0004:0008:0012:0016:0020:00Garagepeaks 17:0000:0004:0008:0012:0016:0020:00Patioflat within 2.5°F70.080.090.010011000:0004:0008:0012:0016:0020:00Houseflat within 2.0°F00:0004:0008:0012:0016:0020:00°F

The shed tracks the sun; the house ignores it. Outdoors peaks at 16:00 — the garage crests later, which is the thermal mass showing up as a delay rather than as a smaller number.

Table view
OutdoorsShedGaragePatioHouse
00:0082.988.191.973.775.3
01:0081.386.390.473.775.9
02:0079.884.689.273.776.3
03:0078.483.088.073.876.6
04:0077.181.687.073.876.8
05:0075.480.386.173.976.9
06:0074.679.085.374.077.0
07:0077.078.484.573.575.5
08:0082.479.284.274.175.3
09:0087.683.184.974.175.2
10:0091.388.786.974.075.2
11:0094.794.789.874.275.3
12:0097.799.393.174.675.4
13:0010010296.575.175.5
14:0010210599.975.575.5
15:0010310710275.775.5
16:0010310910476.075.7
17:0010110810576.076.1
18:0099.410610575.576.0
19:0095.810210374.775.7
20:0091.998.010174.075.4
21:0088.294.998.673.875.1
22:0086.792.496.273.775.0
23:0085.390.494.173.675.0

The shared wall, measured

Each dot is one day. Garage minus shed, against house minus outdoors.

0510.015.0-20.0-10.0010.020.030.0House warmer than outdoors (°F)Garage warmer than shed (°F)

Slope 0.180, R²=0.649 over 363 days. The line runs through both halves of the year: when the house is cooler than outdoors, the garage goes cool relative to the shed by the same fraction.

Table view
House warmer than outdoors (°F)Garage warmer than shed (°F)
-17.0-1.62
-13.71.35
-11.31.43
-9.030.88
-7.051.61
-4.952.1
-2.474.15
-0.870.89
0.94.56
2.241.57
4.072.88
5.321.47
7.043.39
9.130.1
10.56.67
12.14.87
13.34.93
15.62.84
17.56.04
18.94.93
21.07.97
23.35.79
25.18.89
28.08.58
33.613.0

Water in the air, by month

Mixing ratio relative to outdoors — above the line is wetter than outside.

ZoneOutdoors
Shed-202AugOctDecFebAprJunAugGarageAugOctDecFebAprJunAugPatio-202AugOctDecFebAprJunAugHouseAugOctDecFebAprJunAugg/kg

Relative humidity would mostly restate the thermometers here. Mixing ratio is absolute: equal readings mean equal water, whatever the temperature.

Table view
OutdoorsShedGaragePatioHouse
Aug0-0.96-0.95-0.9-0.73
Sep0-0.72-1.18-1.14-1.09
Oct0-0.31-0.060.921.42
Nov0-0.20.121.562.14
Dec0-0.080.31.562.13
Jan0-0.080.321.371.9
Feb00.030.461.442
Mar0-0.010.862.072.8
Apr0-0.290.471.722.44
May0-0.280.331.191.9
Jun0-0.81-0.48-0.38-0.05
Jul0-0.99-1.41-2.15-2.02
Aug0-0.79-1-1.65-1.39

Why every moisture comparison here is a mixing ratio, not a humidity

w=1000 · ε · epe   with   e = 6.112 · exp17.67 · TdTd + 243.5
wgrams of water vapour per kilogram of dry airεratio of molar masses, 0.622evapour pressure, hPa — the saturation pressure at the dew point, which is what a dew point meansTddew point, °C, as transmitted by each zone's sensorpstation absolute pressure, hPa — measured, not assumed: at 3,900 ft the air is about 12% thinner than sea level

Relative humidity divides by a temperature-dependent denominator, so comparing a 50°F garage with a 74°F house on RH would mostly restate their thermometers. Mixing ratio is absolute: equal readings mean equal water.

Where the monsoon gets in, and how long it stays

Mixing ratio against the day before, averaged over 23 rain onsets.

ZoneOutdoors
Shed38% left on day 400.511.52−10+1+2+3+4Garage62% left on day 4−10+1+2+3+4Patio35% left on day 400.511.52−10+1+2+3+4House54% left on day 4−10+1+2+3+4g/kg

Rain lands on day 0. Outdoor air peaks the next day and is most of the way back to normal by day 3.

Table view
OutdoorsShedGaragePatioHouse
−100000
01.81.160.60.540.33
+12.2221.161.010.62
+21.151.140.920.660.51
+30.680.820.730.430.4
+40.680.750.710.350.33

What the weather cannot explain

Every day is scored against what its own weather predicts. What survived that test then had to be explained from elsewhere in the record — and almost all of it was.

All 15 flagged days
Sat 23 May 2026Gas — Pool heater — the water absorbed the missing gas444 cf vs 18.8 expected
Sat 23 May 2026Water — Same day as a pool-heating event744 gal vs 131 expected
Sun 10 May 2026Water — Not accounted for692 gal vs 130 expected
Mon 6 Apr 2026Gas — Pool heater — the water absorbed the missing gas494 cf vs 19.6 expected
Sun 5 Apr 2026Gas — Pool heater — the water absorbed the missing gas244 cf vs 18.8 expected
Sat 4 Apr 2026Gas — Pool heater — the water absorbed the missing gas1,122 cf vs 18.8 expected
Tue 31 Mar 2026Gas — Spa soak — probe moved into the spa, reached 110°F after dark228 cf vs 18.8 expected
Mon 30 Mar 2026Water — Drain and refill of the whole pool and spa3,307 gal vs 91.5 expected
Sun 29 Mar 2026Water — Drain and refill of the whole pool and spa1,922 gal vs 86.0 expected
Sun 8 Feb 2026Gas — Spa soak — probe moved into the spa, reached 110°F after dark416 cf vs 76.1 expected
Mon 19 Jan 2026Gas — Spa soak — probe moved into the spa, reached 110°F after dark504 cf vs 115 expected
Tue 13 Jan 2026Gas — Pool heater — the water absorbed the missing gas684 cf vs 156 expected
Sun 23 Nov 2025Water — Not accounted for326 gal vs 88.5 expected
Sat 4 Oct 2025Gas — Pool heater — the water absorbed the missing gas898 cf vs 18.8 expected
Sun 24 Aug 2025Gas — Pool heater — the water absorbed the missing gas150 cf vs 18.8 expected

Water, day by day

Daily gallons across the year.

AugSepOctNovDecJanFebMarAprMayJunJulAugMonWedFriSunLessMore · breaks at 50.0, 70.0, 80.0, 100, 200 gal

Water at this house is not weather-driven — with refrigerated air there is no evaporative cooling load, so what remains is irrigation and behavior. That is why water is judged against its own trailing baseline rather than against temperature.

Table view
DateDayValueUnit
2026-03-30Mon3,307gal
2026-03-29Sun1,922gal
2026-05-23Sat744gal
2026-05-10Sun692gal
2025-09-27Sat455gal
2026-07-04Sat402gal
2026-07-26Sun395gal
2026-07-02Thu375gal
2026-07-23Thu354gal
2026-04-14Tue347gal
2026-06-18Thu343gal
2026-07-07Tue340gal
2025-11-23Sun326gal
2026-04-11Sat322gal
2026-07-11Sat315gal
2026-08-04Tue314gal
2026-04-04Sat309gal
2026-06-27Sat304gal
2026-06-02Tue300gal
2026-08-01Sat295gal
2026-07-28Tue293gal
2026-07-30Thu292gal
2026-06-15Mon289gal
2026-06-04Thu287gal
2025-09-25Thu285gal

Gas, day by day

Daily cubic feet across the year.

AugSepOctNovDecJanFebMarAprMayJunJulAugMonWedFriSunLessMore · breaks at 10.0, 20.0, 30.0, 40.0, 90.0 cf

The winter block is heating. The isolated dark cells outside it are not.

Table view
DateDayValueUnit
2026-04-04Sat1,122cf
2025-10-04Sat898cf
2026-01-13Tue684cf
2026-01-19Mon504cf
2026-04-06Mon494cf
2026-05-23Sat444cf
2026-02-08Sun416cf
2026-04-05Sun244cf
2026-01-17Sat232cf
2026-03-31Tue228cf
2026-01-27Tue224cf
2026-01-26Mon212cf
2026-01-10Sat206cf
2026-01-11Sun204cf
2026-01-12Mon186cf
2025-12-30Tue182cf
2025-12-08Mon180cf
2025-12-29Mon172cf
2026-01-28Wed170cf
2026-01-31Sat162cf
2025-12-16Tue156cf
2025-08-24Sun150cf
2026-01-18Sun148cf
2025-12-02Tue146cf
2026-01-09Fri138cf

Where the gas goes

Annual cubic feet, split by the heating signature. 98% of metered gas is accounted for.

Cubic feet
02,0004,0006,000Space heatingWater heater + cookingPool + spacf per year

Space heating is only 34% of the gas — less than the water heater's year-round standing draw, and the reason the whole gas bill loses to its own access fee in the cost section. The house starts calling for heat when the outside temperature dips below 47°F (rather than the conventional 65°F), which cuts the heating degree-days that matter from 2,215 to 387 — and only 28 nights all year fell below freezing.

Table view
End useCubic feet
Space heating6,244
Water heater + cooking6,845
Pool + spa4,704

The long view

First the year as the meters recorded it — four measures on four separate scales, never two scales on one frame, because that manufactures correlations the data does not contain. Then the same span as the biller saw it: the only source here carrying cost, answering not what the house does but what it is charged for.

Daily consumption and temperature

Each panel keeps its own y-axis; only the dates are shared.

050.0100102 kWh Electricity (kWh)02,0003,307 gal Water (gal)05001,0001,122 cf Natural gas (cf)050.010092.8 °F Outdoor mean temperature (°F)SepOctNovDecJanFebMarAprMayJunJulAug

Electricity and temperature move together. Gas moves opposite to both. Water does neither, which is the finding — it is on a human schedule, not a thermal one.

Table view
DateElectricity (kWh)Water (gal)Natural gas (cf)Outdoor mean temperature (°F)
2025-08-0779.820210.090.1
2025-08-1468.316514.085.4
2025-08-2163.577.010.081.7
2025-08-2845.112710.084.7
2025-09-0454.918014.075.0
2025-09-1159.725914.083.4
2025-09-1830.911510.072.4
2025-09-2561.028524.073.3
2025-10-0250.415414.074.7
2025-10-0951.122414.075.2
2025-10-1650.315414.070.3
2025-10-2342.213718.070.4
2025-10-3041.390.026.054.3
2025-11-0642.617424.062.9
2025-11-1338.910222.057.2
2025-11-2032.515024.049.3
2025-11-2735.086.080.049.6
2025-12-0442.216010845.3
2025-12-1141.697.056.049.5
2025-12-1839.117654.052.4
2025-12-2543.011396.060.0
2026-01-0142.020782.055.3
2026-01-0837.996.040.047.0
2026-01-1547.217952.045.4
2026-01-2236.710611648.9
2026-01-2950.117312844.5
2026-02-0540.910658.045.0
2026-02-1236.816936.059.5
2026-02-1938.811432.051.0
2026-02-2637.018220.065.3
2026-03-0540.412320.061.7
2026-03-1240.718316.060.4
2026-03-1941.811320.071.1
2026-03-2651.726214.075.8
2026-04-0248.919124.064.2
2026-04-0941.027928.070.1
2026-04-1644.718818.064.8
2026-04-2346.326714.069.4
2026-04-3038.018214.064.9
2026-05-0749.225518.066.7
2026-05-1457.717720.080.7
2026-05-2154.526414.074.2
2026-05-2840.317514.077.6
2026-06-0456.228712.071.8
2026-06-1171.324414.087.4
2026-06-1858.434314.083.5
2026-06-2571.828518.090.6
2026-07-0272.437514.086.6
2026-07-0979.926314.087.8
2026-07-1674.528010.083.8
2026-07-2386.835416.090.2
2026-07-3088.629214.092.8

Monthly totals

Complete calendar months only.

Electricity (kWh)
01,0002,00009/2510/2511/2512/2501/2602/2603/2604/2605/2606/2607/26kWh
Table view
MonthElectricity (kWh)
09/251,608
10/251,422
11/251,179
12/251,351
01/261,490
02/261,142
03/261,344
04/261,324
05/261,537
06/262,132
07/262,404

Actually billed, 3 years

$5,754

53,713 kWh across 35 bills, Jul 2023 – Jul 2026

Energy charges only

$4,013

what the export's COST column records — $1,741 short of the real total

Summer marginal rate

$0.1304/kWh

all-in, upper tier · winter is $0.0841

Summer share of spend

51%

from 11 of 35 bills

Why each bill differed from the same month a year earlier

Split into the part you caused by using more or less, and the part the rate schedule caused on its own.

Usage effect — you used more or lessRate effect — the price moved
$50.0$50.02024-08+192024-09-82024-10+102024-11+132024-12+42025-01-272025-02-102025-03-142025-04+222025-05-122025-07+132025-08-222025-09-492025-10-112025-11-142025-12-42026-01+382026-02+252026-03+242026-04+62026-05-42026-07+28Net $

Across 22 paired months, usage decisions account for $361 of movement and rate changes for $16. This is the one view the interval export cannot produce — it needs cost, and three years of it.

Table view
PeriodUsage effect $Rate effect $Net $
2024-08+16.15+2.59+18.74
2024-09-8.12-0.12-8.24
2024-10+9.02+0.61+9.63
2024-11+12.55+0.48+13.03
2024-12+3.18+0.43+3.61
2025-01-26.58+0.00-26.58
2025-02-10.12+0.00-10.12
2025-03-14.37+0.00-14.36
2025-04+21.64-0.01+21.63
2025-05-11.52-0.00-11.52
2025-07+11.27+1.34+12.61
2025-08-20.10-1.98-22.08
2025-09-44.36-5.02-49.38
2025-10-11.40-0.00-11.40
2025-11-13.90+0.00-13.90
2025-12-3.55-0.00-3.55
2026-01+38.50-0.00+38.50
2026-02+24.66-0.00+24.66
2026-03+24.49-0.01+24.48
2026-04+5.52+0.01+5.53
2026-05-4.07+0.00-4.07
2026-07+25.61+2.89+28.50

Every bill, three years

Consumption per billing period. Periods vary from 28 to 34 days.

kWh billed
01,0002,000Aug 23Sep 23Oct 23Nov 23Dec 23Jan 24Feb 24Mar 24Apr 24May 24Jun 24Jul 24Aug 24Sep 24Oct 24Nov 24Dec 24Jan 25Feb 25Mar 25Apr 25May 25Jul 25Aug 25Sep 25Oct 25Nov 25Dec 25Jan 26Feb 26Mar 26Apr 26May 26Jun 26Jul 26kWh

The seasonal shape repeats almost exactly year to year, which is what makes the weather-independent baseline visible: the troughs never approach zero.

Table view
MonthkWh billed
Aug 232,195
Sep 232,170
Oct 231,648
Nov 231,186
Dec 231,210
Jan 241,355
Feb 241,024
Mar 241,026
Apr 241,028
May 241,720
Jun 241,811
Jul 241,980
Aug 242,360
Sep 242,087
Oct 241,804
Nov 241,403
Dec 241,265
Jan 25898
Feb 25850
Mar 25779
Apr 251,400
May 251,522
Jul 252,096
Aug 252,157
Sep 251,633
Oct 251,608
Nov 251,164
Dec 251,204
Jan 261,560
Feb 261,274
Mar 261,200
Apr 261,495
May 261,452
Jun 261,791
Jul 262,358

What to check the next export against

One number here is worth carrying forward as an alarm — and one real failure that neither it nor anything else on this page would have caught. Both are worth writing down.

Show the threshold, and what it cannot see

Floor, month by month

0.74kW

median of 12 monthly medians — the same floor as above, aggregated for watching rather than for costing

Month-to-month wobble

±0.074kW

full range 0.24 kW across the year

Smallest new load it would catch

148W

1,297 kWh/yr — about $134 a year left running

Where the alarm threshold comes from

Pmin=2 · σ(Fm)
Fmeach month's median always-on floor, kWσits month-to-month standard deviation, 0.074 kWPminsmallest new continuous load that would clear the noise — 148 W

Two standard deviations rather than three: this is a prompt to go and look, not a claim that something is wrong.

What the labels say

7 nameplates, read off the machines and typed in by hand — the one source here with no file behind it. They settle one assumption, correct another outright, and give the meters something to be checked against.

Show the seven nameplates and what they settle

Central air conditioning

3.5 ton

Carrier 24ABB342A300 — 13 SEER, R-410A, cooling only
built Oct 2009, 17 years old

Central heating

88,000 BTU/h

Carrier 58DLA090-16 — 80.7% efficient, 71,000 BTU/h out
built Nov 2009, 17 years old

Water heater

50 gal

Rheem XG50T12HE40U0 — 40,000 BTU/h, natural draft
built Mar 2024, 2 years old
installed 28 Mar 2024

Pool heater

333,000 BTU/h

Sta-Rite SR333NA — natural gas, input rating
built Dec 2009, 17 years old

Pool filter

36 ft²

Pentair FNS Plus 36 — DE, rated 90 GPM for a private pool
built Jul 2022, 4 years old

Pool pump

1 HP

Pentair P6E6E-206L — Max-E-Pro EE, single speed
built Nov 2009, 17 years old

Patio mini-split

12,000 BTU/h

Premium Levella PIAW121800B — heat pump, both ways · R-410A · the only one on the property
date encoded in the serial, not decoded

A nameplate that checks its own transcription (NEC 440.33)

MCA=1.25 · RLA + FLA
RLAcompressor rated-load amps, 17.9 AFLAcondenser fan full-load amps, 1.1 AMCAcomputes to 23.48 A against the 23.5 A printed

The largest motor is taken at 125%, the rest at nameplate. Reproducing the printed figure from the printed currents tests the typing, not the equipment — and the build refuses to run if it stops agreeing.

Data & provenance

What each source can support, and where the numbers stop being measurements.

Show what each source can and cannot support

How much to trust each number

Weather — your WS-2000, 364 complete days at 5-minute resolution. Degree-days are integrated across every sample of the day — 288 on average, exactly 288 on 347 of 364 days — rather than derived from (max+min)/2, which matters near the balance point where the fits live. The station agrees closely with the weather UtilityHawk reports independently: daily highs r = 0.980 (bias +1.0°F), lows r = 0.988 (bias -0.7°F) over 364 days. The station's authority here is earned, not assumed.

Electricity — 364 days of 15-minute interval data, 359 of which overlap the weather station. Essentially complete: one day carries 92 intervals rather than 96, which is the spring-forward hour behaving correctly.

Water and gas — UtilityHawk supplied 366 daily readings; 364 of them fall inside the weather station's coverage and are the ones used here. Daily resolution is the binding constraint on leak detection. A leak has to lift the quietest day of the week before it registers at all, which sets that sensitivity at roughly 81 gallons a day — enough for a running toilet, nowhere near enough for a dripping tap, and blind to the one fault this house actually had. A split irrigation line leaks only while its valve is open, so it never lifts a quiet day at all. The hourly series answers a different question and answers it far better: it reads each irrigation cycle directly, and a cycle that changes size is visible within a week. See the leak and Water, by the hour.

The two electric exports agree — but they are not two measurements. Summing the 15-minute intervals over each of the 10 billing periods they fully cover gives 15,258 kWh against 15,244 kWh billed — a difference of +0.09%, with no single period off by more than 0.14%. The interval file reads consistently a hair high, which is what rounding to whole kWh on the bill would produce. Both files are the utility rendering the same smart meter register two ways, so this is a consistency check on the pipeline, not corroboration of the measurement — a miscalibrated meter would be miscalibrated in both. What it rules out is a misaligned billing boundary, intervals dropped from the export, a scaling error in parsing, or mishandled daylight saving. Those are the failure modes actually in play, and nothing in this dataset can test the meter itself.

What is genuinely independent is elsewhere: the backyard weather station against UtilityHawk's own weather source (different sensors, different operators); the pool pump's electrical signature against a thermometer in the water; and that pump's measured draw against its nameplate. Those are separate instruments agreeing, and they carry the weight this one cannot.

Money comes from 28 PDF bills, transcribed rate by rate. Nothing here divides a total by a usage figure to guess a price. Every tariff is typed from a bill and checked against it on each build — all 39 checks reproduce their source to within two cents, and the build aborts if any drifts. The worst disagreement across all of them is 2 cents, on Gas 2025-07, 1 Mcf @ $2.11/Dth. Listing all 39 passes would say nothing the sentence before it does not; the build failing is what carries the claim.

What 28 bills still cannot pin down. A complete year of both utilities — 14 EPE and 14 Las Cruces, one per meter read. Every rate below is now read off a bill for the month it applies to rather than carried forward from a neighbouring one, so these are the remaining edges:

  • Water has no second tier boundary anywhere in the record: 3,000 gallons free, then a flat $2.85 per 1,000 of commodity charge across every bill — $3.27 all-in once the franchise fee and tax that ride on it are added, which is the figure the cost section prices with — up to the largest ever billed at 9,000. Whether an escalating tier exists above that is unknown — no month has ever reached it, so no bill would have shown it.
  • The gas commodity rate is a monthly pass-through and is known for every month of the record, spanning $0.40 to $3.37/Dth. Only days between two meter reads are interpolated, and never across more than one month.
  • Wastewater is billed on a fixed allowance re-set annually, not on the month's own water use. A full year shows 4,000 gal holding through the February 2026 read and 2,000 from the March one. The date it re-sets is observed; the formula that chooses the number is not published.

Meter quantisation. The gas meter reads in whole Mcf and the bill charges whole dekatherms, so a month of 552 cf is billed as a full 1,000 cf. The water meter reads in whole 1,000-gallon units. UtilityHawk's daily figures are finer than either meter, which is why a month's daily sum need not land exactly on the billed volume — over the June–July 2026 period the daily water figures totalled 5,874 gal against 6,000 billed, a 2.1% difference entirely explained by rounding.

Caveats worth keeping in view. What follows is load-bearing for numbers on this page and is not measured:

  • Pool heater efficiency at 80%. Its label prints an input rating and no efficiency, and it is the only appliance still relying on the assumption — the pool and spa heating costs and the per-degree figures all run through it. A real heater between 70% and 85% moves those by roughly a fifth either way. The furnace, which prints both 88,000 BTU/h in and 71,000 out, comes to 80.7% — within 0.7 of a point of the assumed figure, and the only independent support the pool heater's number has.
  • Pump flow at 60 GPM. The turnover counts scale inversely with it: at 45 GPM today's runtime is 3.6 turnovers rather than 4.9. Assumed, but bounded: the filter's private-pool rating of 90 GPM caps it, and even at that ceiling the runtime is 7.3 turnovers. The conclusion that it runs well past one or two survives the whole admissible range; the exact figure does not.
  • That the March drain was complete. The refill itself is now measured rather than inferred — the hourly register puts 5,002 gallons into the system over 28 hours, against the 5,000 this page uses. But that is how much water went in, which equals the system volume only if the drain emptied it. That it did is the owner's account, not a measurement; a partial drain would mean a larger pool and a proportionally larger per-degree cost.
  • The patio's glazing — the coefficient, not the area. The glass is measured: 140 × 78 inches over both doors, 76 sq ft. The solar heat gain coefficient is assumed at 0.30, so the conduction half of the mini-split's cooling (291 kWh of electricity) is derived from measurement and the solar half (358 kWh of electricity) is half-measured — right area, assumed transmittance. Not to be confused with the similar-looking insolation figures in that section, which are kWh per square meter falling on the glass rather than kilowatt-hours drawn by the heat pump. One knock-on from the solar section belongs here too: this window is projected from the same station whose eastern sky is blocked by the roof ridge, so its mornings are under-read. A due-south window should collect near-symmetrically about noon and this one comes out 1.09 afternoon-to-morning, which puts the annual figure roughly 2% low. That is small next to the assumed transmittance above, and in the opposite direction to it, but it is a floor rather than a correction — nothing here has been adjusted for it.
  • Weather before Aug 2025 is a NOAA proxy. Not because the station was not there — it was, and it was recording — but because AmbientWeather only serves a rolling year, so the earlier record exists and cannot be fetched. The proxy carries ±2.3 kWh/day of error over the one year where it could be checked — and proxy-era periods scatter 8.5 kWh/day against the station era's 2.3, more than that error alone explains. Individual pre-2025 periods should not be read closely; only the multi-year average is solid.
  • The solar sensor is not used for solar. The station's pyranometer reads 26% low against NSRDB, and only 20% of that is the instrument — the rest is an eastern horizon standing about 21° up. Once the mount height is measured rather than estimated, the roof can account for at most 18° of that and possibly as little as 13°; the balance is most likely the trees due east, whose height is unmeasured, so this page does not claim to have divided them. That is invisible on a south plane and disqualifying on an east one, so plane-of-array here comes from PVWatts. It is the only modeled input on this page, and it brings typical-year weather with it: the monthly figures answer what an array would do in a normal year, not what it would have done in this one. Where the station is still used it is scaled by ×1.35, which a flat PVWatts plane independently confirms to about 2%.
  • The roof pitch is measured to about a degree. 22.5° ± 1° by phone inclinometer. The PVWatts runs were commissioned at 22.6°, inside that band, and are kept: plane-of-array moves about 4 kWh/m² per degree here, so the whole band is worth about 0.2%. Pitch matters four to five times more on an east-west roof than on a south one — the span of common pitches covers about 9% of production rather than 2% — which is why a degree of resolution was enough and a guess was not.
  • The two irrigation runtimes are the owner's account, not a measurement. 14 minutes in winter and 30 in summer, read off the Hunter X-Core. An hourly bucket records volume and never duration, so nothing here can check them directly — the corroboration is indirect and worth stating as such: dividing every clean month's cycle by the runtime it was set to yields 2.97–3.73 GPM across both programs, and a wrong pair of runtimes would have produced two different flow rates rather than one. That is evidence, not proof.
  • The hourly record does not reach back before July 2025. It covers 400 days, which is enough to hold one summer against the previous one — the comparison the leak rests on. It is not enough to say whether the 107-gallon summer cycle is itself normal for this system, only that it held for two seasons before it stopped. A second clean summer would settle that, and there is no way to fetch one retrospectively.
  • The condenser's power factor at 0.90. A nameplate prints amps, not watts, so turning 19.0 A at 230 V into the 3.93 kW ceiling needs one. It is typical for a single-phase hermetic compressor under load but is not on the label, and it is load-bearing twice over: the unit's 88% load factor would be 79% at unity, and the open-door section's headroom argument moves with it. The measured 3.46 kW does not — that is a meter reading.
  • The five hygrometers were never cross-calibrated. Nothing here establishes that they agree, so between-zone moisture is reported as regression slopes, which a constant offset cannot move, rather than as differences of means, which it can. The zone comparisons are built to survive an error of about a gram per kilogram in any one sensor; the garage and shed happen to agree to 0.04 g/kg once the house is accounted for, but that is a result rather than an assumption.

What is identified, and on what evidence. The 15:15 timer block is the pool pump, on three independent grounds — the 1.65 kW electrical step, the water temperature stepping at the same quarter-hour, and an A.O. Smith SQ1102 nameplate that predicts 1,641 W against 1,650 W measured. And all 10 gas anomalies are identified rather than merely flagged: 7 are pool heating on days with no heating demand, and the other 3 are evening spa soaks, pinned by the absence of sun at their peak. 7 appliance nameplates have since been transcribed. They put the furnace's efficiency at 80.7% from its printed input and output, and establish that the central system cools only, so central heat is the gas furnace and the patio mini-split is the property's only heat pump.