added speaker grouping

master
bernhard.trinnes 2020-03-20 07:38:12 +01:00
parent e95ff04808
commit 00a417a953
2 changed files with 39 additions and 3 deletions

View File

@ -0,0 +1,26 @@
# BluOS
This integration allows to control audio devices based on BluOS. BluOS is an operating system that can be found in products from Blusound, NAD Electronics, DALI Loudspeakers and others.
## Supported Things
* BluOS Player
* Auto discovery setup
* Auto rediscovery on IP address change
* Multimedia control
* Volume
* Browsing Presets
* Browsing various music services
* Grouping speakers
* No internet or cloud connection required
## Requirements
* The BluOS device must be in the same local area network as nymea.
* TCP sockets on port 80 must not be blocked by the router.
* Blusound App to setup the speaker.
* The package "nymea-plugin-bluos" must be installed
## More
https://www.bluesound.com/

View File

@ -229,9 +229,19 @@ void IntegrationPluginBluOS::browseThing(BrowseResult *result)
m_asyncBrowseResults.insert(requestId, result);
connect(result, &BrowseResult::aborted, this, [this, requestId]{m_asyncBrowseResults.remove(requestId);});
} else if (result->itemId() == "grouping") {
//TODO avahi discovery
// m_asyncBrowseResults.insert(requestId, result);
//connect(result, &BrowseResult::aborted, this, [this, requestId]{m_asyncBrowseResults.remove(requestId);});
foreach (const ZeroConfServiceEntry avahiEntry, m_serviceBrowser->serviceEntries()) {
qCDebug(dcBluOS()) << "Zeroconf entry:" << avahiEntry;
QString playerId = avahiEntry.hostName().split(".").first();
if (thing->paramValue(bluosPlayerThingSerialNumberParamTypeId).toString() == playerId) {
continue;
}
MediaBrowserItem groupingItem("grouping&"+avahiEntry.hostAddress().toString()+"&"+avahiEntry.port(), avahiEntry.name(), true, false);
groupingItem.setDescription(avahiEntry.hostAddress().toString());
groupingItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconNetwork);
groupingItem.setIcon(BrowserItem::BrowserIconMusic);
result->addItem(groupingItem);
}
} else if (result->itemId().isEmpty()) {
MediaBrowserItem presetItem("presets", "Presets", true, false);
presetItem.setIcon(BrowserItem::BrowserIcon::BrowserIconFavorites);