TL;DR My house moved from a global heatwave switch to six shutters that each decide for themselves, from their room temperature and the sun's position on their facade. The model comes from the land registry, cross-checked against thirty days of correlation between temperature and solar azimuth. It gave me orientations the temperature curve alone could not, and a horizon mask I did not know about. But its most useful output is not a shutter setting. It is that my office sits at 29 °C at three in the morning, three degrees above the living room, and the sun has nothing to do with it: a server rack dissipates 331 W continuously. The same trap was waiting for me on the electrical panel.


Three in the morning, mid-August. The office is at 29 °C. There has been no sun for nine hours. I spent part of the summer building a solar model of my house to drive six shutters. What that model mostly taught me is that on the room bothering me the most, the shutters were beside the point.

From one global mode to six separate decisions

The first version was a heatwave switch. When I flipped it, a single rule applied to the whole house: close if it is hotter outside than in.

It carried the flaw of its own simplicity. A house does not have one temperature, it has as many as it has rooms, and every room gets the sun at a different hour. The house average hid all of it.

In the new version, every shutter has its own target position, computed from two things: its room's temperature, and a sensor that says whether the sun is currently hitting its facade.

That second sensor is the interesting part. It compares the sun's azimuth to the facade's normal, using a signed difference so the wrap past north behaves, and stays true while that difference is under sixty-five degrees.

FIVE FACADES · ONE AUGUST DAY Every facade has its window. 6:00 9:00 12:00 15:00 18:00 21:00 Office, bedroom — ENE 8:15 – 12:00 Child's room — ESE 7:00 – 13:30 Parents' room — SSE 7:30 – 14:45 Gable — SSW 10:00 – 17:00 Utility room — WNW 14:00 – 20:30 Radius = facade, from the office (outer) to the utility room (inner). Arc length = real window, azimuth and elevation combined.

The south-south-west gable is the best exposed across the year, and the smallest. The utility room only catches the sun late in the day, through its single opening.

The land registry says what the temperature curve cannot

My first attempt at orientation came from the data alone. I had correlated thirty days of each room's temperature against the sun's azimuth, and concluded there was an "east" facade somewhere between 60 and 150 degrees.

I would never have started that computation by hand. It ran while I was digging out the cadastral plan.

Two errors in that single result. The real normal of that facade is 114 degrees, so my interval was off centre. And more importantly it contained no west facade at all, while the house has one.

Correlation can confirm that a room belongs to a facade. It cannot invent a facade that no instrumented room depends on. The cadastral plan gives you the ridge line and all four orientations in ten minutes.

Data tells you how the things you measure behave. It says nothing about what you never thought to measure.

Three corrections followed, and none of them was in the land registry. The first: my office has a single opening, facing east-north-east at 67 degrees, not on the big 114-degree facade. The sun leaves an east-north-east opening around midday, against an hour and a half later for the other one. Attaching the office to the wrong facade kept its shutter down for ninety minutes of nothing, every day.

The second: the sun only enters that window from fourteen degrees of elevation, around quarter past eight in early August. My initial threshold flipped the sensor at 7:26, fifty minutes too early. Azimuth is never the limiting factor in the morning; only height matters, which points at a building or a tree to the east. The sensor now exposes azimuth and elevation as attributes, so it can be recalibrated by plain observation.

The third came from the house itself. I had described the parents' bedroom as facing south-south-east. The maths that followed only let the sun in from half past nine, so the shutter stayed open all morning — while the room is in full sun well before that. Normal brought back to 135 degrees, window recomputed from 7:30 to 2:45 p.m., target immediately down to 55%.

What the model told me not to do

The office is unlivable in August, and I wanted its shutter to protect it. The model answered something else.

1 AM – 6 AM · 14-DAY AVERAGE Three degrees more, no sun. 26.0 °C Living room 29.0 °C Office +3.0 °C The cause is not outside. It is a server rack dissipating 331 W continuously. Real 14-day average, 1 am to 6 am. No solar gain over that window.

The opening scene is an average. Over fourteen nights, between one and six, the office stays three degrees warmer than the living room and two and a half warmer than the kitchen.

