Merge PR #395: Denon: Added rediscovery on IP change

This commit is contained in:
Jenkins nymea 2021-02-26 10:28:10 +01:00
commit 4b711f39da
7 changed files with 388 additions and 268 deletions

View File

@ -44,28 +44,31 @@ Heos::Heos(const QHostAddress &hostAddress, QObject *parent) :
QObject(parent),
m_hostAddress(hostAddress)
{
qCDebug(dcDenon()) << "Heos: Creating heos connection" << m_hostAddress;
m_socket = new QTcpSocket(this);
connect(m_socket, &QTcpSocket::stateChanged, this, &Heos::onStateChanged);
connect(m_socket, &QTcpSocket::connected, this, &Heos::onConnected);
connect(m_socket, &QTcpSocket::disconnected, this, &Heos::onDisconnected);
connect(m_socket, &QTcpSocket::readyRead, this, &Heos::readData);
connect(m_socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(onError(QAbstractSocket::SocketError)));
m_reconnectTimer = new QTimer(this);
m_reconnectTimer->setInterval(5000);
connect(m_reconnectTimer, &QTimer::timeout, this, [this]{
qCDebug(dcDenon()) << "Heos: Reconnect timer timeout, trying to connect to" << m_hostAddress.toString();
connectDevice();
});
}
Heos::~Heos()
{
m_socket->close();
qCDebug(dcDenon()) << "Heos: Deleting heos connection" << m_hostAddress;
}
void Heos::connectDevice()
{
if (m_socket->state() == QAbstractSocket::ConnectingState) {
return;
return;
}
m_socket->connectToHost(m_hostAddress, 1255);
}
@ -75,6 +78,21 @@ bool Heos::connected()
return m_socket->isOpen();
}
void Heos::setAddress(QHostAddress address)
{
qCDebug(dcDenon()) << "Heos: Set address" << address.toString();
if (address != m_hostAddress) {
m_hostAddress = address;
m_socket->disconnectFromHost();
// Reconnect after the disconnect event has been emitted
}
}
QHostAddress Heos::getAddress()
{
return m_hostAddress;
}
void Heos::disconnectDevice()
{
@ -532,24 +550,18 @@ quint32 Heos::playUrl(int playerId, const QUrl &mediaUrl)
return sequence;
}
void Heos::onStateChanged(QAbstractSocket::SocketState state)
void Heos::onConnected()
{
switch (state) {
case QAbstractSocket::ConnectedState:
qCDebug(dcDenon()) << "connected successfully to" << m_hostAddress.toString();
m_reconnectTimer->stop();
emit connectionStatusChanged(true);
break;
case QAbstractSocket::ConnectingState:
break;
case QAbstractSocket::UnconnectedState:
m_reconnectTimer->start();
qCDebug(dcDenon()) << "Disconnected from" << m_hostAddress.toString() << "try reconnecting in 5 seconds";
emit connectionStatusChanged(false);
break;
default:
emit connectionStatusChanged(false);
}
qCDebug(dcDenon()) << "Heos: Connected successfully to" << m_hostAddress.toString();
m_reconnectTimer->stop();
emit connectionStatusChanged(true);
}
void Heos::onDisconnected()
{
m_reconnectTimer->start();
qCDebug(dcDenon()) << "Heos: Disconnected from" << m_hostAddress.toString() << "try reconnecting in 5 seconds";
emit connectionStatusChanged(false);
}
quint32 Heos::addContainerToQueue(int playerId, const QString &sourceId, const QString &containerId, ADD_CRITERIA addCriteria)
@ -571,7 +583,7 @@ quint32 Heos::addContainerToQueue(int playerId, const QString &sourceId, const Q
void Heos::onError(QAbstractSocket::SocketError socketError)
{
qCWarning(dcDenon) << "socket error:" << socketError << m_socket->errorString();
qCWarning(dcDenon) << "Heos: Socket error:" << socketError << m_socket->errorString();
}
void Heos::readData()

View File

@ -164,7 +164,8 @@ signals:
void userChanged(bool signedIn, const QString &userName);
private slots:
void onStateChanged(QAbstractSocket::SocketState state);
void onConnected();
void onDisconnected();
void onError(QAbstractSocket::SocketError socketError);
void readData();

View File

@ -84,7 +84,7 @@ void IntegrationPluginDenon::discoverThings(ThingDiscoveryInfo *info)
QStringList discoveredIds;
foreach (const ZeroConfServiceEntry &service, m_serviceBrowser->serviceEntries()) {
qCDebug(dcDenon()) << "mDNS service entry:" << service;
qCDebug(dcDenon()) << "mDNS service entry:" << service;
if (service.txt().contains("am=AVRX1000")) {
QString id = service.name().split("@").first();
@ -96,7 +96,6 @@ void IntegrationPluginDenon::discoverThings(ThingDiscoveryInfo *info)
discoveredIds.append(id);
ThingDescriptor thingDescriptor(AVRX1000ThingClassId, name, address);
ParamList params;
params.append(Param(AVRX1000ThingIpParamTypeId, address));
params.append(Param(AVRX1000ThingIdParamTypeId, id));
thingDescriptor.setParams(params);
foreach (Thing *existingThing, myThings().filterByThingClassId(AVRX1000ThingClassId)) {
@ -118,37 +117,39 @@ void IntegrationPluginDenon::discoverThings(ThingDiscoveryInfo *info)
* The HEOS product IP address can also be set statically and manually programmed into the control system.
* Search target name (ST) in M-SEARCH discovery request is 'urn:schemas-denon-com:thing:ACT-Denon:1'.
*/
if (!hardwareManager()->upnpDiscovery()->available()) {
qCDebug(dcDenon()) << "UPnP discovery not available";
info->finish(Thing::ThingErrorHardwareNotAvailable, "UPnP discovery not possible");
return;
}
UpnpDiscoveryReply *reply = hardwareManager()->upnpDiscovery()->discoverDevices();
connect(reply, &UpnpDiscoveryReply::finished, reply, &UpnpDiscoveryReply::deleteLater);
connect(reply, &UpnpDiscoveryReply::finished, info, [this, reply, info](){
reply->deleteLater();
if (reply->error() != UpnpDiscoveryReply::UpnpDiscoveryReplyErrorNoError) {
qCWarning(dcDenon()) << "Upnp discovery error" << reply->error();
info->finish(Thing::ThingErrorHardwareFailure, QT_TR_NOOP("UPnP discovery failed."));
return;
}
m_heosIpAddresses.clear();
foreach (const UpnpDeviceDescriptor &upnpThing, reply->deviceDescriptors()) {
qCDebug(dcDenon) << "UPnP thing found:" << upnpThing.modelDescription() << upnpThing.friendlyName() << upnpThing.hostAddress().toString() << upnpThing.modelName() << upnpThing.manufacturer() << upnpThing.serialNumber();
if (upnpThing.modelName().contains("HEOS", Qt::CaseSensitivity::CaseInsensitive) && upnpThing.serialNumber() != "0000001") {
// child things have serial number 0000001
qCDebug(dcDenon) << "uPnP thing found:" << upnpThing.modelDescription() << upnpThing.friendlyName() << upnpThing.hostAddress().toString() << upnpThing.modelName() << upnpThing.manufacturer() << upnpThing.serialNumber();
if (upnpThing.modelName().contains("HEOS", Qt::CaseSensitivity::CaseInsensitive)) {
QString serialNumber = upnpThing.serialNumber();
if (serialNumber != "0000001") {
// child things have serial number 0000001
ThingDescriptor descriptor(heosThingClassId, upnpThing.modelName(), serialNumber);
ParamList params;
foreach (Thing *existingThing, myThings()) {
if (existingThing->paramValue(heosThingSerialNumberParamTypeId).toString().contains(serialNumber, Qt::CaseSensitivity::CaseInsensitive)) {
descriptor.setThingId(existingThing->id());
break;
}
m_heosIpAddresses.insert(upnpThing.serialNumber(), upnpThing.hostAddress());
ThingDescriptor descriptor(heosThingClassId, upnpThing.modelName(), upnpThing.serialNumber());
ParamList params;
foreach (Thing *existingThing, myThings()) {
if (existingThing->paramValue(heosThingSerialNumberParamTypeId).toString().contains(upnpThing.serialNumber(), Qt::CaseSensitivity::CaseInsensitive)) {
descriptor.setThingId(existingThing->id());
break;
}
params.append(Param(heosThingModelNameParamTypeId, upnpThing.modelName()));
params.append(Param(heosThingIpParamTypeId, upnpThing.hostAddress().toString()));
params.append(Param(heosThingSerialNumberParamTypeId, serialNumber));
descriptor.setParams(params);
info->addThingDescriptor(descriptor);
}
params.append(Param(heosThingModelNameParamTypeId, upnpThing.modelName()));
params.append(Param(heosThingSerialNumberParamTypeId, upnpThing.serialNumber()));
descriptor.setParams(params);
info->addThingDescriptor(descriptor);
}
}
info->finish(Thing::ThingErrorNoError);
@ -173,21 +174,30 @@ void IntegrationPluginDenon::confirmPairing(ThingPairingInfo *info, const QStrin
return info->finish(Thing::ThingErrorNoError);
}
QHostAddress address(info->params().paramValue(heosThingIpParamTypeId).toString());
Heos *heos = createHeosConnection(address);
m_unfinishedHeosConnections.insert(info->thingId(), heos);
m_unfinishedHeosPairings.insert(heos, info);
connect(info, &ThingPairingInfo::aborted, this, [heos, this] {
m_unfinishedHeosPairings.remove(heos);
heos->deleteLater();
});
heos->connectDevice();
heos->setUserAccount(username, password);
Q_FOREACH(const QString &serialNumber, m_heosIpAddresses.keys()) {
if (serialNumber == info->params().paramValue(heosThingSerialNumberParamTypeId).toString()) {
ThingId thingId = info->thingId();
Heos *heos = createHeosConnection(m_heosIpAddresses.value(serialNumber));
m_unfinishedHeosConnections.insert(thingId, heos);
m_unfinishedHeosPairings.insert(heos, info);
connect(heos, &Heos::destroyed, this, [this, thingId, heos] {
qCDebug(dcDenon()) << "Heos connection deleted, cleaning up";
m_unfinishedHeosPairings.remove(heos);
m_unfinishedHeosConnections.remove(thingId);
});
connect(info, &ThingPairingInfo::aborted, this, [heos] {
qCDebug(dcDenon()) << "ThingPairingInfo aborted, deleting heos connection";
heos->deleteLater();
});
heos->connectDevice();
heos->setUserAccount(username, password);
pluginStorage()->beginGroup(info->thingId().toString());
pluginStorage()->setValue("username", username);
pluginStorage()->setValue("password", password);
pluginStorage()->endGroup();
pluginStorage()->beginGroup(info->thingId().toString());
pluginStorage()->setValue("username", username);
pluginStorage()->setValue("password", password);
pluginStorage()->endGroup();
}
}
}
}
@ -196,12 +206,17 @@ void IntegrationPluginDenon::setupThing(ThingSetupInfo *info)
Thing *thing = info->thing();
if (thing->thingClassId() == AVRX1000ThingClassId) {
qCDebug(dcDenon) << "Setup Denon thing" << thing->paramValue(AVRX1000ThingIpParamTypeId).toString();
qCDebug(dcDenon) << "Setup AVR X1000 thing" << thing->name();
QHostAddress address(thing->paramValue(AVRX1000ThingIpParamTypeId).toString());
if (m_avrConnections.contains(thing->id())) {
qCDebug(dcDenon()) << "Setup after reconfiguration, cleaning up ...";
m_avrConnections.take(thing->id())->deleteLater();
}
QString id = thing->paramValue(AVRX1000ThingIdParamTypeId).toString();
QHostAddress address = findAvrById(id);
if (address.isNull()) {
qCWarning(dcDenon) << "Could not parse ip address" << thing->paramValue(AVRX1000ThingIpParamTypeId).toString();
info->finish(Thing::ThingErrorInvalidParameter, QT_TR_NOOP("The given IP address is not valid."));
info->finish(Thing::ThingErrorHardwareNotAvailable);
return;
}
@ -235,32 +250,83 @@ void IntegrationPluginDenon::setupThing(ThingSetupInfo *info)
denonConnection->connectDevice();
return;
} else if (thing->thingClassId() == heosThingClassId) {
qCDebug(dcDenon) << "Setup Denon thing" << thing->paramValue(heosThingIpParamTypeId).toString();
QHostAddress address(thing->paramValue(heosThingIpParamTypeId).toString());
if (address.isNull()) {
qCWarning(dcDenon) << "Could not parse ip address" << thing->paramValue(heosThingIpParamTypeId).toString();
info->finish(Thing::ThingErrorInvalidParameter, QT_TR_NOOP("The given IP address is not valid."));
qCDebug(dcDenon) << "Setup Heos connection thing" << thing->name();
QString serialnumber = thing->paramValue(heosThingSerialNumberParamTypeId).toString();
if (serialnumber.isEmpty()) {
qCWarning(dcDenon) << "Serial number is empty";
info->finish(Thing::ThingErrorInvalidParameter, QT_TR_NOOP("Serial number is not set"));
return;
}
Heos *heos;
if (m_heosConnections.contains(thing->id())) {
qCDebug(dcDenon()) << "Setup after reconfiguration, cleaning up ...";
m_heosConnections.take(thing->id())->deleteLater();
}
if (m_unfinishedHeosConnections.contains(thing->id())) {
heos = m_unfinishedHeosConnections.take(thing->id());
qCDebug(dcDenon()) << "Setup after discovery";
Heos *heos = m_unfinishedHeosConnections.take(thing->id());
m_heosConnections.insert(thing->id(), heos);
info->finish(Thing::ThingErrorNoError);
} else {
heos = createHeosConnection(address);
m_heosConnections.insert(thing->id(), heos);
m_asyncHeosSetups.insert(heos, info);
// In case the setup is cancelled before we finish it...
connect(info, &QObject::destroyed, this, [=]() {m_asyncHeosSetups.remove(heos);});
heos->connectDevice();
qCDebug(dcDenon()) << "Starting Heos discovery";
if (!hardwareManager()->upnpDiscovery()->available()) {
qCDebug(dcDenon()) << "UPnP discovery not available";
info->finish(Thing::ThingErrorHardwareNotAvailable, "Discovery not possible");
return;
}
UpnpDiscoveryReply *reply = hardwareManager()->upnpDiscovery()->discoverDevices();
connect(reply, &UpnpDiscoveryReply::finished, reply, &UpnpDiscoveryReply::deleteLater);
connect(reply, &UpnpDiscoveryReply::finished, info, [this, reply, info] {
if (reply->error() != UpnpDiscoveryReply::UpnpDiscoveryReplyErrorNoError) {
qCWarning(dcDenon()) << "Upnp discovery error" << reply->error();
info->finish(Thing::ThingErrorHardwareFailure, QT_TR_NOOP("Device discovery failed."));
return;
}
qCDebug(dcDenon()) << "UPnP discovery finished, found" << reply->deviceDescriptors().count() << "uPnP devices";
Q_FOREACH (const UpnpDeviceDescriptor &upnpThing, reply->deviceDescriptors()) {
if (upnpThing.modelName().contains("HEOS", Qt::CaseSensitivity::CaseInsensitive)) {
QString serialNumber = info->thing()->paramValue(heosThingSerialNumberParamTypeId).toString();
if (serialNumber == upnpThing.serialNumber()) {
ThingId thingId = info->thing()->id();
qCDebug(dcDenon()) << "Found Heos device, creating Heos connection";
Heos *heos = createHeosConnection(upnpThing.hostAddress());
m_heosConnections.insert(thingId, heos);
m_asyncHeosSetups.insert(heos, info);
// In case the setup is cancelled before we finish it...
connect(info, &ThingSetupInfo::aborted, heos, &Heos::deleteLater);
connect(heos, &Heos::destroyed, this, [thingId, heos, this] {
m_asyncHeosSetups.remove(heos);
m_heosConnections.remove(thingId);
});
heos->connectDevice();
return;
}
}
}
qCDebug(dcDenon()) << "Device not found";
info->finish(Thing::ThingErrorHardwareNotAvailable);
return;
});
}
return;
} else if (thing->thingClassId() == heosPlayerThingClassId) {
info->finish(Thing::ThingErrorNoError);
return;
qCDebug(dcDenon) << "Setup Heos player" << thing->name();
Thing *parentThing = myThings().findById(thing->parentId());
if (!parentThing) {
qCWarning(dcDenon()) << "Parent thing not found for Heos player" << thing->name();
return;
}
if (parentThing->setupStatus() == Thing::ThingSetupStatusComplete) {
info->finish(Thing::ThingErrorNoError);
} else {
connect(parentThing, &Thing::setupStatusChanged, info, [info, parentThing] {
if (parentThing->setupStatus() == Thing::ThingSetupStatusComplete) {
info->finish(Thing::ThingErrorNoError);
}
});
}
} else {
info->finish(Thing::ThingErrorThingClassNotFound);
}
@ -490,6 +556,8 @@ void IntegrationPluginDenon::executeAction(ThingActionInfo *info)
void IntegrationPluginDenon::postSetupThing(Thing *thing)
{
qCDebug(dcDenon()) << "Post setup thing" << thing->name();
if (thing->thingClassId() == AVRX1000ThingClassId) {
AvrConnection *avrConnection = m_avrConnections.value(thing->id());
thing->setStateValue(AVRX1000ConnectedStateTypeId, avrConnection->connected());
@ -506,15 +574,6 @@ void IntegrationPluginDenon::postSetupThing(Thing *thing)
} else if (thing->thingClassId() == heosThingClassId) {
Heos *heos = m_heosConnections.value(thing->id());
thing->setStateValue(heosConnectedStateTypeId, heos->connected());
if (pluginStorage()->childGroups().contains(thing->id().toString())) {
pluginStorage()->beginGroup(thing->id().toString());
QString username = pluginStorage()->value("username").toString();
QString password = pluginStorage()->value("password").toString();
pluginStorage()->endGroup();
heos->setUserAccount(username, password);
} else {
qCWarning(dcDenon()) << "Plugin storage doesn't contain this deviceId";
}
heos->getPlayers();
heos->getGroups();
@ -531,6 +590,7 @@ void IntegrationPluginDenon::postSetupThing(Thing *thing)
}
if (!m_pluginTimer) {
qCDebug(dcDenon()) << "Creating plugin timer";
m_pluginTimer = hardwareManager()->pluginTimerManager()->registerTimer(60);
connect(m_pluginTimer, &PluginTimer::timeout, this, &IntegrationPluginDenon::onPluginTimer);
}
@ -557,13 +617,11 @@ void IntegrationPluginDenon::onPluginTimer()
}
}
foreach(Thing *thing, myThings()) {
foreach(Thing *thing, myThings().filterByThingClassId(heosThingClassId)) {
if (thing->thingClassId() == heosThingClassId) {
Heos *heos = m_heosConnections.value(thing->id());
heos->getPlayers();
heos->registerForChangeEvents(true);
}
Heos *heos = m_heosConnections.value(thing->id());
heos->getPlayers();
heos->registerForChangeEvents(true);
}
}
@ -590,6 +648,14 @@ void IntegrationPluginDenon::onAvrConnectionChanged(bool status)
if (thing->thingClassId() == AVRX1000ThingClassId) {
thing->setStateValue(AVRX1000ConnectedStateTypeId, denonConnection->connected());
if (!status) {
QString id = thing->paramValue(AVRX1000ThingIdParamTypeId).toString();
QHostAddress address = findAvrById(id);
if (!address.isNull()){
denonConnection->setHostAddress(address);
}
}
}
}
@ -816,6 +882,7 @@ void IntegrationPluginDenon::onHeosConnectionChanged(bool status)
if (!thing)
return;
qCDebug(dcDenon()) << "Heos connection changed" << thing->name();
if (thing->thingClassId() == heosThingClassId) {
if (pluginStorage()->childGroups().contains(thing->id().toString())) {
@ -825,12 +892,17 @@ void IntegrationPluginDenon::onHeosConnectionChanged(bool status)
pluginStorage()->endGroup();
heos->setUserAccount(username, password);
} else {
qCWarning(dcDenon()) << "Plugin storage doesn't contain this deviceId";
qCWarning(dcDenon()) << "Plugin storage doesn't contain this thingId";
}
if (!status) {
thing->setStateValue(heosLoggedInStateTypeId, false);
thing->setStateValue(heosUserDisplayNameStateTypeId, "");
qCDebug(dcDenon()) << "Starting Heos discovery";
UpnpDiscoveryReply *reply = hardwareManager()->upnpDiscovery()->discoverDevices();
connect(reply, &UpnpDiscoveryReply::finished, reply, &UpnpDiscoveryReply::deleteLater);
connect(reply, &UpnpDiscoveryReply::finished, this, &IntegrationPluginDenon::onHeosDiscoveryFinished);
}
thing->setStateValue(heosConnectedStateTypeId, status);
// update connection status for all child things
@ -857,6 +929,10 @@ void IntegrationPluginDenon::onHeosPlayersReceived(QList<HeosPlayer *> heosPlaye
}
QList<ThingDescriptor> heosPlayerDescriptors;
if (heosPlayers.isEmpty()) {
qCWarning(dcDenon()) << "Received empty player list, this is likely because of a bug in the Heos API, ignoring";
return;
}
foreach (HeosPlayer *player, heosPlayers) {
ThingDescriptor descriptor(heosPlayerThingClassId, player->name(), player->playerModel(), thing->id());
ParamList params;
@ -884,6 +960,7 @@ void IntegrationPluginDenon::onHeosPlayersReceived(QList<HeosPlayer *> heosPlaye
}
}
if (!playerAvailable) {
qCDebug(dcDenon()) << "Heos player vanished, removing" << thing->name();
autoThingDisappeared(existingThing->id());
m_playerBuffer.remove(playerId);
}
@ -1181,7 +1258,6 @@ void IntegrationPluginDenon::onHeosGroupsChanged()
void IntegrationPluginDenon::onHeosUserChanged(bool signedIn, const QString &userName)
{
Q_UNUSED(userName)
Heos *heos = static_cast<Heos *>(sender());
//This is to check if the credentials are correct
@ -1203,6 +1279,30 @@ void IntegrationPluginDenon::onHeosUserChanged(bool signedIn, const QString &use
}
}
void IntegrationPluginDenon::onHeosDiscoveryFinished()
{
UpnpDiscoveryReply *reply = static_cast<UpnpDiscoveryReply *>(sender());
if (reply->error() != UpnpDiscoveryReply::UpnpDiscoveryReplyErrorNoError) {
qCWarning(dcDenon()) << "Upnp discovery error" << reply->error();
return;
}
Q_FOREACH(const UpnpDeviceDescriptor &upnpThing, reply->deviceDescriptors()) {
Q_FOREACH(Thing *thing, myThings().filterByThingClassId(heosThingClassId)) {
QString serialNumber = thing->paramValue(heosThingSerialNumberParamTypeId).toString();
if (serialNumber == upnpThing.serialNumber()) {
Heos *heos = m_heosConnections.value(thing->id());
if (!heos) {
qCWarning(dcDenon()) << "On heos discovery, heos connection not found for" << thing->name();
return;
}
heos->setAddress(upnpThing.hostAddress());
}
}
}
}
void IntegrationPluginDenon::onPluginConfigurationChanged(const ParamTypeId &paramTypeId, const QVariant &value)
{
qCDebug(dcDenon()) << "Plugin configuration changed";
@ -1416,3 +1516,15 @@ Heos *IntegrationPluginDenon::createHeosConnection(const QHostAddress &address)
connect(heos, &Heos::userChanged, this, &IntegrationPluginDenon::onHeosUserChanged);
return heos;
}
QHostAddress IntegrationPluginDenon::findAvrById(const QString &id)
{
foreach (const ZeroConfServiceEntry &service, m_serviceBrowser->serviceEntries()) {
if (service.txt().contains("am=AVRX1000")) {
if (service.name().split("@").first() == id) {
return service.hostAddress();
}
}
}
return QHostAddress();
}

View File

@ -102,7 +102,10 @@ private:
QHash<int, GroupObject> m_groupBuffer;
QHash<int, HeosPlayer *> m_playerBuffer;
QHash<QString, QHostAddress> m_heosIpAddresses;
Heos *createHeosConnection(const QHostAddress &address);
QHostAddress findAvrById(const QString &id);
private slots:
void onPluginTimer();
@ -126,6 +129,7 @@ private slots:
void onHeosGroupsReceived(QList<GroupObject> groups);
void onHeosGroupsChanged();
void onHeosUserChanged(bool signedIn, const QString &userName);
void onHeosDiscoveryFinished();
void onAvrConnectionChanged(bool status);
void onAvrSocketError();

View File

@ -24,18 +24,12 @@
"createMethods": ["discovery"],
"interfaces": ["mediaplayer", "mediacontroller", "volumecontroller", "mediametadataprovider", "connectable", "power"],
"paramTypes": [
{
"id": "cb6eeeb0-3d75-43b6-8177-b5ac19648557",
"name": "ip",
"displayName": "IPv4 address",
"type" : "QString",
"inputType": "IPv4Address"
},
{
"id": "2e8806cb-f6f3-4e9a-b6ea-0b35f75e61c5",
"name": "id",
"displayName": "ID",
"type" : "QString"
"type" : "QString",
"readOnly": true
}
],
"stateTypes": [
@ -319,24 +313,19 @@
"setupMethod": "userandpassword",
"interfaces": ["gateway"],
"paramTypes": [
{
"id": "a54b98b4-b78f-41dd-a257-14425c6cf9ab",
"name": "ip",
"displayName": "IPv4 address",
"type" : "QString",
"inputType": "IPv4Address"
},
{
"id": "f796664d-6cb7-4f29-9d05-771968d82a32",
"name": "serialNumber",
"displayName": "Serial number",
"type" : "QString"
"type" : "QString",
"readOnly": true
},
{
"id": "ab1a0be8-e3a5-4f95-b9b7-893de1ca4cf7",
"name": "modelName",
"displayName": "Model name",
"type" : "QString"
"type" : "QString",
"readOnly": true
}
],
"stateTypes": [

View File

@ -195,15 +195,6 @@ The name of the ActionType ({d3752c32-92e3-4396-8e2f-ab5e57c6cfb1}) of ThingClas
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="320"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="323"/>
<source>IPv4 address</source>
<extracomment>The name of the ParamType (ThingClass: heos, Type: thing, ID: {a54b98b4-b78f-41dd-a257-14425c6cf9ab})
----------
The name of the ParamType (ThingClass: AVRX1000, Type: thing, ID: {cb6eeeb0-3d75-43b6-8177-b5ac19648557})</extracomment>
<translation>IPv4 Adresse</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="326"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="329"/>
<source>Increase volume</source>
<extracomment>The name of the ActionType ({ebdc35f8-24a2-4984-855e-4c1a158289b7}) of ThingClass heosPlayer
----------
@ -211,14 +202,14 @@ The name of the ActionType ({4ae686d6-2307-40a0-bd38-2cd3a92342cc}) of ThingClas
<translation>Lautstärke verringern</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="332"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="326"/>
<source>Join group</source>
<extracomment>The name of the Browser Item ActionType ({73112a01-84c7-4b1d-8b86-71672c110d06}) of ThingClass heosPlayer</extracomment>
<translation>Gruppe beitreten</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="335"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="338"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="329"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="332"/>
<source>Logged in</source>
<extracomment>The name of the ParamType (ThingClass: heos, EventType: loggedIn, ID: {ab689a6e-eb71-4a41-a267-ba1afe7e2f56})
----------
@ -226,30 +217,30 @@ The name of the StateType ({ab689a6e-eb71-4a41-a267-ba1afe7e2f56}) of ThingClass
<translation>Eingelogged</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="341"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="335"/>
<source>Logged in changed</source>
<extracomment>The name of the EventType ({ab689a6e-eb71-4a41-a267-ba1afe7e2f56}) of ThingClass heos</extracomment>
<translation>Eingelogged geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="344"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="338"/>
<source>Model</source>
<extracomment>The name of the ParamType (ThingClass: heosPlayer, Type: thing, ID: {e760f92b-8fca-4f20-aead-a52045505b81})</extracomment>
<translation>Modell</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="347"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="341"/>
<source>Model name</source>
<extracomment>The name of the ParamType (ThingClass: heos, Type: thing, ID: {ab1a0be8-e3a5-4f95-b9b7-893de1ca4cf7})</extracomment>
<translation>Modellname</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="344"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="347"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="350"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="353"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="356"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="359"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="362"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="365"/>
<source>Mute</source>
<extracomment>The name of the ParamType (ThingClass: heosPlayer, ActionType: mute, ID: {fcc89c7c-b793-4b6f-a3dc-0e0e3a86748f})
----------
@ -265,8 +256,8 @@ The name of the StateType ({3e11470d-a5b7-499c-be55-9b1b4fe5eedf}) of ThingClass
<translation>Stumm</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="368"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="371"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="362"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="365"/>
<source>Mute changed</source>
<extracomment>The name of the EventType ({fcc89c7c-b793-4b6f-a3dc-0e0e3a86748f}) of ThingClass heosPlayer
----------
@ -274,14 +265,14 @@ The name of the EventType ({3e11470d-a5b7-499c-be55-9b1b4fe5eedf}) of ThingClass
<translation>Stumm geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="374"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="368"/>
<source>Notification url</source>
<extracomment>The name of the ParamType (ThingClass: denon, Type: plugin, ID: {5a3cd3eb-8ff5-4110-aef0-7b0608450e60})</extracomment>
<translation>Benachrichtigungs-Url</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="377"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="380"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="371"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="374"/>
<source>Pause</source>
<extracomment>The name of the ActionType ({21c1cbe6-278f-4688-a65f-6620be1ee5ea}) of ThingClass heosPlayer
----------
@ -289,8 +280,8 @@ The name of the ActionType ({3de38047-006f-4d97-9326-08bb5ad79b05}) of ThingClas
<translation>Pause</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="383"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="386"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="377"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="380"/>
<source>Play</source>
<extracomment>The name of the ActionType ({c64964e4-cea0-468a-a9bf-8f69657b74e9}) of ThingClass heosPlayer
----------
@ -298,12 +289,12 @@ The name of the ActionType ({d04eb30b-838d-4fbd-b781-c01005b59756}) of ThingClas
<translation>Play</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="383"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="386"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="389"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="392"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="395"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="398"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="401"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="404"/>
<source>Playback status</source>
<extracomment>The name of the ParamType (ThingClass: heosPlayer, ActionType: playbackStatus, ID: {6db3b484-4cd4-477b-b822-275865d308db})
----------
@ -319,8 +310,8 @@ The name of the StateType ({8ef6708c-812a-4e6a-a608-9e480aa3b7bf}) of ThingClass
<translation>Wiedergabestatus</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="407"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="410"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="401"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="404"/>
<source>Playback status changed</source>
<extracomment>The name of the EventType ({6db3b484-4cd4-477b-b822-275865d308db}) of ThingClass heosPlayer
----------
@ -328,16 +319,16 @@ The name of the EventType ({8ef6708c-812a-4e6a-a608-9e480aa3b7bf}) of ThingClass
<translation>Wiedergabestatus geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="413"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="407"/>
<source>Player ID</source>
<extracomment>The name of the ParamType (ThingClass: heosPlayer, Type: thing, ID: {89629008-6ad8-4e92-863d-b86e0e012d0b})</extracomment>
<translation>Player ID</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="410"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="413"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="416"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="419"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="422"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="425"/>
<source>Player type</source>
<extracomment>The name of the ParamType (ThingClass: heosPlayer, EventType: playerType, ID: {c59835ac-ee6e-4e6c-aa20-aeb3501937c5})
----------
@ -349,8 +340,8 @@ The name of the StateType ({2f372374-16f3-4900-afdc-834f51075d07}) of ThingClass
<translation>Playertyp</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="428"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="431"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="422"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="425"/>
<source>Player type changed</source>
<extracomment>The name of the EventType ({c59835ac-ee6e-4e6c-aa20-aeb3501937c5}) of ThingClass heosPlayer
----------
@ -358,9 +349,9 @@ The name of the EventType ({2f372374-16f3-4900-afdc-834f51075d07}) of ThingClass
<translation>Playertyp geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="428"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="431"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="434"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="437"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="440"/>
<source>Power</source>
<extracomment>The name of the ParamType (ThingClass: AVRX1000, ActionType: power, ID: {1cdb6b54-6831-4900-95b2-c78f64497701})
----------
@ -370,24 +361,24 @@ The name of the StateType ({1cdb6b54-6831-4900-95b2-c78f64497701}) of ThingClass
<translation>Eingeschalten</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="443"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="437"/>
<source>Power changed</source>
<extracomment>The name of the EventType ({1cdb6b54-6831-4900-95b2-c78f64497701}) of ThingClass AVRX1000</extracomment>
<translation>Eingeschalten geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="446"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="440"/>
<source>Reboot</source>
<extracomment>The name of the ActionType ({4f8b7fe8-7a18-483a-859d-ed5acb0b9a20}) of ThingClass heos</extracomment>
<translation>Neustarten</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="443"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="446"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="449"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="452"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="455"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="458"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="461"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="464"/>
<source>Repeat mode</source>
<extracomment>The name of the ParamType (ThingClass: heosPlayer, ActionType: repeat, ID: {4e60cd17-5845-4351-aa2c-2504610e1532})
----------
@ -403,8 +394,8 @@ The name of the StateType ({9478987b-14e4-4572-a059-a18a5a9db229}) of ThingClass
<translation>Wiederholungsmodus</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="467"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="470"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="461"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="464"/>
<source>Repeat mode changed</source>
<extracomment>The name of the EventType ({4e60cd17-5845-4351-aa2c-2504610e1532}) of ThingClass heosPlayer
----------
@ -412,8 +403,8 @@ The name of the EventType ({9478987b-14e4-4572-a059-a18a5a9db229}) of ThingClass
<translation>Wiederholungsmodus geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="473"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="476"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="467"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="470"/>
<source>Serial number</source>
<extracomment>The name of the ParamType (ThingClass: heosPlayer, Type: thing, ID: {866e8d6a-953f-4bdc-8d85-8d92e51e8592})
----------
@ -421,14 +412,14 @@ The name of the ParamType (ThingClass: heos, Type: thing, ID: {f796664d-6cb7-4f2
<translation>Seriennummer</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="479"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="473"/>
<source>Set bass</source>
<extracomment>The name of the ActionType ({2c92b22e-d5b2-4991-a523-64222bffc9e7}) of ThingClass AVRX1000</extracomment>
<translation>Setze Bass</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="485"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="488"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="479"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="482"/>
<source>Set mute</source>
<extracomment>The name of the ActionType ({fcc89c7c-b793-4b6f-a3dc-0e0e3a86748f}) of ThingClass heosPlayer
----------
@ -436,8 +427,8 @@ The name of the ActionType ({3e11470d-a5b7-499c-be55-9b1b4fe5eedf}) of ThingClas
<translation>Setze Stumm</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="491"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="494"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="485"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="488"/>
<source>Set playback status</source>
<extracomment>The name of the ActionType ({6db3b484-4cd4-477b-b822-275865d308db}) of ThingClass heosPlayer
----------
@ -445,8 +436,8 @@ The name of the ActionType ({8ef6708c-812a-4e6a-a608-9e480aa3b7bf}) of ThingClas
<translation>Setze Wiedergabemodus</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="500"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="503"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="494"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="497"/>
<source>Set repeat mode</source>
<extracomment>The name of the ActionType ({4e60cd17-5845-4351-aa2c-2504610e1532}) of ThingClass heosPlayer
----------
@ -454,8 +445,8 @@ The name of the ActionType ({9478987b-14e4-4572-a059-a18a5a9db229}) of ThingClas
<translation>Setze Wiederholungsmodus</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="506"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="509"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="500"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="503"/>
<source>Set shuffle</source>
<extracomment>The name of the ActionType ({4b581237-acf5-4d8f-9e83-9b24e9ac900a}) of ThingClass heosPlayer
----------
@ -463,30 +454,30 @@ The name of the ActionType ({8ad33cb9-e758-433d-a013-2e4d43157c92}) of ThingClas
<translation>Setze Zufallswiedergabe</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="512"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="506"/>
<source>Set surround mode</source>
<extracomment>The name of the ActionType ({4f203bdd-691c-4384-a934-2d49a5448f0a}) of ThingClass AVRX1000</extracomment>
<translation>Setze Surroundmodus</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="515"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="509"/>
<source>Set tone control</source>
<extracomment>The name of the ActionType ({d57c1e5e-2cc9-4638-999c-1523f16dbb83}) of ThingClass AVRX1000</extracomment>
<translation>Setze Tonkontrolle</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="518"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="512"/>
<source>Set treble</source>
<extracomment>The name of the ActionType ({38a3be02-6ed4-4a84-903e-eb923b933989}) of ThingClass AVRX1000</extracomment>
<translation>Setze Höhen</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="521"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="524"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="527"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="530"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="533"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="536"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="539"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="542"/>
<source>Shuffle</source>
<extracomment>The name of the ParamType (ThingClass: heosPlayer, ActionType: shuffle, ID: {4b581237-acf5-4d8f-9e83-9b24e9ac900a})
----------
@ -502,8 +493,8 @@ The name of the StateType ({8ad33cb9-e758-433d-a013-2e4d43157c92}) of ThingClass
<translation>Zufallswiedergabe</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="545"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="548"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="539"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="542"/>
<source>Shuffle changed</source>
<extracomment>The name of the EventType ({4b581237-acf5-4d8f-9e83-9b24e9ac900a}) of ThingClass heosPlayer
----------
@ -511,8 +502,8 @@ The name of the EventType ({8ad33cb9-e758-433d-a013-2e4d43157c92}) of ThingClass
<translation>Zufallswiedergabe geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="551"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="554"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="545"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="548"/>
<source>Skip back</source>
<extracomment>The name of the ActionType ({a718f7e9-0b54-4403-b661-49f7b0d13085}) of ThingClass heosPlayer
----------
@ -520,8 +511,8 @@ The name of the ActionType ({3f2eb789-918c-475a-a295-14c0c24338b8}) of ThingClas
<translation>Zurück</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="557"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="560"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="551"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="554"/>
<source>Skip next</source>
<extracomment>The name of the ActionType ({57697e9c-ce5e-4b8f-b42e-16662829ceb2}) of ThingClass heosPlayer
----------
@ -529,8 +520,8 @@ The name of the ActionType ({bf9664e4-a53e-474c-afcc-88f25e6fe365}) of ThingClas
<translation>Nächstes</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="563"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="566"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="557"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="560"/>
<source>Source</source>
<extracomment>The name of the ParamType (ThingClass: heosPlayer, EventType: source, ID: {eee22722-3ee5-48f7-8af8-275dc04b21eb})
----------
@ -538,18 +529,24 @@ The name of the StateType ({eee22722-3ee5-48f7-8af8-275dc04b21eb}) of ThingClass
<translation>Quelle</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="569"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="563"/>
<source>Source changed</source>
<extracomment>The name of the EventType ({eee22722-3ee5-48f7-8af8-275dc04b21eb}) of ThingClass heosPlayer</extracomment>
<translation>Quelle geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="566"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="569"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="572"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="575"/>
<source>Step size</source>
<extracomment>The name of the ParamType (ThingClass: heosPlayer, ActionType: decreaseVolume, ID: {ef5a252b-3d28-4817-a668-1dacf0ed1f8a})
----------
The name of the ParamType (ThingClass: heosPlayer, ActionType: increaseVolume, ID: {0770da3f-61c3-4145-b0d8-348f42a8cf0d})</extracomment>
The name of the ParamType (ThingClass: heosPlayer, ActionType: increaseVolume, ID: {0770da3f-61c3-4145-b0d8-348f42a8cf0d})
----------
The name of the ParamType (ThingClass: AVRX1000, ActionType: decreaseVolume, ID: {0731daad-e689-40f6-8685-6d6362b715ec})
----------
The name of the ParamType (ThingClass: AVRX1000, ActionType: increaseVolume, ID: {f24e4e9d-5f7b-4b5c-ad0a-eb6316d86408})</extracomment>
<translation>Schrittgröße</translation>
</message>
<message>
@ -697,14 +694,14 @@ The name of the EventType ({773636b9-304d-463a-8755-fc7488dc0ff3}) of ThingClass
<translation>Lautstärke geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="497"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="491"/>
<source>Set power</source>
<extracomment>The name of the ActionType ({1cdb6b54-6831-4900-95b2-c78f64497701}) of ThingClass AVRX1000</extracomment>
<translation>Schalte ein</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="521"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="524"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="515"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="518"/>
<source>Set volume</source>
<extracomment>The name of the ActionType ({6d4886a1-fa5d-4889-96c5-7a1c206f59be}) of ThingClass heosPlayer
----------
@ -712,7 +709,7 @@ The name of the ActionType ({773636b9-304d-463a-8755-fc7488dc0ff3}) of ThingClas
<translation>Setze Lautstärke</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="482"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="476"/>
<source>Set channel</source>
<extracomment>The name of the ActionType ({f29ffa2c-31d6-4d88-b160-a38288c82ce1}) of ThingClass AVRX1000</extracomment>
<translation>Wähle Kanal</translation>
@ -721,28 +718,32 @@ The name of the ActionType ({773636b9-304d-463a-8755-fc7488dc0ff3}) of ThingClas
<context>
<name>IntegrationPluginDenon</name>
<message>
<location filename="../integrationplugindenon.cpp" line="127"/>
<location filename="../integrationplugindenon.cpp" line="131"/>
<source>UPnP discovery failed.</source>
<translation>UPnP Gerätesuche fehlgeschlagen.</translation>
</message>
<message>
<location filename="../integrationplugindenon.cpp" line="164"/>
<location filename="../integrationplugindenon.cpp" line="165"/>
<source>Please enter your HEOS account credentials. Leave empty if you doesn&apos;t have any. Some features like music browsing won&apos;t be available.</source>
<translation>Bitte geben Sie Ihre HEOS-Kontoanmeldeinformationen ein. Lassen Sie sie leer wenn Sie keine haben, einige Funktionen wie das Durchsuchen von Musik sind dann nicht verfügbar.</translation>
</message>
<message>
<location filename="../integrationplugindenon.cpp" line="204"/>
<location filename="../integrationplugindenon.cpp" line="243"/>
<source>The given IP address is not valid.</source>
<translation>Die eingegebene IP-Adresse ist nicht gültig.</translation>
<location filename="../integrationplugindenon.cpp" line="258"/>
<source>Serial number is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../integrationplugindenon.cpp" line="982"/>
<location filename="../integrationplugindenon.cpp" line="284"/>
<source>Device discovery failed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../integrationplugindenon.cpp" line="1059"/>
<source>Service is not available</source>
<translation>Service ist nicht verfügbar</translation>
</message>
<message>
<location filename="../integrationplugindenon.cpp" line="1193"/>
<location filename="../integrationplugindenon.cpp" line="1269"/>
<source>Wrong username or password</source>
<translation>Falscher Benutzername oder Passwort</translation>
</message>

View File

@ -195,15 +195,6 @@ The name of the ActionType ({d3752c32-92e3-4396-8e2f-ab5e57c6cfb1}) of ThingClas
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="320"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="323"/>
<source>IPv4 address</source>
<extracomment>The name of the ParamType (ThingClass: heos, Type: thing, ID: {a54b98b4-b78f-41dd-a257-14425c6cf9ab})
----------
The name of the ParamType (ThingClass: AVRX1000, Type: thing, ID: {cb6eeeb0-3d75-43b6-8177-b5ac19648557})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="326"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="329"/>
<source>Increase volume</source>
<extracomment>The name of the ActionType ({ebdc35f8-24a2-4984-855e-4c1a158289b7}) of ThingClass heosPlayer
----------
@ -211,14 +202,14 @@ The name of the ActionType ({4ae686d6-2307-40a0-bd38-2cd3a92342cc}) of ThingClas
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="332"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="326"/>
<source>Join group</source>
<extracomment>The name of the Browser Item ActionType ({73112a01-84c7-4b1d-8b86-71672c110d06}) of ThingClass heosPlayer</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="335"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="338"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="329"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="332"/>
<source>Logged in</source>
<extracomment>The name of the ParamType (ThingClass: heos, EventType: loggedIn, ID: {ab689a6e-eb71-4a41-a267-ba1afe7e2f56})
----------
@ -226,30 +217,30 @@ The name of the StateType ({ab689a6e-eb71-4a41-a267-ba1afe7e2f56}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="341"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="335"/>
<source>Logged in changed</source>
<extracomment>The name of the EventType ({ab689a6e-eb71-4a41-a267-ba1afe7e2f56}) of ThingClass heos</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="344"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="338"/>
<source>Model</source>
<extracomment>The name of the ParamType (ThingClass: heosPlayer, Type: thing, ID: {e760f92b-8fca-4f20-aead-a52045505b81})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="347"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="341"/>
<source>Model name</source>
<extracomment>The name of the ParamType (ThingClass: heos, Type: thing, ID: {ab1a0be8-e3a5-4f95-b9b7-893de1ca4cf7})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="344"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="347"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="350"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="353"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="356"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="359"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="362"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="365"/>
<source>Mute</source>
<extracomment>The name of the ParamType (ThingClass: heosPlayer, ActionType: mute, ID: {fcc89c7c-b793-4b6f-a3dc-0e0e3a86748f})
----------
@ -265,8 +256,8 @@ The name of the StateType ({3e11470d-a5b7-499c-be55-9b1b4fe5eedf}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="368"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="371"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="362"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="365"/>
<source>Mute changed</source>
<extracomment>The name of the EventType ({fcc89c7c-b793-4b6f-a3dc-0e0e3a86748f}) of ThingClass heosPlayer
----------
@ -274,14 +265,14 @@ The name of the EventType ({3e11470d-a5b7-499c-be55-9b1b4fe5eedf}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="374"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="368"/>
<source>Notification url</source>
<extracomment>The name of the ParamType (ThingClass: denon, Type: plugin, ID: {5a3cd3eb-8ff5-4110-aef0-7b0608450e60})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="377"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="380"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="371"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="374"/>
<source>Pause</source>
<extracomment>The name of the ActionType ({21c1cbe6-278f-4688-a65f-6620be1ee5ea}) of ThingClass heosPlayer
----------
@ -289,8 +280,8 @@ The name of the ActionType ({3de38047-006f-4d97-9326-08bb5ad79b05}) of ThingClas
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="383"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="386"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="377"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="380"/>
<source>Play</source>
<extracomment>The name of the ActionType ({c64964e4-cea0-468a-a9bf-8f69657b74e9}) of ThingClass heosPlayer
----------
@ -298,12 +289,12 @@ The name of the ActionType ({d04eb30b-838d-4fbd-b781-c01005b59756}) of ThingClas
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="383"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="386"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="389"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="392"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="395"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="398"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="401"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="404"/>
<source>Playback status</source>
<extracomment>The name of the ParamType (ThingClass: heosPlayer, ActionType: playbackStatus, ID: {6db3b484-4cd4-477b-b822-275865d308db})
----------
@ -319,8 +310,8 @@ The name of the StateType ({8ef6708c-812a-4e6a-a608-9e480aa3b7bf}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="407"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="410"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="401"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="404"/>
<source>Playback status changed</source>
<extracomment>The name of the EventType ({6db3b484-4cd4-477b-b822-275865d308db}) of ThingClass heosPlayer
----------
@ -328,16 +319,16 @@ The name of the EventType ({8ef6708c-812a-4e6a-a608-9e480aa3b7bf}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="413"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="407"/>
<source>Player ID</source>
<extracomment>The name of the ParamType (ThingClass: heosPlayer, Type: thing, ID: {89629008-6ad8-4e92-863d-b86e0e012d0b})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="410"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="413"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="416"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="419"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="422"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="425"/>
<source>Player type</source>
<extracomment>The name of the ParamType (ThingClass: heosPlayer, EventType: playerType, ID: {c59835ac-ee6e-4e6c-aa20-aeb3501937c5})
----------
@ -349,8 +340,8 @@ The name of the StateType ({2f372374-16f3-4900-afdc-834f51075d07}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="428"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="431"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="422"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="425"/>
<source>Player type changed</source>
<extracomment>The name of the EventType ({c59835ac-ee6e-4e6c-aa20-aeb3501937c5}) of ThingClass heosPlayer
----------
@ -358,9 +349,9 @@ The name of the EventType ({2f372374-16f3-4900-afdc-834f51075d07}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="428"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="431"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="434"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="437"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="440"/>
<source>Power</source>
<extracomment>The name of the ParamType (ThingClass: AVRX1000, ActionType: power, ID: {1cdb6b54-6831-4900-95b2-c78f64497701})
----------
@ -370,24 +361,24 @@ The name of the StateType ({1cdb6b54-6831-4900-95b2-c78f64497701}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="443"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="437"/>
<source>Power changed</source>
<extracomment>The name of the EventType ({1cdb6b54-6831-4900-95b2-c78f64497701}) of ThingClass AVRX1000</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="446"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="440"/>
<source>Reboot</source>
<extracomment>The name of the ActionType ({4f8b7fe8-7a18-483a-859d-ed5acb0b9a20}) of ThingClass heos</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="443"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="446"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="449"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="452"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="455"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="458"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="461"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="464"/>
<source>Repeat mode</source>
<extracomment>The name of the ParamType (ThingClass: heosPlayer, ActionType: repeat, ID: {4e60cd17-5845-4351-aa2c-2504610e1532})
----------
@ -403,8 +394,8 @@ The name of the StateType ({9478987b-14e4-4572-a059-a18a5a9db229}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="467"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="470"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="461"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="464"/>
<source>Repeat mode changed</source>
<extracomment>The name of the EventType ({4e60cd17-5845-4351-aa2c-2504610e1532}) of ThingClass heosPlayer
----------
@ -412,8 +403,8 @@ The name of the EventType ({9478987b-14e4-4572-a059-a18a5a9db229}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="473"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="476"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="467"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="470"/>
<source>Serial number</source>
<extracomment>The name of the ParamType (ThingClass: heosPlayer, Type: thing, ID: {866e8d6a-953f-4bdc-8d85-8d92e51e8592})
----------
@ -421,14 +412,14 @@ The name of the ParamType (ThingClass: heos, Type: thing, ID: {f796664d-6cb7-4f2
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="479"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="473"/>
<source>Set bass</source>
<extracomment>The name of the ActionType ({2c92b22e-d5b2-4991-a523-64222bffc9e7}) of ThingClass AVRX1000</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="485"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="488"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="479"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="482"/>
<source>Set mute</source>
<extracomment>The name of the ActionType ({fcc89c7c-b793-4b6f-a3dc-0e0e3a86748f}) of ThingClass heosPlayer
----------
@ -436,8 +427,8 @@ The name of the ActionType ({3e11470d-a5b7-499c-be55-9b1b4fe5eedf}) of ThingClas
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="491"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="494"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="485"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="488"/>
<source>Set playback status</source>
<extracomment>The name of the ActionType ({6db3b484-4cd4-477b-b822-275865d308db}) of ThingClass heosPlayer
----------
@ -445,8 +436,8 @@ The name of the ActionType ({8ef6708c-812a-4e6a-a608-9e480aa3b7bf}) of ThingClas
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="500"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="503"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="494"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="497"/>
<source>Set repeat mode</source>
<extracomment>The name of the ActionType ({4e60cd17-5845-4351-aa2c-2504610e1532}) of ThingClass heosPlayer
----------
@ -454,8 +445,8 @@ The name of the ActionType ({9478987b-14e4-4572-a059-a18a5a9db229}) of ThingClas
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="506"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="509"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="500"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="503"/>
<source>Set shuffle</source>
<extracomment>The name of the ActionType ({4b581237-acf5-4d8f-9e83-9b24e9ac900a}) of ThingClass heosPlayer
----------
@ -463,30 +454,30 @@ The name of the ActionType ({8ad33cb9-e758-433d-a013-2e4d43157c92}) of ThingClas
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="512"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="506"/>
<source>Set surround mode</source>
<extracomment>The name of the ActionType ({4f203bdd-691c-4384-a934-2d49a5448f0a}) of ThingClass AVRX1000</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="515"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="509"/>
<source>Set tone control</source>
<extracomment>The name of the ActionType ({d57c1e5e-2cc9-4638-999c-1523f16dbb83}) of ThingClass AVRX1000</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="518"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="512"/>
<source>Set treble</source>
<extracomment>The name of the ActionType ({38a3be02-6ed4-4a84-903e-eb923b933989}) of ThingClass AVRX1000</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="521"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="524"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="527"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="530"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="533"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="536"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="539"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="542"/>
<source>Shuffle</source>
<extracomment>The name of the ParamType (ThingClass: heosPlayer, ActionType: shuffle, ID: {4b581237-acf5-4d8f-9e83-9b24e9ac900a})
----------
@ -502,8 +493,8 @@ The name of the StateType ({8ad33cb9-e758-433d-a013-2e4d43157c92}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="545"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="548"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="539"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="542"/>
<source>Shuffle changed</source>
<extracomment>The name of the EventType ({4b581237-acf5-4d8f-9e83-9b24e9ac900a}) of ThingClass heosPlayer
----------
@ -511,8 +502,8 @@ The name of the EventType ({8ad33cb9-e758-433d-a013-2e4d43157c92}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="551"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="554"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="545"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="548"/>
<source>Skip back</source>
<extracomment>The name of the ActionType ({a718f7e9-0b54-4403-b661-49f7b0d13085}) of ThingClass heosPlayer
----------
@ -520,8 +511,8 @@ The name of the ActionType ({3f2eb789-918c-475a-a295-14c0c24338b8}) of ThingClas
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="557"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="560"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="551"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="554"/>
<source>Skip next</source>
<extracomment>The name of the ActionType ({57697e9c-ce5e-4b8f-b42e-16662829ceb2}) of ThingClass heosPlayer
----------
@ -529,8 +520,8 @@ The name of the ActionType ({bf9664e4-a53e-474c-afcc-88f25e6fe365}) of ThingClas
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="563"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="566"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="557"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="560"/>
<source>Source</source>
<extracomment>The name of the ParamType (ThingClass: heosPlayer, EventType: source, ID: {eee22722-3ee5-48f7-8af8-275dc04b21eb})
----------
@ -538,18 +529,24 @@ The name of the StateType ({eee22722-3ee5-48f7-8af8-275dc04b21eb}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="569"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="563"/>
<source>Source changed</source>
<extracomment>The name of the EventType ({eee22722-3ee5-48f7-8af8-275dc04b21eb}) of ThingClass heosPlayer</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="566"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="569"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="572"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="575"/>
<source>Step size</source>
<extracomment>The name of the ParamType (ThingClass: heosPlayer, ActionType: decreaseVolume, ID: {ef5a252b-3d28-4817-a668-1dacf0ed1f8a})
----------
The name of the ParamType (ThingClass: heosPlayer, ActionType: increaseVolume, ID: {0770da3f-61c3-4145-b0d8-348f42a8cf0d})</extracomment>
The name of the ParamType (ThingClass: heosPlayer, ActionType: increaseVolume, ID: {0770da3f-61c3-4145-b0d8-348f42a8cf0d})
----------
The name of the ParamType (ThingClass: AVRX1000, ActionType: decreaseVolume, ID: {0731daad-e689-40f6-8685-6d6362b715ec})
----------
The name of the ParamType (ThingClass: AVRX1000, ActionType: increaseVolume, ID: {f24e4e9d-5f7b-4b5c-ad0a-eb6316d86408})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
@ -697,14 +694,14 @@ The name of the EventType ({773636b9-304d-463a-8755-fc7488dc0ff3}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="497"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="491"/>
<source>Set power</source>
<extracomment>The name of the ActionType ({1cdb6b54-6831-4900-95b2-c78f64497701}) of ThingClass AVRX1000</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="521"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="524"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="515"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="518"/>
<source>Set volume</source>
<extracomment>The name of the ActionType ({6d4886a1-fa5d-4889-96c5-7a1c206f59be}) of ThingClass heosPlayer
----------
@ -712,7 +709,7 @@ The name of the ActionType ({773636b9-304d-463a-8755-fc7488dc0ff3}) of ThingClas
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="482"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/denon/plugininfo.h" line="476"/>
<source>Set channel</source>
<extracomment>The name of the ActionType ({f29ffa2c-31d6-4d88-b160-a38288c82ce1}) of ThingClass AVRX1000</extracomment>
<translation type="unfinished"></translation>
@ -721,28 +718,32 @@ The name of the ActionType ({773636b9-304d-463a-8755-fc7488dc0ff3}) of ThingClas
<context>
<name>IntegrationPluginDenon</name>
<message>
<location filename="../integrationplugindenon.cpp" line="127"/>
<location filename="../integrationplugindenon.cpp" line="131"/>
<source>UPnP discovery failed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../integrationplugindenon.cpp" line="164"/>
<location filename="../integrationplugindenon.cpp" line="165"/>
<source>Please enter your HEOS account credentials. Leave empty if you doesn&apos;t have any. Some features like music browsing won&apos;t be available.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../integrationplugindenon.cpp" line="204"/>
<location filename="../integrationplugindenon.cpp" line="243"/>
<source>The given IP address is not valid.</source>
<location filename="../integrationplugindenon.cpp" line="258"/>
<source>Serial number is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../integrationplugindenon.cpp" line="982"/>
<location filename="../integrationplugindenon.cpp" line="284"/>
<source>Device discovery failed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../integrationplugindenon.cpp" line="1059"/>
<source>Service is not available</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../integrationplugindenon.cpp" line="1193"/>
<location filename="../integrationplugindenon.cpp" line="1269"/>
<source>Wrong username or password</source>
<translation type="unfinished"></translation>
</message>