Skip to content

Configuration Louvered Roof

Jason Rhubottom edited this page Aug 6, 2026 · 5 revisions

Louvered Roof

A cover type for a bioclimatic pergola or louvered roof β€” rotating slats mounted in a horizontal or gently pitched roof plane, turning around a fixed horizontal axis. The integration optimizes the slat angle to cut off direct sun while keeping the roof as open as possible for diffuse light and ventilation, then drives that angle through set_cover_tilt_position.

Choose Louvered roof in the cover-type picker when you add or reconfigure an instance.

A louvered roof is a tilt-only cover type. It commands a slat tilt percentage exactly like a venetian tilt blind β€” same slat geometry, same tilt modes, same position calibration β€” but the sun geometry behind that angle is computed against a roof plane instead of a vertical facade.


Why not a venetian or a roof window?

The two halves of this problem already existed in the integration, but never combined:

  • A venetian / tilt blind optimizes the slat cut-off angle, but assumes the slats hang in a vertical window. The profile angle is measured against a vertical facade and the "window azimuth" has no meaningful equivalent for a roof, so the computed angles come out physically wrong.
  • A roof window gets the tilted-plane sun geometry right (roof_pitch, angle-of-incidence illumination), but it is a position-only cover β€” it models a shade sliding over pitched glass, with no slat-angle output.

The louvered-roof type is the cross-product: the venetian cut-off solver, driven by a profile angle taken against the roof plane and the slat-axis orientation.


Geometry options

The louvered roof reuses the venetian slat settings and adds one roof setting on top of the usual sun acceptance angles:

Setting Range Default Meaning
Slat Depth 0.1–15 cm 3 cm Depth of one lamella, front to back.
Slat Distance 0.1–15 cm 2 cm Center-to-center spacing between slats.
Tilt Mode Mode1 / Mode2 Mode2 (0–180Β°) Mode1 = 0–90Β° travel, Mode2 = 0–180Β°. Match your drive's physical range.
Maximum Tilt 0–100 100 Upper clamp on the tilt percentage the integration will command.
Minimum Tilt 0–100 0 Lower clamp on the tilt percentage.
Roof Pitch 0–90Β° 0Β° The slope of the roof plane, measured from horizontal. 0Β° is a flat pergola roof (slat angle driven purely by solar elevation, independent of sun direction). A pitched pergola sits a few degrees up; 90Β° reduces exactly to a vertical venetian blind.
Maximum Slat Angle 0–180Β° 0 (use tilt mode) The physical travel of your drive, in degrees, when it is neither exactly 90Β° nor 180Β°. Leave at 0 to use the tilt mode's range (90Β° for Mode1, 180Β° for Mode2). Set it to your drive's real maximum β€” e.g. 160 for a pergola that rotates through the vertical turnover and 70Β° beyond β€” and the integration maps the computed geometric angle against that range and clamps anything above it, instead of relying on your controller's own percentage mapping.

The azimuth field is the slat-plane facing direction. The standard Azimuth on the sun-tracking screen is reused as the compass direction the slats "tilt toward" (perpendicular to the horizontal rotation axis). On a flat roof (pitch 0Β°) it has little effect because a flat roof is lit from every direction; on a pitched roof it orients the plane the way the roof window's azimuth does. The sun acceptance angle angles behave as usual and can restrict tracking to a slice of the sky.

The slat measurement diagram and calibration are identical to the Tilt page β€” measure one slat front-to-back for depth and center-to-center for spacing.


How the slat-angle model works

The cut-off geometry is a 2-D cross-section taken in the plane perpendicular to the rotation axis: given slats of depth d spaced s, find the tilt that just blocks a ray arriving at profile angle Ξ². That solver is orientation-agnostic β€” only Ξ² changes between a vertical venetian and a roof plane. The louvered-roof type takes Ξ² against the roof plane (using the same slope trigonometry as the roof window) and feeds it into the shared cut-off solver.

Two limits anchor the model and are verified in the test suite:

  • Flat roof (0Β°), sun due-azimuth β†’ the cut-off is a pure solar-elevation function: |Ξ²| = 90Β° βˆ’ elevation. Overhead midday sun closes the slats flat; low morning/evening sun opens them. This is the complement of the vertical case β€” the profile is measured against the horizontal plane, not a vertical facade.
  • Vertical (90Β°) β†’ the model reduces to the venetian/tilt engine bit-for-bit, so a louvered roof set vertical and a real venetian blind compute the same slat angle.

Illumination gate. Because a flat roof is lit from any azimuth once the sun clears the horizon, the vertical sun acceptance angle hemisphere test would be wrong. The louvered-roof type uses the same angle-of-incidence test as the roof window: direct sun is only considered when it strikes the working face of the roof plane. At pitch 0Β° that reduces to "the sun is above the horizon," independent of direction; on a pitched roof it behaves like the roof-window gate.


The sun acceptance angle is measured in the roof plane, not on a compass

The most common surprise with this cover type: on a flat or shallow-pitched roof, solar tracking goes active well before the sun's compass bearing enters the acceptance arc you configured. That is by design, not a bug.

Both the illumination gate and the acceptance-angle test are evaluated in the roof plane. The integration projects the sun into that plane first, then compares the projected angle against your left and right acceptance angles. As the sun drops toward the horizon that projection compresses toward zero, so the effective arc widens β€” the acceptance angle "breathes" with sun height instead of holding a fixed compass window.

