fixed command url

This commit is contained in:
nymea 2019-09-27 21:27:22 +02:00 committed by bernhard.trinnes
parent e8be8fc7b9
commit 8c06d6cbb3
4 changed files with 70 additions and 40 deletions

View File

@ -297,14 +297,15 @@ void Heos::clearQueue(int playerId)
void Heos::moveQueue(int playerId, int sourcQueueId, int destinationQueueId)
{
QUrl url("player");
url.setScheme("heos");
url.setPath("move_queue_item");
url.setQuery(QString("pid=%1").arg(playerId));
url.setQuery(QString("sqid=%1").arg(sourcQueueId));
url.setQuery(QString("dqid=%1").arg(destinationQueueId));
qCDebug(dcDenon) << "moving queue:" << url;
m_socket->write(url.toEncoded());
QByteArray cmd("heos://player/move_queue_item?");
QUrlQuery queryParams;
queryParams.addQueryItem("pid", QString::number(playerId));
queryParams.addQueryItem("sqid", QString::number(sourcQueueId));
queryParams.addQueryItem("dqid", QString::number(destinationQueueId));
cmd.append(queryParams.toString());
cmd.append("\r\n");
qCDebug(dcDenon) << "moving queue:" << cmd;
m_socket->write(cmd);
}
void Heos::checkForFirmwareUpdate(int playerId)
@ -382,49 +383,53 @@ void Heos::browseSource(SOURCE_ID sourceId)
void Heos::playStation(int playerId, const QString &sourceId, const QString &containerId, const QString &mediaId, const QString &stationName)
{
QUrl url("browse");
url.setScheme("heos");
url.setPath("play_stream");
url.setQuery(QString("pid=%1").arg(playerId));
url.setQuery(QString("sid=%1").arg(sourceId));
url.setQuery(QString("cid=%1").arg(containerId));
url.setQuery(QString("mid=%1").arg(mediaId));
url.setQuery(QString("name=%1").arg(stationName));
qCDebug(dcDenon) << "playing url:" << url;
m_socket->write(url.toEncoded());
QByteArray cmd("heos://browse/play_stream?");
QUrlQuery queryParams;
queryParams.addQueryItem("pid", QString::number(playerId));
queryParams.addQueryItem("sid", sourceId);
queryParams.addQueryItem("cid", containerId);
queryParams.addQueryItem("mid", mediaId);
queryParams.addQueryItem("name", stationName);
cmd.append(queryParams.toString());
cmd.append("\r\n");
qCDebug(dcDenon) << "playing station:" << cmd;
m_socket->write(cmd);
}
void Heos::playPresetStation(int playerId, int presetNumber)
{
QUrl url("browse");
url.setScheme("heos");
url.setPath("play_preset");
url.setQuery(QString("pid=%1").arg(playerId));
url.setQuery(QString("preset=%1").arg(presetNumber));
qCDebug(dcDenon) << "playing url:" << url;
m_socket->write(url.toEncoded());
QByteArray cmd("heos://browse/play_preset?");
QUrlQuery queryParams;
queryParams.addQueryItem("pid", QString::number(playerId));
queryParams.addQueryItem("preset", QString::number(presetNumber));
cmd.append(queryParams.toString());
cmd.append("\r\n");
qCDebug(dcDenon) << "playing preset station:" << cmd;
m_socket->write(cmd);
}
void Heos::playInputSource(int playerId, const QString &inputName)
{
QUrl url("browse");
url.setScheme("heos");
url.setPath("play_input");
url.setQuery(QString("pid=%1").arg(playerId));
url.setQuery(QString("input=%1").arg(inputName));
qCDebug(dcDenon) << "playing url:" << url;
m_socket->write(url.toEncoded());
QByteArray cmd("heos://browse/play_input?");
QUrlQuery queryParams;
queryParams.addQueryItem("pid", QString::number(playerId));
queryParams.addQueryItem("input", inputName);
cmd.append(queryParams.toString());
cmd.append("\r\n");
qCDebug(dcDenon) << "playing input source:" << cmd;
m_socket->write(cmd);
}
void Heos::playUrl(int playerId, const QUrl &mediaUrl)
{
QUrl url("browse");
url.setScheme("heos");
url.setPath("play_stream");
url.setQuery(QString("pid=%1").arg(playerId));
url.setQuery(QString("url=%1").arg(mediaUrl.toString()));
qCDebug(dcDenon) << "playing url:" << url;
m_socket->write(url.toEncoded());
QByteArray cmd("heos://browse/play_stream?");
QUrlQuery queryParams;
queryParams.addQueryItem("pid", QString::number(playerId));
queryParams.addQueryItem("url", mediaUrl.toString());
cmd.append(queryParams.toString());
cmd.append("\r\n");
qCDebug(dcDenon) << "playing url:" << cmd;
m_socket->write(cmd);
}
/* This command is used to perform the following actions:

View File

@ -67,6 +67,7 @@ IntegrationPluginDenon::IntegrationPluginDenon()
{
}
void IntegrationPluginDenon::discoverThings(ThingDiscoveryInfo *info)
{
if (info->thingClassId() == AVRX1000ThingClassId) {
@ -306,7 +307,7 @@ void IntegrationPluginDenon::executeAction(ThingActionInfo *info)
int playerId = thing->paramValue(heosPlayerThingPlayerIdParamTypeId).toInt();
if (action.actionTypeId() == heosPlayerAlertActionTypeId) {
heos->playUrl(playerId, QUrl("https://downloads.nymea.io/notification-sounds/definite.mp3"));
heos->playUrl(playerId, m_notificationUrl);
return Device::DeviceErrorNoError;
}
@ -738,3 +739,14 @@ void IntegrationPluginDenon::onAvahiServiceEntryRemoved(const ZeroConfServiceEnt
{
qCDebug(dcDenon()) << "Avahi service entry removed:" << serviceEntry;
}
void DevicePluginDenon::onPluginConfigurationChanged(const ParamTypeId &paramTypeId, const QVariant &value)
{
qCDebug(dcDenon()) << "Plugin configuration changed";
// Check advanced mode
if (paramTypeId == denonPluginNotificationUrlParamTypeId) {
qCDebug(dcDenon()) << "Advanced mode" << (value.toBool() ? "enabled." : "disabled.");
m_notificationUrl = value.toUrl();
}
}

View File

@ -56,6 +56,7 @@ class IntegrationPluginDenon : public IntegrationPlugin
public:
explicit IntegrationPluginDenon();
void init() override;
void discoverThings(ThingDiscoveryInfo *info) override;
void setupThing(ThingSetupInfo *info) override;
void postSetupThing(Thing *thing) override;
@ -75,6 +76,7 @@ private:
QHash<int, Thing *> m_playerIds;
QHash<int, Thing *> m_discoveredPlayerIds;
QHash<const Action *, int> m_asyncActions;
QUrl m_notificationUrl;
private slots:
@ -98,6 +100,8 @@ private slots:
void onAvrMuteChanged(bool mute);
void onAvrPowerChanged(bool power);
void onAvrSurroundModeChanged(const QByteArray &surroundMode);
void onPluginConfigurationChanged(const ParamTypeId &paramTypeId, const QVariant &value);
};
#endif // INTEGRATIONPLUGINDENON_H

View File

@ -2,6 +2,15 @@
"displayName": "Denon",
"name": "Denon",
"id": "cd758269-dbbb-4ef0-80ab-48bd9a8a2765",
"paramTypes": [
{
"id": "5a3cd3eb-8ff5-4110-aef0-7b0608450e60",
"name": "notificationUrl",
"displayName": "Notification url",
"type" : "QString",
"defaultValue": "https://downloads.nymea.io/notification-sounds/doorbell.mp3"
}
],
"vendors": [
{
"id": "cf0a9644-2c13-4daf-85c1-ad88d6745b42",