{"id":19735365,"url":"https://github.com/raman325/lock_code_manager","last_synced_at":"2026-06-11T05:01:00.641Z","repository":{"id":181114472,"uuid":"666002360","full_name":"raman325/lock_code_manager","owner":"raman325","description":"Lock code manager for locks integrated with Home Assistant","archived":false,"fork":false,"pushed_at":"2026-06-09T03:58:29.000Z","size":84055,"stargazers_count":90,"open_issues_count":7,"forks_count":15,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-06-09T04:11:16.883Z","etag":null,"topics":["hacs","home-assistant","homeassistant","zwave","zwave-js"],"latest_commit_sha":null,"homepage":"","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/raman325.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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":"AGENTS.md","dco":null,"cla":null},"funding":{"github":"raman325","buy_me_a_coffee":"raman325"}},"created_at":"2023-07-13T13:32:43.000Z","updated_at":"2026-06-08T21:37:22.000Z","dependencies_parsed_at":"2026-02-24T00:03:43.893Z","dependency_job_id":null,"html_url":"https://github.com/raman325/lock_code_manager","commit_stats":null,"previous_names":["raman325/lock_code_manager"],"tags_count":75,"template":false,"template_full_name":null,"purl":"pkg:github/raman325/lock_code_manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raman325%2Flock_code_manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raman325%2Flock_code_manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raman325%2Flock_code_manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raman325%2Flock_code_manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/raman325","download_url":"https://codeload.github.com/raman325/lock_code_manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raman325%2Flock_code_manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34183109,"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-06-11T02:00:06.485Z","response_time":57,"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","home-assistant","homeassistant","zwave","zwave-js"],"created_at":"2024-11-12T00:41:42.603Z","updated_at":"2026-06-11T05:01:00.631Z","avatar_url":"https://github.com/raman325.png","language":"Python","funding_links":["https://github.com/sponsors/raman325","https://buymeacoffee.com/raman325"],"categories":["Python"],"sub_categories":[],"readme":"# Lock Code Manager\n\n**Lock Code Manager scales down to a simple UI for managing your lock's PIN\ncodes — and scales up to a programmable, multi-lock, multi-provider PIN\nplatform with scheduled access, condition-driven activation, and\nautomation-ready services.** Define your codes once and LCM handles setting,\nclearing, and monitoring them on every lock, across providers (Z-Wave, ZHA,\nMatter, and more) without you wiring up the differences.\n\nWhether you just want a clean dashboard for your front door or you're rotating\nPINs across an Airbnb fleet on a nightly schedule, LCM has you covered.\n\nFeatures:\n\n- Synchronize PIN codes across multiple locks and providers\n- Automatic sync — codes are set and cleared as needed, with retry and\n  drift detection\n- Condition entities control when a code is active:\n  - `calendar` — active during events\n  - `binary_sensor` / `switch` / `input_boolean` — active when on\n  - `schedule` — active during scheduled times\n- [Services and actions](https://github.com/raman325/lock_code_manager/wiki/Services-and-Actions)\n  for setting/clearing PINs, attaching condition entities, hard-refreshing\n  from the lock, and generating safe random PINs from automations\n- [Blueprints](https://github.com/raman325/lock_code_manager/wiki/Blueprints)\n  for advanced use cases like usage limiting, calendar-driven PINs, and more\n- Dashboard strategies and custom cards for managing codes and viewing lock\n  status — from one-line auto-generated dashboards to fully hand-composed\n  layouts\n\nSupported lock integrations:\n\n| Integration | Read PINs | Push Updates | Code Events | Notes |\n| --- | --- | --- | --- | --- |\n| [Z-Wave][wiki-zwave] | Varies | ✅ | ✅ | Some locks mask PINs |\n| [ZHA][wiki-zha] | ✅ | ✅ | ✅ | Drift detection fallback if lock lacks programming events |\n| [Zigbee2MQTT][wiki-zigbee2mqtt] (MQTT)² | Varies | ✅ | ✅ | Same broker as Z2M; PIN support depends on lock |\n| [Matter][wiki-matter] | ❌ | ✅ | ✅ | PINs write-only per spec |\n| [Schlage WiFi][wiki-schlage] | ❌ | ❌ | ❌ | Cloud-based, PINs masked |\n| [Akuvox][wiki-akuvox]¹ | ✅ | ❌ | ❌ | Local API, polling-based |\n| [Virtual][wiki-virtual]¹ | ✅ | ❌ | ❌ | For testing only |\n\n¹ Custom integration required ([Local Akuvox][local-akuvox],\n[hass-virtual][hass-virtual])\n\n² **Zigbee2MQTT (MQTT)** — Pair the lock in [Zigbee2MQTT][zigbee2mqtt] with PIN/user-code support for your firmware.\nThe **Code Events** column refers to PIN-used automations from Lock Code Manager’s event entity\n(which slots were used to lock/unlock).\nZigbee2MQTT lock/unlock actions with user identification are mapped to code slot events for PIN-used automations.\nConfigure Home Assistant’s **MQTT** integration on the **same broker** Zigbee2MQTT uses.\nThe default Zigbee2MQTT base topic `zigbee2mqtt` matches what Lock Code Manager expects unless you customize topics\n(`{base_topic}/{friendly_name}/set|get`).\nDuring LCM setup, choose your `lock.*` entity from **MQTT**.\nIf you rename the device in HA, keep it aligned with the **friendly name** in Zigbee2MQTT.\n\n[zigbee2mqtt]: https://www.zigbee2mqtt.io/\n[wiki-akuvox]: https://github.com/raman325/lock_code_manager/wiki/Akuvox-integration\n[wiki-zigbee2mqtt]: https://github.com/raman325/lock_code_manager/wiki/Zigbee2MQTT-integration\n[wiki-matter]: https://github.com/raman325/lock_code_manager/wiki/Matter-integration\n[wiki-schlage]: https://github.com/raman325/lock_code_manager/wiki/Schlage-integration\n[wiki-virtual]: https://github.com/raman325/lock_code_manager/wiki/Virtual-integration\n[local-akuvox]: https://github.com/pjaudiomv/hass-local-akuvox\n[hass-virtual]: https://github.com/twrecked/hass-virtual\n[wiki-zha]: https://github.com/raman325/lock_code_manager/wiki/ZHA-integration\n[wiki-zwave]: https://github.com/raman325/lock_code_manager/wiki/Z-Wave-integration\n\nAdding support for new lock integrations is straightforward — see the\n[Adding a Provider](https://github.com/raman325/lock_code_manager/wiki/Adding-a-Provider)\nguide. Contributors welcome!\n\n## Integrations That Cannot Currently Be Supported\n\nSome lock integrations cannot currently be supported due to limitations in their underlying\nlibraries. See the [wiki](https://github.com/raman325/lock_code_manager/wiki/Unsupported-Integrations)\nfor details.\n\n## Condition Entity Integrations Not Supported\n\nSome integrations create entities whose states don't map to LCM condition entity\nsemantics (\"access allowed\" / \"access denied\"). The integration may still be usable\nwith LCM by driving slot Enabled switches from its own automation logic instead of\nattaching its entities as condition entities. See the\n[wiki](https://github.com/raman325/lock_code_manager/wiki/Unsupported-Condition-Entity-Integrations)\nfor details and the scheduler-component workaround.\n\n## Installation\n\nThe best way to install this integration is via HACS.\n\n1. Set up your locks in Home Assistant through a supported integration\n   (Z-Wave, ZHA, Matter, Schlage, Zigbee2MQTT/MQTT, etc.)\n2. Add this repository as a custom integration repository in HACS\n3. Go to Settings \u003e Devices \u0026 Services \u003e Add Integration\n4. Select Lock Code Manager\n5. Follow the prompts - additional information about the configuration options are\n   available in the Wiki\n\n## Blueprints\n\nPre-built automations and templates for common lock management\npatterns. See [BLUEPRINTS.md](BLUEPRINTS.md) for full details,\ninput tables, and import buttons.\n\n### Template blueprints\n\n- **Calendar Condition** — Binary sensor for calendar-based slot access\n- **Date Range Condition** — Binary sensor for start/end date access\n\n### Automation blueprints\n\n- **Slot Usage Limiter** — Disable a slot after a set number of uses\n- **Calendar PIN Setter** — Extract and set PINs from calendar events\n- **Auto Re-lock** — Re-lock after a delay with day/night support\n- **Lock on Door Close** — Lock when a door sensor detects closure\n- **Slot Usage Notifier** — Notify when a code slot PIN is used\n- **Condition Linker** — Assign a condition entity to a slot via UI\n\n## Learn More\n\nVisit the [Wiki](https://github.com/raman325/lock_code_manager/wiki) for detailed\ndocumentation including configuration, troubleshooting, dashboard setup, and development guides.\n\n## UI \u0026 Dashboards\n\nLock Code Manager ships custom Lovelace **strategies** (which auto-generate UI\nfrom your config) and custom **cards** (which you compose yourself). Pick the\none that matches how much control you want — from a one-click dashboard that\njust works (selectable directly from **Settings → Dashboards → Add Dashboard**\non Home Assistant 2026.5+) to a hand-authored layout that places exactly what\nyou want where you want it.\n\n- [UI overview \u0026 decision guide][wiki-ui-overview] — start here\n- [UI Strategies][wiki-ui-strategies] — dashboard, view, and section strategies\n- [Custom Cards][wiki-ui-cards] — slot card, lock-codes card, and code-display modes\n\n[wiki-ui-overview]: https://github.com/raman325/lock_code_manager/wiki/Add-a-UI-for-lock-code-management\n[wiki-ui-strategies]: https://github.com/raman325/lock_code_manager/wiki/UI-Strategies\n[wiki-ui-cards]: https://github.com/raman325/lock_code_manager/wiki/Custom-Cards\n\n## AI Usage\n\nWhile I began this project before AI coding agents and wrote the bones\nmyself, since November 2025 it's been hard NOT to code with a coding\nagent. You will notice that almost all of my PRs since then have been\nco-authored with Claude (I've also experimented with Codex and Copilot).\n\nIf you look at any of the PRs, particularly the meaningful ones, you'll\nnotice many commits. Some come from AI code reviews, but many come from\nmy own code reviews or from me steering the design. I can't say I've\naudited everything line for line, but I can comfortably say that it's not\nexfiltrating your data or doing anything evil.\n\nIf you are uncomfortable using this integration because of concerns around\nAI, I completely understand and that is your prerogative. If you ever want\nto chat about it — whether it's to convince me that what I'm doing is\nwrong, to learn more about it, or anything in between — find me on the\n[Home Assistant Discord](https://www.home-assistant.io/join-chat/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Framan325%2Flock_code_manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Framan325%2Flock_code_manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Framan325%2Flock_code_manager/lists"}