Ring smart home integration, free and open source

Ring doorbells, cameras and Ring Alarm: presses, motion, snapshots, lights and sirens.
Bring your Ring video doorbells, cameras and Ring Alarm into Gladys: a doorbell press or a motion starts your scenes in real time, the camera snapshot shows on your dashboard, and you can switch the floodlight or sound the siren from Gladys.
Developed without the hardware: feedback welcome. This integration was written and tested against recorded Ring API data, not against real devices. If something behaves oddly with your model, please open an issue on the GitHub repository or post on the Gladys forum: your feedback is what makes it reliable.
Not affiliated with, endorsed by or sponsored by Ring LLC or Amazon. "Ring" is a trademark of Ring LLC.
What you get
| Ring device | In Gladys |
|---|---|
| Video doorbells (wired, battery, Pro, Elite, Peephole Cam) | Snapshot, doorbell press, motion, battery (battery models) |
| Stick Up Cam, Indoor Cam | Snapshot, motion, battery (battery models) |
| Spotlight Cam, Floodlight Cam | Snapshot, motion, battery (battery models), light on/off, siren on/off |
| Ring Alarm (security panel) | Alarm mode: Disarmed, Home, Away (read-only unless you allow control) |
| Ring Alarm contact sensors | Open/closed, tamper, battery |
| Ring Alarm motion detectors | Motion, tamper, battery |
| Ring Alarm Flood & Freeze Sensor, Ring water sensor | Leak, freeze (flood & freeze model), tamper, battery |
| Ring Alarm Smoke & CO Listener, Kidde smoke/CO alarm | Smoke, carbon monoxide |
| Smoke alarms and CO alarms paired with the Ring Alarm | Smoke or carbon monoxide, tamper, battery |
Every camera also shows its connection on its card: Cloud when online, Unreachable when Ring reports it offline.
On top of the devices:
- Scene triggers: Ring doorbell pressed, Ring motion detected (filter on what moved: person, vehicle, package or other motion) and Ring Alarm mode changed (from Gladys, the Ring app or a keypad).
- Scene actions: Take a Ring snapshot and Set the Ring Alarm mode.
- Dashboard widget Ring doorbell: last snapshot, time of the last ring and of the last motion, battery, connection, and buttons to refresh the snapshot, switch the light, and sound the siren (with a confirmation).
Requirements: Gladys Assistant 5.1 or later and a Ring account. No Ring Protect plan is needed, except for Ring's own smart alerts (person, vehicle, package): without a plan, every motion is reported as "other motion".
Sign in to Ring
Ring requires two-step verification on every account, so signing in takes one extra step. You only do it once: Ring renews the token regularly, and the integration saves every renewed token in its own storage, so it stays signed in across restarts and updates.
Option 1: from Gladys (recommended)
- Open the integration's Configuration tab.
- Fill in Ring email and Ring password, then Save.
- Click Send a verification code. Ring sends you a code by text message, email or authenticator app, as set in your Ring account; the message under the button says where.
- Type the code in Confirm the verification code and run it, within 10 minutes.
- The status turns to connected, and your devices appear in the Discovery tab.
- You can now clear the password field and save: it is not needed anymore.
Ring limits verification codes to 10 every 10 minutes: if you asked for too many, wait a little.
Option 2: with a refresh token, from a computer
If you prefer not to type your password in Gladys, generate a token on any computer with Node.js installed:
npx -p ring-client-api ring-auth-cli
The tool asks for your Ring email, password and verification code, then prints a line like
"refreshToken": "eyJydCI6...". Copy the long token (between the quotes, without them; pasting the
whole line works too) into the Refresh token field of the Configuration tab, and save.
Where to see and revoke the access
In the Ring app, the integration shows as Gladys Assistant under Control Center → Authorized Client Devices. Removing it there signs Gladys out.
"Ring refused the token"
This message means Ring no longer accepts the saved token: it was removed in the Control Center, the account password changed, or the token was mistyped. Sign in again with option 1 or 2. The integration retries a refused token every 30 minutes on its own, and Ring outages every 5 minutes.
Add your devices
Open the Discovery tab and add the devices you want. Gladys keeps the feature names chosen when a device is added: pick the Language of the device names in the Configuration tab first (English, French, German or Spanish).
The camera snapshot appears in the Gladys camera box and in the Ring doorbell widget.
Options
- Refresh the snapshots: every 10, 30 (default) or 60 minutes, or only on events and on request. On top of that, the snapshot of every ring and motion is fetched right away when Ring attached one, and opening a camera on the dashboard asks for a fresh one. Battery cameras are spared: a snapshot asked within 10 minutes of the previous one is reused instead of waking the camera, which would drain the battery.
- Allow Gladys to arm and disarm the Ring Alarm: off by default. When off, the alarm mode is only displayed. When on, anyone who can use your Gladys dashboards and scenes can disarm your alarm: turn it on only if that is what you want. Some sensors (an open window when arming) need a bypass that only the Ring app can grant: Gladys then reports that the mode could not be set.
Scene ideas
- Someone rings, picture on my phone: trigger Ring doorbell pressed → action Take a Ring snapshot on that doorbell → core action Send a camera image of the same camera.
- Person in the driveway at night: trigger Ring motion detected, camera = Driveway, what moved = Person → condition on the time → turn on the floodlight (its Light feature) and your Gladys lights.
- Ring Alarm armed → Gladys away mode: trigger Ring Alarm mode changed, new mode = Away → set the Gladys house alarm, turn off the lights and the heating.
In the messages of a scene, {{triggerEvent.data.device_name}} is the name of the camera, and
{{triggerEvent.data.detection}} what moved (person, vehicle, package or motion).
How it talks to Ring, and how often
Ring has no public API. The integration uses ring-client-api, the open source library behind Homebridge Ring, which speaks to Ring's cloud the way the Ring app does. Everything goes through the cloud: Ring devices offer no local access.
- Presses and motions arrive in real time as push notifications, the same channel as the
Ring app (Firebase Cloud Messaging). It needs outgoing connections to
mtalk.google.comon TCP port 5228: if your firewall or DNS ad blocker blocks them, presses and motions will not arrive. - Camera status (battery, light, siren, online): one request every 60 seconds for the whole account, the pace of the Home Assistant integration.
- Ring Alarm: pushed in real time over a WebSocket, no polling.
- Snapshots: one request per camera at the interval you chose, plus one per event and per dashboard request (a request made within 30 seconds of the previous one reuses it).
Ring publishes no quota for this API. These rates are those of the established integrations; please do not change them.
The integration runs comfortably within Gladys' 256 MB sandbox: about 120 MB at rest, about 190 MB at worst while shrinking a large snapshot (measured on Node 22).
Limits
- No live video and no recordings: Gladys shows snapshots, not streams, and recordings need a Ring Protect plan. Both are out of scope.
- A camera whose motion detection is turned off (in the Ring app or by a Ring mode) takes no snapshot: Ring refuses it. Battery cameras cannot take a snapshot while someone watches their live view.
- Snapshots above the Gladys limit (150 KB) are downsized before being shown.
- Ring Alarm: the keypad, base station, range extender, glass break sensor, panic buttons, locks and thermostats are not supported. Neither are Ring Smart Lighting, Chimes, Intercom and third-party cameras.
- Gladys has no "freeze" category: the freeze detection of the Flood & Freeze Sensor is a generic binary input. Its device card and scenes show "Freeze", but the dashboard shows the generic label "State of input".
- Smoke and CO detection is a convenience, not a safety system: the alarm reaches Gladys only if Ring's cloud, your network and Gladys are all up. Keep Ring's own monitoring and the detector's siren as your safety net.
- The integration has no settings of its own for units: it shows percentages, and dates in your Gladys time zone (12-hour clock in English).
- A press stays active on the device card for 15 seconds; a motion stays detected for a minute after Ring's last notification.
Your data
The Ring token and the hardware id sent to Ring are stored in the integration's own folder on your
Gladys machine (/data), never in a log. The password, if you typed one, stays in the Gladys
configuration until you clear it. Nothing is sent anywhere but to Ring.
Credits
Built on ring-client-api by Dusty Greif and contributors (MIT). The behavior of the Home Assistant Ring integration (Apache 2.0) served as reference.
Configuration settings
These are the settings Ring asks for in its configuration screen in Gladys.
| Setting | Type | Required | Description |
|---|---|---|---|
| Sign in to Ring | section | No | Ring requires two-step verification. Either paste a refresh token obtained on a computer with "npx -p ring-client-api ring-auth-cli", or fill in your Ring email and password, save, then run the two actions "Send a verification code" and "Confirm the verification code" below. The integration keeps the token Ring renews in its own storage: you only sign in once. |
| Refresh token | secret | No | Printed by ring-auth-cli. Leave empty to sign in with the email and password below. |
| Ring email | string | No | |
| Ring password | secret | No | Only used by the sign-in actions. You can clear it once signed in. |
| Options | section | No | Snapshots of battery cameras are reused for 10 minutes, so that refreshing them does not drain the battery. |
| Refresh the snapshots | select | No | |
| Allow Gladys to arm and disarm the Ring Alarm | boolean | No | Off: the alarm mode is shown, never changed. On: anyone who can use your Gladys dashboards and scenes can disarm it. |
| Language of the device names | select | No | Gladys keeps the feature names chosen when a device is added. |
How to install Ring in Gladys
- In Gladys, open Integrations: Ring appears in the catalog, next to the native integrations, with a community badge.
- Click Install. Gladys pulls the Docker image (
ghcr.io/guim31/gladys-ring:1.2.0), starts it in a sandbox isolated from the core, and generates the integration's interface (devices, discovery and configuration). - Open the Configuration screen of the integration, fill in the settings, and save.
- You can also install it directly from its repository URL: https://github.com/guim31/gladys-ring.
Ring requires Gladys >=5.1.0. The catalog inside Gladys refreshes every hour, so a new version becomes available at most one hour after its release.
Not running Gladys yet? It is free and open source: follow the installation guide to get started.
About external integrations
Ring is an external integration: a community integration packaged as a Docker container and published on GitHub, that Gladys installs in one click and runs in a sandbox isolated from its core. It is published and maintained by guim31, not by the Gladys core team.
- Browse all external integrations
- Discover the native integrations built into Gladys
- Build and publish your own external integration
- Source code on GitHub — source of this documentation