
Bluesound is a multiroom audio range built on BluOS, Lenbrook’s streaming platform for lossless audio up to 24-bit/192 kHz. Every BluOS player serves the BluOS Custom Integration API on the local network: plain HTTP GET requests on TCP port 11000, UTF-8 XML responses, no authentication and no cloud account. TapHome talks to the player directly over the LAN.
The template is not model-specific — it carries no model or producer binding and speaks only the HTTP API, so it applies to the whole current lineup (NODE, NODE X, NODE NANO, NODE ICON, POWERNODE, POWERNODE EDGE, PULSE, PULSE M, PULSE MINI, PULSE FLEX, PULSE CINEMA, PULSE CINEMA MINI, PULSE SOUNDBAR, VAULT and HUB) as well as earlier generations. Because BluOS is also shipped by NAD Electronics, DALI, PSB Speakers, Monitor Audio, Roksan, Cyrus and Peachtree, players from those brands serve the same API and respond to the same requests.
Network connection
There is no wiring to do. A BluOS player joins the home network over Ethernet or Wi-Fi through the BluOS Controller app’s setup wizard, and TapHome reaches it over HTTP afterwards. The only requirement is that the TapHome control unit and the player sit on the same LAN segment, with port 11000 open between them.
Port 11000 applies to every BluOS player with one documented exception: the NAD CI580 houses four streamer nodes in a single chassis on ports 11000 / 11010 / 11020 / 11030. The template addresses port 11000 only, so on a CI580 it controls node 1.
Configuration
Finding the player IP address
The address is shown in the Diagnostics screen of the BluOS Controller app:
- Android / iOS — Players tab → select the player → Home tab → Settings → under Help & Support tap Diagnostics.
- Windows / macOS — Player Drawer → select the player → left Navigation Drawer → Help → Diagnostics.
The same screen lists the addresses of the other players on the network under Other Players. Without the app, opening http://<player_ip>:11000/SyncStatus in a browser returns the player’s id (address and port) together with its mac attribute.
Keeping the address stable
The template addresses the player by IP, so a changed DHCP lease silently stops the integration. Lenbrook explicitly recommends a router-side DHCP reservation over a static address configured on the player:
- Open the router’s admin panel and find the DHCP / LAN reservation settings.
- Enter the player’s MAC address — the
/SyncStatusresponse carries it, so it can be read over HTTP without the app. - Assign the address the player should keep, and save.
- Reboot the player so it renews its lease, then verify it picked up the reserved address.
Template import
The template has a single import parameter, IpAddress (placeholder 192.168.0.1). Enter the player’s address; port 11000 and the request format are already part of the template.
Required post-import setup — Group With Player
The Group With Player switch ships with its IP variable set to the literal placeholder 192.168.x.x. This is not a working default — until it is replaced, the read script looks for 192.168.x.x among the player’s secondary players, never finds it, and the switch reads permanently off.
After importing the template, open the Group With Player device in the TapHome app and set IP to the address of the player that should be attached as the group secondary. Use the Diagnostics screen described above (Other Players lists exactly these addresses) or read /SyncStatus on any player on the network.
Every other device in the template works as soon as IpAddress is filled in. Group With Player is the one device that needs a second value after import — leave
192.168.x.xin place and the switch will appear broken rather than report an error.
Device capabilities
Transport control
Five push buttons drive playback:
- Play — starts the current audio source. It resumes a paused player, but a stopped player does not restart from it.
- Pause — sends a toggle, so the same button pauses a playing player and resumes a paused one. If an alarm with a timeout is playing, pausing also cancels that timeout.
- Stop — stops playback. Unlike Pause, a stopped player cannot be resumed with Play. Stopping also cancels a running alarm timeout.
- Next Track — skips forward in the play queue and wraps to the first track at the end of the queue, whatever the repeat setting is.
- Previous Track — restarts the current track if it has been playing longer than four seconds, otherwise steps back to the previous track.
These buttons act on the play queue. When the player is streaming a radio station or playing a physical input, the queue is not the audio source and skip / back are unavailable — the API handles that case through a separate endpoint that the template does not use.
Volume
Volume is a dimmer. It reads the player’s level (0–100) and scales it to the 0.0–1.0 dimmer range; writing a level sends the value back as a whole percentage. Switching the dimmer off sends a mute command rather than volume 0, so the player’s own level is preserved and unmuting restores it.
Both writes carry tell_slaves=1, which corresponds to the group volume slider in the BluOS Controller app: when the player is a group primary, every player in the group moves together rather than the addressed player alone.
The player’s usable volume range is configured in the BluOS Controller app under Settings → Player → Audio and is typically −80…0 dB. All levels are clamped into that range, so a TapHome dimmer at 100 % does not necessarily mean 0 dB. Players with a fixed line-level output report no usable volume at all, and the dimmer then shows a nonsensical level rather than an error.
The volume dimmer polls the player every 2.5 seconds, while the BluOS API asks integrations that do not use long polling to send at most one request every 30 seconds. On a single player this is a handful of small requests per minute, but it adds up across a house full of players — keep it in mind on constrained Wi-Fi, and prefer wired players where the network is busy.
Shuffle and repeat
Shuffle switches queue shuffling on and off. Shuffling rebuilds the queue; the original order is restored when it is switched off again.
Repeat is a three-state switch — No repeat, Repeat one and Repeat all. TapHome orders these slots the opposite way to the API, and the template applies the same remap on read and on write, so both directions stay consistent.
Both devices read their state from a value the module caches on its own 30-second status poll rather than issuing requests of their own. That keeps the network traffic down, at the cost of up to 30 seconds before a change made in the BluOS app shows up in TapHome.
Presets
Preset recalls a preset saved on the player — a radio station, a playlist or an input. Presets can only be created and deleted in the BluOS Controller app; the API can just load them.
The device is write-only: it sends the preset command but never reads back which preset is playing, so the switch does not reflect the player’s actual state.
Use preset slots 1–9. Slot 0 sends preset id 64 rather than 0, which looks like a leftover placeholder rather than a real preset. Preset ids also do not have to be sequential — a player can hold presets 1, 2, 3, 5, 7 and 8 — so check in the BluOS Controller app which ids actually exist before wiring a slot into a scene.
Multiroom grouping
Group With Player attaches a second BluOS player to this one. The player TapHome addresses becomes the primary: it selects the music source and distributes its audio, while the player named by the IP variable joins as a secondary. Switching the device off removes that player from the group again. The state is read back from the player’s list of attached secondaries, so grouping done from the BluOS app is reflected in TapHome.
Two consequences follow from how BluOS grouping works:
- Only external inputs connected to the primary player reach the rest of the group. If TV audio from an optical or HDMI input should play everywhere, TapHome must address the player carrying that input.
- The BluOS Controller app manages at most eight groups of eight players, or four groups of sixteen. One TapHome switch handles one primary–secondary pair, so a three-player group needs a second switch.
The grouping requests use a parameter spelling that mixes the API’s singular and plural forms. It works in practice because port 11000 is the documented default, but it is worth knowing if a group command ever behaves unexpectedly.
Sample buttons — demonstrations, not player features
The template ships with two buttons named Sample - Jungle and Sample - Shutdown. They are demonstrations of URL streaming, not capabilities of the player: each one stops playback, clears the play queue and plays a single audio file from a URL stored in the device’s variable.
They are meant to be edited or deleted. The Jungle sample points at a third-party sample host outside TapHome’s control and will break whenever that site changes. The Shutdown sample points at a TapHome-hosted MP3 and is a usable pattern for a doorbell or announcement sound if the URL is replaced with one of your own — note that the address has to be percent-encoded, because it is passed straight through to the player.
Troubleshooting
The player does not respond
- Open
http://<player_ip>:11000/SyncStatusin a browser — an XML response means the player is reachable and the API is live. - If it does not respond, check the address in the BluOS Controller app’s Diagnostics screen; a DHCP renewal may have moved it. Set up the DHCP reservation described above so it stops happening.
- Try the player’s mDNS hostname instead of the IP address.
- Confirm the TapHome control unit and the player are on the same network / VLAN and that nothing blocks port 11000 between them.
The grouping switch never turns on
The IP variable on Group With Player is still the placeholder 192.168.x.x, or it holds an address that is not a BluOS player. Set it to the secondary player’s real address — see the post-import setup above.
A preset does nothing
Either the slot has no preset behind it on this player, or slot 0 was used. Open the BluOS Controller app, check which preset ids the player actually holds, and map the TapHome slots to those ids. Presets have to be created in the app first — the template cannot create them.
Next / Previous do nothing
The player is not playing from its queue. Radio streams and physical inputs are not queue-based, and skip / back do not apply to them. Start playback from a playlist, an album or the queue and the buttons work again.
Changes made in the BluOS app show up late
Shuffle and repeat are read from the module’s cached status, which refreshes every 30 seconds. Volume is polled more often. Transport buttons and Preset are write-only and never reflect external changes at all.
The player is muted but TapHome shows a level
Muting is written when the volume dimmer is switched off, but the mute state is never read back. A player muted from the BluOS Controller app or its remote keeps showing its previous dimmer level in TapHome. Toggle the dimmer off and on to bring the two back in sync.
