Merge PR #282: Nanoleaf: Fix IPv6

This commit is contained in:
Jenkins nymea 2020-09-14 12:40:42 +02:00
commit a5d2f29de8
6 changed files with 326 additions and 85 deletions

View File

@ -52,22 +52,14 @@ void IntegrationPluginNanoleaf::discoverThings(ThingDiscoveryInfo *info)
QStringList serialNumbers;
foreach (const ZeroConfServiceEntry &entry, m_zeroconfBrowser->serviceEntries()) {
ThingDescriptor descriptor(lightPanelsThingClassId, entry.name(), entry.hostAddress().toString());
QHostAddress address = QHostAddress(entry.hostAddress().toString());
ThingDescriptor descriptor(lightPanelsThingClassId, entry.name(), address.toString());
ParamList params;
QString serialNo;
QString model;
QString firmwareVersion;
QString serialNo = entry.txt("id");
QString model = entry.txt("md");
QString firmwareVersion = entry.txt("srcvers");
foreach (QString value, entry.txt()) {
if (value.contains("id=")) {
serialNo = value.split("=").last();
} else if (value.contains("md=")) {
model = value.split("=").last();
} else if (value.contains("srcvers=")) {
firmwareVersion = value.split("=").last();
}
}
if (serialNumbers.contains(serialNo)) {
continue; //To avoid duplicated devices
}
@ -80,8 +72,6 @@ void IntegrationPluginNanoleaf::discoverThings(ThingDiscoveryInfo *info)
serialNumbers.append(serialNo);
qCDebug(dcNanoleaf()) << "Have device" << entry.name() << serialNo << model << firmwareVersion;
params << Param(lightPanelsThingAddressParamTypeId, entry.hostAddress().toString());
params << Param(lightPanelsThingPortParamTypeId, entry.port());
params << Param(lightPanelsThingModelParamTypeId, model);
params << Param(lightPanelsThingSerialNoParamTypeId, serialNo);
params << Param(lightPanelsThingFirmwareVersionParamTypeId, firmwareVersion);
@ -101,7 +91,15 @@ void IntegrationPluginNanoleaf::confirmPairing(ThingPairingInfo *info, const QSt
{
Q_UNUSED(username)
Q_UNUSED(secret)
Nanoleaf *nanoleaf = createNanoleafConnection(QHostAddress(info->params().paramValue(lightPanelsThingAddressParamTypeId).toString()), info->params().paramValue(lightPanelsThingPortParamTypeId).toInt());
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);
m_unfinishedPairing.insert(nanoleaf, info);
@ -116,6 +114,10 @@ void IntegrationPluginNanoleaf::setupThing(ThingSetupInfo *info)
{
Thing *thing = info->thing();
if(thing->thingClassId() == lightPanelsThingClassId) {
QString thingSerialNo = thing->paramValue(lightPanelsThingSerialNoParamTypeId).toString();
qCDebug(dcNanoleaf()) << "Setting up Nanoleaf light panel with serial number:" << thingSerialNo;
pluginStorage()->beginGroup(thing->id().toString());
QString token = pluginStorage()->value("authToken").toString();
pluginStorage()->endGroup();
@ -128,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(thing->paramValue(lightPanelsThingAddressParamTypeId).toString());
int port = thing->paramValue(lightPanelsThingPortParamTypeId).toInt();
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,6 +271,33 @@ Nanoleaf *IntegrationPluginNanoleaf::createNanoleafConnection(const QHostAddress
return nanoleaf;
}
QHostAddress IntegrationPluginNanoleaf::getHostAddress(const QString &serialNumber)
{
ZeroConfServiceEntry entry;
foreach (const ZeroConfServiceEntry &e, m_zeroconfBrowser->serviceEntries()) {
QString entrySerialNo = e.txt("id");
if (serialNumber == entrySerialNo) {
entry = e;
break;
}
}
return QHostAddress(entry.hostAddress());
}
uint IntegrationPluginNanoleaf::getPort(const QString &serialNumber)
{
ZeroConfServiceEntry entry;
foreach (const ZeroConfServiceEntry &e, m_zeroconfBrowser->serviceEntries()) {
QString entrySerialNo = e.txt("id");
if (serialNumber == entrySerialNo) {
entry = e;
break;
}
}
return entry.port();
}
void IntegrationPluginNanoleaf::onAuthTokenReceived(const QString &token)
{
Nanoleaf *nanoleaf = static_cast<Nanoleaf *>(sender());
@ -316,6 +351,15 @@ void IntegrationPluginNanoleaf::onConnectionChanged(bool connected)
if (!thing)
return;
thing->setStateValue(lightPanelsConnectedStateTypeId, connected);
if (!connected) {
QTimer::singleShot(3000, this, [nanoleaf, thing, connected, this] {
if (!connected) { //If after 3 seconds it is still not connected
nanoleaf->setIpAddress(getHostAddress(thing->paramValue(lightPanelsThingSerialNoParamTypeId).toString()));
nanoleaf->setPort(getPort(thing->paramValue(lightPanelsThingSerialNoParamTypeId).toString()));
nanoleaf->getControllerInfo(); //Test connection
}
});
}
}
void IntegrationPluginNanoleaf::onControllerInfoReceived(const Nanoleaf::ControllerInfo &controllerInfo)

View File

@ -76,6 +76,8 @@ private:
QHash<QUuid, BrowserActionInfo *> m_asyncBrowserItem;
Nanoleaf *createNanoleafConnection(const QHostAddress &address, int port);
QHostAddress getHostAddress(const QString &serialNumber);
uint getPort(const QString &serialNumber);
public slots:
void onAuthTokenReceived(const QString &token);

View File

@ -17,19 +17,6 @@
"setupMethod": "pushButton",
"browsable": true,
"paramTypes": [
{
"id": "ff57079f-d5ab-4511-8a5c-0726e7b82af6",
"name": "address",
"displayName": "Address",
"type" : "QString"
},
{
"id": "ba4fd45b-990d-480a-859d-fff7ffba3ba4",
"name": "port",
"displayName": "Port",
"type" : "int",
"readOnly": true
},
{
"id": "353d3c71-0ad2-40d5-99f6-cc305e2073f1",
"name": "model",

View File

@ -1,7 +1,5 @@
include(../plugins.pri)
TARGET = $$qtLibraryTarget(nymea_integrationpluginnanoleaf)
QT += network
SOURCES += \

View File

@ -0,0 +1,216 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="de">
<context>
<name>IntegrationPluginNanoleaf</name>
<message>
<location filename="../integrationpluginnanoleaf.cpp" line="87"/>
<source>On the Nanoleaf controller, hold the on-off button for 5-7 seconds until the LED starts flashing.</source>
<translation>Halten Sie auf dem Nanoleaf-Controller die Ein- / Aus-Taste 5-7 Sekunden lang gedrückt, bis die LED zu blinken beginnt.</translation>
</message>
<message>
<location filename="../integrationpluginnanoleaf.cpp" line="98"/>
<location filename="../integrationpluginnanoleaf.cpp" line="137"/>
<source>Cloud not find device.</source>
<translation>Das Gerät konnte nicht gefunden werden.</translation>
</message>
<message>
<location filename="../integrationpluginnanoleaf.cpp" line="413"/>
<source>Color temperature</source>
<translation>Farbtemperatur</translation>
</message>
<message>
<location filename="../integrationpluginnanoleaf.cpp" line="416"/>
<source>Hue/Saturation</source>
<translation>Farbton / Sättigung</translation>
</message>
<message>
<location filename="../integrationpluginnanoleaf.cpp" line="419"/>
<source>Effect</source>
<translation>Effekt</translation>
</message>
</context>
<context>
<name>Nanoleaf</name>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="56"/>
<source>Alert</source>
<extracomment>The name of the ActionType ({47a6a1a1-fb90-4f24-be8c-b4dba0aaaa84}) of ThingClass lightPanels</extracomment>
<translation>Alarm</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="59"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="62"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="65"/>
<source>Brightness</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, ActionType: brightness, ID: {4e5d6460-d42e-4b7c-a8f3-6e953451c1ef})
----------
The name of the ParamType (ThingClass: lightPanels, EventType: brightness, ID: {4e5d6460-d42e-4b7c-a8f3-6e953451c1ef})
----------
The name of the StateType ({4e5d6460-d42e-4b7c-a8f3-6e953451c1ef}) of ThingClass lightPanels</extracomment>
<translation>Helligkeit</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="68"/>
<source>Brightness changed</source>
<extracomment>The name of the EventType ({4e5d6460-d42e-4b7c-a8f3-6e953451c1ef}) of ThingClass lightPanels</extracomment>
<translation>Helligkeit geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="71"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="74"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="77"/>
<source>Color</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, ActionType: color, ID: {d4a52cdc-93b2-44fc-a36c-ae65f1d98f2e})
----------
The name of the ParamType (ThingClass: lightPanels, EventType: color, ID: {d4a52cdc-93b2-44fc-a36c-ae65f1d98f2e})
----------
The name of the StateType ({d4a52cdc-93b2-44fc-a36c-ae65f1d98f2e}) of ThingClass lightPanels</extracomment>
<translation>Farbe</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="80"/>
<source>Color changed</source>
<extracomment>The name of the EventType ({d4a52cdc-93b2-44fc-a36c-ae65f1d98f2e}) of ThingClass lightPanels</extracomment>
<translation>Farbe geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="83"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="86"/>
<source>Color mode</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, EventType: colorMode, ID: {bdd2ea1e-9ef9-4967-9678-2c601b826199})
----------
The name of the StateType ({bdd2ea1e-9ef9-4967-9678-2c601b826199}) of ThingClass lightPanels</extracomment>
<translation>Farbmodus</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="89"/>
<source>Color mode changed</source>
<extracomment>The name of the EventType ({bdd2ea1e-9ef9-4967-9678-2c601b826199}) of ThingClass lightPanels</extracomment>
<translation>Farbmodus geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="92"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="95"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="98"/>
<source>Color temperature</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, ActionType: colorTemperature, ID: {41248127-844b-40be-87e6-38aee48b6687})
----------
The name of the ParamType (ThingClass: lightPanels, EventType: colorTemperature, ID: {41248127-844b-40be-87e6-38aee48b6687})
----------
The name of the StateType ({41248127-844b-40be-87e6-38aee48b6687}) of ThingClass lightPanels</extracomment>
<translation>Farbtemperatur</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="101"/>
<source>Color temperature changed</source>
<extracomment>The name of the EventType ({41248127-844b-40be-87e6-38aee48b6687}) of ThingClass lightPanels</extracomment>
<translation>Farbtemperatur geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="104"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="107"/>
<source>Effect name</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, EventType: effectName, ID: {57f9831e-1b98-41c1-a21c-6073ff327237})
----------
The name of the StateType ({57f9831e-1b98-41c1-a21c-6073ff327237}) of ThingClass lightPanels</extracomment>
<translation>Effektname</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="110"/>
<source>Effect name changed</source>
<extracomment>The name of the EventType ({57f9831e-1b98-41c1-a21c-6073ff327237}) of ThingClass lightPanels</extracomment>
<translation>Effektname geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="113"/>
<source>Firmware version</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, Type: thing, ID: {1b85eebe-3b1a-49a9-bddb-2175d6599b95})</extracomment>
<translation>Firmwareversion</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="116"/>
<source>Light panels</source>
<extracomment>The name of the ThingClass ({d44ee383-9fa5-4751-babd-1129ac20896a})</extracomment>
<translation>Lightpaneele</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="119"/>
<source>Model</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, Type: thing, ID: {353d3c71-0ad2-40d5-99f6-cc305e2073f1})</extracomment>
<translation>Modell</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="122"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="125"/>
<source>Nanoleaf</source>
<extracomment>The name of the vendor ({3d7fdaa6-7896-419b-8be3-c90c42bcac7f})
----------
The name of the plugin Nanoleaf ({360867ec-1594-498d-8182-fbab1fe17489})</extracomment>
<translation>Nanoleaf</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="128"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="131"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="134"/>
<source>Power</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, ActionType: power, ID: {44bee9ec-513d-4834-991a-ee9ae69d9f2a})
----------
The name of the ParamType (ThingClass: lightPanels, EventType: power, ID: {44bee9ec-513d-4834-991a-ee9ae69d9f2a})
----------
The name of the StateType ({44bee9ec-513d-4834-991a-ee9ae69d9f2a}) of ThingClass lightPanels</extracomment>
<translation>Eingeschalten</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="137"/>
<source>Power changed</source>
<extracomment>The name of the EventType ({44bee9ec-513d-4834-991a-ee9ae69d9f2a}) of ThingClass lightPanels</extracomment>
<translation>Eingeschalten geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="140"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="143"/>
<source>Reachable</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, EventType: connected, ID: {a3102107-a825-4ec8-a9ec-b2c2a9fb5c89})
----------
The name of the StateType ({a3102107-a825-4ec8-a9ec-b2c2a9fb5c89}) of ThingClass lightPanels</extracomment>
<translation>ERreichbar</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="146"/>
<source>Reachable changed</source>
<extracomment>The name of the EventType ({a3102107-a825-4ec8-a9ec-b2c2a9fb5c89}) of ThingClass lightPanels</extracomment>
<translation>Erriechbar geändert</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="149"/>
<source>Serial number</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, Type: thing, ID: {18be4a5f-e2c2-4070-bc3e-ea9fe64f2276})</extracomment>
<translation>Seriennummer</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="152"/>
<source>Set brightness</source>
<extracomment>The name of the ActionType ({4e5d6460-d42e-4b7c-a8f3-6e953451c1ef}) of ThingClass lightPanels</extracomment>
<translation>Setze Helligkeit</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="155"/>
<source>Set color</source>
<extracomment>The name of the ActionType ({d4a52cdc-93b2-44fc-a36c-ae65f1d98f2e}) of ThingClass lightPanels</extracomment>
<translation>Setze Farbe</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="158"/>
<source>Set color temperature</source>
<extracomment>The name of the ActionType ({41248127-844b-40be-87e6-38aee48b6687}) of ThingClass lightPanels</extracomment>
<translation>Setze Farbtemperatur</translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="161"/>
<source>Set power</source>
<extracomment>The name of the ActionType ({44bee9ec-513d-4834-991a-ee9ae69d9f2a}) of ThingClass lightPanels</extracomment>
<translation>Setze Eingeschalten</translation>
</message>
</context>
</TS>

