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

v2.0.0

Published

Homebridge plugin for RFXtrx433(E) transceivers.

Readme

homebridge-rfxcom

CI npm

Operate paired Somfy RTS/RFY blinds and awnings from Apple Home using an RFXCOM USB transceiver. Each configured remote exposes Up, Down, and Stop command switches. Commands wait for the transceiver's response, and serial failures are returned to HomeKit.

Requires Homebridge 2.4+ and Node 22, 24, or 26. Uses rfxcom 2.6 and SerialPort 11 for RFY communication.

Maintainer wanted

The current maintainer no longer has an RFXCOM transceiver and compatible motors and cannot test this integration against a live setup. Automated tests pass, but this release has not been validated on physical hardware. Compatibility reports and fixes from active users are welcome.

If you use this integration and would like to take over maintenance and releases, open an issue describing your setup and interest.

What you need

  • An RFXCOM transceiver and firmware that support RFY transmission.
  • A motor already paired with a remote stored in that transceiver. Use the manufacturer's pairing tools; this plugin does not create or erase pairings.
  • A local serial device accessible to the Homebridge service user, such as /dev/ttyUSB0 on Linux. Containers need the USB device passed through. Prefer a stable device path when several USB adapters are attached.

The underlying rfxcom package supports many protocols; this plugin currently exposes RFY remotes only. It does not discover arbitrary 433 MHz sensors.

Configure Homebridge

Install homebridge-rfxcom through Homebridge UI and add an RFXCom platform. The UI includes a configuration form. The equivalent entry in config.json's platforms array is:

{
  "platform": "RFXCom",
  "name": "RFXCOM",
  "tty": "/dev/ttyUSB0",
  "rfyRemotes": [
    {
      "name": "Awning",
      "deviceID": "0x020202/2",
      "openCloseSeconds": 30,
      "autoReset": true
    }
  ]
}

Use the address and unit code stored by the transceiver, not the motor's label. Address comparison ignores hexadecimal case and leading zeros. RFY addresses are 0x1 through 0x0fffff, with unit codes 0–4. The legacy rfyremotes and deviceId spelling aliases remain accepted.

| Setting | Default | Meaning | | --- | --- | --- | | tty | /dev/ttyUSB0 | Serial device path | | debug | false | Enable the underlying driver's diagnostics | | rfyRemotes | empty array | Named remotes to expose; an empty list removes cached plugin accessories and does not open the serial port | | openCloseSeconds | 5 | How long an Up/Down switch stays on when auto-reset is enabled; greater than 0, at most 3600 | | autoReset | true | Set false to leave Up/Down on until another command, useful for scenes |

Understand the switches

Turning Up or Down on sends that RFY command. Turning either off sends Stop. Turning Stop on sends Stop and resets all three switches off shortly afterward.

With autoReset: true, the active Up/Down switch turns off after openCloseSeconds. That automatic UI reset does not send Stop; the motor's own limits stop physical travel. With autoReset: false, the active command switch stays on until another command or a plugin restart.

Switch state records the last acknowledged command, not measured motor position or motion. RFY has no position feedback here. A transceiver acknowledgement confirms transmission, not that the motor received the signal or reached a limit. This is why the plugin does not present a precise WindowCovering percentage slider.

Commands are serialized and bounded to 100 running/waiting operations. A NAK, serial error, disconnect, or 15-second acknowledgement timeout fails the request. A failed command does not prevent later commands from being attempted. Shutdown cancels pending work, clears UI timers, and closes the serial connection.

Troubleshooting

Installation fails: 1.x used SerialPort 4 and cannot support current Node releases reliably (#17). The 2.0 dependency update is tested on Node 22/24/26 in Linux CI. ARM/OS-specific native binding availability and a real USB transceiver still need validation on your installation.

Remote not found: verify that it is paired in the connected transceiver and that its address/unit matches the stored RFY remote. A successful complete listing reconciles configured accessories; a failed listing preserves cached accessories. The receiver can take several seconds to initialize and enumerate its remotes; the plugin allows 30 seconds.

USB disconnected: restore device access and restart the plugin. Automatic reconnection is not implemented. Check serial permissions and ensure another application is not using the same transceiver.

Scenes need a persistent switch: use autoReset: false. The state remains an indication of the last command, not an indication that the motor is still running.

When reporting an issue, include plugin/Homebridge/Node versions, OS and CPU architecture, transceiver model/firmware, and the error message. Do not include unrelated credentials from your Homebridge configuration.

Upgrading and development

Back up Homebridge before upgrading to 2.0. Matching cached switches keep their UUIDs, including differently capitalized addresses. Invalid or duplicate remote configurations now fail early. The command switches retain their Up/Down/Stop behavior, with explicit error reporting and opt-in persistent state.

npm ci
npm test
npm pack

Eight tests use Homebridge's actual services and the current RFY command encoder, transmit queue, and response parser with simulated serial bytes. They cover empty configurations, ID normalization/cache reuse, ACK/NAK handling, automatic versus persistent switch state, shutdown, and validation. Tests never open a serial port or move a motor. Maintainer release checks are documented in RELEASING.md.

License

MIT. See LICENSE.