Merge PR #392: Tuya: Add light device support
This commit is contained in:
commit
2adb901536
@ -3,3 +3,12 @@
|
||||
This plugin allows to make use of Tuya based devices through the Tuya cloud. This includes all the devices that work with the Smart Life app.
|
||||
|
||||
The plugin will allow logging in with the Smart Life app account and fetch all the devices connected to the Tuya/Smart Life cloud.
|
||||
|
||||
Currently supported devices:
|
||||
|
||||
* Smart plugs
|
||||
* Lights [1]
|
||||
* Roller shutters
|
||||
|
||||
|
||||
[1] Please note, that light support is somewhat rudimentary as the Tuya cloud api does not allow integrating that very well.
|
||||
|
||||
@ -49,15 +49,25 @@
|
||||
const int queryInterval = 130;
|
||||
const int discoveryInterval = 610;
|
||||
|
||||
QHash<ThingClassId, ParamTypeId> idParamTypeIdsMap = {
|
||||
{tuyaClosableThingClassId, tuyaClosableThingIdParamTypeId},
|
||||
{tuyaSwitchThingClassId, tuyaSwitchThingIdParamTypeId},
|
||||
{tuyaLightThingClassId, tuyaLightThingIdParamTypeId}
|
||||
};
|
||||
|
||||
QHash<ThingClassId, StateTypeId> connectedStateTypeIdsMap = {
|
||||
{tuyaClosableThingClassId, tuyaClosableConnectedStateTypeId},
|
||||
{tuyaSwitchThingClassId, tuyaSwitchConnectedStateTypeId},
|
||||
{tuyaLightThingClassId, tuyaLightConnectedStateTypeId}
|
||||
};
|
||||
|
||||
QHash<ActionTypeId, ThingClassId> powerStateTypeIdsMap = {
|
||||
{tuyaSwitchThingClassId, tuyaSwitchPowerStateTypeId},
|
||||
{tuyaLightThingClassId, tuyaLightPowerStateTypeId}
|
||||
};
|
||||
|
||||
IntegrationPluginTuya::IntegrationPluginTuya(QObject *parent): IntegrationPlugin(parent)
|
||||
{
|
||||
m_devIdParamTypeIdsMap[tuyaClosableThingClassId] = tuyaClosableThingIdParamTypeId;
|
||||
m_devIdParamTypeIdsMap[tuyaSwitchThingClassId] = tuyaSwitchThingIdParamTypeId;
|
||||
|
||||
m_connectedStateTypeIdsMap[tuyaClosableThingClassId] = tuyaClosableConnectedStateTypeId;
|
||||
m_connectedStateTypeIdsMap[tuyaSwitchThingClassId] = tuyaSwitchConnectedStateTypeId;
|
||||
|
||||
m_powerStateTypeIdsMap[tuyaSwitchThingClassId] = tuyaSwitchPowerStateTypeId;
|
||||
}
|
||||
|
||||
IntegrationPluginTuya::~IntegrationPluginTuya()
|
||||
@ -236,19 +246,20 @@ void IntegrationPluginTuya::confirmPairing(ThingPairingInfo *info, const QString
|
||||
|
||||
void IntegrationPluginTuya::executeAction(ThingActionInfo *info)
|
||||
{
|
||||
if (info->action().actionTypeId() == tuyaSwitchPowerActionTypeId) {
|
||||
bool on = info->action().param(tuyaSwitchPowerActionPowerParamTypeId).value().toBool();
|
||||
QString devId = info->thing()->paramValue(tuyaSwitchThingIdParamTypeId).toString();
|
||||
QString devId = info->thing()->paramValue(idParamTypeIdsMap.value(info->thing()->thingClassId())).toString();
|
||||
|
||||
if (powerStateTypeIdsMap.values().contains(info->action().actionTypeId())) {
|
||||
bool on = info->action().paramValue(info->action().actionTypeId()).toBool();
|
||||
controlTuyaSwitch(devId, "turnOnOff", on ? "1" : "0", info);
|
||||
connect(info, &ThingActionInfo::finished, [info, on](){
|
||||
if (info->status() == Thing::ThingErrorNoError) {
|
||||
info->thing()->setStateValue(tuyaSwitchPowerStateTypeId, on);
|
||||
info->thing()->setStateValue(powerStateTypeIdsMap.value(info->thing()->thingClassId()), on);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (info->thing()->thingClassId() == tuyaClosableThingClassId) {
|
||||
QString devId = info->thing()->paramValue(tuyaClosableThingIdParamTypeId).toString();
|
||||
if (info->action().actionTypeId() == tuyaClosableOpenActionTypeId) {
|
||||
controlTuyaSwitch(devId, "turnOnOff", "1", info);
|
||||
return;
|
||||
@ -261,7 +272,45 @@ void IntegrationPluginTuya::executeAction(ThingActionInfo *info)
|
||||
controlTuyaSwitch(devId, "startStop", "0", info);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (info->action().actionTypeId() == tuyaLightBrightnessActionTypeId) {
|
||||
int brightness = info->action().paramValue(tuyaLightBrightnessActionBrightnessParamTypeId).toInt() * 10;
|
||||
controlTuyaSwitch(devId, "brightnessSet", QString::number(qMax(10, brightness)), info);
|
||||
connect(info, &ThingActionInfo::finished, [info, brightness](){
|
||||
if (info->status() == Thing::ThingErrorNoError) {
|
||||
info->thing()->setStateValue(tuyaLightBrightnessStateTypeId, brightness / 10);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (info->action().actionTypeId() == tuyaLightColorActionTypeId) {
|
||||
QColor color = info->action().paramValue(tuyaLightColorActionColorParamTypeId).value<QColor>();
|
||||
QVariantMap colorMap;
|
||||
colorMap.insert("hue", color.hsvHue());
|
||||
colorMap.insert("saturation", color.hsvSaturation());
|
||||
colorMap.insert("brightness", qMax(10, info->thing()->stateValue(tuyaLightBrightnessStateTypeId).toInt() * 10));
|
||||
controlTuyaSwitch(devId, "colorSet", colorMap, info);
|
||||
connect(info, &ThingActionInfo::finished, [info, color](){
|
||||
if (info->status() == Thing::ThingErrorNoError) {
|
||||
info->thing()->setStateValue(tuyaLightColorStateTypeId, color);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (info->action().actionTypeId() == tuyaLightColorTemperatureActionTypeId) {
|
||||
int ct = info->action().paramValue(tuyaLightColorTemperatureStateTypeId).toInt();
|
||||
QVariantMap params;
|
||||
params.insert("value", ct * 10);
|
||||
controlTuyaSwitch(devId, "colorTemperatureSet", params, info);
|
||||
connect(info, &ThingActionInfo::finished, [info, ct](){
|
||||
if (info->status() == Thing::ThingErrorNoError) {
|
||||
info->thing()->setStateValue(tuyaLightColorTemperatureStateTypeId, ct);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
Q_ASSERT_X(false, "tuyaplugin", "Unhandled action type " + info->action().actionTypeId().toByteArray());
|
||||
}
|
||||
@ -406,33 +455,50 @@ void IntegrationPluginTuya::updateChildDevices(Thing *thing)
|
||||
QString name = deviceMap.value("name").toString();
|
||||
|
||||
if (devType == "switch") {
|
||||
bool online = deviceMap.value("data").toMap().value("online").toBool();
|
||||
bool state = deviceMap.value("data").toMap().value("state").toBool();
|
||||
|
||||
Thing *d = myThings().findByParams(ParamList() << Param(tuyaSwitchThingIdParamTypeId, id));
|
||||
if (d) {
|
||||
qCDebug(dcTuya()) << "Found existing Tuya switch" << d->name() << id << name << (online ? "online:" : "offline") << (state ? "on": "off");
|
||||
d->setStateValue(tuyaSwitchConnectedStateTypeId, online);
|
||||
d->setStateValue(tuyaSwitchPowerStateTypeId, state);
|
||||
} else {
|
||||
if (!d) {
|
||||
qCDebug(dcTuya()) << "Found new Tuya switch" << id << name;
|
||||
ThingDescriptor descriptor(tuyaSwitchThingClassId, name, QString(), thing->id());
|
||||
descriptor.setParams(ParamList() << Param(tuyaSwitchThingIdParamTypeId, id));
|
||||
unknownDevices.append(descriptor);
|
||||
}
|
||||
} else if (devType == "cover") {
|
||||
bool online = deviceMap.value("data").toMap().value("online").toBool();
|
||||
|
||||
Thing *d = myThings().findByParams(ParamList() << Param(tuyaClosableThingIdParamTypeId, id));
|
||||
if (d) {
|
||||
qCDebug(dcTuya()) << "Found existing Tuya cover" << d->name() << id << name << (online ? "online" : "offline");
|
||||
d->setStateValue(tuyaClosableConnectedStateTypeId, online);
|
||||
} else {
|
||||
bool online = deviceMap.value("data").toMap().value("online").toBool();
|
||||
bool state = deviceMap.value("data").toMap().value("state").toBool();
|
||||
qCDebug(dcTuya()) << "Found existing Tuya switch" << d->name() << id << name << (online ? "online:" : "offline") << (state ? "on": "off");
|
||||
d->setStateValue(tuyaSwitchConnectedStateTypeId, online);
|
||||
d->setStateValue(tuyaSwitchPowerStateTypeId, state);
|
||||
}
|
||||
|
||||
} else if (devType == "cover") {
|
||||
Thing *d = myThings().findByParams(ParamList() << Param(tuyaClosableThingIdParamTypeId, id));
|
||||
if (!d) {
|
||||
qCDebug(dcTuya()) << "Found new Tuya cover" << id << name;
|
||||
ThingDescriptor descriptor(tuyaClosableThingClassId, name, QString(), thing->id());
|
||||
descriptor.setParams(ParamList() << Param(tuyaClosableThingIdParamTypeId, id));
|
||||
unknownDevices.append(descriptor);
|
||||
} else {
|
||||
bool online = deviceMap.value("data").toMap().value("online").toBool();
|
||||
qCDebug(dcTuya()) << "Found existing Tuya cover" << d->name() << id << name << (online ? "online" : "offline");
|
||||
d->setStateValue(tuyaClosableConnectedStateTypeId, online);
|
||||
}
|
||||
|
||||
} else if (devType == "light") {
|
||||
Thing *d = myThings().findByParams(ParamList() << Param(tuyaLightThingIdParamTypeId, id));
|
||||
if (!d) {
|
||||
qCDebug(dcTuya()) << "Found new color Tuya light" << id << name;
|
||||
ThingDescriptor descriptor(tuyaLightThingClassId, name, QString(), thing->id());
|
||||
descriptor.setParams(ParamList() << Param(tuyaLightThingIdParamTypeId, id));
|
||||
unknownDevices.append(descriptor);
|
||||
} else {
|
||||
bool online = deviceMap.value("data").toMap().value("online").toBool();
|
||||
bool state = deviceMap.value("data").toMap().value("state").toBool();
|
||||
qCDebug(dcTuya()) << "Found existing Tuya color light" << d->name() << id << name << (online ? "online" : "offline");
|
||||
int brightness = deviceMap.value("data").toMap().value("brightness").toInt() / 10; // Apparently the value in the tuya cloud is 10 - 1000
|
||||
d->setStateValue(tuyaLightConnectedStateTypeId, online);
|
||||
d->setStateValue(tuyaLightPowerStateTypeId, state);
|
||||
d->setStateValue(tuyaLightBrightnessStateTypeId, brightness);
|
||||
}
|
||||
|
||||
} else {
|
||||
qCWarning(dcTuya()) << "Skipping unsupported thing type:" << devType;
|
||||
qCWarning(dcTuya()) << "Please report this including the following data:\n" << qUtf8Printable(QJsonDocument::fromVariant(deviceVariant).toJson());
|
||||
@ -451,7 +517,7 @@ void IntegrationPluginTuya::queryDevice(Thing *thing)
|
||||
{
|
||||
qCDebug(dcTuya()) << "Updating thing:" << thing;
|
||||
|
||||
QString devId = thing->paramValue(m_devIdParamTypeIdsMap.value(thing->thingClassId())).toString();
|
||||
QString devId = thing->paramValue(idParamTypeIdsMap.value(thing->thingClassId())).toString();
|
||||
|
||||
pluginStorage()->beginGroup(thing->parentId().toString());
|
||||
QString accesToken = pluginStorage()->value("accessToken").toString();
|
||||
@ -510,15 +576,15 @@ void IntegrationPluginTuya::queryDevice(Thing *thing)
|
||||
bool state = result.value("payload").toMap().value("data").toMap().value("state").toBool();
|
||||
qCDebug(dcTuya()) << "Device" << thing->name() << "is online:" << connected << "on:" << state;
|
||||
|
||||
thing->setStateValue(m_connectedStateTypeIdsMap.value(thing->thingClassId()), connected);
|
||||
thing->setStateValue(connectedStateTypeIdsMap.value(thing->thingClassId()), connected);
|
||||
|
||||
if (m_powerStateTypeIdsMap.contains(thing->thingClassId())) {
|
||||
thing->setStateValue(m_powerStateTypeIdsMap.value(thing->thingClassId()), state);
|
||||
if (powerStateTypeIdsMap.contains(thing->thingClassId())) {
|
||||
thing->setStateValue(powerStateTypeIdsMap.value(thing->thingClassId()), state);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void IntegrationPluginTuya::controlTuyaSwitch(const QString &devId, const QString &command, const QString &value, ThingActionInfo *info)
|
||||
void IntegrationPluginTuya::controlTuyaSwitch(const QString &devId, const QString &command, const QVariant &value, ThingActionInfo *info)
|
||||
{
|
||||
Thing *thing = info->thing();
|
||||
Thing *parentDevice = myThings().findById(thing->parentId());
|
||||
@ -550,6 +616,8 @@ void IntegrationPluginTuya::controlTuyaSwitch(const QString &devId, const QStrin
|
||||
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromVariant(data);
|
||||
|
||||
qCDebug(dcTuya()) << "Controlling payload:" << qUtf8Printable(jsonDoc.toJson(QJsonDocument::Indented));
|
||||
|
||||
QNetworkReply *reply = hardwareManager()->networkManager()->post(request, jsonDoc.toJson(QJsonDocument::Compact));
|
||||
connect(reply, &QNetworkReply::finished, [reply](){reply->deleteLater();});
|
||||
connect(reply, &QNetworkReply::finished, info, [info, reply](){
|
||||
@ -571,7 +639,7 @@ void IntegrationPluginTuya::controlTuyaSwitch(const QString &devId, const QStrin
|
||||
QVariantMap dataMap = jsonDoc.toVariant().toMap();
|
||||
bool success = dataMap.value("header").toMap().value("code").toString() == "SUCCESS";
|
||||
if (!success) {
|
||||
qCWarning(dcTuya()) << "Tuya response indicates an issue...";
|
||||
qCWarning(dcTuya()) << "Tuya response indicates an issue:" << qUtf8Printable(jsonDoc.toJson(QJsonDocument::Indented));
|
||||
info->finish(Thing::ThingErrorHardwareFailure);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -64,16 +64,12 @@ private:
|
||||
void updateChildDevices(Thing *thing);
|
||||
void queryDevice(Thing *thing);
|
||||
|
||||
void controlTuyaSwitch(const QString &devId, const QString &command, const QString &value, ThingActionInfo *info);
|
||||
void controlTuyaSwitch(const QString &devId, const QString &command, const QVariant &value, ThingActionInfo *info);
|
||||
|
||||
QHash<ThingId, QTimer*> m_tokenExpiryTimers;
|
||||
PluginTimer *m_pluginTimerQuery = nullptr;
|
||||
PluginTimer *m_pluginTimerDiscovery = nullptr;
|
||||
|
||||
QHash<ThingClassId, ParamTypeId> m_devIdParamTypeIdsMap;
|
||||
QHash<ThingClassId, StateTypeId> m_connectedStateTypeIdsMap;
|
||||
QHash<ThingClassId, StateTypeId> m_powerStateTypeIdsMap;
|
||||
|
||||
QHash<Thing*, QList<Thing*>> m_pollQueue;
|
||||
};
|
||||
|
||||
|
||||
@ -124,6 +124,79 @@
|
||||
"displayName": "Stop"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "6aaa67b5-b1ef-41e8-af72-0915e529b3c9",
|
||||
"name": "tuyaLight",
|
||||
"displayName": "Tuya color light",
|
||||
"createMethods": ["auto"],
|
||||
"interfaces": ["colorlight", "connectable"],
|
||||
"paramTypes": [
|
||||
{
|
||||
"id": "7fda1e07-6e80-465a-8322-872d8ab42583",
|
||||
"name": "id",
|
||||
"displayName": "ID",
|
||||
"type": "QString",
|
||||
"defaultValue": ""
|
||||
}
|
||||
],
|
||||
"stateTypes": [
|
||||
{
|
||||
"id": "6735b5eb-091b-4cad-aaa4-33ff76690e68",
|
||||
"name": "connected",
|
||||
"displayName": "Connected",
|
||||
"displayNameEvent": "Connected changed",
|
||||
"type": "bool",
|
||||
"defaultValue": false,
|
||||
"cached": false
|
||||
},
|
||||
{
|
||||
"id": "5b2f7c3e-6701-447f-9158-53abb5e81395",
|
||||
"name": "power",
|
||||
"displayName": "Power",
|
||||
"displayNameEvent": "Power changed",
|
||||
"displayNameAction": "Set power",
|
||||
"type": "bool",
|
||||
"defaultValue": false,
|
||||
"writable": true,
|
||||
"ioType": "digitalOutput"
|
||||
},
|
||||
{
|
||||
"id": "e2eba44d-73f9-43bc-97a3-ac4ff347b02c",
|
||||
"name": "brightness",
|
||||
"displayName": "Brightness",
|
||||
"displayNameEvent": "Brightness changed",
|
||||
"displayNameAction": "Set brightness",
|
||||
"type": "int",
|
||||
"minValue": 0,
|
||||
"maxValue": 100,
|
||||
"unit": "Percentage",
|
||||
"defaultValue": "0",
|
||||
"writable": true
|
||||
},
|
||||
{
|
||||
"id": "7ccf9dc3-6b3f-4793-b0d5-3c97afb34cf0",
|
||||
"name": "color",
|
||||
"displayName": "Color",
|
||||
"displayNameEvent": "Color changed",
|
||||
"displayNameAction": "Set color",
|
||||
"type": "QColor",
|
||||
"defaultValue": "white",
|
||||
"writable": true
|
||||
},
|
||||
{
|
||||
"id": "8a07b6ca-3cb1-43f1-9b49-405349c2f146",
|
||||
"name": "colorTemperature",
|
||||
"displayName": "Color temperature",
|
||||
"displayNameEvent": "Color temperature changed",
|
||||
"displayNameAction": "Set color temperature",
|
||||
"type": "int",
|
||||
"minValue": 0,
|
||||
"maxValue": 100,
|
||||
"defaultValue": "50",
|
||||
"writable": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@ -4,33 +4,33 @@
|
||||
<context>
|
||||
<name>IntegrationPluginTuya</name>
|
||||
<message>
|
||||
<location filename="../integrationplugintuya.cpp" line="93"/>
|
||||
<location filename="../integrationplugintuya.cpp" line="113"/>
|
||||
<source>Error authenticating to Tuya thing.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationplugintuya.cpp" line="136"/>
|
||||
<location filename="../integrationplugintuya.cpp" line="176"/>
|
||||
<source>Please enter username and password for your Tuya (Smart Life) account.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationplugintuya.cpp" line="164"/>
|
||||
<location filename="../integrationplugintuya.cpp" line="172"/>
|
||||
<location filename="../integrationplugintuya.cpp" line="204"/>
|
||||
<location filename="../integrationplugintuya.cpp" line="212"/>
|
||||
<source>Error communicating with Tuya server.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationplugintuya.cpp" line="183"/>
|
||||
<location filename="../integrationplugintuya.cpp" line="223"/>
|
||||
<source>Wrong username or password.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationplugintuya.cpp" line="440"/>
|
||||
<location filename="../integrationplugintuya.cpp" line="626"/>
|
||||
<source>Error connecting to Tuya switch.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationplugintuya.cpp" line="449"/>
|
||||
<location filename="../integrationplugintuya.cpp" line="635"/>
|
||||
<source>Received an unexpected reply from the Tuya switch.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@ -38,20 +38,80 @@
|
||||
<context>
|
||||
<name>tuya</name>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="50"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="80"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="83"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="86"/>
|
||||
<source>Brightness</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: tuyaLight, ActionType: brightness, ID: {e2eba44d-73f9-43bc-97a3-ac4ff347b02c})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: tuyaLight, EventType: brightness, ID: {e2eba44d-73f9-43bc-97a3-ac4ff347b02c})
|
||||
----------
|
||||
The name of the StateType ({e2eba44d-73f9-43bc-97a3-ac4ff347b02c}) of ThingClass tuyaLight</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="89"/>
|
||||
<source>Brightness changed</source>
|
||||
<extracomment>The name of the EventType ({e2eba44d-73f9-43bc-97a3-ac4ff347b02c}) of ThingClass tuyaLight</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="92"/>
|
||||
<source>Close blinds</source>
|
||||
<extracomment>The name of the ActionType ({f266ea4a-052f-466b-bf31-8c5c7e80a843}) of ThingClass tuyaClosable</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="53"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="56"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="59"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="62"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="65"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="68"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="95"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="98"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="101"/>
|
||||
<source>Color</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: tuyaLight, ActionType: color, ID: {7ccf9dc3-6b3f-4793-b0d5-3c97afb34cf0})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: tuyaLight, EventType: color, ID: {7ccf9dc3-6b3f-4793-b0d5-3c97afb34cf0})
|
||||
----------
|
||||
The name of the StateType ({7ccf9dc3-6b3f-4793-b0d5-3c97afb34cf0}) of ThingClass tuyaLight</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="104"/>
|
||||
<source>Color changed</source>
|
||||
<extracomment>The name of the EventType ({7ccf9dc3-6b3f-4793-b0d5-3c97afb34cf0}) of ThingClass tuyaLight</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="107"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="110"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="113"/>
|
||||
<source>Color temperature</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: tuyaLight, ActionType: colorTemperature, ID: {8a07b6ca-3cb1-43f1-9b49-405349c2f146})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: tuyaLight, EventType: colorTemperature, ID: {8a07b6ca-3cb1-43f1-9b49-405349c2f146})
|
||||
----------
|
||||
The name of the StateType ({8a07b6ca-3cb1-43f1-9b49-405349c2f146}) of ThingClass tuyaLight</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="116"/>
|
||||
<source>Color temperature changed</source>
|
||||
<extracomment>The name of the EventType ({8a07b6ca-3cb1-43f1-9b49-405349c2f146}) of ThingClass tuyaLight</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="119"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="122"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="125"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="128"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="131"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="134"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="137"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="140"/>
|
||||
<source>Connected</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: tuyaClosable, EventType: connected, ID: {cf051676-3041-4e90-8c37-63e98412dfe8})
|
||||
<extracomment>The name of the ParamType (ThingClass: tuyaLight, EventType: connected, ID: {6735b5eb-091b-4cad-aaa4-33ff76690e68})
|
||||
----------
|
||||
The name of the StateType ({6735b5eb-091b-4cad-aaa4-33ff76690e68}) of ThingClass tuyaLight
|
||||
----------
|
||||
The name of the ParamType (ThingClass: tuyaClosable, EventType: connected, ID: {cf051676-3041-4e90-8c37-63e98412dfe8})
|
||||
----------
|
||||
The name of the StateType ({cf051676-3041-4e90-8c37-63e98412dfe8}) of ThingClass tuyaClosable
|
||||
----------
|
||||
@ -65,11 +125,14 @@ The name of the StateType ({c844a23a-301b-4e6c-ba18-2926a38e6bf5}) of ThingClass
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="71"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="74"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="77"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="143"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="146"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="149"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="152"/>
|
||||
<source>Connected changed</source>
|
||||
<extracomment>The name of the EventType ({cf051676-3041-4e90-8c37-63e98412dfe8}) of ThingClass tuyaClosable
|
||||
<extracomment>The name of the EventType ({6735b5eb-091b-4cad-aaa4-33ff76690e68}) of ThingClass tuyaLight
|
||||
----------
|
||||
The name of the EventType ({cf051676-3041-4e90-8c37-63e98412dfe8}) of ThingClass tuyaClosable
|
||||
----------
|
||||
The name of the EventType ({b5ac83c4-e1ff-4682-80f2-61cca097ed8f}) of ThingClass tuyaSwitch
|
||||
----------
|
||||
@ -77,17 +140,20 @@ The name of the EventType ({c844a23a-301b-4e6c-ba18-2926a38e6bf5}) of ThingClass
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="80"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="83"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="155"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="158"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="161"/>
|
||||
<source>ID</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: tuyaClosable, Type: thing, ID: {b9b2bb1f-b44b-43d7-8bbb-e67cf1b5d0a0})
|
||||
<extracomment>The name of the ParamType (ThingClass: tuyaLight, Type: thing, ID: {7fda1e07-6e80-465a-8322-872d8ab42583})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: tuyaClosable, Type: thing, ID: {b9b2bb1f-b44b-43d7-8bbb-e67cf1b5d0a0})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: tuyaSwitch, Type: thing, ID: {bfdb02b0-d12d-4385-a03d-d2c147c2aca2})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="86"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="89"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="164"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="167"/>
|
||||
<source>Logged in</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: tuyaCloud, EventType: loggedIn, ID: {33e9d30c-c988-4cd4-8d39-ce84bcfa79c5})
|
||||
----------
|
||||
@ -95,23 +161,32 @@ The name of the StateType ({33e9d30c-c988-4cd4-8d39-ce84bcfa79c5}) of ThingClass
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="92"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="170"/>
|
||||
<source>Logged in changed</source>
|
||||
<extracomment>The name of the EventType ({33e9d30c-c988-4cd4-8d39-ce84bcfa79c5}) of ThingClass tuyaCloud</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="95"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="173"/>
|
||||
<source>Open blinds</source>
|
||||
<extracomment>The name of the ActionType ({f9f34515-670d-439e-851a-0bf82f867882}) of ThingClass tuyaClosable</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="98"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="101"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="104"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="176"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="179"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="182"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="185"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="188"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="191"/>
|
||||
<source>Power</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: tuyaSwitch, ActionType: power, ID: {c84a703a-d1c7-491d-9507-5a69b217ac53})
|
||||
<extracomment>The name of the ParamType (ThingClass: tuyaLight, ActionType: power, ID: {5b2f7c3e-6701-447f-9158-53abb5e81395})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: tuyaLight, EventType: power, ID: {5b2f7c3e-6701-447f-9158-53abb5e81395})
|
||||
----------
|
||||
The name of the StateType ({5b2f7c3e-6701-447f-9158-53abb5e81395}) of ThingClass tuyaLight
|
||||
----------
|
||||
The name of the ParamType (ThingClass: tuyaSwitch, ActionType: power, ID: {c84a703a-d1c7-491d-9507-5a69b217ac53})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: tuyaSwitch, EventType: power, ID: {c84a703a-d1c7-491d-9507-5a69b217ac53})
|
||||
----------
|
||||
@ -119,26 +194,50 @@ The name of the StateType ({c84a703a-d1c7-491d-9507-5a69b217ac53}) of ThingClass
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="107"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="194"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="197"/>
|
||||
<source>Power changed</source>
|
||||
<extracomment>The name of the EventType ({c84a703a-d1c7-491d-9507-5a69b217ac53}) of ThingClass tuyaSwitch</extracomment>
|
||||
<extracomment>The name of the EventType ({5b2f7c3e-6701-447f-9158-53abb5e81395}) of ThingClass tuyaLight
|
||||
----------
|
||||
The name of the EventType ({c84a703a-d1c7-491d-9507-5a69b217ac53}) of ThingClass tuyaSwitch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="110"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="200"/>
|
||||
<source>Set brightness</source>
|
||||
<extracomment>The name of the ActionType ({e2eba44d-73f9-43bc-97a3-ac4ff347b02c}) of ThingClass tuyaLight</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="203"/>
|
||||
<source>Set color</source>
|
||||
<extracomment>The name of the ActionType ({7ccf9dc3-6b3f-4793-b0d5-3c97afb34cf0}) of ThingClass tuyaLight</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="206"/>
|
||||
<source>Set color temperature</source>
|
||||
<extracomment>The name of the ActionType ({8a07b6ca-3cb1-43f1-9b49-405349c2f146}) of ThingClass tuyaLight</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="209"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="212"/>
|
||||
<source>Set power</source>
|
||||
<extracomment>The name of the ActionType ({c84a703a-d1c7-491d-9507-5a69b217ac53}) of ThingClass tuyaSwitch</extracomment>
|
||||
<extracomment>The name of the ActionType ({5b2f7c3e-6701-447f-9158-53abb5e81395}) of ThingClass tuyaLight
|
||||
----------
|
||||
The name of the ActionType ({c84a703a-d1c7-491d-9507-5a69b217ac53}) of ThingClass tuyaSwitch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="113"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="215"/>
|
||||
<source>Stop</source>
|
||||
<extracomment>The name of the ActionType ({8fc2ea7d-b945-41c8-bbda-820bdadc9e02}) of ThingClass tuyaClosable</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="116"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="119"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="218"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="221"/>
|
||||
<source>Tuya</source>
|
||||
<extracomment>The name of the vendor ({d5dd33a7-e5f6-48be-bdd9-1a1ec04152c9})
|
||||
----------
|
||||
@ -146,32 +245,38 @@ The name of the plugin tuya ({405643b3-22ec-4a36-9808-e8b1405b01c9})</extracomme
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="122"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="224"/>
|
||||
<source>Tuya blinds</source>
|
||||
<extracomment>The name of the ThingClass ({d4bb0170-596d-4904-8fd0-fd8e7ad39f72})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="125"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="227"/>
|
||||
<source>Tuya cloud login</source>
|
||||
<extracomment>The name of the ThingClass ({dd6dcd91-f667-45a5-9594-12b95f94337e})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="128"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="230"/>
|
||||
<source>Tuya color light</source>
|
||||
<extracomment>The name of the ThingClass ({6aaa67b5-b1ef-41e8-af72-0915e529b3c9})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="233"/>
|
||||
<source>Tuya switch</source>
|
||||
<extracomment>The name of the ThingClass ({393d7256-e792-4dca-adb5-b13750e05391})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="131"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="236"/>
|
||||
<source>User changed</source>
|
||||
<extracomment>The name of the EventType ({15bc38a7-0962-4f3b-a0b1-4f164958493b}) of ThingClass tuyaCloud</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="134"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="137"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="239"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tuya/plugininfo.h" line="242"/>
|
||||
<source>Username</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: tuyaCloud, EventType: userDisplayName, ID: {15bc38a7-0962-4f3b-a0b1-4f164958493b})
|
||||
----------
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user