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-1control

v1.0.3

Published

Homebridge plugin to control devices via the 1Control.eu web portal

Readme

homebridge-1control

A Homebridge plugin to control devices via the web.1control.eu web portal.

This plugin automatically logs in and simulates button clicks on the 1Control web interface, making your 1Control devices controllable via Apple HomeKit and Siri.


How it works

When you activate the switch in HomeKit (or via Siri), the plugin:

  1. Opens a headless browser session with web.1control.eu
  2. Logs in with your credentials
  3. Navigates to the configured page
  4. Finds the correct device card by its label and clicks the activate button
  5. Confirms the action on the confirmation dialog
  6. The switch automatically resets to OFF after a few seconds (like a momentary button)

Requirements

  • Homebridge >= 1.3.0
  • Node.js >= 14.0.0
  • Chromium browser installed on the host system

Install Chromium (Raspberry Pi)

sudo apt-get install chromium-browser -y

Installation

PUPPETEER_SKIP_DOWNLOAD=true npm install -g homebridge-1control

Important: Always use PUPPETEER_SKIP_DOWNLOAD=true to avoid downloading a bundled Chromium (~300MB). The plugin uses the system-installed Chromium instead.

Or install via the Homebridge UI by searching for homebridge-1control.


Configuration

Add the following to your Homebridge config.json:

{
  "platforms": [
    {
      "platform": "1ControlPlatform",
      "name": "1Control",
      "username": "[email protected]",
      "password": "yourpassword",
      "buttons": [
        {
          "name": "Main Gate",
          "selector": "Gate",
          "pageUrl": "/web/it/#/device/13274",
          "resetDelay": 1500
        },
        {
          "name": "Garage",
          "selector": "Garage",
          "pageUrl": "/web/it/#/device/13274",
          "resetDelay": 1500
        },
        {
          "name": "Barrier",
          "selector": "Barrier",
          "pageUrl": "/web/it/#/device/13274",
          "resetDelay": 1500
        }
      ]
    }
  ]
}

Configuration options

| Parameter | Type | Required | Description | |-----------|------|:--------:|-------------| | username | string | ✅ | Your 1Control login email/username | | password | string | ✅ | Your 1Control login password | | buttons | array | ✅ | List of buttons to expose to HomeKit | | buttons[].name | string | ✅ | Name shown in the Home app (e.g. "Main Gate") | | buttons[].selector | string | ✅ | Exact text of the device card label on the website | | buttons[].pageUrl | string | ❌ | Relative URL of the device page (default: /) | | buttons[].resetDelay | number | ❌ | Ms before switch resets to OFF (default: 1500, -1 = never) |


How to find the card label (selector)

  1. Open web.1control.eu in your browser and log in
  2. Navigate to the device page
  3. Look at the label shown below each device icon — that is your selector value
  4. Right-click → Inspect to confirm the text inside the <span class="display-block"> element

Example HTML:

<div class="single-action">
  <span class="display-block">Gate</span>
  <a id="activateButton" class="button">Activate</a>
</div>

In this case, use "selector": "Gate".


Performance notes

  • First activation takes ~30-60 seconds on a Raspberry Pi 3 (browser cold start + login)
  • Subsequent activations are much faster (~5-10 seconds) since the browser and session stay active in memory
  • Tested on Raspberry Pi 3 Model B with Chromium 126

Debugging

To see detailed logs, start Homebridge in debug mode:

homebridge -D

All plugin log entries are prefixed with [1Control] for easy filtering.

If a button is not found, the plugin will log all available card labels to help you identify the correct selector value.


Project structure

homebridge-1control/
├── src/
│   ├── index.js      # Entry point - registers the platform
│   ├── platform.js   # Homebridge platform - manages accessories
│   ├── accessory.js  # HomeKit Switch accessory
│   └── client.js     # HTTP/browser client for web.1control.eu
├── config.schema.json  # Schema for Homebridge UI
├── package.json
└── README.md

License

MIT