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-teufel-raumfeld

v0.3.2

Published

Control Teufel Raumfeld multiroom speakers from Apple HomeKit, with AirPlay streaming from iOS.

Readme

homebridge-teufel-raumfeld

Raumfeld, in Apple Home.

A Homebridge plugin that exposes your Teufel Raumfeld multiroom speakers to Apple HomeKit — every room as a tile, every Raumfeld group as a single controllable accessory, with optional AirPlay streaming from any iPhone.

npm install -g homebridge-teufel-raumfeld

npm license homebridge

Features

  • Auto-discovery — finds the Raumfeld host on your network (SSDP), or point it at a fixed IP.
  • Native Home tiles — each room appears as a HomeKit speaker with volume, mute and play/pause.
  • Multiroom groups — groups you make in the Raumfeld app show up as one accessory; member rooms are controlled together (see below).
  • Per-zone volume — HomeKit volume maps to Raumfeld volume; group volume can be kept in sync.
  • AirPlay 2 streaming (optional) — advertise zones as AirPlay receivers to stream straight from iOS.
  • Siri — “Hey Siri, set the Kitchen to 30%.”
  • Cross-subnet friendly — resolves speakers via the host’s HTTP API, so Homebridge and the speakers can live on different VLANs.

Configuration

Configure from the Homebridge Config UI X screen (a custom settings page ships with the plugin), or add a platform block to config.json:

{
  "platforms": [
    {
      "platform": "Raumfeld",
      "name": "Raumfeld",
      "autoDiscover": true,
      "host": "192.168.1.50",
      "pollInterval": 5,
      "airplay":   { "enabled": true, "bufferMs": 220 },
      "multiroom": { "exposeGroups": true, "syncGroupVolume": true }
    }
  ]
}

| Option | Default | Description | |---|---|---| | autoDiscover | true | Find the Raumfeld host via SSDP. Turn off to use host. | | host | — | IP/hostname of the Raumfeld host. Required when autoDiscover is off, or when Homebridge and the speakers are on different subnets (SSDP can’t cross subnets). | | pollInterval | 2 | Safety-net poll seconds; live changes arrive instantly via the host long-poll. | | airplay.enabled | true | Advertise zones as AirPlay receivers. Requires shairport-sync on the host — see AirPlay streaming. | | airplay.bufferMs | 220 | AirPlay audio buffer. | | airplay.binaryPath | shairport-sync | Path to the shairport-sync binary. Default finds it on PATH. | | airplay.streamHost | auto | IP/hostname the speakers use to reach this Homebridge machine's audio stream. Auto-detected; set it when Homebridge and the speakers are on different subnets. | | airplay.streamPort | 8099 | TCP port for the local audio stream the speakers pull from. | | multiroom.exposeGroups | true | Expose active Raumfeld groups as accessories. | | multiroom.syncGroupVolume | true | Apply group volume changes to all members. |

Restart Homebridge after saving.

AirPlay streaming

Raumfeld speakers are not native AirPlay receivers, so the plugin bridges the gap: it runs a shairport-sync process per zone (that's the AirPlay target your iPhone sees), captures the decoded audio, and re-serves it to the zone's renderer over HTTP.

Prerequisite — install shairport-sync on the Homebridge host (built with the stdout backend, which the common packages include):

# Debian/Ubuntu/Raspberry Pi OS
sudo apt install shairport-sync
# macOS
brew install shairport-sync

Then in config.json, airplay.enabled: true (the default). Zones appear in the iOS AirPlay / Control-Center output picker. Selecting one points that Raumfeld zone at the plugin's stream and starts playback; a grouped zone plays through its lead renderer and Raumfeld keeps the member speakers in sync.

Notes and limits:

  • Different subnets: the speakers pull the audio stream from the Homebridge machine, so that machine's stream host/port must be reachable from the speakers. Auto-detection picks the first LAN IP; set airplay.streamHost (and open airplay.streamPort) if that guess is wrong.
  • Each zone runs its own receiver in AirPlay-1 mode (one self-contained process per zone). AirPlay-2 multi-room grouping across zones is not attempted.
  • If shairport-sync isn't installed, AirPlay stays off and the plugin logs a one-time warning — everything else works normally.

Multiroom behaviour

Groups are authored in the Raumfeld app, not in Homebridge — the plugin mirrors them live. When rooms are combined into a Raumfeld group:

  • the group is exposed as one accessory (the controllable unit);
  • each member room stays visible but its writes are routed to the group lead, so controlling it controls the group;
  • dissolve the group in the Raumfeld app and the rooms become individually controllable again.

Tested with

Stereo L · Stereo M · One · One M · Stream · Soundbar · Connector

Requirements

  • Node.js ≥ 18
  • Homebridge ≥ 1.8 (Homebridge 2.0 ready)
  • A Raumfeld host (any Raumfeld/Teufel speaker or Connector acting as host) reachable on port 47365
  • (AirPlay only) shairport-sync installed on the Homebridge host — see AirPlay streaming

Development

The plugin sources live in this directory.

npm install
npm run build       # rimraf ./dist && tsc
npm run lint
npm run dev         # nodemon: rebuild + relaunch Homebridge against test/hbConfig

Architecture: a dynamic platform (src/platform.ts) mirrors the host’s rooms and zones as accessories; src/raumfeldClient.ts talks to the host HTTP API (/getZones, /listDevices, long-poll updateId) and drives each renderer over SOAP (RenderingControl / AVTransport); src/zoneAccessory.ts is the per-accessory HomeKit service; src/airplayBridge.ts orchestrates AirPlay — spawning a shairport-sync receiver per zone (src/airplayReceiver.ts) and re-serving its PCM to the renderer through a small HTTP stream server (src/airplayStreamServer.ts).

License

MIT © Alexander Peither