☀️ Cover Control Automation (CCA) - a comprehensive and highly configurable roller blind blueprint

Yes, I think so. The additional conditions are intended for precisely this purpose. However, I would only do this specifically for closing or opening.

But also note that conditions cannot trigger. But you don’t need that here either, do you?

I trigger the condition manually. But in my case it doesn’t work, even if the switch is OFF, the automation doesn’t start… I only need to stop the opening so as not to wake the guests when they are there…

Maybe you can find something about it here.

But to be honest, I simply observed the values of the Sun integration at the right time of day. A little tip: I have created Elevation as a separate template sensor. It’s easier for research.

If you work with the parameters of time, brightness and sun height, an adjustment is not necessary at all.

I also made a conscious decision to use the height of the sun and not the times for sunset. You can control much more precisely based on the sun-Elevation.

Ok, and for this case where just want to be able to deactivate the opening based on a switch…is my method the right one?

Can you share with me that template sensor? I’m terrible at home assistant templating engine (partially… because I hate it :joy: )
I tried checking my HA database, but the values it contains are from two years ago, not sure where HA is storing my data right now :sweat_smile:

Hello, as it will soon be Christmas again :grin:
I have a small question. Is it possible to close certain roller shutters according to time or elevation, but only to 30% and then close them completely at 11 p.m., for example? The background to this would be lights on the windows that should still be visible from the outside until 11 p.m. and are switched off at bedtime so that the shutters can also close completely

Edit: Ok. I think “Additional Condition For Closing The Cover” is what I was looking for, right?

1 Like

For both the azimuth and elevation HomeAssistant already provides an entity but they are disabled by default.

You can enable them by going to settings>integrations>sun>entities and enable both the entities.

1 Like

Oh, yeah, I found them and I thought: when did I disabled this?
Thanks that is very useful

Hi!

Is it possible to force the resident / presence condition to open the shades only after the early time?

Right now the shades go down just as they should between the “early drive down” and the “late drive down” time - depending on other conditions - just as they should.

If we enter the room and the presence sensor changes to on / occupied and nothing happens - again just as it should.

But: If we leave the room before the “late drive down” time and the presence sensor changes to off / not occupied the shades go up. They only stay down when we leave the room after the “late drive down” time.

Can this behaviour be fixed? I only want them to go up when we leave the room after the “early drive up” time - so only in the morning.

Here is my config and a trave of the last drive up triggered by the presence sensor going off:
https://controlc.com/435fcb42

Thanks for any help!

Hello.
I have two covers configured very similarly, but one works as expected and the other does not, and I can’t imagine why.

This is the one that works:

And this is the one that, despite the configured sun value has passed, is not yet closed

As stupid as it sounds, I think the problem is the one contains a float value 6.5 while the other has a plain number 5. I just changed them to be 5.1 and now they work. This is IMO a butg in home assistant

Hello, I defined a very simple scenario to open and close a shutter. It only relies on sun elevation : above -1 it opens, under it closes. The shutter always opens corrrecly in the morning, but it never closes in the evening. I don’t know why.
Is there something that I might have configured wrongly? Can the shadding option be a problem? Here is the YAML code hereunder:

lias: CCA_Cellar
description: ""
use_blueprint:
  path: hvorragend/cover_control_automation.yaml
  input:
    blind: cover.cellar_shutter
    auto_options:
      - auto_up_enabled
      - auto_shading_enabled
      - auto_down_enabled
    cover_status_options: cover_helper_enabled
    cover_status_helper: input_text.coverstatushelper
    shading_position: 12
    sun_elevation_down: -1
    drive_delay_random: 600
    drive_delay_fix: 15
    shading_temperatur_sensor1: sensor.ac_jour_salon_temperature_ambiante
    shading_min_temperatur1: 25
    shading_temperatur_sensor2: sensor.thgr810_thgn800_4d_03_temperature
    shading_min_temperatur2: 26
    shading_forecast_type: hourly
    shading_forecast_sensor: weather.iau..o.
    shading_forecast_temp: 26
    shading_weather_conditions:
      - sunny
      - partlycloudy
      - clear
    auto_manual_action:
      - device_id: 5...9
        domain: mobile_app
        type: notify
        message: Cellar shutter manual change
    time_control: time_control_disabled
    shading_brightness_sensor: sensor.sun_solar_azimuth
    default_sun_sensor: sun.sun
    sun_elevation_up: -1

Hi, just started using CCA, and I somehow fail to make sense of its reasoning.
It closed the blinds at 16:00, though “next dawn” is calculated for 17:00.
Yesterday I opened them again, and they would close again another hour later - probably the dawn.
The logic tree-view sort of exceeds the screen and is hard to navigate . This is what the trace for the 16:00 event said:

