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

node-red-contrib-velux-klf200

v1.0.1

Published

Node-RED nodes for the Velux KLF-200 io-homecontrol gateway. Maintained fork of PLCHome/node-red-contrib-velux with vendored velux-klf200 + velux-klf200-api, TLS fingerprint pinning (survives the 2026-07-12 factory cert expiry) and crash fixes.

Readme

node-red-contrib-velux-klf200

Node-RED nodes for the Velux KLF-200 io-homecontrol® gateway.

A drop-in, maintained fork of PLCHome/node-red-contrib-velux (unmaintained since 2021), published under a new npm name because the original name is taken. The transport libraries velux-klf200 and velux-klf200-api are vendored into lib/ — one self-contained package instead of a three-package dependency chain. The node types are identical to upstream (velux-connection, Velux Nodes, Velux Api, Velux Scenes), so existing flows keep working without any change after migrating.

⚠️ If you use the KLF-200 nodes, read this

The Velux factory TLS certificate bundled in the upstream package expires on 2026-07-12 09:38 UTC. The upstream code validates the certificate chain, so after that date every (re)connect to your KLF-200 fails with CERT_HAS_EXPIRED — blinds stop responding, and a Node-RED restart won't bring them back. Your currently-open connection keeps working only until the next disconnect (reboot, network blip, deploy).

This fork fixes it by pinning the gateway's certificate fingerprint instead of validating its expiry. Install it before your next reconnect.

Am I affected? Check the bundled cert's expiry on your host:

find / -path '*velux-klf200-api/cert/velux-cert.pem' 2>/dev/null \
  -exec openssl x509 -in {} -noout -enddate \;
# notAfter=Jul 12 09:38:26 2026 GMT  -> affected

What this fork fixes

| # | Fix | Upstream problem | |---|-----|------------------| | 1 | TLS fingerprint pinninglib/velux-klf200-api/lib/net.js | Bundled factory cert expires 2026-07-12; upstream does chain validation (rejectUnauthorized: true + bundled CA) so every reconnect afterwards throws CERT_HAS_EXPIRED. Now the gateway is authenticated by the SHA-1 fingerprint of its factory cert — independent of validity dates. Override with options.fingerprint if your device presents a different cert; the upstream options.old (accept-any) path is preserved. | | 2 | Process-crash fixlib/velux-klf200/nodes.js | sendValue discarded the command promise. A 5 s command-confirm timeout (device offline, deleted node index) became an unhandled promise rejection that killed the entire Node-RED process on Node ≥ 15. Now caught and surfaced on the connection's error channel. | | 3 | Catchable connection errorsvelux-connection.js | Connection errors used single-argument node.error() (log only, invisible to flows). Now two-argument — a catch node (and thus a dashboard toast / notification) can react to a lost gateway. | | 4 | Listener-leak fixlib/velux-klf200/klf.js | Every reconnect attempt registered ~14 listeners on the module-global event emitter and never removed them. During a gateway outage the built-in 5 s reconnect loop grew them without bound (memory + CPU per incoming frame). getVelux now clears stale listeners on each attempt. | | 5 | No password in debug loglib/velux-klf200-api/lib/net.js | Upstream logged the KLF-200 password in clear text when DEBUG=velux-klf200-api:* was set (which its own README recommends). Redacted. |

Install

From npm — Manage palette → Install → search velux-klf200, or:

npm install node-red-contrib-velux-klf200   # in your Node-RED user directory
# then restart Node-RED

Offline / from the release tarball (bundles its dependencies, no registry access needed):

npm install https://github.com/tix0815/node-red-contrib-velux/releases/latest/download/node-red-contrib-velux-klf200-1.0.1.tgz

Migrating from the original node-red-contrib-velux

Both packages register the same node types, and Node-RED won't load two modules that provide the same type — so remove the old one first, then add this one. Your flows are untouched (they reference the type names, which are identical):

npm remove node-red-contrib-velux
npm install node-red-contrib-velux-klf200
# then restart Node-RED

Compatibility

Tested on Node-RED 5.0.1 / Node.js 24 (and the 4.x line). Requires Node ≥ 18.

Configuration

Node configuration is identical to upstream — see the original documentation. The only new, optional knob is passing options.fingerprint (an AA:BB:… SHA-1 string) through the connection config if your gateway serves a certificate other than the standard Velux factory one.

Credits & license

Original work © Chris Traeger (PLCHome) — node-red-contrib-velux, velux-klf200, velux-klf200-api, all MIT. This fork preserves every upstream copyright notice. Maintained by tix0815. MIT — see LICENSE.