Skip to content

Configuration Sun Tracking

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

Sun Tracking

Sun acceptance angle and Blind Spot diagram

Renamed in v2026.8.0: what earlier releases called Field of View is now Sun acceptance angle. It names the arc sunlight is accepted from, rather than something an observer looks out through, which is what the old name kept implying. The rename is display-only β€” the option keys are still fov_left and fov_right, service fields and diagnostics attributes are unchanged, and nothing in your config or automations breaks.

Where these fields live: Window Azimuth, Sun acceptance angle, and Shaded Distance moved from the Sun Tracking step to the Geometry step in v2.28+ (#778). They're documented here because they shape sun tracking, but you'll configure them on the Geometry step (see your cover type's configuration page). The elevation limits, blind-spot/glare toggles, the sun tracking gate, and Minimize Movements options below remain on the Sun Tracking step.

Variable Default Range Description
Window Azimuth 180 0–359 (Geometry step) Compass direction the window faces. Discoverable via Open Street Map Compass
Sun acceptance angle β€” left 90 0–180 (Geometry step) Unobstructed arc from window centre to the left, in degrees
Sun acceptance angle β€” right 90 0–180 (Geometry step) Unobstructed arc from window centre to the right, in degrees
Minimal Elevation None 0–90 Sun must be above this angle before tracking activates
Maximum Elevation None 0–90 Sun must be below this angle for tracking to activate
Enable Blind Spot False Enables the Blind Spot step: define an angular range where an obstruction blocks direct sun
Enable Glare Zones False Enables the Glare Zones step (vertical blinds only): protect named floor areas from direct sun
Sun tracking gate sensors none Optional binary sensors that decide whether to sun-track right now β€” see Sun tracking gate below
Sun tracking gate template (optional) none A Jinja template; truthy = track
Sun tracking gate template logic OR How the template combines with the sensors β€” OR or AND
Minimize Movements False Opt-in. Snaps sun tracking to a few fixed coverage levels instead of following the sun continuously β€” far fewer motor movements. See Minimize Movements below
Maximum Coverage Steps 1 1–10 Only used when Minimize Movements is on. How many distinct positions the cover may use to reach full coverage. 1 = jump straight to full coverage

How to Measure the Sun Acceptance Angle

The sun acceptance angle defines the horizontal angular range from which the integration accepts direct sun. Outside this range the sun is treated as "not in front of the window" and the cover returns to the default position.

Measurement steps:

  1. Stand at the centre of the window, inside your room, looking straight out (perpendicular to the wall: this is the azimuth direction).
  2. Look left: find the furthest point where direct sunlight can enter through the window without being blocked by a wall, pillar, overhang, or neighbouring building. Estimate the angle between straight-ahead and that point. That is the left acceptance angle.
  3. Repeat looking right for the right acceptance angle.
  4. A smartphone protractor app (or a simple protractor held flat) makes this easier to measure accurately.

Recommended values by situation:

Situation Left / right angle
Standard window, no obstructions 45Β° each side
Wide window or sliding glass door 60–75Β° each side
Narrow window or recessed into a thick wall 30Β° each side
Protecting furniture or artwork from any direct sun Measure actual unobstructed angle (see below)

Protecting fragile furniture or artwork: The default 90Β° per side (180Β° total) is intentionally wide to work for most installations. However, if your goal is to prevent any direct sunlight from reaching a specific area, use the actual unobstructed angle your window allows, not the default. Measure from the window centre to the edge of whichever wall, column, or frame first blocks direct sun on each side. A tighter angle means the blind engages as soon as direct sun could enter, and stays in the default (typically more closed) position at all other times.

Example: A south-facing window set into a 60 cm thick wall may only allow direct sun within Β±40Β° of perpendicular. Setting both acceptance angles to 40Β° ensures the blind is always active during those hours, rather than the wider 90Β° default which would leave gaps.

Generate the Sun Acceptance Angle from Measurements

If you would rather not estimate the angles by eye, the Geometry step has a Generate sun acceptance angle from measurements button that computes them from two physical measurements:

  • Window width β€” the visible glass width.
  • Reveal depth β€” how far the glass is recessed from the outer wall face (the depth of the reveal). A flush window has a reveal depth of 0, which yields the full 90Β° per side.

Tick the button and submit. The integration fills the left and right acceptance angles from the geometry β€” angle = atan(width / depth) β€” then clears the button so you can fine-tune either angle independently. The sliders stay visible and editable throughout, so the generated values are a starting point, not a lock.

A deeper reveal (or a narrower window) blocks direct sun sooner on each side and produces a tighter angle; a wide, shallow window produces a wider one.

Upgrading from a version before v2.28.0? The earlier formula under-reported the angle by roughly half. Re-open the Geometry step for any cover you configured from measurements and confirm the acceptance angles look right after upgrading.

Sun tracking gate

Added in v2026.8.0. Sun tracking is normally either on or off for a cover. The sun tracking gate lets binary sensors or a Jinja template decide when it applies β€” track only while your air conditioning is calling for cooling, only while someone is home, only on weekdays.

Configured on the Sun Tracking step:

Field Default Meaning
Sun tracking gate sensors none One or more binary sensors (or input_boolean / switch / schedule). on = track. Any one being on is enough.
Sun tracking gate template (optional) none A Jinja template; truthy = track.
Sun tracking gate template logic OR How the template combines with the sensors β€” OR (either says track) or AND (both must).

Leave all three unset β€” the default β€” and nothing changes: the cover tracks whenever Enable Sun Tracking is on. The gate only ever narrows that.

What happens while the gate is closed: the solar handler declines, and the decision chain simply carries on to whatever sits below it β€” normally the default position. The cover is not forced anywhere, and the operating window stays open.

Example: track only while the AC is cooling

{{ is_state('climate.upstairs_zone', 'cool') }}

Use the thermostat's mode (cool) rather than its hvac_action (cooling). Mode is stable and changes seasonally; hvac_action follows the compressor, which cycles every few minutes and would move your covers with it.

How this differs from the daytime gate

Both take sensors plus a template, but they answer different questions and have different blast radii.

Sun tracking gate Daytime gate
Question "Should the cover sun-track right now?" "Is it day or night?"
When closed Solar positioning is skipped; the chain falls through The operating window closes and the sunset position is applied
Also affects Glare zones drop their sun-tracking-only limits (below) Climate mode, glare zones, cloud suppression and motion timeout all stop too

Reach for the daytime gate when you want the close to follow real darkness. Reach for the sun tracking gate when you want everything else to keep working and only the sun-following to pause.

What it does and doesn't touch

Unaffected while the gate is closed: climate mode, motion timeout, manual override, custom position slots, weather safety, and the operating window.

One thing does change: glare zones keep running, but they drop their sun-tracking-only limits β€” Min Position During Sun Tracking and the sun only position/tilt clamps. Those exist to shape the cover while it is following the sun, so with tracking paused they no longer apply and the glare position is weighed against the default instead. If you use glare zones together with a gate, this is the behaviour to expect.

Sensor-outage resilience

The gate never fails closed. If every configured sensor (and the template, when used) goes unavailable or unknown at once, it holds its last-known verdict for two minutes so a brief dropout β€” a Zigbee blip, a restart of the source integration β€” doesn't disturb the cover. If nothing recovers inside that window, the gate gives up its opinion and sun tracking resumes, exactly as if no gate were configured.

That direction is deliberate: an unavailable thermostat should never silently leave a cover un-shaded on a hot afternoon.

Reading the decision trace

When the gate stops solar, the solar handler still appears in the decision trace with a reason, rather than vanishing from it β€” so you can tell "the gate is closed" apart from "sun tracking is turned off" and from "the sun isn't on this window". The Panel card and the diagnostic sensors show the same reason.

Building-wide gating

"Is the AC running?" is usually one answer for the whole house, not a per-window measurement β€” so the gate is Building Profile-owned. Set it once on the profile and every linked cover inherits it; a cover that needs its own answer overrides it locally, like any other shared sensor.


Minimize Movements

By default, sun tracking repositions the cover continuously: as the sun drifts, the calculated position changes by a percent or two, and the cover nudges to follow it. Over a day that adds up to a lot of small motor movements. Some motors are noisy, some are slow, and some users simply prefer the cover to settle and stay put.

Minimize Movements (opt-in, off by default) trades fine-grained tracking for far fewer movements. Instead of following the sun continuously, it snaps the tracked position to one of a small number of fixed coverage levels. Maximum Coverage Steps (1–10) sets how many levels there are between fully open and full coverage.

The quantization always rounds toward more coverage, never less β€” so this setting can only ever block more direct sun than plain tracking would, never less. You give up some natural light in exchange for fewer movements; you never give up sun protection.

What the steps mean

  • 1 step (the default when enabled): The moment the sun enters the sun acceptance angle, the cover moves straight to full coverage and holds there until the sun leaves. This is the fewest possible movements β€” one move in, one move out.
  • 2 steps: The cover uses at most two stops on its way to full coverage β€” roughly half-closed, then fully closed β€” as the required coverage grows through the day.
  • 3 steps: Three stops (about one third, two thirds, full), and so on up to 10.

Because the value is stable across many sun positions, the integration's normal delta position threshold suppresses the in-between commands automatically β€” that is what produces the reduction in movements.

Cover-type behaviour

"Full coverage" means whatever fully blocks direct sun for your cover:

  • Vertical blinds / roller shutters β€” fully lowered.
  • Tilt / venetian slats β€” slats fully closed. For venetian covers, both the carriage position and the slat tilt are quantized, so a 1-step setting drives the carriage closed and the slats closed.
  • Awnings β€” fully extended (an extended awning is what blocks the sun).

Position Forecast

The forecast strip on the companion Lovelace card uses the same quantization, so it shows the same stepped positions the cover will actually be commanded to β€” not a smooth curve the cover never follows.

When to use it

Reach for this when motor noise, motor wear, or visual fussiness matters more than squeezing out maximum daylight β€” for example a bedroom blind you would rather have simply close when the sun hits it, or a motor that is slow or loud enough that frequent small adjustments are annoying. Leave it off if you want the cover to admit as much natural light as possible while still blocking direct sun.

🏠 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