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

@uboness/homebridge-slide

v1.0.0

Published

Homebridge plugin for Slide curtains using the local Slide HTTP API

Readme

Homebridge Slide

Homebridge plugin for Slide curtains using the local Slide HTTP API only.

Unlike a bridge-based plugin, each Slide is reached directly over your local network, so every Slide is configured as its own device with its own IP address (and, on newer firmware, its own device code). The Slide local API has no push notifications, so the plugin polls each Slide on a single shared timer to keep HomeKit in sync.

Local Development

Install dependencies with pnpm:

pnpm install

Build the plugin:

pnpm run build

Edit .homebridge/config/config.json with your Slide(s) and run Homebridge locally (Homebridge and the Config UI are installed as dev dependencies; this command runs that local instance against .homebridge):

pnpm run homebridge

The Config UI is available at http://localhost:8581.

Enabling the Local API

The Slide local API is disabled by default (it cannot run at the same time as the cloud API). To enable it, briefly press the reset button on the bottom of the Slide twice, ~0.5s apart. The LED flashing rapidly five times means the local API is enabled. Repeat to toggle back to the cloud API.

Once enabled, find the Slide's local IP address (a static IP / DHCP reservation is recommended) and, for newer firmware, note the 8-character device code printed on the Slide and the welcome sheet.

Configuration

{
  "platform": "Slide",
  "name": "Slide",
  "pollInterval": 5000,
  "tolerance": 2,
  "timeout": 10000,
  "devices": [
    {
      "name": "Living Room Curtain",
      "host": "192.168.1.226",
      "code": "KrsvBJB6",
      "invert": false
    }
  ]
}

| Option | Scope | Default | Description | | -------------- | -------- | ------- | ------------------------------------------------------------------------ | | pollInterval | platform | 5000 | Milliseconds between position polls for all Slides. | | tolerance | platform | 2 | HomeKit position units within which the curtain is considered "stopped". | | timeout | platform | 10000 | Per-request HTTP timeout in milliseconds. | | name | device | — | HomeKit name for the Slide (required). | | host | device | — | Local IP address or hostname of the Slide (required). | | code | device | — | Device code for Digest auth (required on newer firmware, omit on old). | | invert | device | false | Flip open/closed if the Slide reports the opposite of HomeKit. | | openThreshold | device | 100 | Reported position ≥ this (HomeKit 0-100) is shown as fully open (100). | | closeThreshold | device | 0 | Reported position ≤ this (HomeKit 0-100) is shown as fully closed (0). |

Calibration drift

Even after calibrating, a Slide that is physically fully open or closed often reports a position slightly off the true extreme, so HomeKit never quite shows 100% open or 0% closed. openThreshold and closeThreshold define a per-device dead zone: a reading at or above openThreshold is snapped to fully open, and a reading at or below closeThreshold is snapped to fully closed. They only affect the position reported to HomeKit — sending the curtain to fully open/closed still drives it to its true physical extreme.

Features

  • Exposes each configured Slide as a HomeKit Window Covering with current / target position, position state, and hold-position (stop).
  • Optional HTTP Digest authentication using the Slide device code, for firmware that protects the local API.
  • A single platform-level timer polls every configured Slide and pushes updates into HomeKit; there is no callback server or WebSocket because the Slide local API does not support them.

Slide Local API

The plugin talks to each Slide over plain HTTP:

| Endpoint | Purpose | | --------------------------- | ---------------------------------------------------------------- | | POST /rpc/Slide.GetInfo | Read current position (pos, 0=open … 1=closed) and device info. | | POST /rpc/Slide.SetPos | Move to a position ({ "pos": 0.5 }). | | POST /rpc/Slide.Stop | Stop the motor immediately. | | POST /rpc/Slide.Calibrate | Re-calibrate the curtain end positions. |

Slide positions are floats where 0 is fully open and 1 is fully closed; HomeKit positions are integers where 0 is closed and 100 is open, so the plugin converts between the two.