-
Notifications
You must be signed in to change notification settings - Fork 14
Configuration Position
| Variable | Default | Range | Description |
|---|---|---|---|
| Default Position | 60 | 0β100 | Cover position when sun is not in front of the window |
| Sunset Position | 0 | 0β100 | Cover position from sunset to sunrise |
| Use My Preset at Sunset | False | Send the Somfy My position command instead of the Sunset Position value | |
| My Position Value | None | 1β99 | Somfy My preset position (%). Used by the sunset toggle and by any Custom Position slot with "Use My Preset" enabled. See My Position Support. |
| Offset Sunset Time | 0 | -120β120 | Additional minutes before (negative) or after (positive) sunset |
| Offset Sunrise Time | 0 | -120β120 | Additional minutes before (negative) or after (positive) sunrise |
| Sunset Time Entity | none | sensor / input_datetime | Optional entity whose state is a datetime. When set, replaces the astral-computed sunset as the window boundary. See Elevation-defined sunset/sunrise below. |
| Sunrise Time Entity | none | sensor / input_datetime | Optional entity whose state is a datetime. When set, replaces the astral-computed sunrise as the morning window-close boundary. See Elevation-defined sunset/sunrise below. |
| Inverse State | False | Inverts position logic: 0% = fully open, 100% = fully closed. Use for covers that report position backwards. Cannot be combined with Position Calibration. If the card still displays the cover inverted, see Dashboard Cards. | |
| Open/Close Threshold | 50 | 1β99 | For covers that only support open/close (no position control): positions below this value send a "close" command; at or above send "open". |
| Enable Position Calibration | False | Enables the Position Calibration step for non-linear or range-limited covers. See Position Calibration below. |
By default, the sunset/sunrise window is driven by astronomical sunset/sunrise from Home Assistant's sun integration, plus the optional fixed Offset Sunset Time / Offset Sunrise Time minute offsets. Those offsets are season-invariant: a +30-minute offset is 30 minutes after astronomical sunset whether it's June or December.
If you want the window to track an elevation-defined sunset/sunrise (for example, "sunset at -4Β° elevation" β true dusk after civil twilight) so it adapts naturally across seasons, point the Sunset Time Entity and/or Sunrise Time Entity fields at a sensor or input_datetime whose state is an ISO-8601 datetime.
The Sun2 integration is the typical source β it exposes per-elevation sunset/sunrise datetime sensors out of the box.
How it interacts with the existing options:
- When the entity is set and its state parses as a datetime, that value replaces the astral sunset/sunrise inside the position calculation.
-
Offset Sunset Time/Offset Sunrise Timeare additive on top of the entity-provided value. Use them to fine-tune (e.g., entity says 21:14, offset +15 β window boundary at 21:29). - If the entity is unavailable, unknown, or its state can't be parsed as a datetime, the integration silently falls back to astral β so removing the entity from your system or having it temporarily unavailable doesn't break automation.
- Either field can be set independently β you can override sunset only, sunrise only, or both.
Example β Sun2 civil dusk:
- In the Sun2 integration, add a sun sensor at elevation
-4Β°(civil dusk) and-4Β°again on the rising side (or0Β°for actual sunrise β whatever fits your room). - Sun2 creates
sensor.sun_next_setting_at_minus_4andsensor.sun_next_rising_at_minus_4(names vary by Sun2 config). - In ACP's Position step, set Sunset Time Entity to that sensor; same for the sunrise side.
- Leave
Offset Sunset Timeat 0 (or add a small fixed offset on top).
| Variable | Default | Range | Description |
|---|---|---|---|
| Minimum Position | 0 | 0β99 | Lowest position the cover will move to automatically |
| Maximum Position | 100 | 1β100 | Highest position the cover will move to automatically |
| Apply limits only during sun tracking | False | When ON: min and max only clamp the solar handler. Climate, cloud suppression, custom positions, and default state can go outside the limits. |
v4 note: In v3 there were two independent toggles (
enable_min_positionandenable_max_position). They were merged into a singleapply_limits_during_tracking_onlytoggle on upgrade β the migration sets it to True if either of the v3 booleans was True (the more conservative interpretation).
Toggle OFF (default, recommended): the limits apply to all handler outputs: solar tracking, climate mode, cloud suppression, motion timeout, custom positions, the default state, everything. The cover never goes below the configured minimum or above the maximum.
Toggle ON (advanced): the limits apply only to the solar handler (priority 40). Climate mode, cloud suppression, motion timeout, custom positions, and the default state see the full 0β100% range.
β οΈ Footgun: With the toggle ON, cloud suppression, climate strategies (winter open to 100%, summer close to 0%), or a custom-position slot can move the cover outside the configured min/max range. If you configured a minimum position to keep covers partially open for privacy, that guarantee only holds during active sun tracking.
Note: The configured sunset position is always exempt from min/max limits regardless of the toggle; it is sent as-is so covers can fully close (or open) at night even if a minimum is set.
Common use cases (with the toggle OFF):
- Minimum Position (e.g., 20%): Prevents cover from fully closing, maintains some natural light, protects from jamming at the bottom
- Maximum Position (e.g., 80%): Prevents cover from fully opening, maintains some privacy/shade, protects from jamming at the top
Position Calibration maps a calculated position (input), what the integration works out from the sun angle, to an actual position sent to the cover (output). Use this when your cover doesn't respond correctly to standard 0β100% commands.
Direction always flows Input β Output. The integration calculates a desired position (input); your mapping transforms it into the command actually sent to the cover (output). Getting this backwards produces a mirrored curve; if your cover closes when it should open, swap the two lists.
Enable calibration with the Enable Position Calibration toggle on the Position page, then configure it in the Position Calibration step.
When to use:
- Covers that don't respond across the full 0β100% range
- Covers requiring non-linear position mapping
- Covers that need inverted operation (alternative to
inverse_state)
Simple Mode (2-point calibration):
Set Calibration input 0% maps to (output %) and Calibration input 100% maps to (output %) to define the output range for the two extremes. Everything in between is interpolated linearly.
| Use Case | 0% maps to | 100% maps to | Result |
|---|---|---|---|
| Limited Range Cover | 10% | 90% | 0% calculated β 10% sent; 100% calculated β 90% sent |
| Inverted Operation | 100% | 0% | 0% calculated β 100% sent; 100% calculated β 0% sent |
| Offset Range | 20% | 80% | 0% calculated β 20% sent; 100% calculated β 80% sent |
Advanced Mode (Point Lists):
Define multiple control points for non-linear curves. The integration linearly interpolates between consecutive points.
-
Calculated positions (input): the positions the integration calculates (what goes in). Example:
[0, 25, 50, 75, 100] -
Actual positions to send (output): the commands sent to the cover (what comes out). Example:
[0, 15, 35, 60, 100]
Both lists must have the same number of entries. Values in the input list must be in ascending order.
Example: Aggressive Closing:
Calculated positions (input): [0, 25, 50, 75, 100]
Actual positions to send (output): [0, 15, 35, 60, 100]
This mapping causes the cover to close more aggressively:
- 0% calculated β 0% sent (no change)
- 25% calculated β 15% sent (closes more)
- 50% calculated β 35% sent (closes more)
- 75% calculated β 60% sent (closes more)
- 100% calculated β 100% sent (no change)
Example: Inverted with Custom Curve:
Calculated positions (input): [0, 25, 50, 75, 100]
Actual positions to send (output): [100, 75, 50, 25, 0]
Important Notes:
- Calibration is applied AFTER position calculation and BEFORE sending to the cover
- Works with both position-capable and open/close-only covers
- Cannot be used together with
inverse_state(choose one or the other) - List mode requires at least 2 points; both lists must have the same length
π Home Β· β¨ Features Β· π° What's New
π Getting Started
- Installation
- Migrating from Custom Repository
- Migrating from Adaptive Cover
- First-Time Setup
- Cover Types
π§ Core Concepts
π Cover Types
βοΈ Configuration
- Sun Tracking
- Position
- Glare Zones
- Automation
- Custom Position
- Force Override
- Weather Safety
- Climate
- Blindspot
- Summary Screen
- Debug & Diagnostics
π Entities & Services
- Entities
- Proxy Cover Entity
- Position Verification
- My Position Support (Somfy RTS)
- Runtime Configuration Services
π οΈ Operations
π§ Advanced Use Cases
- Dynamic Temperature Thresholds
- Dynamic Tracking Window
- Bedroom Sleep Mode
- Handling Variable Cloud Cover
- Venetian Tilt-Only on Overcast Days
π¨ Dashboard
π§ͺ Testing & Simulation
π Reference
π©βπ» For Developers