SmartRent for Indigo
An Indigo plugin that brings your SmartRent apartment devices into your Indigo home automation setup. Once connected, your SmartRent door locks and thermostats show up as native Indigo devices, so you can control them from Indigo, Control Pages, triggers, schedules and Action Groups, and they stay in sync with live updates from SmartRent.
Features
- Door locks: lock and unlock, live locked/unlocked status with the matching lock icon, battery level, and online status.
- Thermostats: set HVAC mode (Heat, Cool, Auto, Off), fan mode (Auto or Always On), heat and cool setpoints (including increase/decrease), with live temperature, humidity, heating/cooling state, and online status.
- Live updates: device state is pushed from SmartRent as it changes, so Indigo reflects changes made in the SmartRent app or at the device itself.
- Two-factor authentication: the plugin generates SmartRent 2FA codes automatically from your authenticator secret, so it can log in unattended.
Requirements
- Indigo 2023.2 or later (the plugin targets Indigo Server API 3.4 and Python 3.11+).
- A SmartRent resident account with two-factor authentication enabled through an authenticator app. The plugin needs the authenticator secret, not a one-time code (see Configuration).
Python dependencies (smartrent-py, aiohttp, pyotp and more-itertools) are listed in the plugin's requirements.txt and are installed by Indigo automatically when the plugin is enabled.
Installation
- Download
SmartRent.indigoPlugin.zip from the latest release.
- Unzip it and double-click
SmartRent.indigoPlugin. Indigo will install and enable the plugin.
- Configure the plugin as described below.
Configuration
Open Plugins → SmartRent → Configure… and fill in:
| Field |
Description |
| Email |
The email address you use to sign in to SmartRent. |
| Password |
Your SmartRent password. |
| 2FA Secret |
The secret key from your SmartRent authenticator-app setup (see below). This is not the 6-digit code. |
| Log level |
Debug, Info (default), or Warning. |
Finding your 2FA secret
When you set up an authenticator app for SmartRent, you're shown a QR code. Most setup screens also offer a text version of the key (often labeled something like "can't scan the code?"). That text, usually a long string of letters and numbers, is the secret the plugin needs.
If 2FA is already set up and you no longer have the secret, you'll typically need to turn 2FA off and back on in SmartRent to get a new one. Add the new secret to your authenticator app and to the plugin.
Use the Check 2FA code button to confirm the secret is correct: the code it shows should match the one in your authenticator app.
Some setup screens show the secret in groups separated by spaces (for example, ABCD EFGH IJKL MNOP). Remove the spaces when you enter it in the plugin, or it will be rejected as invalid.
Note: The plugin logs in to SmartRent when it starts. If you change your email, password, or 2FA secret, reload the plugin (Plugins → SmartRent → Reload) for the change to take effect.
Adding devices
- In Indigo, create a new device and choose SmartRent as the type.
- Pick the model: Door Lock or Thermostat.
- Select the matching device from the SmartRent Device menu, which lists the devices on your SmartRent account of that kind.
- Save. The device will populate with its current state and then update live.
Note: The plugin loads your SmartRent device list when it starts. If you add a device to your SmartRent account later, reload the plugin (Plugins → SmartRent → Reload) before it will appear in the SmartRent Device menu.
Door Lock
Door locks are Indigo relay devices with the lock subtype, so Indigo shows them with lock and unlock controls. Use the Lock and Unlock actions to control them.
| State |
Description |
lockStatus |
locked or unlocked (shown in the device list). |
onOffState |
true when locked. |
batteryLevel |
Battery percentage reported by the lock. |
online |
Whether SmartRent reports the lock as online. |
Thermostat
Thermostats are native Indigo thermostat devices and support the built-in thermostat actions.
| Indigo |
SmartRent |
| HVAC mode Heat / Cool / Heat-Cool (Auto) / Off |
heat / cool / auto / off |
| Fan mode Auto / Always On |
auto / on |
| Heat and cool setpoints |
Heating and cooling setpoints |
The device also reports current temperature, humidity, whether heating or cooling is running, and an online state.
Using SmartRent devices in Indigo
Because these are standard Indigo devices, you can use them anywhere you'd use a built-in lock or thermostat. A few ideas:
- Trigger an Action Group when the front door is unlocked.
- Lock the door on a schedule each night.
- Switch the thermostat to a setback temperature when everyone leaves.
- Get a notification when a device's
online state becomes false, or when a lock's battery runs low.
From a Python script in Indigo, the standard device commands work too:
lock = indigo.devices["Front Door"]
indigo.device.lock(lock)
thermostat = indigo.devices["Living Room Thermostat"]
indigo.thermostat.setHeatSetpoint(thermostat, value=68)
See the Indigo scripting tutorial for more.
Troubleshooting
- "The email, password, and 2FA secrets are not configured!": open the plugin configuration and fill in all three fields, then reload the plugin.
- "SmartRent rejected the login. Check your email, password, and 2FA secret.": SmartRent didn't accept your credentials. Check your email and password, use Check 2FA code to confirm the code matches your authenticator app, then reload the plugin.
- "Couldn't reach SmartRent: …": the plugin couldn't connect to SmartRent, or SmartRent returned an unexpected response. Check your network connection, wait a few minutes in case SmartRent is having problems, then reload the plugin.
- "Timed out connecting to SmartRent.": SmartRent didn't respond in time. This is usually temporary; reload the plugin to try again.
- "Invalid 2FA secret: …": shown when you click Check 2FA code or save the plugin configuration with a secret that isn't valid. Check that the secret was copied completely, without spaces, and that you used the secret rather than a 6-digit code. See Finding your 2FA secret.
- The SmartRent Device menu says "No connection to SmartRent API": the plugin couldn't log in. Look in the Event Log for one of the login errors above, fix the cause, then reload the plugin.
- "No SmartRent device linked to …": edit the Indigo device and choose a device from the SmartRent Device menu.
- A device is missing from the SmartRent Device menu: the device list is loaded when the plugin starts, so devices added to your SmartRent account afterward won't appear until you reload the plugin. Also check that you picked the right model: the menu only lists SmartRent devices of the selected kind (Door Lock or Thermostat).
- Something else: set the log level to Debug, reproduce the problem, and include the relevant Indigo Event Log lines when asking for help.
For help, post in the plugin's Indigo forum or open an issue.
Development and contributing
See DEVELOPMENT.md for how the plugin is structured and how to set up a local environment, and CONTRIBUTING.md for how to report issues and submit pull requests.
| v1.0.6 |
Requires Indigo v2023.2.0+
|
Released Oct. 29, 2026 |
v1.0.6 |
Changes in this release
1.0.6 (2026-10-29)
Bug Fixes
- Action handlers don't handle an unlinked SmartRent device (#78) (508b754)
- handle unknown thermostat modes during updates (#76) (8d8c0cc)
| v1.0.5 |
Requires Indigo v2023.2.0+
|
Released Oct. 29, 2026 |
v1.0.5 |
Changes in this release
1.0.5 (2026-10-29)
Bug Fixes
- correct device type in door lock error messages (c463380)
- handle failed SmartRent login during startup (#61) (e40bf86)
- missing credentials crash on plugin startup (#58) (16572d5)
- respond to lock device actions (#70) (2ccea5f)
- set
IsLockSubType for lock device (#63) (51b345b)
- undefined variable in startup login error handler (#64) (f9c9a13)
- validate 2FA secret before generating codes (#62) (538c4a8)
Miscellaneous Chores
- deps: pin aiohttp to 3.14.4 (#57) (7598393)
- deps: update actions/setup-python digest to 6d4fd22 (f927231)
- deps: update actions/setup-python digest to 6d4fd22 (#45) (2d4eff4)
- deps: update dependency aiohttp to v3.14.5 (#60) (5aff467)
- deps: update dependency more-itertools to v11.2.1 (42989dd)
- deps: update dependency more-itertools to v11.2.1 (#43) (647f2ee)
- deps: update dependency ruff to v0.17.3 (#66) (735b21a)
- deps: update marocchino/sticky-pull-request-comment action to v3.0.5 (#69) (320b5fc)
Docs
| v1.0.4 |
Requires Indigo v2023.2.0+
|
Released July 25, 2026 |
v1.0.4 |
Changes in this release
1.0.4 (2026-07-25)
Miscellaneous Chores
- deps: pin dependencies (d0d08b0)
- deps: pin dependencies (#40) (f3cfbd7)
- deps: update actions/checkout action to v7 (4a77e9f)
- deps: update actions/checkout action to v7 (e156d42)
- deps: update actions/checkout action to v7 (#37) (edc9c76)
- deps: update actions/checkout action to v7 (#41) (12dcdc7)
- deps: update actions/setup-python action to v7 (94f37ed)
- deps: update actions/setup-python action to v7 (#42) (dc31bc4)
- deps: update dependency more-itertools to v11.1.0 (7a5ef70)
- deps: update dependency more-itertools to v11.1.0 (#34) (63a06fe)
- deps: update dependency pyotp to v2.10.0 (4d23150)
- deps: update dependency pyotp to v2.10.0 (#36) (82cba4f)
| v1.0.3 |
Requires Indigo v2023.2.0+
|
Released April 29, 2026 |
v1.0.3 |
Changes in this release
1.0.3 (2026-04-29)
Miscellaneous Chores
- deps: Develop locally with Python 3.13 (c2cee16)
- deps: Develop locally with Python 3.13 (#32) (813c954)
- deps: update dependency more-itertools to v11 (7c7f11b)
- deps: update dependency more-itertools to v11 (#29) (bcbbac7)
- deps: update googleapis/release-please-action action to v5 (63c8e49)
- deps: update googleapis/release-please-action action to v5 (#31) (7e3f038)
- deps: update googleapis/release-please-action digest to 5c625bf (aed287c)
- deps: update googleapis/release-please-action digest to 5c625bf (#30) (d9fc87f)
| v1.0.2 |
Requires Indigo v2023.2.0+
|
Released March 14, 2026 |
v1.0.2 |
Changes in this release
1.0.2 (2026-03-14)
Miscellaneous Chores
- deps: update actions/checkout digest to de0fac2 (3b95672)
- deps: update actions/checkout digest to de0fac2 (#22) (d157e73)
- deps: update marocchino/sticky-pull-request-comment action to v3 (f6e7ad4)
- deps: update marocchino/sticky-pull-request-comment action to v3 (#28) (32cede2)
| v1.0.1 |
Requires Indigo v2023.2.0+
|
Released Jan. 27, 2026 |
v1.0.1 |
Changes in this release
What's Changed
- chore: Configure Renovate by @renovate[bot] in https://github.com/AaronLionsheep/SmartRent/pull/15
- chore(deps): update dependency more-itertools to v10.8.0 by @renovate[bot] in https://github.com/AaronLionsheep/SmartRent/pull/17
- chore(deps): pin dependencies by @renovate[bot] in https://github.com/AaronLionsheep/SmartRent/pull/20
- chore(deps): update actions/checkout action to v5 by @renovate[bot] in https://github.com/AaronLionsheep/SmartRent/pull/19
- chore(deps): update actions/checkout action to v6 by @renovate[bot] in https://github.com/AaronLionsheep/SmartRent/pull/23
- chore(deps): update googleapis/release-please-action digest to 16a9c90 by @renovate[bot] in https://github.com/AaronLionsheep/SmartRent/pull/21
- chore(deps): update dependency smartrent-py to v0.5.2 by @renovate[bot] in https://github.com/AaronLionsheep/SmartRent/pull/16
- ci(release): Expand changelog sections by @AaronLionsheep in https://github.com/AaronLionsheep/SmartRent/pull/26
- chore(main): release 1.0.1 by @github-actions[bot] in https://github.com/AaronLionsheep/SmartRent/pull/25
New Contributors
- @renovate[bot] made their first contribution in https://github.com/AaronLionsheep/SmartRent/pull/15
Full Changelog: https://github.com/AaronLionsheep/SmartRent/compare/v1.0.0...v1.0.1
| v1.0.0 |
Requires Indigo v2023.2.0+
|
Released Sept. 9, 2025 |
v1.0.0 |
Changes in this release
1.0.0 (2025-09-09)
⚠ BREAKING CHANGES
- Door Lock and Thermostat support (#3)
Features
- Door Lock and Thermostat support (#3) (64e79b9)