The room is very well insulated. It houses the server rack and its 331 W, day and night, and it never cools down. The shutter can only act on the morning solar gain, through the smallest opening in the house, across a window of three hours and forty-five minutes. That is the smallest part of the problem.

The lever is evacuation, not shading. I would have spent the summer tuning a solar curve against a problem that was not solar. A dedicated sensor now says when it is at least two degrees cooler outside than in the office, and a notification simply suggests opening a window. A ceiling fan followed, its speed tracking the room temperature from May to September.

I also ruled out a tempting hypothesis. I suspected the neighbouring utility room, which has no shutter, of conducting its heat into the office. The measurements say the opposite: the utility room stays at 25 or 26 °C. The gradient runs from the office into the utility room, which acts as a sink rather than a source.

The same trap on the electrical panel

The house runs on a 9 kVA three-phase supply, with a meter per phase. My question was simple: which phase can still take something.

My first pass looked at maximum hourly power. It flagged phase A as saturated, at 2,882 W, or 96% of its capacity. Conclusion: put nothing else on it.

That was wrong, and the error is in the unit.

THREE-PHASE · PEAK CURRENT OVER 30 DAYS In amps, it all flips. 13.5 A Phase A Rack, dishwasher hours > 14 A: 0 h 26.7 A Phase B Water heater hours > 14 A: 28 h 24.8 A Phase C Washing machine hours > 14 A: 18 h 14 A threshold Phase A — the one watts flagged as saturated — is the only one under the threshold.

Measured in current over thirty days, phase A tops out at 13.5 amps and never crosses fourteen. Phase B climbs to 26.7 and phase C to 24.8, with twenty-eight and eighteen hours spent above that line.

The peaks on B and C are briefer, so they slipped under the radar of an hourly maximum expressed in watts. The phase I believed saturated is the one with the most headroom. That is exactly where a new load belongs.

One detail amused me in that analysis. My dishwasher is metered by nothing, and it was still identified beyond doubt from its electrical signature alone: two resistive plateaus of 2,400 to 2,900 W spaced exactly two hours apart, nearly every day, about 780 Wh per cycle. It is the only large unmetered load on its phase. Nobody went looking for it.

What the house still does not decide

Time for the admission. Automatic shutter control is still switched off.

The model exists, all six targets are computed continuously, and I can read them at any moment. But the switch that lets the shutters move on their own has never been armed. The reason is plain: I wanted to watch those targets across a full season before letting the house close shutters without asking me.

Two other decisions stayed on the human side, and the model backed them rather than replacing them.

The utility room has no shutter. Its large window is simply shaded by a sheet hung outside, which looks like a bodge. Thirty days of measurements say the sheet is enough: the utility room is cooler than the kitchen at nine in the evening every single day, without exception. I will not be buying an external blind.

And the roof, pitched east-south-east and west-north-west, matches an east-west configuration: roughly 80 to 85% of what a full-south array would yield, with a flatter curve across the day. That leans in favour of self-consumption. It is noted, not decided.

What I am taking away

  • Find the cause before tuning the actuator. A shutter only treats solar gain. One night-time measurement tells you whether solar gain is to blame.
  • Plan first, data second. I did it the other way round, and the correlation went hunting for facades the land registry already listed. Whatever is left gets settled on site, by eye.
  • Read a measurement in the unit of its limit, at the finest step. Every aggregation added along the way can erase the very peak you are looking for.

This is the last episode of the series. It holds in one sentence: my house did not become smart, it became modifiable.

Downloads

The two reusable building blocks from this episode.

  • soleil-facade.yaml — one sensor per facade, telling you whether the sun is actually on it. Three numbers to set, all commented.
  • blueprint-vitesse-selon-temperature.yaml — the scale turning a temperature into a speed from 0 to 6. It writes a number and commands nothing itself, so the hardware can change without touching the scale.
  • LISEZMOI.md — installation, how to tune the horizon mask by observation, and the azimuth maths described without Home Assistant. Written in French.

Read the series: Ten Years of Home Automation Alone. One Year With an Agent — the inventory and a measurement of what changed. AI Didn't Automate My House — why the win shows up on the projects you never started. I Changed the Evening Schedule Three Times in One Week — the house that holds the shape of the day. I Took the Choices Out — thirteen spoken announcements, and why the audio was never the problem.