Cover Control Automation (CCA) - Intelligent Automation for Blinds, Awnings & Shutters | Calendar, Sun Shading, Force Functions

Your opening window is effectively 06:00–07:00 on all days: time_up_early isn’t set in your config, so its default 06:00 applies, and without a workday sensor the *_non_workday times are never used. In summer the sun is above 10° elevation before 06:00, so the current version would open the cover at 06:00 sharp (the early-time trigger re-checks the elevation live). Opening only at 07:00 means the 06:00 run was swallowed — that matches bugs fixed in recent releases (e.g. 2026.07.19: the resume check after a restart could consume the first regular event of the day, so the cover only opened at the “latest” fallback time).

Please update to the current blueprint version first. If it still happens afterwards: you already have the logbook enabled — check the automation trace around 06:00 and post which trigger.id fired and what environment_allows_opening evaluated to.

One more note: with sun_elevation_up: 10 and a 06:00–07:00 window, the elevation can practically never delay your opening in summer (threshold is crossed before the window starts) — and in winter it’s the 07:00 guarantee opening that fires by design. If you want the elevation to actually control the opening moment, widen the window (e.g. time_up_late: 08:30).

Why your cover closes

This is expected blueprint behavior: when the contact goes to off, lockout protection
ends and CCA returns the cover to its background state — in your case bas: "cls"
(closed). Lockout only prevents closing while the window is open. What should keep the
cover up is the manual override (man: 1) — but it doesn’t, for three reasons:

  1. Missing option: the “window closed → return to background state” branch is gated
    by ignore_ventilation_after_manual, not by ignore_closing_after_manual. Add it:

    ignore_after_manual_config:
      - ignore_closing_after_manual
      - ignore_shading_after_manual
      - ignore_ventilation_after_manual   # ← new
    
  2. Your manual open is never registered: your helper shows man: 0 and an old
    ts.man, and it’s missing the "d" field — you’re on an older blueprint version
    affected by issue #614 (manual moves shortly after a helper write are swallowed).
    Update the blueprint. Once detected, a manual full open also sets bas: "opn",
    so the cover stays up after the window closes.

  3. reset_override_timeout: 120: the override expires after 2 h anyway — close the
    door later than that and the protection is gone. Increase it or use fixed-time reset.

bas: "cls" itself is correct: your auto_up_condition requires abwesenheit: off, so
with absence active the morning opening is skipped and the base state stays closed.

1 Like

CCA Update — What’s new since 2026.07.05 (versions 2026.07.12 … 2026.07.25 V2)

This is the short version — the full changelog with all details on every single item is here: :open_book: Complete Changelog

:warning: Breaking change (2026.07.12)

