From 2efa44de640bdbf9fbf516e65b6db32cd6314738 Mon Sep 17 00:00:00 2001 From: "bernhard.trinnes" Date: Wed, 9 Sep 2020 12:56:27 +0200 Subject: [PATCH] fixed nanoleaf pairing and thing setup --- nanoleaf/integrationpluginnanoleaf.cpp | 37 ++++++++++--------- ...360867ec-1594-498d-8182-fbab1fe17489-de.ts | 14 +++++-- ...867ec-1594-498d-8182-fbab1fe17489-en_US.ts | 14 +++++-- 3 files changed, 39 insertions(+), 26 deletions(-) diff --git a/nanoleaf/integrationpluginnanoleaf.cpp b/nanoleaf/integrationpluginnanoleaf.cpp index 6ac7cf19..8410c959 100644 --- a/nanoleaf/integrationpluginnanoleaf.cpp +++ b/nanoleaf/integrationpluginnanoleaf.cpp @@ -91,8 +91,14 @@ void IntegrationPluginNanoleaf::confirmPairing(ThingPairingInfo *info, const QSt { Q_UNUSED(username) Q_UNUSED(secret) - QHostAddress address = getHostAddress(info->params().paramValue(lightPanelsThingSerialNoParamTypeId).toString()); - uint port = getPort(info->params().paramValue(lightPanelsThingSerialNoParamTypeId).toString()); + QString serialNumber = info->params().paramValue(lightPanelsThingSerialNoParamTypeId).toString(); + QHostAddress address = getHostAddress(serialNumber); + if (address.isNull()) { + qCWarning(dcNanoleaf()) << "Could not find any device with serial number" << serialNumber; + return info->finish(Thing::ThingErrorHardwareNotAvailable, QT_TR_NOOP("Cloud not find device.")); + } + uint port = getPort(serialNumber); + qCDebug(dcNanoleaf()) << "ConfirmPairing: Creating Nanoleaf connection with address" << address << "and port" << port; Nanoleaf *nanoleaf = createNanoleafConnection(address, port); nanoleaf->addUser(); //push button pairing m_unfinishedNanoleafConnections.insert(info->thingId(), nanoleaf); @@ -124,8 +130,14 @@ void IntegrationPluginNanoleaf::setupThing(ThingSetupInfo *info) return info->finish(Thing::ThingErrorNoError); } else { // This setupDevice is called after a (re)start, with an already added thing - QHostAddress address = getHostAddress(thing->paramValue(lightPanelsThingSerialNoParamTypeId).toString()); - int port = getPort(thing->paramValue(lightPanelsThingSerialNoParamTypeId).toString()); + QString serialNumber = thing->paramValue(lightPanelsThingSerialNoParamTypeId).toString(); + QHostAddress address = getHostAddress(serialNumber); + if (address.isNull()) { + qCWarning(dcNanoleaf()) << "Could not find any device with serial number" << serialNumber; + return info->finish(Thing::ThingErrorHardwareNotAvailable, QT_TR_NOOP("Cloud not find device.")); + } + int port = getPort(serialNumber); + qCDebug(dcNanoleaf()) << "SetupThing: Creating Nanoleaf connection with address" << address << "and port" << port; nanoleaf = createNanoleafConnection(address, port); nanoleaf->setAuthToken(token); nanoleaf->getControllerInfo(); //This is just to check if the thing is available @@ -263,13 +275,8 @@ QHostAddress IntegrationPluginNanoleaf::getHostAddress(const QString &serialNumb { ZeroConfServiceEntry entry; foreach (const ZeroConfServiceEntry &e, m_zeroconfBrowser->serviceEntries()) { - QString entrySerialNo; - foreach (QString value, entry.txt()) { - if (value.contains("id=")) { - entrySerialNo = value.split("=").last(); - break; - } - } + QString entrySerialNo = e.txt("id"); + if (serialNumber == entrySerialNo) { entry = e; break; @@ -282,13 +289,7 @@ uint IntegrationPluginNanoleaf::getPort(const QString &serialNumber) { ZeroConfServiceEntry entry; foreach (const ZeroConfServiceEntry &e, m_zeroconfBrowser->serviceEntries()) { - QString entrySerialNo; - foreach (QString value, entry.txt()) { - if (value.contains("id=")) { - entrySerialNo = value.split("=").last(); - break; - } - } + QString entrySerialNo = e.txt("id"); if (serialNumber == entrySerialNo) { entry = e; break; diff --git a/nanoleaf/translations/360867ec-1594-498d-8182-fbab1fe17489-de.ts b/nanoleaf/translations/360867ec-1594-498d-8182-fbab1fe17489-de.ts index 07aaac4e..10c66dff 100644 --- a/nanoleaf/translations/360867ec-1594-498d-8182-fbab1fe17489-de.ts +++ b/nanoleaf/translations/360867ec-1594-498d-8182-fbab1fe17489-de.ts @@ -4,22 +4,28 @@ IntegrationPluginNanoleaf - + On the Nanoleaf controller, hold the on-off button for 5-7 seconds until the LED starts flashing. Halten Sie auf dem Nanoleaf-Controller die Ein- / Aus-Taste 5-7 Sekunden lang gedrückt, bis die LED zu blinken beginnt. - + + + Cloud not find device. + Das Gerät konnte nicht gefunden werden. + + + Color temperature Farbtemperatur - + Hue/Saturation Farbton / Sättigung - + Effect Effekt diff --git a/nanoleaf/translations/360867ec-1594-498d-8182-fbab1fe17489-en_US.ts b/nanoleaf/translations/360867ec-1594-498d-8182-fbab1fe17489-en_US.ts index 29ff6d67..3ba518d8 100644 --- a/nanoleaf/translations/360867ec-1594-498d-8182-fbab1fe17489-en_US.ts +++ b/nanoleaf/translations/360867ec-1594-498d-8182-fbab1fe17489-en_US.ts @@ -4,22 +4,28 @@ IntegrationPluginNanoleaf - + On the Nanoleaf controller, hold the on-off button for 5-7 seconds until the LED starts flashing. - + + + Cloud not find device. + + + + Color temperature - + Hue/Saturation - + Effect