View File

@ -4,22 +4,28 @@
<context>
<name>IntegrationPluginNanoleaf</name>
<message>
<location filename="../integrationpluginnanoleaf.cpp" line="97"/>
<location filename="../integrationpluginnanoleaf.cpp" line="87"/>
<source>On the Nanoleaf controller, hold the on-off button for 5-7 seconds until the LED starts flashing.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../integrationpluginnanoleaf.cpp" line="369"/>
<location filename="../integrationpluginnanoleaf.cpp" line="98"/>
<location filename="../integrationpluginnanoleaf.cpp" line="137"/>
<source>Cloud not find device.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../integrationpluginnanoleaf.cpp" line="413"/>
<source>Color temperature</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../integrationpluginnanoleaf.cpp" line="372"/>
<location filename="../integrationpluginnanoleaf.cpp" line="416"/>
<source>Hue/Saturation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../integrationpluginnanoleaf.cpp" line="375"/>
<location filename="../integrationpluginnanoleaf.cpp" line="419"/>
<source>Effect</source>
<translation type="unfinished"></translation>
</message>
@ -27,21 +33,15 @@
<context>
<name>Nanoleaf</name>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="58"/>
<source>Address</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, Type: thing, ID: {ff57079f-d5ab-4511-8a5c-0726e7b82af6})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="61"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="56"/>
<source>Alert</source>
<extracomment>The name of the ActionType ({47a6a1a1-fb90-4f24-be8c-b4dba0aaaa84}) of ThingClass lightPanels</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="64"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="67"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="70"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="59"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="62"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="65"/>
<source>Brightness</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, ActionType: brightness, ID: {4e5d6460-d42e-4b7c-a8f3-6e953451c1ef})
----------
@ -51,15 +51,15 @@ The name of the StateType ({4e5d6460-d42e-4b7c-a8f3-6e953451c1ef}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="73"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="68"/>
<source>Brightness changed</source>
<extracomment>The name of the EventType ({4e5d6460-d42e-4b7c-a8f3-6e953451c1ef}) of ThingClass lightPanels</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="76"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="79"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="82"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="71"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="74"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="77"/>
<source>Color</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, ActionType: color, ID: {d4a52cdc-93b2-44fc-a36c-ae65f1d98f2e})
----------
@ -69,14 +69,14 @@ The name of the StateType ({d4a52cdc-93b2-44fc-a36c-ae65f1d98f2e}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="85"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="80"/>
<source>Color changed</source>
<extracomment>The name of the EventType ({d4a52cdc-93b2-44fc-a36c-ae65f1d98f2e}) of ThingClass lightPanels</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="88"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="91"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="83"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="86"/>
<source>Color mode</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, EventType: colorMode, ID: {bdd2ea1e-9ef9-4967-9678-2c601b826199})
----------
@ -84,15 +84,15 @@ The name of the StateType ({bdd2ea1e-9ef9-4967-9678-2c601b826199}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="94"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="89"/>
<source>Color mode changed</source>
<extracomment>The name of the EventType ({bdd2ea1e-9ef9-4967-9678-2c601b826199}) of ThingClass lightPanels</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="97"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="100"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="103"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="92"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="95"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="98"/>
<source>Color temperature</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, ActionType: colorTemperature, ID: {41248127-844b-40be-87e6-38aee48b6687})
----------
@ -102,14 +102,14 @@ The name of the StateType ({41248127-844b-40be-87e6-38aee48b6687}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="106"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="101"/>
<source>Color temperature changed</source>
<extracomment>The name of the EventType ({41248127-844b-40be-87e6-38aee48b6687}) of ThingClass lightPanels</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="109"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="112"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="104"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="107"/>
<source>Effect name</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, EventType: effectName, ID: {57f9831e-1b98-41c1-a21c-6073ff327237})
----------
@ -117,32 +117,32 @@ The name of the StateType ({57f9831e-1b98-41c1-a21c-6073ff327237}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="115"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="110"/>
<source>Effect name changed</source>
<extracomment>The name of the EventType ({57f9831e-1b98-41c1-a21c-6073ff327237}) of ThingClass lightPanels</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="118"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="113"/>
<source>Firmware version</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, Type: thing, ID: {1b85eebe-3b1a-49a9-bddb-2175d6599b95})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="121"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="116"/>
<source>Light panels</source>
<extracomment>The name of the ThingClass ({d44ee383-9fa5-4751-babd-1129ac20896a})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="124"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="119"/>
<source>Model</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, Type: thing, ID: {353d3c71-0ad2-40d5-99f6-cc305e2073f1})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="127"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="130"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="122"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="125"/>
<source>Nanoleaf</source>
<extracomment>The name of the vendor ({3d7fdaa6-7896-419b-8be3-c90c42bcac7f})
----------
@ -150,15 +150,9 @@ The name of the plugin Nanoleaf ({360867ec-1594-498d-8182-fbab1fe17489})</extrac
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="133"/>
<source>Port</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, Type: thing, ID: {ba4fd45b-990d-480a-859d-fff7ffba3ba4})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="136"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="139"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="142"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="128"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="131"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="134"/>
<source>Power</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, ActionType: power, ID: {44bee9ec-513d-4834-991a-ee9ae69d9f2a})
----------
@ -168,14 +162,14 @@ The name of the StateType ({44bee9ec-513d-4834-991a-ee9ae69d9f2a}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="145"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="137"/>
<source>Power changed</source>
<extracomment>The name of the EventType ({44bee9ec-513d-4834-991a-ee9ae69d9f2a}) of ThingClass lightPanels</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="148"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="151"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="140"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="143"/>
<source>Reachable</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, EventType: connected, ID: {a3102107-a825-4ec8-a9ec-b2c2a9fb5c89})
----------
@ -183,37 +177,37 @@ The name of the StateType ({a3102107-a825-4ec8-a9ec-b2c2a9fb5c89}) of ThingClass
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="154"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="146"/>
<source>Reachable changed</source>
<extracomment>The name of the EventType ({a3102107-a825-4ec8-a9ec-b2c2a9fb5c89}) of ThingClass lightPanels</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="157"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="149"/>
<source>Serial number</source>
<extracomment>The name of the ParamType (ThingClass: lightPanels, Type: thing, ID: {18be4a5f-e2c2-4070-bc3e-ea9fe64f2276})</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="160"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="152"/>
<source>Set brightness</source>
<extracomment>The name of the ActionType ({4e5d6460-d42e-4b7c-a8f3-6e953451c1ef}) of ThingClass lightPanels</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="163"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="155"/>
<source>Set color</source>
<extracomment>The name of the ActionType ({d4a52cdc-93b2-44fc-a36c-ae65f1d98f2e}) of ThingClass lightPanels</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="166"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="158"/>
<source>Set color temperature</source>
<extracomment>The name of the ActionType ({41248127-844b-40be-87e6-38aee48b6687}) of ThingClass lightPanels</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="169"/>
<location filename="../../../build-nymea-plugins-Desktop-Debug/nanoleaf/plugininfo.h" line="161"/>
<source>Set power</source>
<extracomment>The name of the ActionType ({44bee9ec-513d-4834-991a-ee9ae69d9f2a}) of ThingClass lightPanels</extracomment>
<translation type="unfinished"></translation>