removed audio sources

This commit is contained in:
bernhard.trinnes 2020-03-24 17:32:07 +01:00
parent fb8c12fe3f
commit 99317f3405
2 changed files with 61 additions and 17 deletions

View File

@ -1,3 +1,18 @@
# Denon # Denon
This pluging provides support for the [Denon AV Amplifier AVR-X1000](http://www.denon.de/de/product/hometheater/avreceivers/avrx1000) device. This pluging integrates audio products from Denon.
## Supported Things
* AVR-X1000
* Heos built-in products
## Requirements
* nymea and the Denon device must be in the same local area network.
* The package "nymea-plugin-denon" must be installed.
* TCP connection on port 1255 must not be block by the router.
## More
http://www.denon.com

View File

@ -425,16 +425,16 @@ void IntegrationPluginDenon::onPluginTimer()
heos->getPlayers(); heos->getPlayers();
heos->registerForChangeEvents(true); heos->registerForChangeEvents(true);
} else if (thing->thingClassId() == heosPlayerThingClassId) { } else if (thing->thingClassId() == heosPlayerThingClassId) {
Thing *heosThing = myThings().findById(thing->parentId()); //Thing *heosThing = myThings().findById(thing->parentId());
Heos *heos = m_heosConnections.value(heosThing->id()); //Heos *heos = m_heosConnections.value(heosThing->id());
int playerId = thing->paramValue(heosPlayerThingPlayerIdParamTypeId).toInt(); //int playerId = thing->paramValue(heosPlayerThingPlayerIdParamTypeId).toInt();
//TODO check if event stream is sufficent and remove polling //TODO check if event stream is sufficent and remove polling
heos->getPlayerState(playerId); //heos->getPlayerState(playerId);
heos->getPlayMode(playerId); //heos->getPlayMode(playerId);
heos->getVolume(playerId); //heos->getVolume(playerId);
heos->getMute(playerId); //heos->getMute(playerId);
heos->getNowPlayingMedia(playerId); //heos->getNowPlayingMedia(playerId);
} }
} }
} }
@ -600,10 +600,20 @@ void IntegrationPluginDenon::onHeosPlayersReceived(QList<HeosPlayer *> heosPlaye
heosPlayerDescriptors.append(descriptor); heosPlayerDescriptors.append(descriptor);
} }
//TODO remove things foreach(Thing *existingThing, myThings().filterByParentId(thing->id())) {
//autoThingDisappeared(); bool playerAvailable = false;
//TODO remove player from player Buffer int playerId = existingThing->paramValue(heosPlayerThingPlayerIdParamTypeId).toInt();
autoThingsAppeared(heosPlayerDescriptors); foreach (HeosPlayer *player, heosPlayers) {
if (player->playerId() == playerId) {
playerAvailable = true;
break;
}
}
if (!playerAvailable) {
autoThingDisappeared(existingThing->id());
m_playerBuffer.remove(playerId);
}
}
} }
void IntegrationPluginDenon::onHeosPlayerInfoRecieved(HeosPlayer *heosPlayer) void IntegrationPluginDenon::onHeosPlayerInfoRecieved(HeosPlayer *heosPlayer)
@ -698,32 +708,41 @@ void IntegrationPluginDenon::onHeosMusicSourcesReceived(quint32 sequenceNumber,
item.setIcon(BrowserItem::BrowserIconMusic); item.setIcon(BrowserItem::BrowserIconMusic);
if (source.name == "Amazon") { if (source.name == "Amazon") {
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconAmazon); item.setMediaIcon(MediaBrowserItem::MediaBrowserIconAmazon);
//result->addItem(item);
} else if (source.name == "Deezer") { } else if (source.name == "Deezer") {
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconDeezer); item.setMediaIcon(MediaBrowserItem::MediaBrowserIconDeezer);
//result->addItem(item);
} else if (source.name == "Napster") { } else if (source.name == "Napster") {
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconNapster); item.setMediaIcon(MediaBrowserItem::MediaBrowserIconNapster);
//result->addItem(item);
} else if (source.name == "SoundCloud") { } else if (source.name == "SoundCloud") {
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconSoundCloud); item.setMediaIcon(MediaBrowserItem::MediaBrowserIconSoundCloud);
//result->addItem(item);
} else if (source.name == "Tidal") { } else if (source.name == "Tidal") {
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconTidal); item.setMediaIcon(MediaBrowserItem::MediaBrowserIconTidal);
//result->addItem(item);
} else if (source.name == "TuneIn") { } else if (source.name == "TuneIn") {
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconTuneIn); item.setMediaIcon(MediaBrowserItem::MediaBrowserIconTuneIn);
item.setBrowsable(true); item.setBrowsable(true);
item.setDescription(source.serviceUsername); item.setDescription(source.serviceUsername);
result->addItem(item);
} else if (source.name == "Local Music") { } else if (source.name == "Local Music") {
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconDisk); item.setMediaIcon(MediaBrowserItem::MediaBrowserIconDisk);
//result->addItem(item);
} else if (source.name == "Playlists") { } else if (source.name == "Playlists") {
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconPlaylist); item.setMediaIcon(MediaBrowserItem::MediaBrowserIconPlaylist);
} else if (source.name == "History") { } else if (source.name == "History") {
//result->addItem(item);
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconRecentlyPlayed); item.setMediaIcon(MediaBrowserItem::MediaBrowserIconRecentlyPlayed);
} else if (source.name == "AUX Input") { } else if (source.name == "AUX Input") {
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconAux); item.setMediaIcon(MediaBrowserItem::MediaBrowserIconAux);
//result->addItem(item);
} else if (source.name == "Favorites") { } else if (source.name == "Favorites") {
item.setIcon(BrowserItem::BrowserIconFavorites); item.setIcon(BrowserItem::BrowserIconFavorites);
result->addItem(item);
} else { } else {
item.setThumbnail(source.image_url); item.setThumbnail(source.image_url);
} }
result->addItem(item);
qDebug(dcDenon()) << "Music source received:" << source.name << source.type << source.sourceId << source.image_url; qDebug(dcDenon()) << "Music source received:" << source.name << source.type << source.sourceId << source.image_url;
} }
result->finish(Thing::ThingErrorNoError); result->finish(Thing::ThingErrorNoError);
@ -767,34 +786,44 @@ void IntegrationPluginDenon::onHeosBrowseRequestReceived(quint32 sequenceNumber,
qDebug(dcDenon()) << "Adding Item" << source.name << source.sourceId; qDebug(dcDenon()) << "Adding Item" << source.name << source.sourceId;
item.setId("source=" + QString::number(source.sourceId)); item.setId("source=" + QString::number(source.sourceId));
item.setIcon(BrowserItem::BrowserIconMusic); item.setIcon(BrowserItem::BrowserIconMusic);
item.setExecutable(false);
item.setBrowsable(true);
if (source.name.contains("Amazon")) { if (source.name.contains("Amazon")) {
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconAmazon); item.setMediaIcon(MediaBrowserItem::MediaBrowserIconAmazon);
//result->addItem(item);
} else if (source.name == "Deezer") { } else if (source.name == "Deezer") {
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconDeezer); item.setMediaIcon(MediaBrowserItem::MediaBrowserIconDeezer);
//result->addItem(item);
} else if (source.name == "Napster") { } else if (source.name == "Napster") {
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconNapster); item.setMediaIcon(MediaBrowserItem::MediaBrowserIconNapster);
//result->addItem(item);
} else if (source.name == "SoundCloud") { } else if (source.name == "SoundCloud") {
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconSoundCloud); item.setMediaIcon(MediaBrowserItem::MediaBrowserIconSoundCloud);
//result->addItem(item);
} else if (source.name == "Tidal") { } else if (source.name == "Tidal") {
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconTidal); item.setMediaIcon(MediaBrowserItem::MediaBrowserIconTidal);
//result->addItem(item);
} else if (source.name == "TuneIn") { } else if (source.name == "TuneIn") {
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconTuneIn); item.setMediaIcon(MediaBrowserItem::MediaBrowserIconTuneIn);
result->addItem(item);
} else if (source.name == "Local Music") { } else if (source.name == "Local Music") {
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconDisk); item.setMediaIcon(MediaBrowserItem::MediaBrowserIconDisk);
//result->addItem(item);
} else if (source.name == "Playlists") { } else if (source.name == "Playlists") {
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconPlaylist); item.setMediaIcon(MediaBrowserItem::MediaBrowserIconPlaylist);
//result->addItem(item);
} else if (source.name == "History") { } else if (source.name == "History") {
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconRecentlyPlayed); item.setMediaIcon(MediaBrowserItem::MediaBrowserIconRecentlyPlayed);
//result->addItem(item);
} else if (source.name == "AUX Input") { } else if (source.name == "AUX Input") {
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconAux); item.setMediaIcon(MediaBrowserItem::MediaBrowserIconAux);
//result->addItem(item);
} else if (source.name == "Favorites") { } else if (source.name == "Favorites") {
item.setIcon(BrowserItem::BrowserIconFavorites); item.setIcon(BrowserItem::BrowserIconFavorites);
result->addItem(item);
} else { } else {
item.setThumbnail(source.image_url); item.setThumbnail(source.image_url);
} }
item.setExecutable(false);
item.setBrowsable(true);
result->addItem(item);
} }
result->finish(Thing::ThingErrorNoError); result->finish(Thing::ThingErrorNoError);
} else { } else {