A worked example. A pergola at azimuth 265Β° with a 90Β°/90Β° acceptance angle looks like it should track only while the sun sits between 175Β° and 355Β°. At roof pitch 0Β°, with the sun due east (90Β°) and 20Β° above the horizon, the projected angle works out to roughly 13Β° β€” comfortably inside Β±90Β°, so tracking is active hours before the sun is anywhere near west. At pitch 0Β° the illumination gate reduces to "the sun is above the horizon" outright, because a flat roof genuinely has no front hemisphere to exclude.

This is the physically correct model. A flat pergola really is lit by an eastern sun, and the slats really do need to tilt for it. It only reads as wrong if you interpret the acceptance angle as a compass window, which is how it behaves on a vertical facade but not here.

If you want to restrict tracking anyway, three knobs work:

  • Minimum elevation β€” usually the right one. The arc widens exactly when the sun is low, so an elevation floor cuts off the early-morning and late-evening tracking that most people are reacting to when they notice this.
  • A blind spot wedge β€” blind spots on a tilted-plane cover are evaluated in the same roof-plane frame as the acceptance angle, so set the wedge against the projected angle in the diagnostic trace rather than against a raw compass bearing. Setting it from compass headings will not land where you expect.
  • Roof pitch β€” if your roof genuinely is pitched, entering the real value tightens the arc. As pitch approaches 90Β° the behavior converges on a vertical blind's compass-like window.

Sun on either side of the axis

A flat roof is lit all day, and the sun crosses from one side of the slat rotation axis to the other as it moves across the sky. A vertical blind never has this problem β€” it only sees the sun on its front hemisphere β€” but a roof does, and the slats have to tilt toward whichever side the sun is on to block it.

The engine handles both sides. When the sun is on the facing side of the axis it realizes the cut-off angle as ΞΈ; once the sun crosses to the far side it realizes it as 180Β° βˆ’ ΞΈ β€” the flipped slat face, past the horizontal (90Β°) turnover. This matters most in the evening: at a mid-latitude site in summer the sun can sit on the far side of the axis for hours of prime terrace time, and without the flip the slats would tilt the wrong way and let that sun straight through.

Your tilt mode and maximum slat angle decide how much of the far side the hardware can actually serve:

  • Mode2 (0–180Β°) β€” the drive can rotate through the turnover, so it reaches the flipped face and blocks sun on both sides.
  • Mode1 (0–90Β°) β€” the drive stops at horizontal and cannot reach the far branch, so it falls back to fully open on that side (it simply can't shade it).
  • A drive with an in-between range (e.g. 0–160Β°) reaches most of the far side; set Maximum Slat Angle to its real travel so angles beyond it are clamped correctly.

At a roof pitch of 90Β° (a vertical installation) the far side is never lit β€” the angle-of-incidence gate excludes it β€” so the flip never triggers and the behavior is identical to a vertical venetian blind.

The diagnostic trace exposes which branch is active (louvered_far_side_branch) alongside the computed slat angle, so you can confirm the choice against your encoder feedback.


What it supports

Capability Louvered roof
Slat tilt optimization βœ…
Tilt modes (0–90Β° / 0–180Β°) βœ…
Min / max tilt clamps + position calibration βœ…
Return to default when disabled βœ…
Roof pitch (horizontal β†’ pitched) βœ…
Position (open/close) tracking ❌ β€” tilt-only
Glare zones ❌

A louvered roof requires a cover that advertises set_cover_tilt_position; if none of the bound covers support it the integration warns during setup. The full decision pipeline β€” weather safety, manual override, motion, climate, custom positions, and defaults β€” applies unchanged, since the slat angle flows through the standard tilt axis.


Tips

  • Start flat. For a standard bioclimatic pergola with a level roof, leave Roof Pitch at 0Β°. You only need to change it if the whole roof plane is tilted.
  • Use Mode2 if your slats rotate past horizontal. Most pergola drives travel through the vertical turnover (Mode2, 0–180Β°) so they can shade the sun on both sides of the axis. A drive that only rotates a quarter turn is Mode1 (0–90Β°) and can only shade the facing side.
  • Set Maximum Slat Angle for anything other than 90Β° or 180Β°. If your drive's real travel is, say, 0–160Β°, enter 160 rather than leaving it at 0. Otherwise the tilt percentage is scaled against the mode's 90Β°/180Β° and lands on the wrong physical angle. Leave it at 0 when the drive genuinely matches the mode.
  • Slat depth and spacing matter most for the cut-off point. They set how far the slats must close before a ray is fully blocked β€” measure them rather than guessing.
  • Encoder feedback helps verify. If your controller reports current_tilt_position reliably, compare the commanded slat angle in the diagnostic trace β€” including the louvered_far_side_branch flag β€” against the physical angle to confirm the geometry for your latitude, on both the morning and evening sides of the axis.

Related

  • Cover Types β€” the full cover-type comparison
  • Tilt β€” the shared slat geometry and tilt-mode calibration
  • Roof / Skylight Window β€” the tilted-plane sun geometry this type reuses
  • Sun Tracking β€” azimuth, sun acceptance angle, and elevation limits
  • Diagnostic Sensors β€” the solar_calculation trace exposes the roof-plane and slat-angle intermediates

🏠 Home Β· ✨ Features Β· πŸ“° What's New

Buy Me A Coffee

πŸš€ Getting Started

🧠 Core Concepts

πŸ“ Cover Types

βš™οΈ Configuration

πŸ”Œ Entities & Services

πŸ› οΈ Operations

πŸ”§ Advanced Use Cases

🎨 Dashboard

πŸ§ͺ Testing & Simulation

πŸ“š Reference

πŸ‘©β€πŸ’» For Developers

Clone this wiki locally