{
  "home_assistant": {
    "installation_type": "Home Assistant Supervised",
    "version": "2024.3.0",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.12.2",
    "docker": true,
    "arch": "aarch64",
    "timezone": "Europe/Berlin",
    "os_name": "Linux",
    "os_version": "6.1.0-odroid-arm64",
    "supervisor": "2024.02.1",
    "host_os": "Debian GNU/Linux trixie/sid",
    "docker_version": "25.0.4",
    "chassis": "",
    "run_as_root": true
  },
  "custom_components": {
    "hacs": {
      "version": "1.34.0",
      "requirements": [
        "aiogithubapi>=22.10.1"
      ]
    }
  },
  "integration_manifest": {
    "domain": "zha",
    "name": "Zigbee Home Automation",
    "after_dependencies": [
      "onboarding",
      "usb"
    ],
    "codeowners": [
      "@dmulcahey",
      "@adminiuga",
      "@puddly",
      "@TheJulianJES"
    ],
    "config_flow": true,
    "dependencies": [
      "file_upload"
    ],
    "documentation": "https://www.home-assistant.io/integrations/zha",
    "import_executor": true,
    "iot_class": "local_polling",
    "loggers": [
      "aiosqlite",
      "bellows",
      "crccheck",
      "pure_pcapy3",
      "zhaquirks",
      "zigpy",
      "zigpy_deconz",
      "zigpy_xbee",
      "zigpy_zigate",
      "zigpy_znp",
      "universal_silabs_flasher"
    ],
    "requirements": [
      "bellows==0.38.1",
      "pyserial==3.5",
      "pyserial-asyncio==0.6",
      "zha-quirks==0.0.112",
      "zigpy-deconz==0.23.1",
      "zigpy==0.63.4",
      "zigpy-xbee==0.20.1",
      "zigpy-zigate==0.12.0",
      "zigpy-znp==0.12.1",
      "universal-silabs-flasher==0.0.18",
      "pyserial-asyncio-fast==0.11"
    ],
    "usb": [
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*2652*",
        "known_devices": [
          "slae.sh cc2652rb stick"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*slzb-07*",
        "known_devices": [
          "smlight slzb-07"
        ]
      },
      {
        "vid": "1A86",
        "pid": "55D4",
        "description": "*sonoff*plus*",
        "known_devices": [
          "sonoff zigbee dongle plus v2"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*sonoff*plus*",
        "known_devices": [
          "sonoff zigbee dongle plus"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*tubeszb*",
        "known_devices": [
          "TubesZB Coordinator"
        ]
      },
      {
        "vid": "1A86",
        "pid": "7523",
        "description": "*tubeszb*",
        "known_devices": [
          "TubesZB Coordinator"
        ]
      },
      {
        "vid": "1A86",
        "pid": "7523",
        "description": "*zigstar*",
        "known_devices": [
          "ZigStar Coordinators"
        ]
      },
      {
        "vid": "1CF1",
        "pid": "0030",
        "description": "*conbee*",
        "known_devices": [
          "Conbee II"
        ]
      },
      {
        "vid": "0403",
        "pid": "6015",
        "description": "*conbee*",
        "known_devices": [
          "Conbee III"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8A2A",
        "description": "*zigbee*",
        "known_devices": [
          "Nortek HUSBZB-1"
        ]
      },
      {
        "vid": "0403",
        "pid": "6015",
        "description": "*zigate*",
        "known_devices": [
          "ZiGate+"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*zigate*",
        "known_devices": [
          "ZiGate"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8B34",
        "description": "*bv 2010/10*",
        "known_devices": [
          "Bitron Video AV2010/10"
        ]
      }
    ],
    "zeroconf": [
      {
        "type": "_esphomelib._tcp.local.",
        "name": "tube*"
      },
      {
        "type": "_zigate-zigbee-gateway._tcp.local.",
        "name": "*zigate*"
      },
      {
        "type": "_zigstar_gw._tcp.local.",
        "name": "*zigstar*"
      },
      {
        "type": "_uzg-01._tcp.local.",
        "name": "uzg-01*"
      },
      {
        "type": "_slzb-06._tcp.local.",
        "name": "slzb-06*"
      }
    ],
    "is_built_in": true
  },
  "data": {
    "ieee": "**REDACTED**",
    "nwk": 30658,
    "manufacturer": "_TZE200_e9ba97vf",
    "model": "TS0601",
    "name": "_TZE200_e9ba97vf TS0601",
    "quirk_applied": true,
    "quirk_class": "zhaquirks.tuya.ts0601_trv.ZonnsmartTV01_ZG",
    "quirk_id": null,
    "manufacturer_code": 4098,
    "power_source": "Battery or Unknown",
    "lqi": 255,
    "rssi": -76,
    "last_seen": "2024-03-11T15:55:46",
    "available": true,
    "device_type": "EndDevice",
    "signature": {
      "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress: 128>, manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
      "endpoints": {
        "1": {
          "profile_id": "0x0104",
          "device_type": "0x0301",
          "input_clusters": [
            "0x0000",
            "0x0001",
            "0x0004",
            "0x0005",
            "0x0006",
            "0x000d",
            "0x000f",
            "0x0201",
            "0x0204",
            "0xef00"
          ],
          "output_clusters": [
            "0x000a",
            "0x0019"
          ]
        },
        "2": {
          "profile_id": "0x0104",
          "device_type": "0x0007",
          "input_clusters": [
            "0x0006",
            "0x000d"
          ],
          "output_clusters": []
        },
        "3": {
          "profile_id": "0x0104",
          "device_type": "0x0007",
          "input_clusters": [
            "0x0006"
          ],
          "output_clusters": []
        }
      },
      "manufacturer": "_TZE200_e9ba97vf",
      "model": "TS0601"
    },
    "active_coordinator": false,
    "entities": [
      {
        "entity_id": "sensor.wz_kaput_battery",
        "name": "_TZE200_e9ba97vf TS0601"
      },
      {
        "entity_id": "binary_sensor.wz_kaput_binary_input",
        "name": "_TZE200_e9ba97vf TS0601"
      },
      {
        "entity_id": "update.wz_kaput_firmware",
        "name": "_TZE200_e9ba97vf TS0601"
      },
      {
        "entity_id": "number.wz_kaput_max_heat_setpoint_limit",
        "name": "_TZE200_e9ba97vf TS0601"
      },
      {
        "entity_id": "number.wz_kaput_min_heat_setpoint_limit",
        "name": "_TZE200_e9ba97vf TS0601"
      },
      {
        "entity_id": "number.wz_kaput_number_opened_window_temperature",
        "name": "_TZE200_e9ba97vf TS0601"
      },
      {
        "entity_id": "number.wz_kaput_number_temperature_offset",
        "name": "_TZE200_e9ba97vf TS0601"
      },
      {
        "entity_id": "switch.wz_kaput_switch",
        "name": "_TZE200_e9ba97vf TS0601"
      },
      {
        "entity_id": "switch.wz_kaput_switch_2",
        "name": "_TZE200_e9ba97vf TS0601"
      },
      {
        "entity_id": "switch.wz_kaput_switch_3",
        "name": "_TZE200_e9ba97vf TS0601"
      },
      {
        "entity_id": "climate.wz_kaput_thermostat",
        "name": "_TZE200_e9ba97vf TS0601"
      }
    ],
    "neighbors": [],
    "routes": [],
    "endpoint_names": [
      {
        "name": "THERMOSTAT"
      },
      {
        "name": "COMBINED_INTERFACE"
      },
      {
        "name": "COMBINED_INTERFACE"
      }
    ],
    "user_given_name": "WZ kaput",
    "device_reg_id": "23fbfe82f2a0e9e4fdb51c81f9dee018",
    "area_id": null,
    "cluster_details": {
      "1": {
        "device_type": {
          "name": "THERMOSTAT",
          "id": 769
        },
        "profile_id": 260,
        "in_clusters": {
          "0x0000": {
            "endpoint_attribute": "basic",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0004": {
            "endpoint_attribute": "groups",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0005": {
            "endpoint_attribute": "scenes",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0006": {
            "endpoint_attribute": "on_off",
            "attributes": {},
            "unsupported_attributes": {
              "0x4003": {
                "attribute_name": "start_up_on_off"
              }
            }
          },
          "0xef00": {
            "endpoint_attribute": "tuya_manufacturer",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x000d": {
            "endpoint_attribute": "analog_output",
            "attributes": {
              "0x0100": {
                "attribute_name": "application_type",
                "value": 9
              },
              "0x001c": {
                "attribute_name": "description",
                "value": "Temperature Offset"
              },
              "0x0075": {
                "attribute_name": "engineering_units",
                "value": 62
              },
              "0x0041": {
                "attribute_name": "max_present_value",
                "value": 5
              },
              "0x0045": {
                "attribute_name": "min_present_value",
                "value": -5
              },
              "0x006a": {
                "attribute_name": "resolution",
                "value": 0.1
              }
            },
            "unsupported_attributes": {
              "0x0068": {
                "attribute_name": "relinquish_default"
              }
            }
          },
          "0x0201": {
            "endpoint_attribute": "thermostat",
            "attributes": {
              "0x001b": {
                "attribute_name": "ctrl_sequence_of_oper",
                "value": 2
              },
              "0x0016": {
                "attribute_name": "max_heat_setpoint_limit",
                "value": 3000
              },
              "0x0015": {
                "attribute_name": "min_heat_setpoint_limit",
                "value": 500
              }
            },
            "unsupported_attributes": {
              "0x0003": {
                "attribute_name": "abs_min_heat_setpoint_limit"
              },
              "0x0004": {
                "attribute_name": "abs_max_heat_setpoint_limit"
              },
              "0x0005": {
                "attribute_name": "abs_min_cool_setpoint_limit"
              },
              "0x0006": {
                "attribute_name": "abs_max_cool_setpoint_limit"
              },
              "0x0010": {
                "attribute_name": "local_temperature_calibration"
              },
              "0x0017": {
                "attribute_name": "min_cool_setpoint_limit"
              },
              "0x0018": {
                "attribute_name": "max_cool_setpoint_limit"
              },
              "0x0030": {
                "attribute_name": "setpoint_change_source"
              }
            }
          },
          "0x0204": {
            "endpoint_attribute": "thermostat_ui",
            "attributes": {},
            "unsupported_attributes": {
              "0x0001": {
                "attribute_name": "keypad_lockout"
              }
            }
          },
          "0x000f": {
            "endpoint_attribute": "binary_input",
            "attributes": {
              "0x001c": {
                "attribute_name": "description",
                "value": "Open Window Detected"
              }
            },
            "unsupported_attributes": {}
          },
          "0x0001": {
            "endpoint_attribute": "power",
            "attributes": {
              "0x0033": {
                "attribute_name": "battery_quantity",
                "value": 2
              },
              "0x0034": {
                "attribute_name": "battery_rated_voltage",
                "value": 15
              },
              "0x0031": {
                "attribute_name": "battery_size",
                "value": 3
              }
            },
            "unsupported_attributes": {}
          }
        },
        "out_clusters": {
          "0x000a": {
            "endpoint_attribute": "time",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0019": {
            "endpoint_attribute": "ota",
            "attributes": {
              "0x0002": {
                "attribute_name": "current_file_version",
                "value": 69
              }
            },
            "unsupported_attributes": {
              "0x0002": {
                "attribute_name": "current_file_version"
              }
            }
          }
        }
      },
      "2": {
        "device_type": {
          "name": "COMBINED_INTERFACE",
          "id": 7
        },
        "profile_id": 260,
        "in_clusters": {
          "0x0006": {
            "endpoint_attribute": "on_off",
            "attributes": {},
            "unsupported_attributes": {
              "0x4003": {
                "attribute_name": "start_up_on_off"
              }
            }
          },
          "0x000d": {
            "endpoint_attribute": "analog_output",
            "attributes": {
              "0x0100": {
                "attribute_name": "application_type",
                "value": 0
              },
              "0x001c": {
                "attribute_name": "description",
                "value": "Opened Window Temperature"
              },
              "0x0075": {
                "attribute_name": "engineering_units",
                "value": 62
              },
              "0x0041": {
                "attribute_name": "max_present_value",
                "value": 30.0
              },
              "0x0045": {
                "attribute_name": "min_present_value",
                "value": 5.0
              },
              "0x006a": {
                "attribute_name": "resolution",
                "value": 0.5
              }
            },
            "unsupported_attributes": {
              "0x0068": {
                "attribute_name": "relinquish_default"
              }
            }
          }
        },
        "out_clusters": {}
      },
      "3": {
        "device_type": {
          "name": "COMBINED_INTERFACE",
          "id": 7
        },
        "profile_id": 260,
        "in_clusters": {
          "0x0006": {
            "endpoint_attribute": "on_off",
            "attributes": {},
            "unsupported_attributes": {
              "0x4003": {
                "attribute_name": "start_up_on_off"
              }
            }
          }
        },
        "out_clusters": {}
      }
    }
  }
}

Normally I would say that this feature does not exist in CCA. But your idea would be worth a try. Then let us know whether it really works. I’m not sure.

I find that very strange.
But you are welcome to show me a trace of the correct trigger. Maybe I can find another cause.
I personally use float values everywhere.

Control via the height of the sun is not activated at all. You have activated the sun protection/shading.

1 Like

Unfortunately, that doesn’t help me.
I need a trace of the triggered trigger. And no debug log or similar.

Have you figured out how to implement this? I’m looking for something similar.

I think I have understood that. I was just about to go into it in more depth. But unfortunately your trace is no longer available. Could you please upload it again? Thank you.