npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

homebridge-ring-smoke-detectors

v1.2.2

Published

Homebridge plugin for Kidde/Ring smart smoke and CO detectors (hubless WiFi models)

Readme

homebridge-ring-smoke-detectors

A Homebridge plugin for Kidde/Ring smart smoke and CO detectors — the WiFi-only, hubless models that are not supported by the existing homebridge-ring plugin.

Why This Plugin Exists

Kidde/Ring smart smoke and CO detectors connect via WiFi and are managed through the Ring app. However, these devices don't work with the existing homebridge-ring plugin because:

  1. Real-time alarm state (smoke detected, CO detected) is only available via a WebSocket connection
  2. The upstream library only creates WebSocket connections when a Ring Alarm hub or Beams bridge is present — but these Kidde detectors work without any hub
  3. These devices may not appear in the Ring REST API at all — they are only reliably discoverable via WebSocket

This plugin establishes its own WebSocket connections that bypass the hub requirement. This approach was discovered by @tsightler and validated by @jbettcher in the original Ring plugin issue.

Supported Devices

| Device | Model | |--------|-------| | Kidde/Ring Smart Smoke Alarm (wired) | Smoke only | | Kidde/Ring Smart Smoke + CO Alarm (wired) | Smoke + CO | | Kidde/Ring Smart Smoke + CO Alarm (battery) | Smoke + CO |

HomeKit Services

Each detector exposes the following HomeKit services:

  • Smoke Sensor — alerts when smoke is detected (all models)
  • Carbon Monoxide Sensor — alerts when CO is detected, with PPM level (CO models only)
  • Battery — battery level and low-battery warnings

Prerequisites

  • Homebridge v1.8.0 or later
  • Node.js 20, 22, 24, or 25
  • A Ring account with Kidde/Ring smoke detectors set up in the Ring app

Installation

Via Homebridge UI

Search for homebridge-ring-smoke-detectors in the Homebridge plugin search and install it.

Via Command Line

npm install -g homebridge-ring-smoke-detectors

Setup

  1. Open the Homebridge web UI
  2. Go to Plugins → find Ring Smoke Detectors → click Settings
  3. Click Log In
  4. Enter your Ring email and password
  5. If prompted, enter your 2FA verification code
  6. Your devices will be discovered automatically and shown in the settings page
  7. Optionally rename devices or uncheck any you want to hide from HomeKit

Your Ring credentials are sent directly to Ring's servers and are not stored. Only the resulting refresh token is saved, and the plugin automatically handles token rotation.

Manual Configuration

If you prefer, add this to your Homebridge config.json under platforms:

{
  "platform": "RingSmokeDetectors",
  "refreshToken": "YOUR_REFRESH_TOKEN_HERE"
}

Options

| Option | Type | Default | Description | |--------|------|---------|-------------| | refreshToken | string | required | Ring refresh token (generated via the settings UI) | | locationIds | string[] | all locations | Limit to specific Ring location IDs | | hiddenDevices | string[] | none | Device IDs to exclude from HomeKit (managed via settings UI) | | deviceNames | object | none | Custom display names by device ID (managed via settings UI) | | debug | boolean | false | Enable verbose debug logging |

How It Works

  1. Authentication — OAuth token management with automatic token rotation and persistence
  2. Location Discovery — Fetches all Ring locations, then probes each one via WebSocket
  3. WebSocket Connection — Requests a ticket from Ring's clap/tickets endpoint and establishes a direct WebSocket connection — even without a Ring hub
  4. Device Discovery — Sends DeviceInfoDocGetList requests over the WebSocket to discover devices and their current state
  5. Real-time Updates — Subscribes to DataUpdate messages for live alarm state changes (smoke, CO, battery, etc.)
  6. Auto-reconnect — Reconnects with exponential backoff (5s → 60s) on connection loss, and automatically picks up new devices on reconnect

Troubleshooting

Devices Not Showing Up

  • Ensure your Kidde/Ring detectors are set up and online in the Ring app
  • Check the Homebridge logs for discovery messages
  • Enable "debug": true in the config for verbose logging

Token Issues

The plugin automatically rotates and persists refresh tokens. If authentication fails, open the plugin settings and click Re-authenticate to generate a new token.

WebSocket Connection Issues

The plugin automatically reconnects with exponential backoff (5s, 10s, 20s, up to 60s). Check your Homebridge logs for connection status messages.

Credits

This plugin would not be possible without the work of several people in the Ring community:

License

MIT