BluOS Player — full-featured driver for Bluesound, NAD, DALI, Monitor Audio & PSB

BluOS Player — full-featured driver for Bluesound, NAD, DALI, Monitor Audio & PSB

I've been running Bluesound gear alongside Hubitat for a while and wanted something that did more than start and stop music, so I wrote this. Sharing it in case it's useful to anyone else.

It talks directly to the player's local HTTP API on port 11000 — no cloud, no account, no vendor service in the middle. Works with anything running BluOS: Bluesound (Node, Powernode, Pulse, Vault), NAD, DALI, Monitor Audio, PSB.

GitHub: https://github.com/New-Forest-Technology-Services/hubitat-bluos-player

What it does

Playback — play, pause, stop, next, previous, toggle, seek, shuffle, repeat, sleep timer

Volume — set, step, mute, dB volume for the amplifier models, plus an optional max-volume cap (useful if you've got a speaker in a kid's room and don't fancy a 3am surprise)

Now playing — track, artist, album, service, album art URL, position and length, plus a trackData JSON attribute for dashboards

Presets — list them to the log, then play by number or by name. playPresetByName("Radio 4") reads a lot better in a rule than playPreset(3)

Inputs — lists the physical inputs the player reports (optical, analog, Bluetooth, HDMI depending on model) and lets you switch by name

Multi-room — group and ungroup players by IP, with the group role and members exposed as attributes

Announcements — TTS via Hubitat's built-in engine, or any audio URL, with optional announcement volume and playback restored afterwards

Reliability — uses BluOS long-polling so state changes show up almost immediately rather than on a poll cycle. There's a timed fallback and a watchdog that recovers the connection if it stalls, plus online/offline presence detection.

Installation

Easiest route is the import URL:

https://raw.githubusercontent.com/New-Forest-Technology-Services/hubitat-bluos-player/main/bluos-player.groovy

Drivers Code → New Driver → Import → paste → Save

Then Devices → Add Device → Virtual, pick BluOS Player, enter the player's IP address and save. Hit Configure once and it'll pull in your presets and inputs.

Give the player a DHCP reservation while you're at it — if its IP moves, the driver loses it.

Known limitations

A few things worth being upfront about:

  • BluOS has no native notification API. The driver snapshots the player state, plays the clip, then puts things back. Streaming services and local libraries resume cleanly. Some internet radio stations restart from live instead of resuming — that's the stream's behaviour, not something the driver can work around. There's a configurable delay if announcements get clipped.

  • Sleep timer is a cycle, not a setter. BluOS steps through 15/30/45/60/90/off with each call, so cycleSleepTimer does the same. cancelSleepTimer just keeps stepping until it wraps to off.

  • The API isn't officially documented by Lenbrook. It's been stable for years, but a firmware release could always change something. Shout if one does.

  • Some players report volume as -1, meaning fixed-output mode — volume is handled by whatever amp is downstream, so the volume commands won't do anything.

Feedback welcome

Tested on my own kit, but BluOS covers a lot of hardware and I've only got a slice of it. If you try it on a model I haven't — particularly NAD or DALI gear, or anything with HDMI inputs — I'd be glad to hear whether the input list and metadata come through properly.

Issues and PRs welcome on the repo.

1 Like