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-decaid

v1.0.2

Published

Homebridge plugin exposing a Decaid-connected DE1 espresso machine as a switch, temperature sensors, and a water level sensor via Decaid's REST and WebSocket API.

Readme

homebridge-decaid

A Homebridge dynamic platform plugin that exposes a Decaid-connected Decent DE1 espresso machine to HomeKit:

  • A switch to wake (idle) / sleep the machine.
  • Temperature sensors for mix, group head, and steam temperatures.
  • A water level sensor (modeled as a humidity sensor, since HomeKit has no native tank-level service), reported as a percentage of a configurable tank height.

It talks to Decaid's REST + WebSocket API (port 8080 by default): telemetry (temperatures, machine state, water level) is streamed live over WebSocket, and the on/off switch issues a REST state-change request. See assets/api/rest_v1.yml and assets/api/websocket_v1.yml in the Decaid repo for the full API contracts.

This plugin is a rewrite of homebridge-decent-advanced-rest-api targeting Decaid's newer API (the original targets the legacy de1app REST API and is not compatible with Decaid).

Installation

Once published to npm:

sudo npm install -g homebridge-decaid

Then add a decaid platform block to your Homebridge config.json (or use the Homebridge UI's plugin settings screen, which uses config.schema.json):

{
  "platform": "decaid",
  "machines": [
    {
      "name": "Decent Espresso",
      "host": "192.168.1.50:8080",
      "waterTankHeight": 60
    }
  ]
}

Configuration reference

| Field | Description | Default | |---|---|---| | machines[].name | Accessory name shown in HomeKit | — (required) | | machines[].host | Hostname/IP and port of the tablet running Decaid | — (required) | | machines[].waterTankHeight | Full-tank height in mm, used to convert the live water height into a percentage | 60 | | machines[].suppressMixTemperature | Hide the mix temperature sensor | false | | machines[].suppressGroupTemperature | Hide the group head temperature sensor | false | | machines[].suppressSteamTemperature | Hide the steam heater temperature sensor | false | | machines[].suppressWaterLevel | Hide the water level sensor | false | | reconnectDelay | Delay (ms) before retrying a dropped WebSocket connection | 2000 | | staleAfter | Milliseconds without a telemetry frame before a sensor reports "not responding" | 5000 | | requestTimeout | Timeout (ms) for the REST on/off request | 3000 |

waterTankHeight calibrates the percentage HomeKit shows, not the physical tank — Decaid reports the raw water height in mm (see ws/v1/machine/waterLevels), and this plugin divides by waterTankHeight to get a 0-100% reading. Adjust it to whatever height your machine's sensor reports at a full tank.

Development

npm install
npm run lint
npm run build

See homebridge-plugin-template and the Homebridge developer docs for background on the plugin API this is built against.

License

Apache-2.0 — see LICENSE. Adapted from homebridge-decent-advanced-rest-api, also Apache-2.0.