{"id":31397637,"url":"https://github.com/hugo0485/doublecurtaincard","last_synced_at":"2025-09-29T13:59:39.240Z","repository":{"id":315471021,"uuid":"1059645262","full_name":"Hugo0485/DoubleCurtainCard","owner":"Hugo0485","description":"Double curtain card for home assistant","archived":false,"fork":false,"pushed_at":"2025-09-27T00:34:30.000Z","size":2431,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-27T02:35:56.323Z","etag":null,"topics":["cover","curtains","custom-card","home-assistant","zigbee","zwave"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Hugo0485.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-18T18:21:58.000Z","updated_at":"2025-09-27T00:27:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"64daf1a4-104d-47aa-8bf8-17b0b0d6362d","html_url":"https://github.com/Hugo0485/DoubleCurtainCard","commit_stats":null,"previous_names":["hugo0485/doublecurtaincard"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/Hugo0485/DoubleCurtainCard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hugo0485%2FDoubleCurtainCard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hugo0485%2FDoubleCurtainCard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hugo0485%2FDoubleCurtainCard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hugo0485%2FDoubleCurtainCard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hugo0485","download_url":"https://codeload.github.com/Hugo0485/DoubleCurtainCard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hugo0485%2FDoubleCurtainCard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277526755,"owners_count":25833447,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-29T02:00:09.175Z","response_time":84,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cover","curtains","custom-card","home-assistant","zigbee","zwave"],"created_at":"2025-09-29T13:59:35.696Z","updated_at":"2025-09-29T13:59:39.235Z","avatar_url":"https://github.com/Hugo0485.png","language":null,"funding_links":["https://www.buymeacoffee.com/hugo0485"],"categories":[],"sub_categories":[],"readme":"# Double Curtain Card\n\n[![Buy me a beer](https://img.shields.io/badge/Support-Buy%20me%20a%20beer-fdd734?logo=buy-me-a-coffee)](https://www.buymeacoffee.com/hugo0485)\n[![Last commit](https://img.shields.io/github/last-commit/Hugo0485/DoubleCurtainCard)](#)\n![Downloads](https://img.shields.io/github/downloads/Hugo0485/DoubleCurtainCard/total)\n[![Version](https://img.shields.io/github/v/release/Hugo0485/DoubleCurtainCard)](#)\n[![Home Assistant Community](https://img.shields.io/badge/Home%20Assistant-Community%20Forum-319fee?logo=home-assistant)](https://community.home-assistant.io/t/lovelace-double-curtain-card/)\n\n![Double curtain](doublecurtain.gif)\n\n**Double Curtain Card** is a compact Lovelace card to control two curtain covers (left \u0026 right) from a single UI.\n\n**Highlights**\n\n- Dual sliders with live position (0–100)\n- Percentage shown below each slider\n- Optional preset per side (hidden when left empty)\n- Open All / Close All buttons\n- Per-side invert\n- Optional blink during movement (toggle)\n- Sends service on release\n- Simple GUI editor (entity pickers, toggles, numbers)\n\n---\n\n## 🚀 Installation\n\n\u003cdetails open\u003e\n  \u003csummary\u003eOpen in HACS (recommended)\u003c/summary\u003e\n\n[![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)](https://my.home-assistant.io/redirect/hacs_repository/?owner=Hugo0485\u0026repository=DoubleCurtainCard\u0026category=plugin)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eHACS manual configuration (custom repository)\u003c/summary\u003e\n\n1. Open **HACS** in Home Assistant.  \n2. Click **Custom repositories**.  \n3. Add: `https://github.com/Hugo0485/DoubleCurtainCard.git` — Category: **Plugin**.  \n4. Search for **Double Curtain Card** → **Install**.  \n5. Ensure the resource URL is `/hacsfiles/double-curtain-card/double-curtain-card.js` (HACS sets this automatically for frontend plugins).\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eManual installation (without HACS)\u003c/summary\u003e\n\n1. Download the latest build:  \n   [`double-curtain-card.js`](https://github.com/Hugo0485/DoubleCurtainCard/releases/latest/download/double-curtain-card.js)  \n2. Put it in `\u003cconfig\u003e/www/`.  \n3. Go to **Settings → Dashboards → Resources** and add:  \n   - **URL**: `/local/double-curtain-card.js`  \n   - **Resource type**: *JavaScript module*  \n4. Reload your browser and add the card to your dashboard.\n\u003c/details\u003e\n\n---\n\n## ⚡ Quickstart\n\n#### Add via GUI (recommended)\n1. Open your dashboard → **Edit** → **Add card**.  \n2. Search for **Double Curtain Card** and select it.  \n3. In the visual editor, set:\n   - **Name** (card title)  \n   - **Left entity** → your left curtain `cover.*`  \n   - **Right entity** → your right curtain `cover.*`  \n   - **Left label** / **Right label**  \n   - *(Optional)* **Left fixed position** / **Right fixed position** (0–100).  \n     If left empty, the corresponding button is hidden.  \n   - *(Optional)* **Choose your own MDI for fixed positions** ).  \n   - *(Optional)* **Invert left** / **Invert right**\n   - *(Optional)* **Blink while moving**`(toggles the blink animation during movement)`  \n4. Click **Save**.\n\n\u003e The GUI editor mirrors the YAML options below. You can switch to YAML at any time.\n\n```yaml\ntype: custom:double-curtain-card\nname: Living Room Curtains\nleft_entity: cover.curtain_left\nright_entity: cover.curtain_right\nleft_label: left curtain\nright_label: right curtain\n\n# Optional behavior flags\nleft_fixed_position: 10 # If there's no value buttons will disappear \nright_fixed_position: 10 # If there's no value buttons will disappear \nleft_fixed_icon: mdi:crosshairs-gps # choose your own mdi\nright_fixed_icon: mdi:crosshairs-gps # choose your own mdi\ninvert_left: false\ninvert_right: false\nblink_motion: true\n````\n\n## Configuration\n\n| Name                  | Type    | Default  | Description                                                            |\n| --------------------- | ------- | -------- | ---------------------------------------------------------------------- |\n| `name`                | string  | –        | Card title shown at the top     \n| `left_label`          | string  | –        | Optional label shown for the left side       \n| `left_entity`         | string  | required | Cover entity for the **left** curtain\n| `left_fixed_position:`  | number  | –        | Position (0–100) for the left **Fixed poition** button; hidden if not provided  |\n| `left_fixed_icon:` | MDI  | –        | Choose **MDI** icon for the left fixed position button |  \n| `invert_left`         | boolean | `false`  | Invert open/close logic for the left slider  \n| `right_label`         | string  | –        | Optional label shown for the right side                                  |\n| `right_entity`        | string  | required | Cover entity for the **right** curtain                                 |                                      \n| `right_fixed_position:` | number  | –        | Position (0–100) for the right **Fixed poition** button; hidden if not provided |\n| `right_fixed_icon:` | MDI  | –        | Choose **MDI** icon for the right fixed position button |                          |\n| `invert_right`        | boolean | `false`  | Invert open/close logic for the right slider                           |\n| `blink_motion`        | boolean | `true`   | Turn on/off blink functionality                                        |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhugo0485%2Fdoublecurtaincard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhugo0485%2Fdoublecurtaincard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhugo0485%2Fdoublecurtaincard/lists"}