Kisi Access Control Module
The Kisi module on Aida Controller connects Kisi door access to building automation: unlock and lock events can drive lights, shades, and room scenes, and Kisi locks appear as first-class access_control devices you can unlock, lock down, schedule, and use as event-redirection targets.
:::info Version requirement Kisi requires Aida Controller 2.0 v0.95.0 or later, and an Aida Platform site with the Kisi relay enabled (platform v0.41.0+). The controller must be paired to the site (cloud MQTT / contract ID). :::
:::note Where operators work
Configure actors, locks, scene rules, and door control on the controller (Modules → Kisi). Aida Platform is a thin relay: organization webhook URL, optional shared secret, and Place → controller bindings. It does not host Actors / Actions / Event Log UI.
:::
Overview
This module provides:
- Access event → scene automation — when a known person unlocks (or locks) a door, run dim / CCT / RGBW / shade outputs on clusters, zones, or devices
- Locks as devices — Kisi locks in inventory with online / unlocked / open / lockdown state
- Door control — unlock, lockdown, and cancel lockdown from Control and device detail (edge calls to Kisi Cloud with your API key)
- Place binding — saving a Kisi Place ID on the controller registers that Place with the platform over MQTT so webhooks route to this appliance
- Event log — recent access and door events for commissioning and troubleshooting
- Schedules & redirections — Kisi locks in device-schedule CSV (node type Kisi) and as allow-listed redirection targets
How it works
| Hop | Role |
|---|---|
| Kisi organization webhook | Sends access/door events to Aida Platform |
| Platform | Authenticates webhook, looks up Place → controller, publishes MQTT |
Controller kisi module | Ingests events, matches scene rules, polls lock state, unlocks via Kisi API |
| Place bind | Controller publishes {action:bind, placeId, placeName?} on MQTT when you Save Setup |
Production webhook host:
https://api.aida-platform.com/api/kisi/webhook
Platform Sites → Kisi may append ?siteId=… for site-scoped secret isolation. Routing to a controller is by Kisi Place ID, not by the query string alone.
Prerequisites
Before enabling Kisi, ensure you have:
- Aida Controller 2.0 paired to the site (MQTT connected)
- Kisi organization admin access (webhooks + Place / lock IDs)
- Kisi Place ID for the building (and optionally a friendly Place name for the platform bindings table)
- Kisi API key (login/API key) on the controller for Discover, poll, unlock, and lockdown
- Operator access to enable modules on the controller and open Sites → Kisi on the platform
- Commissioned clusters / zones / devices if you want unlock events to drive lighting or shades
Setup process
Step 1: Enable the platform relay
- In Aida Platform, open the site and go to Sites → Kisi (integration dialog).
- Enable the Kisi relay for the site.
- Copy the webhook URL and configure or rotate the shared secret if you use one.
- Leave the bindings table open — after the controller Saves Place, a row should appear for that Place ID.
Step 2: Point Kisi at Aida
- In Kisi admin, open organization Webhooks.
- Add a webhook aimed at the URL from Step 1 (HTTPS in production).
- If you set a shared secret in Kisi, configure the same secret on the platform Kisi dialog.
Step 3: Enable the controller module
- Open the controller UI → Modules.
- Enable Kisi (
kisi). - Open Modules → Kisi. Confirm the header shows MQTT connected when the platform link is healthy.
Step 4: Bind Place and API key (Setup)
On the Setup tab:
- Copy the Webhook URL shown on Setup if you still need it for Kisi org settings (same family of URL as the platform dialog).
- Enter Place ID (required) — the Kisi Place for this controller.
- Optionally enter Place name — a friendly label shown on the platform bindings table (avoids opaque or leftover debug names).
- Paste the Kisi API key used for edge unlock and poll.
- Set Poll interval (seconds; typically 60).
- Click Save.
Saving publishes MQTT Place bind. The platform should list the binding; Setup may refresh the webhook URL from bind_ack.
:::tip One Place per controller (typical) Bind the Place that should deliver events to this appliance. A Place can only be active on one controller at a time; binding elsewhere conflicts until unbound. :::
Step 5: Actors
On the Actors tab, add people who should drive scene rules:
- Name — display label
- Email — must match the actor email on Kisi unlock webhooks
Scene matching keys off this email (case-normalized), not the display name.
Step 6: Locks
On the Locks tab:
- Click Discover locks (requires a valid API key and Place) or
- Add a lock manually with name + Kisi Lock ID.
Adopted locks become KISI / access_control devices in inventory (assign a cluster when you use schedules or facility context).
Step 7: Scene rules (Actions)
On the Actions tab, create rules:
| Field | Meaning |
|---|---|
| Actor | Email from the Actors list |
| Lock | Lock ID from the Locks list |
| Access action | Typically unlock or locked |
| Outputs | Dim, RGBW, CCT, and/or shade |
| Targets | Clusters, zones, and/or devices |
Use Test on a rule to simulate an event without walking to the door. Successful scenes pause Solaris / Circadian on affected targets the same way other manual/automation sources do.
Step 8: Verify the Log
On the Log tab, filter by actor, device, or action. After a real unlock (or a simulated rule), you should see ingest entries. If the log stays empty while Kisi shows activity, revisit Place bind and webhook routing (below).
Day-to-day use
Unlock and lockdown
From Control or a Kisi device detail page:
- Unlock — momentary cloud unlock (door re-secures per Kisi configuration)
- Lockdown — deny access until cancelled
- Cancel lockdown — clear lockdown
These call Kisi Cloud from the controller using the module API key. There is no separate “lock now” command; use lockdown or wait for auto-relock.
Device schedule
Device schedule CSV supports node type Kisi with serial = lock ID. Import creates or updates lock devices; discovery merges on the same id. Keep the API key in module Setup — not in the CSV.
Event redirections
Event redirections may target Kisi locks with unlock, lockdown, or cancel_lockdown only. Prefer kisi Actions for rules that depend on a specific person’s email; use redirections for lock- or cluster-scoped automation without an actor.
Using the module when disabled
When Kisi is disabled under Modules:
- MQTT ingest and poll stop
- Unlock / lockdown APIs are rejected
- Scene rules do not run
- Existing devices remain visible but state goes stale
Turn the module back on to resume.
Troubleshooting
| Symptom | What to check |
|---|---|
| No events on Log | Platform relay enabled; Kisi webhook URL correct; Place ID Saved (binding row on platform); controller MQTT connected |
| Events on platform but not controller | Binding contractId matches this controller; module Enabled |
| Discover / unlock fails | API key valid; Place ID correct; outbound HTTPS to api.kisi.io |
| Scene does not fire | Actor email matches webhook; lock ID matches; access action (unlock / locked); targets commissioned |
| Wrong Place name on platform | Set Place name on Setup and Save (empty name clears a stale label) |
| Place already bound elsewhere | Unbind on the other controller or clear Place there, then Save here |
Related documentation
- Controller overview — appliance role and pairing
- Circadian module / Solaris module — lighting modules that pause after Kisi scenes
- Webex Integration — similar webhook → platform → MQTT pattern for room panels
Support
For support, contact your system administrator or MHT Technologies.