My roof under the sun
- This is a model of my roof that you can turn.
- It shows the four faces of the hip roof, the 36 panels on them, and the neighbor's tree to the west.
- Drag it to look around. Then pick a day and a time to see where the sun is and what the tree shades.
- It is a schematic.
- The faces, their compass directions, their 23° tilt and the panel count on each face are real.
- The size of the house and where the tree stands come from an overhead photo.
- Where each panel sits on its face, the heights and the shape of the tree are approximate.
the sun and its path that day
a face the sun is behind
a panel in the tree's
shade
the tree, approximate
Reading the model
- Drag to turn the model. The arrow keys turn it too.
- To zoom, pinch on a screen or a trackpad. Or use the + and − buttons on the model, or its + and − keys once it is selected.
- A two-finger scroll scrolls the page, except on the whole screen, where it zooms.
- A darker face gets no direct sun at that moment.
- A panel outlined in red is in the tree's shade.
- The amber disc is the sun. The dashed amber line is its path across the chosen day.
- The page opens at the moment of the past year when the tree shades the most panels.
- At that moment the tree is in leaf, and the sun is more than 10° up.
The same sun path, flattened
- Imagine the sky over my house as a glass dome, seen from above like a map: north at the top, east on the right, the horizon at the rim.
- Under the real sky, with your head to the north, east is on your left. This chart is the same dome seen from outside.
- The amber lines are the sun's path on three days of —. On the June solstice it rises in the northeast and passes high, just south of overhead.
- On the December solstice it stays low, near the bottom rim. At the equinoxes it runs from due east to due west.
- The dots are New York clock hours. On daylight saving time, in June and at the equinoxes, noon sits east of due south; in December it sits close to it.
- Shading is the average power the array made while the sun sat in that patch. A patch fainter than its neighbors at that height marks a tree or chimney.
- Over the record, —, the sun used only the band between the solstice paths. It climbs to —° at midsummer, computed from latitude.
- The arrows show which way the — roof faces point, from the installer's design. Each is as long as its share of the — panels.
- The chart groups — readings into — patches. It leaves out patches with fewer than eight readings: one reading cannot tell shadow from cloud.
nonepeak sun's path, computed ↗ roof face, by panel count distance from center is the sun's height
The tree
- Some things are measured. An overhead photo, north up and scaled by the length of a car, puts the crown's center about 67 feet from the middle of my house.
- That center is toward 290°, and the crown is about 40 feet across.
- I take every angle from the middle of my west-facing panels, which the tree shades. From there the crown's center is about 60 feet away, toward 294°.
- The sky mask I fitted from my production data puts the shade's top edge at 35 to 40°, around 255°. The model places the tree from the photo.
- Its height is not measured. I assume my eaves are 16 feet up and the crown is 46 feet tall.
- Then a top edge anywhere in the mask's band means a tree 57 to 64 feet tall. The model draws the middle of the band, 37.5°.
- It is a deciduous tree, so the model draws it bare from December through March. Those months are my rough guess.
- The shade count treats the crown as solid all year. So in those months it overstates the shade.
What the array measured
- For each 10-minute window with the sun up, the readout gives what my array made, from Home Assistant's record of my Powerwall gateway.
- Python reads the power gauge as a straight line between readings at most 30 minutes apart, and weights the mean by time: Home Assistant writes only on change.
- Across a longer silence the last reading holds while the recorder runs. Otherwise the window is not recorded, which is never the same as zero.
- A window's energy is the gauge's mean times the window. My daily energy counter is read only about every 5 minutes, too seldom to split a window.
- The day so far follows the Every Day page's rule to the window's end: the counter's level where it gives the total, the gauge's energy before.
- So it never passes the total; it falls short only by what the array made after the last window, at most 0.03 kWh on days with every window recorded.
- Before the counter, a window that is not recorded leaves the rest of that day's running total not recorded too.
How the sun table was computed
- Python computed every sun position on this page before publishing, with NOAA's solar position algorithm, at each 10-minute step of 2026 on New York's clock.
- Each day of my record reuses the 2026 row for its date, because the sun repeats from year to year.
- Compared at every step, no day of the record differs from its 2026 date by more than 0.11° in azimuth or 0.14° in elevation.
- For two days, 8 March 2025 and 1 November 2025, daylight saving started or ended on a different date than in 2026, so Python computed their own rows.
- The location is mine, rounded to the nearest 0.5°. Every sun figure on this page, the flat chart's included, comes from that point and never from the house.
- So none of them leads back to the house more closely than that. Across that rounding the sun moves by under a degree.
- At each step Python also tested a line from every panel's center toward the sun against the tree's crown, and marked each face the sun was behind.