Installations created before ~2026.05 must be re-saved once with the :timer_clock: Time Control” checkbox enabled — otherwise time/calendar opening and closing stops firing entirely (pure time setups: covers stop moving; hybrid setups with brightness/sun: covers open too early and close too late) (#595, #544). The :check_mark: Check Configuration run and the online validator now detect and explain this.

:sparkles: New features

  • :dashing_away: Full Ventilation Position: new optional position for a fully opened window. For setups where “open” does not mean “cover fully up” (e.g. venetian blinds on a terrace door whose everyday Open Position is blind down, slats open): opening the door now drives the blind all the way up, closing it returns to the normal state. Left empty, nothing changes (2026.07.25 V2)
  • :level_slider: Multi-instance support: several CCA automations can now safely share one cover (summer/winter, home/away, a holiday instance, …) — switched via an input_boolean, a shared dropdown helper or a calendar, with a clean hand-over between instances. Bonus: pointed at an always-on input_boolean, the switch doubles as a “re-sync now” button (2026.07.25)
  • :counterclockwise_arrows_button: Recovery is now a three-way choice: never (default) / only after a device or integration outage / always (also after a restart or save) — plus a major rework: missed openings/closings, sun shading, force functions and override resets are now caught up correctly, and pure status clean-ups run in any case without moving the cover (2026.07.12 – 2026.07.13 V6)
  • Alternate sun shading position with its own switch entity (2026.07.12, #580)
  • :puzzle_piece: Custom condition sensor for sun shading — bind your own binary_sensor/input_boolean in all four START/END condition lists (2026.07.13 V2, #531)
  • New tilt wait mode “:clockwise_vertical_arrows: Tilt First, Then Position (Somfy J4 IO)” for motors that restore the slat position after every positioning run (2026.07.13 V3, refined 2026.07.25, #355, #612)
  • Tilt position tolerance: on tilt covers, states sharing the same position (closed/shading/ventilate) are now told apart by their tilt angle (2026.07.05, #558)
  • :open_book: New CCA Handbook: the complete configuration reference for every input, in 17 chapters (2026.07.12 V2)

:bug: Most important fixes

  • Switching off a force function (e.g. Force Close as an “away mode”) could drive the cover back into a sun shading that had already ended — the shading end conditions are now re-evaluated at that moment (2026.07.25 V2)
  • A sun shading could freeze for the whole day when the waiting period expired while the cover already rested at the shading position (#632)
  • Manual movements were silently ignored after pure bookkeeping runs or during drive delays — the next automatic movement then drove over your hand-set position (#614). :light_bulb: Make sure your status helper has Maximum length 254 — Check Configuration will warn you otherwise
  • Tilt covers: a tilted window could leave the slats at the open tilt instead of the ventilate tilt (#615, #608)
  • Resident-driven setups: a tilted window kept the cover at the ventilation position when the resident left instead of opening it (#616)
  • An unreachable battery window contact could park the cover at the ventilation position for good (#622)
  • Re-enabling the automation did not start the promised catch-up on current HA versions (#617)
  • Disabled or deleted entities blocked every run silently or froze force functions forever — now reported by name in the log (2026.07.13 V6)
  • Force functions are no longer cancelled or stuck when their entity drops out and returns (2026.07.13 V4)
  • Calendar control: two events with the same start time are now both handled, and event titles are matched exactly instead of as a substring (#568, #536)
  • The lockout protection could be bypassed at opening time while shading was due with an open window (2026.07.05 V2)
  • Internal rework (“transition architecture”): every execution path now ends with a guaranteed status write, eliminating a whole class of “stuck forever” bugs — and the blueprint shrank by ~950 lines (2026.07.12 V2/V3)
  • …plus many more recovery, ventilation, force-pause and validator fixes — see the full changelog

Hi,

thanks for the excellent report — the trace details (helper state, sun azimuth/elevation at the moment you disabled Force Close) made this easy to pin down. You found a real gap, and it’s fixed in the upcoming release (2026.07.25 V2).

What happened:

While a force function is active, it outranks everything else in CCA’s priority cascade — including the shading-end handling. So when the sun left the configured azimuth/elevation range during your Force Close period, the end of the shading could not be processed and the helper kept shd: 1. When you disabled Force Close, the recovery logic restored what the helper said was the background state: the (long expired) shading position.

What changes:

The force-disable recovery now re-evaluates the shading end conditions at the exact moment the force is switched off:

  • End conditions met (your case: sun at 1° elevation, 301° azimuth — well outside the shading range) → the stored shading is cleared and the cover returns to the open position (or closed/ventilation, whatever the schedule and window contacts say at that moment).
  • End conditions still met for shading (sun still on the facade) → the shading position is restored, exactly as before.
  • No end conditions configured → nothing changes, the shading is restored as before.

Forecast-based end conditions are evaluated against freshly loaded forecast data as well.

So your “away mode” (Force Close + auto_recover_after_force) will behave as you expected: leave, covers close; return in the evening, covers open — no detour via the shading position.

Until the release is out there’s no clean workaround, I’m afraid — the nightly 23:55 reset clears the stale shading state, so only same-day returns are affected.

Thanks again for the report! :folded_hands:

Hi Tincup81,

good news: you didn’t miss anything — what you describe simply wasn’t possible until now. The lockout protection always drove the cover to the :upwards_button: Open Position, and since your everyday “open” is 0 % (blind down, slats open), opening the terrace door did effectively nothing. “Misusing” the partial ventilation position doesn’t work either, as you found out — it only applies to the tilted contact.

Your request made it into today’s release: CCA 2026.07.25 V2 adds a new optional input :dashing_away: Full Ventilation Position in the Cover Position Settings section.

How it works: when the full open window contact triggers, the cover now drives to this position instead of the Open Position — with the full lockout protection as usual (no closing, no sun shading while the door is open). When the door is closed again, the cover returns to whatever the schedule says (your normal open/close/shading state). All lockout paths honor the new position: the contact reaction itself, the morning opening and the shading end while the door is open, presence changes, force recovery and the restart catch-up.

For your setup:

  • :upwards_button: Open Position: 0 (as you have it — blind down, slats open)
  • :dashing_away: Full Ventilation Position: 100
  • :door: Contact Sensor For Open Window (Full Ventilation): your door sensor

That’s it — open the door and the blind drives all the way up. On tilt covers the slats follow the :upwards_button: Open Tilt Position, which at 100 % travel doesn’t matter physically anyway.

If you leave the new input empty, nothing changes — the lockout keeps using the Open Position as before, so existing configurations are unaffected.

Just re-import the blueprint to update. More details in the handbook: CCA Online Tools | Cover Control Automation — Tools & Documentation

2 Likes

That’s very strange—two of my roller blinds just closed with the new version, while the others, according to the trace, are stuck at “Shading Start Pending: Continue waiting.”

Currently, the helper shows: {“bas”:“opn”,“shd”:0,“pnd”:“beg”,“win”:“cls”,“frc”:“non”,“res”:0,“man”:1,“ts”:{“opn”:1785037567,“cls”:1785009605, “shd”:1784978162,“due”:1785049140,“arm”:1785047312,“man”:1785037567},“v”:6,“t”:1785048840,“d”:0}

Trace (valid 90h)

alias: CCA Büro Mike
description: ""
use_blueprint:
  path: hvorragend/cover_control_automation.yaml
  input:
    blind: cover.shellyplus2pm_3ce90e2f49dc
    auto_options:
      - auto_up_enabled
      - auto_down_enabled
      - auto_shading_enabled
      - time_control_enabled
    cover_status_options: cover_helper_enabled
    cover_status_helper: input_text.cca_helper_buro_mike
    close_position: 31
    ventilate_position: 31
    shading_position: 35
    position_tolerance: 2
    time_up_early: "06:30:00"
    time_up_late: "06:30:00"
    time_down_early: "22:00:00"
    time_down_early_non_workday: "22:00:00"
    time_down_late: "22:00:00"
    workday_sensor: binary_sensor.workday_sensor
    brightness_up: 180
    sun_elevation_up: 4
    sun_elevation_down: -1
    contact_window_opened: binary_sensor.senoro_fenster_buro_mike
    shading_azimuth_start: 76
    shading_azimuth_end: 176
    shading_brightness_sensor: sensor.helligkeit_pv_string_1
    shading_sun_brightness_start: 1600
    shading_sun_brightness_end: 500
    shading_temperatur_sensor2: sensor.garten_temperature
    shading_min_temperatur2: 15
    shading_forecast_sensor: weather.nuernberg
    shading_forecast_temp: 19
    shading_config:
      - shading_compare_forecast_with_sensor2
    shading_conditions_start_and:
      - cond_azimuth
      - cond_elevation
      - cond_brightness
      - cond_temp2
    shading_conditions_end_or:
      - cond_azimuth
      - cond_elevation
      - cond_brightness
      - cond_temp2
    shading_end_immediate_by_sun_position: true
    shading_temperatur_sensor1: sensor.buro_mike_temperature
    shading_min_temperatur1: 21.5
    default_sun_sensor: sun.sun
    shading_waitingtime_end: 600
    ignore_after_manual_config:
      - ignore_shading_after_manual
    reset_override_config: []
    reset_override_timeout: 60
    time_down_late_non_workday: "22:00:00"
    time_up_late_non_workday: "07:00:00"

Thank you so much for adding this feature. finally, I will transfer all my personal automations to CCA now :blush:. Appreciate your work!

1 Like

Good news: nothing is stuck — the trace even tells you what it’s waiting for. The retry runs contain this in log_extra:

blocked by=manual_override; elapsed=1228s/7200s; next_retry_in=300s

Your helper shows "man":1 with ts.man = 05:46:07 this morning — at that moment the cover was moved to the open position outside of CCA (wall button, app, another automation, or by hand; your Sunday opening window doesn’t start before 07:00, so it wasn’t CCA). CCA recorded that as a manual override.

Since you have “Ignore sun shading after manual position change” enabled, shading is deliberately blocked on this cover. The pending keeps retrying every 300 s and will abort after the 2-hour retry budget. Your other blinds closed because their helpers don’t have a manual override recorded ("man":0).

Important: you have no override reset configured (reset_override_config: []) — so once a manual move is detected, the override sticks until the nightly 23:55 reset. If you want shading to resume automatically after a manual move, configure an override reset (e.g. reset after a timeout or at a fixed time). Or, if a manual opening shouldn’t block shading at all, disable “Ignore sun shading after manual position change”.

To unblock it right now: clear the override (e.g. edit the helper and set "man":0) — the next retry (within 5 minutes) will then execute the shading.

Worth checking on your side: what moved the blind at 05:46 this morning?

1 Like

Oh man, if you’re going to mess around with the settings, you really should pay close attention. I intentionally enabled the “Ignore” feature but limited it to 60 minutes. At least, that’s what I thought—but I forgot to check the box.

Now it looks like this:

ignore_after_manual_config:
      - ignore_shading_after_manual
    reset_override_config:
      - reset_timeout
    reset_override_timeout: 60

This morning at 5:46, the roller shade was opened using the button.
Thanks so much for your help!

1 Like

@Herr.Vorragend thanks for implementing:
New tilt wait mode “:clockwise_vertical_arrows: Tilt First, Then Position (Somfy J4 IO)”, that is great!
May I ask you what Default Tilt Delay you use for your Somfy System?
I have currently set it to 5s while it was the time of drive time before when using fixed delay and I wonder if that is fine?

I don’t have a Somfy system. That was a feature request on GitHub that I implemented.

1 Like

Hi

First off, thank you for this amazing blueprint! It works brilliantly and covers so many edge cases.

I have a feature idea / question regarding the Sun Shading Lux Threshold:

Currently, the Lux threshold is set as a static value. However, in practice, the glare and heat entry heavily depend on the sun’s elevation angle:

  • Low Sun (Morning / Late Afternoon): Even a lower Lux level (e.g., 4,000–6,000 Lux) causes heavy glare because the sun shines straight under the window frame.
  • High Sun (Midday): Higher Lux levels (e.g., 12,000+ Lux) are needed so shading isn’t triggered prematurely by high-altitude light/clouds.

Since CCA already handles sun.sun elevation so elegantly for dynamic tilt control (shading_tilt_elevation_1/2/3), I was wondering if scaling the Lux threshold dynamically by sun elevation (or having 2-3 elevation steps for Lux) is something that could be considered for a future update?

Or is there already a recommended way/workaround within CCA to achieve this?

Feature Request: Konfigurierbare Priorität von Beschattung und Lüftung

Hallo Herr.Vorragend,

ich verwende CCA in der Version 2026.07.27 für die Rollladensteuerung meines Büros.

Aktuell hat bei einem gekippten Fenster die Lüftungsfunktion Vorrang vor der automatischen Beschattung. Dadurch fährt beziehungsweise verbleibt der Rollladen in der Lüftungsposition, obwohl alle Bedingungen für die Beschattung erfüllt sind.

Für meinen Anwendungsfall soll die Beschattung Vorrang vor der Lüftungsposition haben. Das Fenster soll dabei weiterhin gekippt bleiben können. Bei einem vollständig geöffneten Fenster soll der bestehende Lockout/Sicherheitsmechanismus weiterhin höchste Priorität haben.

Wäre es möglich, eine konfigurierbare Option einzubauen, beispielsweise:

  • Priorität bei gekipptem Fenster
    • Lüftung bevorzugen – aktuelles Standardverhalten
    • Beschattung bevorzugen

Gewünschtes Verhalten bei „Beschattung bevorzugen“:

  • Fenster geschlossen → normale Beschattungssteuerung
  • Fenster gekippt und Beschattung inaktiv → Lüftungsposition
  • Fenster gekippt und Beschattungsbedingungen erfüllt → Beschattungsposition
  • Beschattung endet, Fenster weiterhin gekippt → zurück zur Lüftungsposition
  • Fenster vollständig geöffnet → weiterhin Lockout beziehungsweise vollständig öffnen
  • Das bisherige Verhalten sollte aus Kompatibilitätsgründen die Standardeinstellung bleiben

Aktuell verwende ich unter anderem folgende Einstellungen:

auto_options:
  - auto_up_enabled
  - auto_down_enabled
  - time_control_enabled
  - auto_shading_enabled
  - auto_brightness_enabled
  - auto_ventilate_enabled

shading_position: 33
contact_window_opened: binary_sensor.fenstergriff_buro_offen
contact_window_tilted: binary_sensor.fenstergriff_buro_gekippt

Eine mögliche Bezeichnung für die neue Option wäre:

shading_over_ventilation: true

Alternativ könnte die Priorität über eine Auswahlliste festgelegt werden.

Vielen Dank für die Weiterentwicklung von CCA!

Könntest du das bitte als Feature Request auf GitHub anlegen? Vielen Dank.

—-

Could you please create this as a feature request on GitHub? Thank you very much.

Hi,

yestereay I updated the blueprint and this morning my covers opened at 5:50 dawn. But my settings are:

alias: CCA Wintergarten Treppe
description: ""
use_blueprint:
  path: hvorragend/cover_control_automation.yaml
  input:
    blind: cover.wiga_1_dev_2
    auto_options:
      - auto_up_enabled
      - auto_down_enabled
      - auto_ventilate_enabled
      - auto_sun_enabled
    cover_status_helper: input_text.fenster_helfer_wintergarten_treppe
    close_position: 0
    ventilate_position: 90
    workday_sensor: binary_sensor.arbeitstag
    sun_elevation_down: -3
    check_config: true
    cover_status_options: cover_helper_enabled
    time_down_late_non_workday: "22:00:00"
    contact_delay_status: 1
    contact_delay_trigger: 1
    time_up_early_non_workday: "08:30:00"
    time_up_early: "06:30:00"
    time_up_late_non_workday: "09:00:00"
    drive_time: 60
    time_down_early: "16:00:00"
    time_down_early_non_workday: "16:00:00"
    time_up_late: "07:30:00"
    sun_elevation_up: 0
    drive_delay_random: 4
    drive_delay_fix: 1
    ignore_after_manual_config:
      - ignore_opening_after_manual
      - ignore_closing_after_manual
    reset_override_config: reset_timeout
    reset_override_timeout: 180

What has changed in the last versions, that sun elevation can now override time up early?

Thank you for any help.


Update:
I missed the breaking changes and updated config with:

time_control_enabled

Thank you for the detailed explanation.

I’m still struggling with some details.

From my understanding, the ignore_ventilation_after_manual option prevents the cover from moving to the ventilation position after it has been moved manually. However, in my case, the ventilation condition was not the trigger. Instead, closing the door caused the cover to move to the fully closed position.

This morning i opened the cover manually (08:24:46). After that I opened the door (08:25:16). When I closed the door (08:37:47), the cover went down(08:37:53).
Here is the activity log from the helper:

entity_id,state,last_changed
input_text.hlp_ez_rollladen,"{""bas"":""cls"",""shd"":0,""pnd"":""non"",""win"":""cls"",""frc"":""non"",""res"":0,""man"":0,""ts"":{""opn"":0,""cls"":0,""shd"":1785085866,""due"":0,""arm"":0,""man"":1785474247},""v"":6,""t"":1785736458,""d"":1785702603}",2026-08-03T06:00:00.000Z
input_text.hlp_ez_rollladen,"{""bas"":""cls"",""shd"":0,""pnd"":""non"",""win"":""opn"",""frc"":""non"",""res"":0,""man"":0,""ts"":{""opn"":0,""cls"":0,""shd"":1785085866,""due"":0,""arm"":0,""man"":1785474247},""v"":6,""t"":1785738322,""d"":1785702603}",2026-08-03T06:25:21.762Z
input_text.hlp_ez_rollladen,"{""bas"":""cls"",""shd"":0,""pnd"":""non"",""win"":""cls"",""frc"":""non"",""res"":0,""man"":0,""ts"":{""opn"":0,""cls"":0,""shd"":1785085866,""due"":0,""arm"":0,""man"":1785474247},""v"":6,""t"":1785739075,""d"":1785739075}",2026-08-03T06:37:55.038Z
input_text.hlp_ez_rollladen,"{""bas"":""cls"",""shd"":0,""pnd"":""non"",""win"":""cls"",""frc"":""non"",""res"":0,""man"":0,""ts"":{""opn"":0,""cls"":0,""shd"":1785085866,""due"":0,""arm"":0,""man"":1785474247},""v"":6,""t"":1785739542,""d"":1785739075}",2026-08-03T06:45:42.342Z
input_text.hlp_ez_rollladen,"{""bas"":""cls"",""shd"":0,""pnd"":""beg"",""win"":""cls"",""frc"":""non"",""res"":0,""man"":0,""ts"":{""opn"":0,""cls"":0,""shd"":1785085866,""due"":1785742201,""arm"":1785742200,""man"":1785474247},""v"":6,""t"":1785739866,""d"":1785739075}",2026-08-03T06:51:05.698Z

Here is the trace:

this:
  entity_id: automation.ez_rollladen
  state: 'on'
  attributes:
    id: '1724999563365'
    last_triggered: '2026-08-03T06:25:45.254637+00:00'
    mode: queued
    current: 0
    max: 25
    icon: mdi:blinds-horizontal
    friendly_name: EZ Rollladen
  last_changed: '2026-08-03T05:54:16.695412+00:00'
  last_reported: '2026-08-03T06:25:45.371104+00:00'
  last_updated: '2026-08-03T06:25:45.371104+00:00'
  context:
    id: 01KZ34SERDFVXJQXZQBW92SKBC
    parent_id: 01KZ34QM5B0V7TPJB5H3XQPDP5
    user_id: null
trigger:
  id: t_contact_opened_changed
  idx: '16'
  alias: null
  platform: state
  entity_id: binary_sensor.ez_fensterkontakt_contact
  from_state:
    entity_id: binary_sensor.ez_fensterkontakt_contact
    state: 'on'
    attributes:
      device_class: door
      friendly_name: EZ Fensterkontakt Tür
    last_changed: '2026-08-03T06:25:16.073343+00:00'
    last_reported: '2026-08-03T06:25:16.073343+00:00'
    last_updated: '2026-08-03T06:25:16.073343+00:00'
    context:
      id: 01KZ34RJ99GWF9T8672V3E1SF6
      parent_id: null
      user_id: null
  to_state:
    entity_id: binary_sensor.ez_fensterkontakt_contact
    state: 'off'
    attributes:
      device_class: door
      friendly_name: EZ Fensterkontakt Tür
    last_changed: '2026-08-03T06:37:47.745433+00:00'
    last_reported: '2026-08-03T06:37:47.745433+00:00'
    last_updated: '2026-08-03T06:37:47.745433+00:00'
    context:
      id: 01KZ35FGB15TX7W5145RGBRKV6
      parent_id: null
      user_id: null
  for:
    __type: <class 'datetime.timedelta'>
    total_seconds: 2
  attribute: null
  description: state of binary_sensor.ez_fensterkontakt_contact
blind: cover.ez_rollladen
cover_type: blind
is_awning: false
resident_sensor: []
resident_config: []
position_source: current_position_attr
custom_position_sensor: []
open_position: 100
close_position: 0
ventilate_position: 30
lockout_position: []
shading_position: 20
shading_position_alt: []
shading_position_alt_entity: []
position_tolerance: 3
open_tilt_position: 100
close_tilt_position: 0
ventilate_tilt_position: 50
tilt_position_tolerance: 0
shading_tilt_elevation_1: 20
shading_tilt_elevation_2: 30
shading_tilt_elevation_3: 48
shading_tilt_position_0: 0
shading_tilt_position_1: 20
shading_tilt_position_2: 37
shading_tilt_position_3: 50
auto_options:
  - auto_up_enabled
  - auto_down_enabled
  - auto_sun_enabled
  - auto_lockout_protection_enabled
  - auto_shading_enabled
  - auto_ventilate_enabled
  - time_control_enabled
cover_tilt_config: cover_tilt_disabled
cover_tilt_reposition_config: cover_tilt_reposition_disabled
is_cover_tilt_enabled: false
tilt_wait_mode: fixed_delay
tilt_wait_timeout: 30
is_tilt_wait_idle_mode: false
is_tilt_before_position_mode: false
time_up_early: '06:45:00'
time_up_early_non_workday: '09:30:00'
time_up_late: '09:00:00'
time_up_late_non_workday: '09:30:00'
time_down_early: '16:00:00'
time_down_early_non_workday: '16:00:00'
time_down_late: '22:30:00'
time_down_late_non_workday: '22:30:00'
workday_sensor_today: binary_sensor.workday
workday_sensor_tomorrow: []
time_control: time_control_input
calendar_entity: []
calendar_open_title: Open Cover
calendar_close_title: Close Cover
calendar_open_title_lc: open cover
calendar_close_title_lc: close cover
is_calendar_enabled: false
default_brightness_sensor: []
brightness_up: 0
brightness_down: 0
brightness_hysteresis: 0
brightness_sun_operator: or
default_sun_sensor: sun.sun
sun_elevation_mode: fixed
sun_elevation_up: 0
sun_elevation_down: -4
sun_elevation_up_sensor: []
sun_elevation_down_sensor: []
contact_window_opened: binary_sensor.ez_fensterkontakt_contact
contact_window_tilted: []
lockout_tilted_options:
  - lockout_tilted_shading_start
  - lockout_tilted_shading_end
  - lockout_tilted_closing
shading_azimuth_start: 78
shading_azimuth_end: 230
shading_elevation_min: 20
shading_elevation_max: 90
shading_sun_brightness_start: 35000
shading_sun_brightness_end: 25000
shading_sun_brightness_hysteresis: 0
shading_brightness_sensor: []
shading_temperatur_sensor1: sensor.eg_temperature
shading_temperatur_sensor2: sensor.drausen_temperature
shading_min_temperatur1: 23
shading_min_temperatur2: 23
shading_temperature_hysteresis1: 0.2
shading_temperature_hysteresis2: 1
shading_forecast_sensor: []
shading_forecast_temp_sensor: []
shading_forecast_type_raw: hourly
shading_forecast_type: hourly
shading_forecast_temp: 23
shading_forecast_temp_hysteresis: 0
shading_independent_temp: 25
shading_weather_conditions:
  - sunny
  - partlycloudy
  - clear
  - windy
shading_custom_sensor: []
shading_conditions_start_and:
  - cond_azimuth
  - cond_elevation
  - cond_temp1
  - cond_temp2
shading_conditions_start_or: []
shading_conditions_end_and: []
shading_conditions_end_or:
  - cond_azimuth
  - cond_elevation
  - cond_temp1
  - cond_temp2
lockout_tilted_when_closing: true
lockout_tilted_when_shading_starts: true
lockout_tilted_when_shading_ends: true
is_shading_enabled: true
is_up_enabled: true
is_down_enabled: true
is_brightness_enabled: false
is_sun_elevation_enabled: true
use_and_operator: false
is_time_field_enabled: true
is_time_control_disabled: false
is_opening_scheduled: true
is_ventilation_enabled: true
recovery_config: never
recovery_mode: never
is_recovery_enabled: false
reset_override_config:
  - reset_fixed_time
reset_override_time: '11:00:00'
reset_override_timeout: 120
reset_override_position: 100
reset_override_position_dwell: 5
is_reset_fixed_time: true
is_reset_timeout: false
is_reset_position: false
is_reset_disabled: false
auto_up_force: []
auto_down_force: input_boolean.xmas_force_close_cover
auto_ventilate_force: []
auto_shading_start_force: []
force_pause: []
cover_status_helper: input_text.hlp_ez_rollladen
instance_active: []
instance_active_value: ''
invalid_states:
  - ''
  - unavailable
  - unknown
  - none
  - None
  - 'null'
  - query failed
  - []
critical_entities:
  - cover.ez_rollladen
automation_entity: automation.ez_rollladen
version: 2026.07.25 V2
is_paused: false
blind_entities:
  - cover.ez_rollladen
current_position: 100
current_tilt_position: 101
effective_shading_position: 20
effective_lockout_position: 100
position_comparisons:
  current_above_open: false
  current_above_close: true
  current_above_shading: true
  current_above_ventilate: true
  current_below_open: false
  current_below_close: false
  current_below_shading: false
  current_below_ventilate: false
  open_above_close: true
  open_above_ventilate: true
  shading_above_close: true
  shading_below_open: true
  ventilate_above_close: true
  shading_below_ventilate: true
current_sun_azimuth: 89.48
current_sun_elevation: 22.43
sun_elevation_up_current: 0
sun_elevation_down_current: -4
is_today_off: true
is_tomorrow_off: false
is_tomorrow_on: false
is_cover_tilt_enabled_and_possible: false
is_cover_tilt_reposition_enabled: false
drive_delay_fix: 0
drive_delay_random: 5
drive_time: 90
time_up_early_today: '09:30:00'
time_up_late_today: '09:30:00'
time_down_early_today: '16:00:00'
time_down_late_today: '22:30:00'
shading_tilt_position: 20
in_open_position: true
in_lockout_position: true
in_close_position: false
in_shading_position: false
in_ventilate_position: false
in_reset_override_position: false
brightness_time_duration: 30
sun_time_duration: 30
shading_waitingtime_start: 300
shading_waitingtime_end: 300
shading_start_max_duration: 7200
shading_end_max_duration: 7200
shading_config: []
shading_end_immediate_by_sun_position: false
is_shading_end_immediate_by_sun_position: false
forecast_source:
  use_sensor: false
  use_weather: false
  prevent_service: false
shading_start_condition_enabled:
  azimuth: true
  elevation: true
  brightness: false
  temp1: true
  temp2: true
  forecast_temp: false
  forecast_weather: false
  custom: false
shading_end_condition_enabled:
  azimuth: true
  elevation: true
  brightness: false
  temp1: true
  temp2: true
  forecast_temp: false
  forecast_weather: false
  custom: false
helper_json:
  bas: cls
  shd: 0
  pnd: non
  win: opn
  frc: non
  res: 0
  man: 0
  ts:
    opn: 0
    cls: 0
    shd: 1785085866
    due: 0
    arm: 0
    man: 1785474247
  v: 6
  t: 1785738322
  d: 1785702603
state_resident: false
resident_flags:
  opening_trigger: false
  closing_trigger: false
  allow_open: true
  allow_shade: true
  allow_ventilate: true
effective_state: cls
helper_state_force: non
helper_state_resident: false
helper_state_manual: false
helper_state_base: cls
helper_state_window: opn
helper_state_shade: false
helper_ts_open: 0
helper_ts_close: 0
helper_ts_shade: 1785085866
helper_ts_pending_arm: 0
helper_ts_man: 1785474247
helper_ts_pending_due: 0
configured_entities:
  - cover.ez_rollladen
  - input_text.hlp_ez_rollladen
  - binary_sensor.ez_fensterkontakt_contact
  - sun.sun
  - sensor.eg_temperature
  - sensor.drausen_temperature
  - binary_sensor.workday
  - input_boolean.xmas_force_close_cover
helper_ts_write: 1785738322
helper_ts_drive: 1785702603
automation_resumed: false
instance_active_on_states:
  - 'on'
  - 'true'
instance_activated: false
is_restart_run: false
recovery_catch_up: false
stale_day: false
override_expired: false
helper_state_is_shaded: false
helper_state_pending: non
helper_state_pending_start: false
helper_state_pending_end: false
midnight_reset_missed: false
is_forced_open: false
is_forced_close: false
is_forced_shade: false
is_forced_vent: false
is_forced: false
force_helper_unreadable: false
live_force: non
force_allows_open: true
force_allows_close: true
force_allows_shade: true
force_allows_ventilate: true
ignore_after_manual_config:
  - ignore_opening_after_manual
  - ignore_closing_after_manual
override_flags:
  opening: true
  closing: true
  ventilation: false
  shading: false
override_blocks:
  opening: false
  closing: false
  ventilation: false
  shading: false
auto_ventilate_options: []
contact_delay_trigger: 2
contact_delay_status: 3
ventilation_flags:
  start_no_delay: false
  delay_enabled: false
  if_lower_enabled: false
  after_shading_end: false
  keep_open_on_full_to_tilt: false
prevent_config:
  - prevent_shading_multiple_times
prevent_flags:
  higher_position_closing: false
  lowering_when_closing_if_shaded: false
  shading_end_if_closed: false
  opening_after_shading_end: false
  opening_after_ventilation_end: false
  default_cover_actions: false
  shading_multiple_times: true
  opening_multiple_times: false
  closing_multiple_times: false
auto_recover_after_force: auto_recover_disabled
is_force_recovery_enabled: false
check_config: false
check_config_debuglevel: info
check_status_helper_length: 254
enable_logbook: false 

Thanks a lot!

Hi Folks,

next week I plan to go on vacation.
How would you setup CCA best for not staying at home?

Required: Covers should be closed. Expect: force event open for bad weather conditions is activated.

Idea: Use “Resident Mode” with a boolean helper “Vacation”. If “true” all blinds are closed.

Can you please confirm that this could work?
Regards!

//edit: English version of my post

Hello @Herr.Vorragend,

First of all, thank you again for adding the feature to support a separate position for “full ventilation.” I’m currently in the process of migrating all of my blinds to CCA.

I’m using Homematic IP actuators, and I’ve noticed that I’ll probably have to switch to custom commands. The standard commands work in general, but I’m seeing a few behaviors that aren’t quite 100% correct (for example, a brief pause when the tilt command is executed, or after partial ventilation the blind doesn’t close completely but instead moves up a little).

What I’m getting at is this: I think it would be necessary to add an “additional action” for “full ventilation” to be able to execute a custom command here. At the moment, nothing happens when I open my patio door while “custom commands” are enabled. Or have I missed something or configured it incorrectly?

I also have a more general question. When using custom commands, are all of CCA’s features fully available, or are there any limitations? I’m specifically thinking about the different tilt positions used for the stepped sun-shading feature.
Do these tilt commands remain active when custom commands are enabled? Otherwise, it seems that additional actions for executing custom tilt commands would also be missing.

Thank you very much!

Tincup81

German version:

Hallo @Herr.Vorragend,
vielen Dank nochmal für das feature Add einer separaten Position für “full ventilation”. Ich bin gerade dabei, alle meine Jalousien auf CCA umzubauen. Ich nutze Homematic-IP Aktoren und stelle fest, dass ich vermutlich auf das custom command wechseln muss. Die Standard-Commands funktionieren zwar grundsätzlich, aber ich beobachte Dinge, die nicht 100%ig sind (zB. kurzes Stocken, wenn das Tilt-Command kommt. Oder nach partial ventilation schließt es nicht komplett bzw. fährt ein Stück hoch). Worauf ich hinaus will: Ich glaube es ist notwendig, bei den “additional Actions” eine Aktion für “full ventilation” hinzuzufügen. Aktuell passiert bei mir nämlich nichts, wenn ich die Terrassentür öffne und die “custom actions” aktiviert habe. Oder habe ich etwas falsch konfiguriert/übersehen?

Eine generelle Frage stelle ich mir noch. Sind bei Nutzung von Custom-Commands die vollen Feature von CCA verfügbar, oder gibt es irgendwo Einschränkungen? Ich denke an die verschiedenen Tilt-Positions beim “gestuften” Sun-shading. Bleiben die Tilt-Kommandos aktiv, wenn ich die custom-Commands aktiviert habe? In diesem Fall fehlen sonst doch auch additional actions für die Ausführung von custom-Tilt-Commands.

Vielen Dank.
Tincup81

This is an international forum. And it’s better to ask your questions in English as well. German posts aren’t really welcome here. Even though it’s easier for me, of course. A post further up has already been hidden. I suppose that one was in German too.

I’ll have a look at your questions in a few days.