{"id":49925463,"url":"https://github.com/eman/homeassistant-quilt-hp","last_synced_at":"2026-07-02T23:00:40.805Z","repository":{"id":357652932,"uuid":"1237945003","full_name":"eman/homeassistant-quilt-hp","owner":"eman","description":"Home Assistant custom integration for Quilt mini-split HVAC systems","archived":false,"fork":false,"pushed_at":"2026-07-01T02:41:44.000Z","size":204,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-07-01T04:14:08.686Z","etag":null,"topics":["hacs","heat-pump","home-assistant","home-assistant-custom-component","hvac","quilt"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eman.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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":"2026-05-13T16:56:39.000Z","updated_at":"2026-07-01T02:32:10.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/eman/homeassistant-quilt-hp","commit_stats":null,"previous_names":["eman/homeassistant-quilt-hp"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/eman/homeassistant-quilt-hp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eman%2Fhomeassistant-quilt-hp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eman%2Fhomeassistant-quilt-hp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eman%2Fhomeassistant-quilt-hp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eman%2Fhomeassistant-quilt-hp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eman","download_url":"https://codeload.github.com/eman/homeassistant-quilt-hp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eman%2Fhomeassistant-quilt-hp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35065702,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-02T02:00:06.368Z","response_time":173,"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":["hacs","heat-pump","home-assistant","home-assistant-custom-component","hvac","quilt"],"created_at":"2026-05-16T23:19:15.297Z","updated_at":"2026-07-02T23:00:40.796Z","avatar_url":"https://github.com/eman.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/banner.svg\" alt=\"Quilt Home Assistant Integration\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n[![Validate](https://github.com/eman/homeassistant-quilt-hp/actions/workflows/validate.yml/badge.svg)](https://github.com/eman/homeassistant-quilt-hp/actions/workflows/validate.yml)\n[![GitHub Release](https://img.shields.io/github/v/release/eman/homeassistant-quilt-hp)](https://github.com/eman/homeassistant-quilt-hp/releases)\n[![HACS Custom](https://img.shields.io/badge/HACS-Custom-41BDF5.svg)](https://github.com/hacs/integration)\n\nA Home Assistant custom component for [Quilt](https://www.quilt.com/) mini-split HVAC systems.\n\nBuilt on top of [`quilt-hp-python`](https://github.com/eman/quilt-hp-python) — a fully-async\ngRPC client that communicates directly with the Quilt cloud API.\n\nFor protocol details, streaming behavior, and the full client feature set, see the\n[`quilt-hp-python` documentation](https://eman.github.io/quilt-hp-python/).\n\n## Features\n\n- **Climate entities** — control HVAC mode and setpoints for each Quilt space (room)\n- **Sensor entities** — ambient temperature, humidity, fan speed, inlet/outlet temps,\n  presence level, COP, HVAC power, compressor data, and per-space energy\n- **Fan entities** — set indoor unit fan speed (Auto / Quiet / Low / Medium / High / Blast)\n- **Light entities** — toggle and dim indoor unit LED, set RGBW color and animation effect\n- **Select entities** — louver mode (Closed / Sweep / Fixed / Auto) and fixed angle\n- **Binary sensor entities** — motion, presence, occupancy, and connectivity status per IDU\n- **Switch entities** — pause or resume all Quilt schedules for a location\n- **Real-time updates** — powered by Quilt's bidirectional gRPC stream with auto-reconnect\n- **Polling fallback** — configurable interval fetch if the stream is unavailable\n\n## Prerequisites\n\n- A [Quilt](https://www.quilt.com/) account with at least one configured system\n- Home Assistant 2026.3 or newer\n- Python 3.14.2 or newer (managed automatically by HA)\n\n## Installation\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=eman\u0026repository=homeassistant-quilt-hp)\n\n### HACS (recommended)\n\n1. Add this repository as a custom repository in HACS\n   (category: **Integration**, URL: `https://github.com/eman/homeassistant-quilt-hp`).\n2. Install **Quilt Heat Pump**.\n3. Restart Home Assistant.\n\n### Manual\n\nCopy `custom_components/quilt_hp/` into your HA `config/custom_components/` directory\nand restart.\n\n## Configuration\n\n### Initial Setup\n\n1. Navigate to **Settings** → **Devices \u0026 Services** in Home Assistant\n2. Click **+ Add Integration** and search for **\"Quilt\"**\n3. Enter your Quilt account email address\n4. Check your email for a 6-digit verification code (arrives within 1-2 minutes)\n5. Enter the code in Home Assistant\n\n**Note:** Verification codes expire after 15 minutes. Request a new code if needed.\n\nIf your account has **multiple homes**, you will be prompted to select which one to\nintegrate. Each home can be added as a separate integration entry — just run the setup\nflow again and select a different home.\n\n### Configuration Options\n\nAfter setup, click **Configure** on the integration card to adjust settings:\n\n| Option | Default | Range | Description |\n|---|---|---|---|\n| **Polling interval** | 5 min | 1–60 min | Fallback polling frequency when real-time stream is unavailable |\n\n**About real-time updates:** The integration uses gRPC streaming for instant state changes.\nThe polling interval is only used as a fallback when the stream is temporarily down.\n\n### Reconfiguration\n\nTo change your email or re-authenticate without removing the integration:\n\n1. Go to **Settings** → **Devices \u0026 Services**\n2. Find your Quilt integration\n3. Click **⋮** (three dots menu) → **Reconfigure**\n4. Follow the authentication steps\n\n### Re-authentication\n\nIf your session expires, Home Assistant will display a re-authentication notification.\nClick the notification and follow the prompts to re-enter your email and a new\nverification code. Your devices and settings remain unchanged.\n\n## Troubleshooting\n\n### \"Cannot connect\" Error During Setup\n- **Check internet connection:** Verify your Home Assistant instance can access the internet\n- **Verify Quilt cloud status:** Ensure the Quilt cloud service is online\n- **Network/firewall:** Confirm gRPC traffic (HTTPS port 443) is not blocked\n- **Temporary outage:** Wait 2-3 minutes and try again\n\n### \"Invalid passcode\" Error\n- **Double-check digits:** Ensure all 6 digits were entered correctly\n- **Code expired:** Codes expire after 15 minutes - request a new one\n- **Email delays:** Check spam/junk folder if code doesn't arrive within 2 minutes\n- **Resend:** Start the setup again to receive a new code\n\n### Connection Lost / Stream Degraded Warning\nIf you see a repair notification about stream degradation:\n- The integration automatically falls back to polling every 5 minutes\n- State updates may be delayed but will continue working\n- The stream reconnects automatically when connectivity is restored\n- **Action:** Check your internet connection; no manual intervention required\n\n### Entities Show as \"Unavailable\"\n- **Device offline:** Verify your Quilt indoor unit has power and WiFi connection\n- **Recent setup:** Allow 1-2 minutes after initial setup for devices to come online\n- **Cloud connection:** Check that the Quilt app works on your phone\n- **Reload integration:** Try reloading from **Devices \u0026 Services**\n\n### Integration Won't Load / Setup Fails\n1. **Check logs:** Go to **Settings** → **System** → **Logs**, search for \"quilt\"\n2. **Re-authenticate:** Remove and re-add the integration\n3. **Restart Home Assistant:** Sometimes resolves temporary issues\n4. **Report issue:** File a bug report on GitHub with relevant log entries\n\n### Debugging\n\nTo enable debug logging, add to `configuration.yaml`:\n\n```yaml\nlogger:\n  default: warning\n  logs:\n    custom_components.quilt_hp: debug\n```\n\nThen restart Home Assistant and check **Settings** → **System** → **Logs** for detailed information.\n\n## Entities\n\nThe following entities are created per device. Entities marked *Disabled* are off by\ndefault to reduce noise; enable them individually in the HA entity registry.\n\n**Device Naming:** Indoor unit devices are named using their configured name (e.g., \"Living Room IDU\") or a fallback pattern like \"{Room} Indoor Unit\". This ensures device names clearly identify the physical hardware while the room is assigned as the area.\n\n### Per location (home)\n\n| Entity | Platform | Default | Notes |\n|---|---|---|---|\n| Schedules | `switch` | Enabled | Pauses or resumes all Quilt schedules for the home. Off = paused. |\n\n### Per space (room) — on the IDU device\n\n| Entity | Platform | Default |\n|---|---|---|\n| Climate | `climate` | Enabled |\n| Space Temperature | `sensor` | Enabled |\n\nThe climate entity supports the following HVAC modes: **Off**, **Cool**, **Heat**,\n**Heat/Cool** (auto), **Fan only**. It also exposes Quilt **comfort settings** as HA\npreset modes — selecting a preset activates that comfort profile on the space.\n\n### Per Indoor Unit (IDU)\n\n| Entity | Platform | Default |\n|---|---|---|\n| Fan Speed | `fan` | Enabled |\n| LED Light | `light` | Enabled |\n| Louver Mode | `select` | Enabled |\n| Louver Angle | `select` | Enabled |\n| Temperature (IDU sensor) | `sensor` | Enabled |\n| Humidity | `sensor` | Enabled |\n| Fan Speed RPM | `sensor` | Enabled |\n| Motion | `binary_sensor` | Enabled |\n| Presence | `binary_sensor` | Enabled |\n| Occupied | `binary_sensor` | Enabled |\n| Inlet Temperature | `sensor` | Disabled |\n| Outlet Temperature | `sensor` | Disabled |\n| Presence Level | `sensor` | Disabled |\n| HVAC Capacity | `sensor` | Disabled |\n| HVAC Power | `sensor` | Disabled |\n| COP | `sensor` | Disabled |\n| Calibrated Temperature | `sensor` | Disabled |\n| Motion Signal (radar) | `sensor` | Disabled |\n| Presence Signal (radar) | `sensor` | Disabled |\n| Illuminance | `sensor` | Disabled |\n| Online | `binary_sensor` | Disabled |\n\n### Per Outdoor Unit (ODU)\n\n| Entity | Platform | Default |\n|---|---|---|\n| Outdoor Temperature | `sensor` | Enabled |\n| Compressor Frequency | `sensor` | Disabled |\n| High-Side Pressure | `sensor` | Disabled |\n| Low-Side Pressure | `sensor` | Disabled |\n\n### Per Controller (Quilt Dial)\n\n| Entity | Platform | Default |\n|---|---|---|\n| Temperature | `sensor` | Enabled |\n| Online | `binary_sensor` | Disabled |\n| WiFi Signal | `sensor` | Disabled |\n\n## Troubleshooting\n\n### Enable debug logging\n\nAdd the following to your `config/configuration.yaml` and restart Home Assistant:\n\n```yaml\nlogger:\n  default: warning\n  logs:\n    custom_components.quilt_hp: debug\n```\n\nLogs are written to `home-assistant.log` in your HA config directory.\n\n### Common issues\n\n**Entities become unavailable after a few hours**\nThe gRPC stream disconnected and the reconnect failed. Check debug logs for\n`NotifierStream` errors. Ensure your HA host has outbound internet access to the Quilt\ncloud API.\n\n**Re-authentication loop**\nYour refresh token has expired. Complete the re-auth flow from the HA notification. If\nthe issue persists, remove and re-add the integration.\n\n**OTP not accepted**\nThe OTP expires quickly. Make sure you enter it within a minute or two of receiving it.\nIf the config flow times out between the email and OTP steps, restart the flow.\n\n### Filing issues\n\nPlease open an issue at [github.com/eman/homeassistant-quilt-hp/issues](https://github.com/eman/homeassistant-quilt-hp/issues)\nand include:\n- Home Assistant version\n- Integration version\n- Relevant lines from `home-assistant.log` with debug logging enabled\n\n## Contributing\n\n### Development setup\n\n```bash\ngit clone https://github.com/eman/homeassistant-quilt-hp\ncd homeassistant-quilt-hp\npip install -r requirements-dev.txt\n```\n\n### Running tests and checks\n\n```bash\npytest                        # run all tests\nruff check . \u0026\u0026 ruff format --check .   # lint + format\nmypy custom_components/quilt_hp         # type check\nbasedpyright custom_components/quilt_hp # type check\n```\n\n### Local Home Assistant instance\n\nA `docker-compose.yml` is included for running a real HA instance against the\nintegration locally:\n\n```bash\ndocker compose up -d       # start\ndocker compose restart     # pick up integration changes\ndocker compose down        # stop\n```\n\nHA is available at **http://localhost:8124**.\n\n## Dependencies\n\n- [`quilt-hp-python`](https://pypi.org/project/quilt-hp-python/) — installed automatically by HA.\n\n## License\n\nMIT License. See [LICENSE](LICENSE) for details.\n\nThis project is not affiliated with or endorsed by Quilt.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feman%2Fhomeassistant-quilt-hp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feman%2Fhomeassistant-quilt-hp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feman%2Fhomeassistant-quilt-hp/lists"}