Advanced Cover — bounded positioning + simulated positioning for any cover

Advanced Cover — bounded positioning + simulated positioning for any cover

Home Assistant’s cover entity is great, but two situations aren’t well handled out of the box:

  1. You don’t want a cover to use its full 0–100% travel. A blind that shouldn’t ever fully close, an awning that shouldn’t fully retract into its housing — right now the only options are “trust every automation and every person to never send the wrong number” or build custom scripting around it.
  2. Your cover doesn’t report a position at all — lots of cheap RF/IR shades only expose open/close/stop, so you lose the position slider, and with it any automation that wants “go to 40%” instead of “fully open/closed”.

Advanced Cover is a small integration that wraps any existing cover entity and gives you a second, “advanced” cover entity that solves both:

  • :bullseye: Bounded positioning — set a min_value/max_value window (e.g. 10–90%), and every position command, plus open/close, gets clamped into that range before it’s forwarded to the real cover. The 100% you send is really “90%” on the physical device.
  • :shield: Proactive bounds enforcement (optional) — if the wrapped cover ends up outside those bounds when they change, it moves the cover to the new bound.
  • :stopwatch: Time-based simulated positioning — for covers that only support open/close/stop, give it your measured open and close travel times and Advanced Cover will simulate an absolute position, giving you a normal position slider and “set position to X%” service calls even though the underlying device has no idea what a position is.
  • :wrench: Runtime-adjustable bounds — three entity services (set_min_value, set_max_value, set_enforce_bounds) let automations tweak the window on the fly (e.g. loosen the bounds for a “full clean” mode) without reloading the integration.
  • :link: Device grouping — each Advanced Cover gets its own device linked to the wrapped entity’s device, and inherits its area, so it stays tidy in the UI.
  • :see_no_evil_monkey: Optional wrapped-entity hiding — hide the raw wrapped cover from dashboards/voice assistants while keeping it fully usable by automations.

Everything is configured entirely through the UI (config flow + options flow) — no YAML.

Screenshots

Add the integration and pick the cover you want to wrap:

Configure the wrapped cover and its bounds:

…and optional behavior like bounds enforcement, hiding the wrapped entity, or simulated positioning:

Installation

Via HACS (custom repository, not yet in the default store):

Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.

Or manually add https://github.com/RomRider/ha-advanced-covers as a custom repository in HACS (category: Integration), or copy custom_components/advanced_cover into your config/custom_components/ folder directly.

Links

Would love feedback, bug reports, and PRs — this is early days for the project, so if you wrap a cover and something behaves unexpectedly, please open an issue with your cover’s supported features and what you saw.