Merge PR #385: TP-Link: Add support for TP-Link Kasa Power Strip HS300
commit
f49b2fb230
|
|
@ -7,6 +7,7 @@ This plugin adds support for the following tp-link Kasa devices to nymea.
|
|||
* HS105 Kasa Smart Wi-Fi Plug Mini
|
||||
* HS110 Kasa Smart Wi-Fi Plug With Energy Monitoring
|
||||
* HS200 Kasa Smart Wi-Fi Light Switch
|
||||
* HS300 Kasa Smart Wi-Fi Power Strip
|
||||
* KP100 Kasa Smart Wi-Fi Plug Slim Edition
|
||||
|
||||
In order to use such a device, it must be connected to the same network as nymea. The Kasa app is required
|
||||
|
|
|
|||
|
|
@ -39,33 +39,62 @@
|
|||
#include <QTimer>
|
||||
#include <QDataStream>
|
||||
|
||||
// https://github.com/softScheck/tplink-smartplug/blob/master/tplink-smarthome-commands.txt
|
||||
// Related projects:
|
||||
|
||||
// Local api:
|
||||
// https://github.com/plasticrake/tplink-smarthome-api/
|
||||
// https://github.com/softScheck/tplink-smartplug
|
||||
|
||||
// Cloud api:
|
||||
// https://github.com/piekstra/tplink-cloud-api/
|
||||
|
||||
QHash<ThingClassId, ParamTypeId> idParamTypesMap = {
|
||||
{kasaPlug100ThingClassId, kasaPlug100ThingIdParamTypeId},
|
||||
{kasaPlug110ThingClassId, kasaPlug110ThingIdParamTypeId},
|
||||
{kasaSwitch200ThingClassId, kasaSwitch200ThingIdParamTypeId},
|
||||
{kasaPowerStrip300ThingClassId, kasaPowerStrip300ThingIdParamTypeId},
|
||||
};
|
||||
|
||||
QHash<ThingClassId, StateTypeId> connectedStateTypesMap = {
|
||||
{kasaPlug100ThingClassId, kasaPlug100ConnectedStateTypeId},
|
||||
{kasaPlug110ThingClassId, kasaPlug110ConnectedStateTypeId},
|
||||
{kasaSwitch200ThingClassId, kasaSwitch200ConnectedStateTypeId},
|
||||
{kasaPowerStrip300ThingClassId, kasaPowerStrip300ConnectedStateTypeId},
|
||||
};
|
||||
|
||||
|
||||
QHash<ThingClassId, StateTypeId> signalStrengthStateTypesMap = {
|
||||
{kasaPlug100ThingClassId, kasaPlug100SignalStrengthStateTypeId},
|
||||
{kasaPlug110ThingClassId, kasaPlug110SignalStrengthStateTypeId},
|
||||
{kasaSwitch200ThingClassId, kasaSwitch200SignalStrengthStateTypeId},
|
||||
{kasaPowerStrip300ThingClassId, kasaPowerStrip300SignalStrengthStateTypeId},
|
||||
};
|
||||
|
||||
QHash<ThingClassId, StateTypeId> powerStateTypesMap = {
|
||||
{kasaPlug100ThingClassId, kasaPlug100PowerStateTypeId},
|
||||
{kasaPlug110ThingClassId, kasaPlug110PowerStateTypeId},
|
||||
{kasaSwitch200ThingClassId, kasaSwitch200PowerStateTypeId},
|
||||
};
|
||||
|
||||
QHash<ThingClassId, StateTypeId> currentPowerStatetTypesMap = {
|
||||
{kasaPlug110ThingClassId, kasaPlug110CurrentPowerStateTypeId},
|
||||
{kasaPowerStrip300ThingClassId, kasaPowerStrip300CurrentPowerStateTypeId},
|
||||
};
|
||||
|
||||
QHash<ThingClassId, StateTypeId> totalEnergyConsumedStatetTypesMap = {
|
||||
{kasaPlug110ThingClassId, kasaPlug110TotalEnergyConsumedStateTypeId},
|
||||
{kasaPowerStrip300ThingClassId, kasaPowerStrip300TotalEnergyConsumedStateTypeId},
|
||||
};
|
||||
|
||||
QHash<ThingClassId, StateTypeId> powerActionParamTypesMap = {
|
||||
{kasaPlug100ThingClassId, kasaPlug100PowerActionPowerParamTypeId},
|
||||
{kasaPlug110ThingClassId, kasaPlug110PowerActionPowerParamTypeId},
|
||||
{kasaSwitch200ThingClassId, kasaSwitch200PowerActionPowerParamTypeId},
|
||||
};
|
||||
|
||||
|
||||
IntegrationPluginTPLink::IntegrationPluginTPLink()
|
||||
{
|
||||
m_idParamTypesMap[kasaPlug100ThingClassId] = kasaPlug100ThingIdParamTypeId;
|
||||
m_idParamTypesMap[kasaPlug110ThingClassId] = kasaPlug110ThingIdParamTypeId;
|
||||
m_idParamTypesMap[kasaSwitch200ThingClassId] = kasaSwitch200ThingIdParamTypeId;
|
||||
|
||||
m_connectedStateTypesMap[kasaPlug100ThingClassId] = kasaPlug100ConnectedStateTypeId;
|
||||
m_connectedStateTypesMap[kasaPlug110ThingClassId] = kasaPlug110ConnectedStateTypeId;
|
||||
m_connectedStateTypesMap[kasaSwitch200ThingClassId] = kasaSwitch200ConnectedStateTypeId;
|
||||
|
||||
m_signalStrengthStateTypesMap[kasaPlug100ThingClassId] = kasaPlug100SignalStrengthStateTypeId;
|
||||
m_signalStrengthStateTypesMap[kasaPlug110ThingClassId] = kasaPlug110SignalStrengthStateTypeId;
|
||||
m_signalStrengthStateTypesMap[kasaSwitch200ThingClassId] = kasaSwitch200SignalStrengthStateTypeId;
|
||||
|
||||
m_powerStatetTypesMap[kasaPlug100ThingClassId] = kasaPlug100PowerStateTypeId;
|
||||
m_powerStatetTypesMap[kasaPlug110ThingClassId] = kasaPlug110PowerStateTypeId;
|
||||
m_powerStatetTypesMap[kasaSwitch200ThingClassId] = kasaSwitch200PowerStateTypeId;
|
||||
|
||||
m_currentPowerStatetTypesMap[kasaPlug110ThingClassId] = kasaPlug110CurrentPowerStateTypeId;
|
||||
|
||||
m_totalEnergyConsumedStatetTypesMap[kasaPlug110ThingClassId] = kasaPlug110TotalEnergyConsumedStateTypeId;
|
||||
|
||||
m_powerActionParamTypesMap[kasaPlug100ThingClassId] = kasaPlug100PowerActionPowerParamTypeId;
|
||||
m_powerActionParamTypesMap[kasaPlug110ThingClassId] = kasaPlug110PowerActionPowerParamTypeId;
|
||||
m_powerActionParamTypesMap[kasaSwitch200ThingClassId] = kasaSwitch200PowerActionPowerParamTypeId;
|
||||
}
|
||||
|
||||
IntegrationPluginTPLink::~IntegrationPluginTPLink()
|
||||
|
|
@ -95,9 +124,9 @@ void IntegrationPluginTPLink::discoverThings(ThingDiscoveryInfo *info)
|
|||
|
||||
QTimer::singleShot(2000, info, [this, info](){
|
||||
while(m_broadcastSocket->hasPendingDatagrams()) {
|
||||
char buffer[1024];
|
||||
char buffer[4096];
|
||||
QHostAddress senderAddress;
|
||||
qint64 len = m_broadcastSocket->readDatagram(buffer, 1024, &senderAddress);
|
||||
qint64 len = m_broadcastSocket->readDatagram(buffer, 4096, &senderAddress);
|
||||
QByteArray data = decryptPayload(QByteArray::fromRawData(buffer, len));
|
||||
QJsonParseError error;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &error);
|
||||
|
|
@ -117,18 +146,31 @@ void IntegrationPluginTPLink::discoverThings(ThingDiscoveryInfo *info)
|
|||
modelFilter = QRegExp("HS110.*");
|
||||
} else if (info->thingClassId() == kasaSwitch200ThingClassId) {
|
||||
modelFilter = QRegExp("HS200.*");
|
||||
} else if (info->thingClassId() == kasaPowerStrip300ThingClassId) {
|
||||
modelFilter = QRegExp("HS300.*");
|
||||
}
|
||||
QString model = sysInfo.value("model").toString();
|
||||
|
||||
if (modelFilter.exactMatch(model)) {
|
||||
ThingDescriptor descriptor(info->thingClassId(), sysInfo.value("alias").toString(), sysInfo.value("dev_name").toString());
|
||||
Param idParam = Param(m_idParamTypesMap.value(info->thingClassId()), sysInfo.value("deviceId").toString());
|
||||
Param idParam = Param(idParamTypesMap.value(info->thingClassId()), sysInfo.value("deviceId").toString());
|
||||
descriptor.setParams(ParamList() << idParam);
|
||||
Thing *existingThing = myThings().findByParams(ParamList() << idParam);
|
||||
if (existingThing) {
|
||||
descriptor.setThingId(existingThing->id());
|
||||
}
|
||||
info->addThingDescriptor(descriptor);
|
||||
|
||||
// Sometimes kasa devices reply multiple times on the discovery call. Prevent duplicates in the search results.
|
||||
bool found = false;
|
||||
foreach (const ThingDescriptor &existingDescriptor, info->thingDescriptors()) {
|
||||
if (existingDescriptor.params().paramValue(idParamTypesMap.value(info->thingClassId())) == idParam.value()) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
info->addThingDescriptor(descriptor);
|
||||
}
|
||||
} else {
|
||||
qCWarning(dcTplink()) << "Ignoring not matching device type:\n" << qUtf8Printable(jsonDoc.toJson(QJsonDocument::Indented));
|
||||
}
|
||||
|
|
@ -140,6 +182,12 @@ void IntegrationPluginTPLink::discoverThings(ThingDiscoveryInfo *info)
|
|||
|
||||
void IntegrationPluginTPLink::setupThing(ThingSetupInfo *info)
|
||||
{
|
||||
if (info->thing()->thingClassId() == kasaSocketThingClassId) {
|
||||
qCDebug(dcTplink()) << "Setup thing for child socket:" << info->thing()->paramValue(kasaSocketThingIdParamTypeId).toString();
|
||||
info->finish(Thing::ThingErrorNoError);
|
||||
return;
|
||||
}
|
||||
|
||||
QVariantMap map;
|
||||
QVariantMap getSysInfo;
|
||||
getSysInfo.insert("get_sysinfo", QVariant());
|
||||
|
|
@ -159,9 +207,9 @@ void IntegrationPluginTPLink::setupThing(ThingSetupInfo *info)
|
|||
QTimer::singleShot(2000, info, [this, info](){
|
||||
|
||||
while(m_broadcastSocket->hasPendingDatagrams()) {
|
||||
char buffer[1024];
|
||||
char buffer[4096];
|
||||
QHostAddress senderAddress;
|
||||
qint64 len = m_broadcastSocket->readDatagram(buffer, 1024, &senderAddress);
|
||||
qint64 len = m_broadcastSocket->readDatagram(buffer, 4096, &senderAddress);
|
||||
QByteArray data = decryptPayload(QByteArray::fromRawData(buffer, len));
|
||||
QJsonParseError error;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &error);
|
||||
|
|
@ -171,13 +219,33 @@ void IntegrationPluginTPLink::setupThing(ThingSetupInfo *info)
|
|||
}
|
||||
QVariantMap properties = jsonDoc.toVariant().toMap();
|
||||
QVariantMap sysInfo = properties.value("system").toMap().value("get_sysinfo").toMap();
|
||||
if (info->thing()->paramValue(m_idParamTypesMap.value(info->thing()->thingClassId())).toString() == sysInfo.value("deviceId").toString()) {
|
||||
if (info->thing()->paramValue(idParamTypesMap.value(info->thing()->thingClassId())).toString() == sysInfo.value("deviceId").toString()) {
|
||||
qCDebug(dcTplink()) << "Found thing at" << senderAddress;
|
||||
|
||||
// We need to finish the setup before we can generate childs for this thing
|
||||
info->finish(Thing::ThingErrorNoError);
|
||||
m_setupRetries.remove(info);
|
||||
|
||||
// Set up child sockets if needed (currently only the HS300)
|
||||
QVariantList children = sysInfo.value("children").toList();
|
||||
if (children.count() > 0 && myThings().filterByParentId(info->thing()->id()).isEmpty()) {
|
||||
ThingDescriptors descriptors;
|
||||
foreach (const QVariant &childVariant, children) {
|
||||
QVariantMap childMap = childVariant.toMap();
|
||||
ThingDescriptor descriptor(kasaSocketThingClassId, childMap.value("alias").toString(), QString(), info->thing()->id());
|
||||
|
||||
QString devId = QString("%1%2")
|
||||
.arg(info->thing()->paramValue(idParamTypesMap.value(info->thing()->thingClassId())).toString())
|
||||
.arg(childMap.value("id").toString());
|
||||
descriptor.setParams(ParamList() << Param(kasaSocketThingIdParamTypeId, devId));
|
||||
qCDebug(dcTplink()) << "Creating child socket for" << info->thing()->name() << "with ID" << devId;
|
||||
descriptors.append(descriptor);
|
||||
}
|
||||
emit autoThingsAppeared(descriptors);
|
||||
}
|
||||
|
||||
connectToDevice(info->thing(), senderAddress);
|
||||
|
||||
info->finish(Thing::ThingErrorNoError);
|
||||
m_setupRetries.remove(info);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
@ -195,6 +263,7 @@ void IntegrationPluginTPLink::setupThing(ThingSetupInfo *info)
|
|||
|
||||
void IntegrationPluginTPLink::postSetupThing(Thing *thing)
|
||||
{
|
||||
qCDebug(dcTplink()) << "Post setup thing" << thing->name();
|
||||
connect(thing, &Thing::nameChanged, this, [this, thing](){
|
||||
QVariantMap map;
|
||||
QVariantMap systemMap;
|
||||
|
|
@ -221,12 +290,18 @@ void IntegrationPluginTPLink::postSetupThing(Thing *thing)
|
|||
m_timer = hardwareManager()->pluginTimerManager()->registerTimer(1);
|
||||
connect(m_timer, &PluginTimer::timeout, this, [this](){
|
||||
foreach (Thing *d, myThings()) {
|
||||
if (!m_pendingJobs.contains(d) && m_jobQueue[d].isEmpty()) {
|
||||
if (d->parentId().isNull() && !m_pendingJobs.contains(d) && m_jobQueue[d].isEmpty()) {
|
||||
fetchState(d);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Update connected state in case the parent connected before we've completed the child setups
|
||||
if (thing->thingClassId() == kasaSocketThingClassId) {
|
||||
Thing *parent = myThings().findById(thing->parentId());
|
||||
thing->setStateValue(kasaSocketConnectedStateTypeId, parent->stateValue(connectedStateTypesMap.value(parent->thingClassId())));
|
||||
}
|
||||
}
|
||||
|
||||
void IntegrationPluginTPLink::thingRemoved(Thing *thing)
|
||||
|
|
@ -244,14 +319,23 @@ void IntegrationPluginTPLink::thingRemoved(Thing *thing)
|
|||
|
||||
void IntegrationPluginTPLink::executeAction(ThingActionInfo *info)
|
||||
{
|
||||
QVariantMap map;
|
||||
QVariantMap systemMap;
|
||||
// The actual thing to send the command to (either directly a physical thing or in case of a virtual socket the parent thing)
|
||||
Thing *targetThing = info->thing()->parentId().isNull() ? info->thing() : myThings().findById(info->thing()->parentId());
|
||||
|
||||
QVariantMap powerMap;
|
||||
ParamTypeId powerActionParamTypeId = m_powerActionParamTypesMap.value(info->thing()->thingClassId());
|
||||
powerMap.insert("state", info->action().param(powerActionParamTypeId).value().toBool() ? 1 : 0);
|
||||
powerMap.insert("state", info->action().param(info->action().actionTypeId()).value().toBool() ? 1 : 0);
|
||||
QVariantMap systemMap;
|
||||
systemMap.insert("set_relay_state", powerMap);
|
||||
QVariantMap map;
|
||||
map.insert("system", systemMap);
|
||||
|
||||
// If we're switching a virtual child, we need to add a context map for the child_ids
|
||||
if (info->thing()->thingClassId() == kasaSocketThingClassId) {
|
||||
QVariantMap contextMap;
|
||||
contextMap.insert("child_ids", QVariantList() << info->thing()->paramValue(kasaSocketThingIdParamTypeId).toString());
|
||||
map.insert("context", contextMap);
|
||||
}
|
||||
|
||||
qCDebug(dcTplink()) << "Executing action" << qUtf8Printable(QJsonDocument::fromVariant(map).toJson(QJsonDocument::Compact));
|
||||
|
||||
QByteArray payload = encryptPayload(QJsonDocument::fromVariant(map).toJson(QJsonDocument::Compact));
|
||||
|
|
@ -264,15 +348,15 @@ void IntegrationPluginTPLink::executeAction(ThingActionInfo *info)
|
|||
job.id = m_jobIdx++;
|
||||
job.data = data;
|
||||
job.actionInfo = info;
|
||||
m_jobQueue[info->thing()].append(job);
|
||||
m_jobQueue[targetThing].append(job);
|
||||
connect(info, &ThingActionInfo::aborted, this, [=](){
|
||||
m_jobQueue[info->thing()].removeAll(job);
|
||||
m_jobQueue[targetThing].removeAll(job);
|
||||
});
|
||||
|
||||
// Directly queue up fetchState
|
||||
fetchState(info->thing(), info);
|
||||
fetchState(targetThing);
|
||||
|
||||
processQueue(info->thing());
|
||||
processQueue(targetThing);
|
||||
}
|
||||
|
||||
QByteArray IntegrationPluginTPLink::encryptPayload(const QByteArray &payload)
|
||||
|
|
@ -311,9 +395,16 @@ void IntegrationPluginTPLink::connectToDevice(Thing *thing, const QHostAddress &
|
|||
m_sockets.insert(thing, socket);
|
||||
|
||||
connect(socket, &QTcpSocket::connected, thing, [this, thing, address] () {
|
||||
qCDebug(dcTplink()) << "Connected to device" << address;
|
||||
StateTypeId connectedStateTypeId = m_connectedStateTypesMap.value(thing->thingClassId());
|
||||
qCDebug(dcTplink()) << "Connected to device" << thing->name() << "at address:" << address;
|
||||
StateTypeId connectedStateTypeId = connectedStateTypesMap.value(thing->thingClassId());
|
||||
thing->setStateValue(connectedStateTypeId, true);
|
||||
|
||||
qCDebug(dcTplink()) << "Has childs:" << myThings().count();
|
||||
foreach (Thing *child, myThings().filterByParentId(thing->id())) {
|
||||
qCDebug(dcTplink()) << "Setting child online:" << child->paramValue(kasaSocketThingIdParamTypeId);
|
||||
child->setStateValue(kasaSocketConnectedStateTypeId, true);
|
||||
}
|
||||
|
||||
fetchState(thing);
|
||||
});
|
||||
|
||||
|
|
@ -343,6 +434,7 @@ void IntegrationPluginTPLink::connectToDevice(Thing *thing, const QHostAddress &
|
|||
processQueue(thing);
|
||||
return;
|
||||
}
|
||||
|
||||
Job job = m_pendingJobs.take(thing);
|
||||
|
||||
QJsonParseError error;
|
||||
|
|
@ -368,21 +460,48 @@ void IntegrationPluginTPLink::connectToDevice(Thing *thing, const QHostAddress &
|
|||
}
|
||||
}
|
||||
if (systemMap.contains("get_sysinfo")) {
|
||||
int relayState = systemMap.value("get_sysinfo").toMap().value("relay_state").toInt();
|
||||
StateTypeId powerStateTypeId = m_powerStatetTypesMap.value(thing->thingClassId());
|
||||
thing->setStateValue(powerStateTypeId, relayState == 1 ? true : false);
|
||||
StateTypeId signalStrengthStateTypeId = m_signalStrengthStateTypesMap.value(thing->thingClassId());
|
||||
StateTypeId signalStrengthStateTypeId = signalStrengthStateTypesMap.value(thing->thingClassId());
|
||||
int rssi = systemMap.value("get_sysinfo").toMap().value("rssi").toInt();
|
||||
int signalStrength = qMax(0, qMin(1000, 2 * (rssi + 100)));
|
||||
int signalStrength = qMax(0, qMin(100, 2 * (rssi + 100)));
|
||||
thing->setStateValue(signalStrengthStateTypeId, signalStrength);
|
||||
|
||||
if (thing->thingClassId() == kasaSocketThingClassId) {
|
||||
foreach (Thing *child, myThings().filterByParentId(kasaSocketThingClassId)) {
|
||||
child->setStateValue(kasaSocketSignalStrengthStateTypeId, signalStrength);
|
||||
}
|
||||
}
|
||||
|
||||
QString alias = systemMap.value("get_sysinfo").toMap().value("alias").toString();
|
||||
if (thing->name() != alias) {
|
||||
thing->setName(alias);
|
||||
}
|
||||
|
||||
if (systemMap.value("get_sysinfo").toMap().contains("relay_state")) {
|
||||
int relayState = systemMap.value("get_sysinfo").toMap().value("relay_state").toInt();
|
||||
StateTypeId powerStateTypeId = powerStateTypesMap.value(thing->thingClassId());
|
||||
thing->setStateValue(powerStateTypeId, relayState == 1 ? true : false);
|
||||
|
||||
} else if (systemMap.value("get_sysinfo").toMap().contains("children")) {
|
||||
// For now, only the HS300 has children, which we map to child things of type kasaSocket
|
||||
QVariantList children = systemMap.value("get_sysinfo").toMap().value("children").toList();
|
||||
foreach (const QVariant &childVariant, children) {
|
||||
QVariantMap childMap = childVariant.toMap();
|
||||
QString idParam = childMap.value("id").toString();
|
||||
bool relayState = childMap.value("state").toInt() == 1;
|
||||
Things things = myThings().filterByParentId(thing->id()).filterByParam(kasaSocketThingIdParamTypeId, idParam);
|
||||
if (things.count() == 1) {
|
||||
things.first()->setStateValue(kasaSocketPowerStateTypeId, relayState);
|
||||
} else {
|
||||
qCWarning(dcTplink()) << "Error matching child devices" << qUtf8Printable(jsonDoc.toJson());
|
||||
foreach (Thing *child, myThings().filterByParentId(thing->id())) {
|
||||
qCDebug(dcTplink()) << "Existing child device:" << child->name() << child->params();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (job.actionInfo) {
|
||||
qCDebug(dcTplink()) << "Finishing action execution";
|
||||
job.actionInfo->finish(Thing::ThingErrorNoError);
|
||||
}
|
||||
}
|
||||
|
|
@ -391,13 +510,13 @@ void IntegrationPluginTPLink::connectToDevice(Thing *thing, const QHostAddress &
|
|||
QVariantMap emeterMap = map.value("emeter").toMap();
|
||||
if (emeterMap.contains("get_realtime")) {
|
||||
// This has quite a bit of jitter... Let's smoothen it while within +/- 0.1W to produce less events in the system
|
||||
StateTypeId currentPowerStateTypeId = m_currentPowerStatetTypesMap.value(thing->thingClassId());
|
||||
StateTypeId currentPowerStateTypeId = currentPowerStatetTypesMap.value(thing->thingClassId());
|
||||
double oldValue = thing->stateValue(currentPowerStateTypeId).toDouble();
|
||||
double newValue = emeterMap.value("get_realtime").toMap().value("power_mw").toDouble() / 1000;
|
||||
if (qAbs(oldValue - newValue) > 0.1) {
|
||||
thing->setStateValue(currentPowerStateTypeId, newValue);
|
||||
}
|
||||
StateTypeId totalEnergyConsumedStateTypeId = m_totalEnergyConsumedStatetTypesMap.value(thing->thingClassId());
|
||||
StateTypeId totalEnergyConsumedStateTypeId = totalEnergyConsumedStatetTypesMap.value(thing->thingClassId());
|
||||
thing->setStateValue(totalEnergyConsumedStateTypeId, emeterMap.value("get_realtime").toMap().value("total_wh").toDouble() / 1000);
|
||||
}
|
||||
}
|
||||
|
|
@ -406,16 +525,23 @@ void IntegrationPluginTPLink::connectToDevice(Thing *thing, const QHostAddress &
|
|||
}
|
||||
});
|
||||
|
||||
connect(socket, &QTcpSocket::disconnected, thing, [this, thing, address](){
|
||||
qCDebug(dcTplink()) << "Device disconnected";
|
||||
m_sockets.take(thing)->deleteLater();
|
||||
if (m_pendingJobs.contains(thing)) {
|
||||
// Putting active job back to queue
|
||||
m_jobQueue[thing].prepend(m_pendingJobs.take(thing));
|
||||
connect(socket, &QTcpSocket::stateChanged, thing, [this, thing, address](QAbstractSocket::SocketState newState){
|
||||
if (newState == QAbstractSocket::UnconnectedState) {
|
||||
qCDebug(dcTplink()) << "Device disconnected";
|
||||
m_sockets.take(thing)->deleteLater();
|
||||
if (m_pendingJobs.contains(thing)) {
|
||||
// Putting active job back to queue
|
||||
m_jobQueue[thing].prepend(m_pendingJobs.take(thing));
|
||||
}
|
||||
StateTypeId connectedStateTypeId = connectedStateTypesMap.value(thing->thingClassId());
|
||||
thing->setStateValue(connectedStateTypeId, false);
|
||||
|
||||
foreach (Thing *child, myThings().filterByParentId(thing->id())) {
|
||||
child->setStateValue(kasaSocketConnectedStateTypeId, false);
|
||||
}
|
||||
|
||||
QTimer::singleShot(500, thing, [this, thing, address]() {connectToDevice(thing, address);});
|
||||
}
|
||||
StateTypeId connectedStateTypeId = m_connectedStateTypesMap.value(thing->thingClassId());
|
||||
thing->setStateValue(connectedStateTypeId, false);
|
||||
QTimer::singleShot(500, thing, [this, thing, address]() {connectToDevice(thing, address);});
|
||||
});
|
||||
|
||||
socket->connectToHost(address.toString(), 9999, QIODevice::ReadWrite);
|
||||
|
|
@ -423,11 +549,6 @@ void IntegrationPluginTPLink::connectToDevice(Thing *thing, const QHostAddress &
|
|||
|
||||
void IntegrationPluginTPLink::fetchState(Thing *thing, ThingActionInfo *info)
|
||||
{
|
||||
QTcpSocket *socket = m_sockets.value(thing);
|
||||
if (!socket || !socket->isOpen()) {
|
||||
qCWarning(dcTplink()) << "Cannot fetch state";
|
||||
}
|
||||
|
||||
QVariantMap map;
|
||||
QVariantMap getSysInfo;
|
||||
getSysInfo.insert("get_sysinfo", QVariant());
|
||||
|
|
@ -456,6 +577,7 @@ void IntegrationPluginTPLink::fetchState(Thing *thing, ThingActionInfo *info)
|
|||
void IntegrationPluginTPLink::processQueue(Thing *thing)
|
||||
{
|
||||
if (m_pendingJobs.contains(thing)) {
|
||||
qCDebug(dcTplink()) << "Already processing a message to" << thing->name();
|
||||
// Busy
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -85,14 +85,6 @@ private:
|
|||
QHash<Thing*, QByteArray> m_inputBuffers;
|
||||
|
||||
PluginTimer *m_timer = nullptr;
|
||||
|
||||
QHash<ThingClassId, ParamTypeId> m_idParamTypesMap;
|
||||
QHash<ThingClassId, StateTypeId> m_connectedStateTypesMap;
|
||||
QHash<ThingClassId, StateTypeId> m_signalStrengthStateTypesMap;
|
||||
QHash<ThingClassId, StateTypeId> m_powerStatetTypesMap;
|
||||
QHash<ThingClassId, StateTypeId> m_currentPowerStatetTypesMap;
|
||||
QHash<ThingClassId, StateTypeId> m_totalEnergyConsumedStatetTypesMap;
|
||||
QHash<ThingClassId, ParamTypeId> m_powerActionParamTypesMap;
|
||||
};
|
||||
|
||||
#endif // INTEGRATIONPLUGINANEL_H
|
||||
|
|
|
|||
|
|
@ -172,6 +172,111 @@
|
|||
"writable": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "bbdee989-9431-4187-b135-5030a7a11be2",
|
||||
"name": "kasaPowerStrip300",
|
||||
"displayName": "Kasa Smart Wi-Fi Power Strip (HS300)",
|
||||
"createMethods": ["discovery"],
|
||||
"interfaces": [ "gateway", "extendedsmartmeterconsumer", "wirelessconnectable" ],
|
||||
"paramTypes": [
|
||||
{
|
||||
"id": "62b38ddf-f6d7-44e1-955f-f04b375d960d",
|
||||
"name": "id",
|
||||
"displayName": "ID",
|
||||
"type": "QString",
|
||||
"defaultValue": ""
|
||||
}
|
||||
],
|
||||
"stateTypes": [
|
||||
{
|
||||
"id": "9bcec21d-7207-44c6-8ebf-d2720bb7a63a",
|
||||
"name": "connected",
|
||||
"displayName": "Connected",
|
||||
"displayNameEvent": "Connected changed",
|
||||
"type": "bool",
|
||||
"defaultValue": false,
|
||||
"cached": false
|
||||
},
|
||||
{
|
||||
"id": "1a587f62-8274-4c2e-bdc6-1b0b6368e5f7",
|
||||
"name": "signalStrength",
|
||||
"displayName": "Signal strength",
|
||||
"displayNameEvent": "Signal strength changed",
|
||||
"type": "uint",
|
||||
"unit": "Percentage",
|
||||
"minValue": 0,
|
||||
"maxValue": 100,
|
||||
"defaultValue": 100
|
||||
},
|
||||
{
|
||||
"id": "f2992226-1f36-477f-b053-04dc5dc3a31c",
|
||||
"name": "totalEnergyConsumed",
|
||||
"displayName": "Total energy consumed",
|
||||
"displayNameEvent": "Total energy consumed changed",
|
||||
"type": "double",
|
||||
"unit": "KiloWattHour",
|
||||
"defaultValue": 0
|
||||
},
|
||||
{
|
||||
"id": "f973b4e8-99fb-4331-8193-e287bd37f5a0",
|
||||
"name": "currentPower",
|
||||
"displayName": "Current power consumption",
|
||||
"displayNameEvent": "Current power consumption changed",
|
||||
"type": "double",
|
||||
"unit": "Watt",
|
||||
"defaultValue": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "2f40e28c-2484-4e09-bda9-e7accc29ab41",
|
||||
"name": "kasaSocket",
|
||||
"displayName": "Kasa power socket",
|
||||
"createMethods": ["auto"],
|
||||
"interfaces": ["powersocket", "wirelessconnectable"],
|
||||
"paramTypes": [
|
||||
{
|
||||
"id": "dd944807-c7f2-49da-b443-b69eb8387f41",
|
||||
"name": "id",
|
||||
"displayName": "ID",
|
||||
"type": "QString",
|
||||
"defaultValue": ""
|
||||
}
|
||||
],
|
||||
"stateTypes": [
|
||||
{
|
||||
"id": "59feb3a8-d35e-4c10-ac2e-01361e711a5e",
|
||||
"name": "connected",
|
||||
"displayName": "Connected",
|
||||
"displayNameEvent": "Connected changed",
|
||||
"type": "bool",
|
||||
"defaultValue": false,
|
||||
"cached": false
|
||||
},
|
||||
{
|
||||
"id": "16b71516-2ff4-4a2f-b0fc-53fff11f3a16",
|
||||
"name": "signalStrength",
|
||||
"displayName": "Signal strength",
|
||||
"displayNameEvent": "Signal strength changed",
|
||||
"type": "uint",
|
||||
"unit": "Percentage",
|
||||
"minValue": 0,
|
||||
"maxValue": 100,
|
||||
"defaultValue": 100
|
||||
},
|
||||
{
|
||||
"id": "b1d006a6-f2f5-475c-ab9e-8b431b1ac5f8",
|
||||
"name": "power",
|
||||
"displayName": "Power",
|
||||
"displayNameEvent": "Turned on or off",
|
||||
"displayNameAction": "Turn on or off",
|
||||
"type": "bool",
|
||||
"defaultValue": false,
|
||||
"writable": true,
|
||||
"ioType": "digitalOutput"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
"emeter": {
|
||||
"err_code": -1,
|
||||
"err_msg": "module not support"
|
||||
},
|
||||
"system": {
|
||||
"get_sysinfo": {
|
||||
"active_mode": "none",
|
||||
"alias": "Kasa Plug Mini HS105",
|
||||
"dev_name": "Smart Wi-Fi Plug Mini",
|
||||
"deviceId": "8006F282D515B22F869313C3D0F2E45F1D93EEC2",
|
||||
"err_code": 0,
|
||||
"feature": "TIM",
|
||||
"hwId": "845AC58F61A995F454064635A2E42A92",
|
||||
"hw_ver": "4.0",
|
||||
"icon_hash": "",
|
||||
"latitude_i": 398287,
|
||||
"led_off": 0,
|
||||
"longitude_i": -1049759,
|
||||
"mac": "84:D8:1B:C2:C6:39",
|
||||
"mic_type": "IOT.SMARTPLUGSWITCH",
|
||||
"model": "HS105(US)",
|
||||
"next_action": {
|
||||
"type": -1
|
||||
},
|
||||
"ntc_state": 0,
|
||||
"obd_src": "tplink",
|
||||
"oemId": "69A0595CB3878B4927CC17675B69DBA9",
|
||||
"on_time": 468,
|
||||
"relay_state": 1,
|
||||
"rssi": -50,
|
||||
"status": "new",
|
||||
"sw_ver": "1.0.2 Build 200804 Rel.091847",
|
||||
"updating": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"system": {
|
||||
"get_sysinfo": {
|
||||
"active_mode": "none",
|
||||
"alias": "Kasa Plug Mini HS105",
|
||||
"dev_name": "Smart Wi-Fi Plug Mini",
|
||||
"deviceId": "80060D6638AF0FF5268C04E19ACD7A631D92524B",
|
||||
"err_code": 0,
|
||||
"feature": "TIM",
|
||||
"hwId": "6EEF0BBCE1D91460D5F5201C65C8A549",
|
||||
"hw_ver": "5.0",
|
||||
"icon_hash": "",
|
||||
"latitude_i": 398287,
|
||||
"led_off": 0,
|
||||
"longitude_i": -1049759,
|
||||
"mac": "84:D8:1B:CB:A6:89",
|
||||
"mic_type": "IOT.SMARTPLUGSWITCH",
|
||||
"model": "HS105(US)",
|
||||
"next_action": {
|
||||
"type": -1
|
||||
},
|
||||
"obd_src": "tplink",
|
||||
"oemId": "A3BE45A15350D76F11728AC99180D5E8",
|
||||
"on_time": 466,
|
||||
"relay_state": 1,
|
||||
"rssi": -39,
|
||||
"status": "new",
|
||||
"sw_ver": "1.0.2 Build 200819 Rel.103733",
|
||||
"updating": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
"emeter": {
|
||||
"get_realtime": {
|
||||
"current_ma": 16,
|
||||
"err_code": 0,
|
||||
"power_mw": 812,
|
||||
"total_wh": 15,
|
||||
"voltage_mv": 232313
|
||||
}
|
||||
},
|
||||
"system": {
|
||||
"get_sysinfo": {
|
||||
"active_mode": "none",
|
||||
"alias": "Kasa Plug With Energy Monitoring HS110",
|
||||
"dev_name": "Smart Wi-Fi Plug With Energy Monitoring",
|
||||
"deviceId": "8006BBCA9B42F7D495ED9636570C21571BA8D9C1",
|
||||
"err_code": 0,
|
||||
"feature": "TIM:ENE",
|
||||
"fwId": "00000000000000000000000000000000",
|
||||
"hwId": "044A516EE63C875F9458DA25C2CCC5A0",
|
||||
"hw_ver": "2.0",
|
||||
"icon_hash": "",
|
||||
"latitude_i": 484108,
|
||||
"led_off": 0,
|
||||
"longitude_i": 99379,
|
||||
"mac": "98:DA:C4:6A:67:34",
|
||||
"model": "HS110(EU)",
|
||||
"next_action": {
|
||||
"type": -1
|
||||
},
|
||||
"oemId": "1998A14DAA86E4E001FD7CAF42868B5E",
|
||||
"on_time": 27113,
|
||||
"relay_state": 1,
|
||||
"rssi": -52,
|
||||
"sw_ver": "1.5.6 Build 191125 Rel.083657",
|
||||
"type": "IOT.SMARTPLUGSWITCH",
|
||||
"updating": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"system": {
|
||||
"get_sysinfo": {
|
||||
"active_mode": "none",
|
||||
"alias": "Kasa Plug With Power Monitoring HS110",
|
||||
"dev_name": "Smart Wi-Fi Plug With Energy Monitoring",
|
||||
"deviceId": "8006BBCA9B42F7D495ED9636570C21571BA8D9C1",
|
||||
"err_code": 0,
|
||||
"feature": "TIM:ENE",
|
||||
"fwId": "00000000000000000000000000000000",
|
||||
"hwId": "044A516EE63C875F9458DA25C2CCC5A0",
|
||||
"hw_ver": "2.0",
|
||||
"icon_hash": "",
|
||||
"latitude_i": 484108,
|
||||
"led_off": 0,
|
||||
"longitude_i": 99379,
|
||||
"mac": "98:DA:C4:6A:67:34",
|
||||
"model": "HS110(EU)",
|
||||
"next_action": {
|
||||
"type": -1
|
||||
},
|
||||
"oemId": "1998A14DAA86E4E001FD7CAF42868B5E",
|
||||
"on_time": 27035,
|
||||
"relay_state": 1,
|
||||
"rssi": -52,
|
||||
"sw_ver": "1.5.6 Build 191125 Rel.083657",
|
||||
"type": "IOT.SMARTPLUGSWITCH",
|
||||
"updating": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"emeter": {
|
||||
"err_code": -1,
|
||||
"err_msg": "module not support"
|
||||
},
|
||||
"system": {
|
||||
"get_sysinfo": {
|
||||
"active_mode": "none",
|
||||
"alias": "Kasa Light Switch HS200",
|
||||
"dev_name": "Smart Wi-Fi Light Switch",
|
||||
"deviceId": "800637201AAD76731FEC32A6D953ABDA1D5A4663",
|
||||
"err_code": 0,
|
||||
"feature": "TIM",
|
||||
"hwId": "F30CA3404523AE331168A102F897B7F0",
|
||||
"hw_ver": "3.0",
|
||||
"icon_hash": "",
|
||||
"latitude_i": 398287,
|
||||
"led_off": 0,
|
||||
"longitude_i": -1049759,
|
||||
"mac": "D8:07:B6:F7:E9:8D",
|
||||
"mic_type": "IOT.SMARTPLUGSWITCH",
|
||||
"model": "HS200(US)",
|
||||
"next_action": {
|
||||
"type": -1
|
||||
},
|
||||
"oemId": "59F15C39F35FEBCF7E5A84FF7620AFA1",
|
||||
"on_time": 0,
|
||||
"relay_state": 0,
|
||||
"rssi": -51,
|
||||
"status": "new",
|
||||
"sw_ver": "1.1.4 Build 200814 Rel.105352",
|
||||
"updating": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"system": {
|
||||
"get_sysinfo": {
|
||||
"active_mode": "none",
|
||||
"alias": "Kasa Light Switch HS200",
|
||||
"dev_name": "Smart Wi-Fi Light Switch",
|
||||
"deviceId": "424535436543654365435435425234591D5AF3F3",
|
||||
"err_code": 0,
|
||||
"feature": "TIM",
|
||||
"hwId": "F305453657676574756546534653B7F0",
|
||||
"hw_ver": "3.0",
|
||||
"icon_hash": "",
|
||||
"latitude_i": 123456,
|
||||
"led_off": 0,
|
||||
"longitude_i": -1234567,
|
||||
"mac": "23:45:67:89:AB:CD",
|
||||
"mic_type": "IOT.SMARTPLUGSWITCH",
|
||||
"model": "HS200(US)",
|
||||
"next_action": {
|
||||
"type": -1
|
||||
},
|
||||
"oemId": "5545465654756654365653455340AFA1",
|
||||
"on_time": 0,
|
||||
"relay_state": 0,
|
||||
"rssi": -43,
|
||||
"status": "new",
|
||||
"sw_ver": "1.1.4 Build 200814 Rel.105352",
|
||||
"updating": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
{
|
||||
"emeter": {
|
||||
"get_realtime": {
|
||||
"current_ma": 4,
|
||||
"err_code": 0,
|
||||
"power_mw": 0,
|
||||
"total_wh": 1475,
|
||||
"voltage_mv": 123011
|
||||
}
|
||||
},
|
||||
"system": {
|
||||
"get_sysinfo": {
|
||||
"alias": "TP-LINK_Power Strip_9BF2",
|
||||
"child_num": 6,
|
||||
"children": [
|
||||
{
|
||||
"alias": "Shipping table Plug 1",
|
||||
"id": "80064FCD1EFC96482DF70A7E66F341841D58B49200",
|
||||
"next_action": {
|
||||
"type": -1
|
||||
},
|
||||
"on_time": 417662,
|
||||
"state": 1
|
||||
},
|
||||
{
|
||||
"alias": "Shipping table Plug 2",
|
||||
"id": "80064FCD1EFC96482DF70A7E66F341841D58B49201",
|
||||
"next_action": {
|
||||
"type": -1
|
||||
},
|
||||
"on_time": 418526,
|
||||
"state": 1
|
||||
},
|
||||
{
|
||||
"alias": "Shipping table Plug 3",
|
||||
"id": "80064FCD1EFC96482DF70A7E66F341841D58B49202",
|
||||
"next_action": {
|
||||
"type": -1
|
||||
},
|
||||
"on_time": 418526,
|
||||
"state": 1
|
||||
},
|
||||
{
|
||||
"alias": "Shipping table Plug 4",
|
||||
"id": "80064FCD1EFC96482DF70A7E66F341841D58B49203",
|
||||
"next_action": {
|
||||
"type": -1
|
||||
},
|
||||
"on_time": 418526,
|
||||
"state": 1
|
||||
},
|
||||
{
|
||||
"alias": "Shipping table Plug 5",
|
||||
"id": "80064FCD1EFC96482DF70A7E66F341841D58B49204",
|
||||
"next_action": {
|
||||
"type": -1
|
||||
},
|
||||
"on_time": 418526,
|
||||
"state": 0
|
||||
},
|
||||
{
|
||||
"alias": "Shipping table Plug 6",
|
||||
"id": "80064FCD1EFC96482DF70A7E66F341841D58B49205",
|
||||
"next_action": {
|
||||
"type": -1
|
||||
},
|
||||
"on_time": 417659,
|
||||
"state": 1
|
||||
}
|
||||
],
|
||||
"deviceId": "80064FCD1EFC96482DF70A7E66F341841D58B492",
|
||||
"err_code": 0,
|
||||
"feature": "TIM:ENE",
|
||||
"hwId": "34C41AA028022D0CCEA5E678E8547C54",
|
||||
"hw_ver": "1.0",
|
||||
"latitude_i": 398287,
|
||||
"led_off": 0,
|
||||
"longitude_i": -1049759,
|
||||
"mac": "3C:84:6A:66:9B:F2",
|
||||
"mic_type": "IOT.SMARTPLUGSWITCH",
|
||||
"model": "HS300(US)",
|
||||
"oemId": "5C9E6254BEBAED63B2B6102966D24C17",
|
||||
"rssi": -65,
|
||||
"status": "new",
|
||||
"sw_ver": "1.0.19 Build 200224 Rel.090814",
|
||||
"updating": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
{
|
||||
"system": {
|
||||
"get_sysinfo": {
|
||||
"alias": "TP-LINK_Power Strip_9BF2",
|
||||
"child_num": 6,
|
||||
"children": [
|
||||
{
|
||||
"alias": "Shipping table Plug 1",
|
||||
"id": "00",
|
||||
"next_action": {
|
||||
"type": -1
|
||||
},
|
||||
"on_time": 417655,
|
||||
"state": 1
|
||||
},
|
||||
{
|
||||
"alias": "Shipping table Plug 2",
|
||||
"id": "01",
|
||||
"next_action": {
|
||||
"type": -1
|
||||
},
|
||||
"on_time": 418519,
|
||||
"state": 1
|
||||
},
|
||||
{
|
||||
"alias": "Shipping table Plug 3",
|
||||
"id": "02",
|
||||
"next_action": {
|
||||
"type": -1
|
||||
},
|
||||
"on_time": 418519,
|
||||
"state": 1
|
||||
},
|
||||
{
|
||||
"alias": "Shipping table Plug 4",
|
||||
"id": "03",
|
||||
"next_action": {
|
||||
"type": -1
|
||||
},
|
||||
"on_time": 418519,
|
||||
"state": 1
|
||||
},
|
||||
{
|
||||
"alias": "Shipping table Plug 5",
|
||||
"id": "04",
|
||||
"next_action": {
|
||||
"type": -1
|
||||
},
|
||||
"on_time": 418519,
|
||||
"state": 1
|
||||
},
|
||||
{
|
||||
"alias": "Shipping table Plug 6",
|
||||
"id": "05",
|
||||
"next_action": {
|
||||
"type": -1
|
||||
},
|
||||
"on_time": 417652,
|
||||
"state": 1
|
||||
}
|
||||
],
|
||||
"deviceId": "80064FCD1EFC96482DF70A7E66F341841D58B492",
|
||||
"err_code": 0,
|
||||
"feature": "TIM:ENE",
|
||||
"hwId": "34C41AA028022D0CCEA5E678E8547C54",
|
||||
"hw_ver": "1.0",
|
||||
"latitude_i": 398287,
|
||||
"led_off": 0,
|
||||
"longitude_i": -1049759,
|
||||
"mac": "3C:84:6A:66:9B:F2",
|
||||
"mic_type": "IOT.SMARTPLUGSWITCH",
|
||||
"model": "HS300(US)",
|
||||
"oemId": "5C9E6254BEBAED63B2B6102966D24C17",
|
||||
"rssi": -65,
|
||||
"status": "new",
|
||||
"sw_ver": "1.0.19 Build 200224 Rel.090814",
|
||||
"updating": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,95 @@
|
|||
#include <QGuiApplication>
|
||||
|
||||
#include <QDebug>
|
||||
#include <QFile>
|
||||
#include <QJsonDocument>
|
||||
#include <QTcpServer>
|
||||
#include <QUdpSocket>
|
||||
#include <QTcpSocket>
|
||||
#include <QDataStream>
|
||||
|
||||
#define MODEL "HS300"
|
||||
|
||||
QByteArray decryptPayload(const QByteArray &payload)
|
||||
{
|
||||
QByteArray result;
|
||||
int k = 171;
|
||||
for (int i = 0; i < payload.length(); i++){
|
||||
char t = payload.at(i);
|
||||
result.append(t xor k);
|
||||
k = t;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
QByteArray encryptPayload(const QByteArray &payload)
|
||||
{
|
||||
QByteArray result;
|
||||
int k = 171;
|
||||
for (int i = 0; i < payload.length(); i++){
|
||||
char t = payload.at(i) xor k;
|
||||
k = t;
|
||||
result.append(t);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
|
||||
|
||||
QGuiApplication app(argc, argv);
|
||||
|
||||
qDebug() << "Simulating" << MODEL;
|
||||
|
||||
QFile f(QString("%1-UDP.txt").arg(MODEL));
|
||||
f.open(QFile::ReadOnly);
|
||||
QByteArray systemDataUdp = f.readAll();
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(systemDataUdp);
|
||||
systemDataUdp = encryptPayload(jsonDoc.toJson(QJsonDocument::Compact));
|
||||
f.close();
|
||||
|
||||
f.setFileName(QString("%1-TCP.txt").arg(MODEL));
|
||||
f.open(QFile::ReadOnly);
|
||||
QByteArray systemDataTcp = f.readAll();
|
||||
jsonDoc = QJsonDocument::fromJson(systemDataTcp);
|
||||
systemDataTcp = encryptPayload(jsonDoc.toJson(QJsonDocument::Compact));
|
||||
|
||||
QUdpSocket *udp = new QUdpSocket(&app);
|
||||
udp->bind(QHostAddress("0.0.0.0"), 9999);
|
||||
QObject::connect(udp, &QUdpSocket::readyRead, &app, [=](){
|
||||
while (udp->hasPendingDatagrams()) {
|
||||
char buffer[4096];
|
||||
QHostAddress sourceAddress;
|
||||
quint16 sourcePort;
|
||||
udp->readDatagram(buffer, 4096, &sourceAddress, &sourcePort);
|
||||
QByteArray data(buffer);
|
||||
data = decryptPayload(data);
|
||||
qDebug() << "Incoming datagram:" << data << "from" << sourceAddress;
|
||||
|
||||
udp->writeDatagram(systemDataUdp, sourceAddress, sourcePort);
|
||||
}
|
||||
});
|
||||
|
||||
QTcpServer *tcp = new QTcpServer(&app);
|
||||
bool success = tcp->listen(QHostAddress("0.0.0.0"), 9999);
|
||||
qDebug() << "Listening on tcp" << success;
|
||||
QObject::connect(tcp, &QTcpServer::newConnection, &app, [=](){
|
||||
qDebug() << "new connection";
|
||||
QTcpSocket *client = tcp->nextPendingConnection();
|
||||
QObject::connect(client, &QTcpSocket::readyRead, tcp, [=](){
|
||||
QByteArray data = decryptPayload(client->readAll());
|
||||
qDebug() << "Incoming request:" << data;
|
||||
|
||||
QByteArray output;
|
||||
QDataStream stream(&output, QIODevice::WriteOnly);
|
||||
qint32 len = systemDataTcp.length();
|
||||
stream << len;
|
||||
output.append(systemDataTcp);
|
||||
qDebug() << "written:" << client->write(output);
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
return app.exec();
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
CONFIG += c++11
|
||||
|
||||
QT += network
|
||||
|
||||
SOURCES += simulator.cpp
|
||||
|
|
@ -7,3 +7,10 @@ SOURCES += \
|
|||
|
||||
HEADERS += \
|
||||
integrationplugintplink.h \
|
||||
|
||||
OTHER_FILES += \
|
||||
sampledata/HS200.txt \
|
||||
sampledata/HS300-UDP.txt
|
||||
|
||||
DISTFILES += \
|
||||
sampledata/HS300-TCP.txt
|
||||
|
|
|
|||
|
|
@ -4,22 +4,22 @@
|
|||
<context>
|
||||
<name>IntegrationPluginTPLink</name>
|
||||
<message>
|
||||
<location filename="../integrationplugintplink.cpp" line="92"/>
|
||||
<location filename="../integrationplugintplink.cpp" line="121"/>
|
||||
<source>An error happened sending the discovery to the network.</source>
|
||||
<translation>Beim Durchsuchen des Netzwerks ist ein Fehler aufgetreten.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationplugintplink.cpp" line="155"/>
|
||||
<location filename="../integrationplugintplink.cpp" line="203"/>
|
||||
<source>An error happened finding the device in the network.</source>
|
||||
<translation>Beim Suchen des Geräts ist ein Fehler aufgetreten.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationplugintplink.cpp" line="192"/>
|
||||
<location filename="../integrationplugintplink.cpp" line="260"/>
|
||||
<source>The device could not be found on the network.</source>
|
||||
<translation>Das Gerät konnte nicht im Netzwerk gefunden werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationplugintplink.cpp" line="480"/>
|
||||
<location filename="../integrationplugintplink.cpp" line="602"/>
|
||||
<source>Error sending command to the network.</source>
|
||||
<translation>Der Befehl konnte nicht ins Netzwerk gesendet werden.</translation>
|
||||
</message>
|
||||
|
|
@ -27,14 +27,26 @@
|
|||
<context>
|
||||
<name>tplink</name>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="67"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="70"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="73"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="76"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="79"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="82"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="99"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="102"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="105"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="108"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="111"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="114"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="117"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="120"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="123"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="126"/>
|
||||
<source>Connected</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaSwitch200, EventType: connected, ID: {8792b3d1-f83d-44c3-b649-249a935d1eb4})
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaSocket, EventType: connected, ID: {59feb3a8-d35e-4c10-ac2e-01361e711a5e})
|
||||
----------
|
||||
The name of the StateType ({59feb3a8-d35e-4c10-ac2e-01361e711a5e}) of ThingClass kasaSocket
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaPowerStrip300, EventType: connected, ID: {9bcec21d-7207-44c6-8ebf-d2720bb7a63a})
|
||||
----------
|
||||
The name of the StateType ({9bcec21d-7207-44c6-8ebf-d2720bb7a63a}) of ThingClass kasaPowerStrip300
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaSwitch200, EventType: connected, ID: {8792b3d1-f83d-44c3-b649-249a935d1eb4})
|
||||
----------
|
||||
The name of the StateType ({8792b3d1-f83d-44c3-b649-249a935d1eb4}) of ThingClass kasaSwitch200
|
||||
----------
|
||||
|
|
@ -48,11 +60,17 @@ The name of the StateType ({79bcdd81-2e9d-4312-a4a7-85f808d046ef}) of ThingClass
|
|||
<translation>Verbunden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="85"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="88"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="91"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="129"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="132"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="135"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="138"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="141"/>
|
||||
<source>Connected changed</source>
|
||||
<extracomment>The name of the EventType ({8792b3d1-f83d-44c3-b649-249a935d1eb4}) of ThingClass kasaSwitch200
|
||||
<extracomment>The name of the EventType ({59feb3a8-d35e-4c10-ac2e-01361e711a5e}) of ThingClass kasaSocket
|
||||
----------
|
||||
The name of the EventType ({9bcec21d-7207-44c6-8ebf-d2720bb7a63a}) of ThingClass kasaPowerStrip300
|
||||
----------
|
||||
The name of the EventType ({8792b3d1-f83d-44c3-b649-249a935d1eb4}) of ThingClass kasaSwitch200
|
||||
----------
|
||||
The name of the EventType ({b66825ec-9f1b-48da-af18-f36913291c0e}) of ThingClass kasaPlug110
|
||||
----------
|
||||
|
|
@ -60,26 +78,41 @@ The name of the EventType ({79bcdd81-2e9d-4312-a4a7-85f808d046ef}) of ThingClass
|
|||
<translation>Verbunden/getrennt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="94"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="97"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="144"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="147"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="150"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="153"/>
|
||||
<source>Current power consumption</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaPlug110, EventType: currentPower, ID: {ccb52b57-5800-4f03-b7fa-f36dcebe1d4e})
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaPowerStrip300, EventType: currentPower, ID: {f973b4e8-99fb-4331-8193-e287bd37f5a0})
|
||||
----------
|
||||
The name of the StateType ({f973b4e8-99fb-4331-8193-e287bd37f5a0}) of ThingClass kasaPowerStrip300
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaPlug110, EventType: currentPower, ID: {ccb52b57-5800-4f03-b7fa-f36dcebe1d4e})
|
||||
----------
|
||||
The name of the StateType ({ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) of ThingClass kasaPlug110</extracomment>
|
||||
<translation>Aktueller Energieverbrauch</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="100"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="156"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="159"/>
|
||||
<source>Current power consumption changed</source>
|
||||
<extracomment>The name of the EventType ({ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) of ThingClass kasaPlug110</extracomment>
|
||||
<extracomment>The name of the EventType ({f973b4e8-99fb-4331-8193-e287bd37f5a0}) of ThingClass kasaPowerStrip300
|
||||
----------
|
||||
The name of the EventType ({ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) of ThingClass kasaPlug110</extracomment>
|
||||
<translation>Aktueller Energieverbrauch geändert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="103"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="106"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="109"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="162"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="165"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="168"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="171"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="174"/>
|
||||
<source>ID</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaSwitch200, Type: thing, ID: {fe989b2f-034e-4615-8a47-4a8aa775ed99})
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaSocket, Type: thing, ID: {dd944807-c7f2-49da-b443-b69eb8387f41})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaPowerStrip300, Type: thing, ID: {62b38ddf-f6d7-44e1-955f-f04b375d960d})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaSwitch200, Type: thing, ID: {fe989b2f-034e-4615-8a47-4a8aa775ed99})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaPlug110, Type: thing, ID: {de3238f7-fe94-440d-b212-61cd4e221b50})
|
||||
----------
|
||||
|
|
@ -87,35 +120,56 @@ The name of the ParamType (ThingClass: kasaPlug100, Type: thing, ID: {7c7a4d88-6
|
|||
<translation>ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="112"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="177"/>
|
||||
<source>Kasa Smart Wi-Fi Light Switch (HS200)</source>
|
||||
<extracomment>The name of the ThingClass ({d527e576-d65e-4ae6-ae43-c89b594fb4c1})</extracomment>
|
||||
<translation>Kasa Smart Wi-Fi Lichtschalter (HS200)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="115"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="180"/>
|
||||
<source>Kasa Smart Wi-Fi Plug (HS100/HS103/HS105/KP100)</source>
|
||||
<extracomment>The name of the ThingClass ({48f981ba-3836-4810-9744-a349088f4545})</extracomment>
|
||||
<translation>Kasa Smart WLAN-Steckdose (HS100/HS103/HS105/KP100)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="118"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="183"/>
|
||||
<source>Kasa Smart Wi-Fi Plug With Energy Monitoring (HS110)</source>
|
||||
<extracomment>The name of the ThingClass ({32830124-9efb-4614-8227-ee269b1889b0})</extracomment>
|
||||
<translation>Kasa Smart WLAN-Steckdose mit Verbrauchsanzeige (HS110)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="121"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="124"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="127"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="130"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="133"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="136"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="139"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="142"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="145"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="186"/>
|
||||
<source>Kasa Smart Wi-Fi Power Strip (HS300)</source>
|
||||
<extracomment>The name of the ThingClass ({bbdee989-9431-4187-b135-5030a7a11be2})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="189"/>
|
||||
<source>Kasa power socket</source>
|
||||
<extracomment>The name of the ThingClass ({2f40e28c-2484-4e09-bda9-e7accc29ab41})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="192"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="195"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="198"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="201"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="204"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="207"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="210"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="213"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="216"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="219"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="222"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="225"/>
|
||||
<source>Power</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaSwitch200, ActionType: power, ID: {3b0daf6c-ba04-4ff1-a381-685c869665b1})
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaSocket, ActionType: power, ID: {b1d006a6-f2f5-475c-ab9e-8b431b1ac5f8})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaSocket, EventType: power, ID: {b1d006a6-f2f5-475c-ab9e-8b431b1ac5f8})
|
||||
----------
|
||||
The name of the StateType ({b1d006a6-f2f5-475c-ab9e-8b431b1ac5f8}) of ThingClass kasaSocket
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaSwitch200, ActionType: power, ID: {3b0daf6c-ba04-4ff1-a381-685c869665b1})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaSwitch200, EventType: power, ID: {3b0daf6c-ba04-4ff1-a381-685c869665b1})
|
||||
----------
|
||||
|
|
@ -135,14 +189,26 @@ The name of the StateType ({a8991ea0-89f0-477b-97fb-414dd7d185b3}) of ThingClass
|
|||
<translation>Eingeschaltet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="148"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="151"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="154"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="157"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="160"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="163"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="228"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="231"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="234"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="237"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="240"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="243"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="246"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="249"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="252"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="255"/>
|
||||
<source>Signal strength</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaSwitch200, EventType: signalStrength, ID: {6387c4e3-b0c1-4151-a3c9-925929c2d51e})
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaSocket, EventType: signalStrength, ID: {16b71516-2ff4-4a2f-b0fc-53fff11f3a16})
|
||||
----------
|
||||
The name of the StateType ({16b71516-2ff4-4a2f-b0fc-53fff11f3a16}) of ThingClass kasaSocket
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaPowerStrip300, EventType: signalStrength, ID: {1a587f62-8274-4c2e-bdc6-1b0b6368e5f7})
|
||||
----------
|
||||
The name of the StateType ({1a587f62-8274-4c2e-bdc6-1b0b6368e5f7}) of ThingClass kasaPowerStrip300
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaSwitch200, EventType: signalStrength, ID: {6387c4e3-b0c1-4151-a3c9-925929c2d51e})
|
||||
----------
|
||||
The name of the StateType ({6387c4e3-b0c1-4151-a3c9-925929c2d51e}) of ThingClass kasaSwitch200
|
||||
----------
|
||||
|
|
@ -156,11 +222,17 @@ The name of the StateType ({1de7fac2-87f1-4c2b-9286-1b0895c5ac49}) of ThingClass
|
|||
<translation>Signalstärke</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="166"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="169"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="172"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="258"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="261"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="264"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="267"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="270"/>
|
||||
<source>Signal strength changed</source>
|
||||
<extracomment>The name of the EventType ({6387c4e3-b0c1-4151-a3c9-925929c2d51e}) of ThingClass kasaSwitch200
|
||||
<extracomment>The name of the EventType ({16b71516-2ff4-4a2f-b0fc-53fff11f3a16}) of ThingClass kasaSocket
|
||||
----------
|
||||
The name of the EventType ({1a587f62-8274-4c2e-bdc6-1b0b6368e5f7}) of ThingClass kasaPowerStrip300
|
||||
----------
|
||||
The name of the EventType ({6387c4e3-b0c1-4151-a3c9-925929c2d51e}) of ThingClass kasaSwitch200
|
||||
----------
|
||||
The name of the EventType ({cb16cfb0-6608-486f-abe5-264aa652704d}) of ThingClass kasaPlug110
|
||||
----------
|
||||
|
|
@ -168,26 +240,38 @@ The name of the EventType ({1de7fac2-87f1-4c2b-9286-1b0895c5ac49}) of ThingClass
|
|||
<translation>Signalstärke geändert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="175"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="178"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="273"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="276"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="279"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="282"/>
|
||||
<source>Total energy consumed</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaPlug110, EventType: totalEnergyConsumed, ID: {a3533121-69ee-44fd-8394-13373e8f960e})
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaPowerStrip300, EventType: totalEnergyConsumed, ID: {f2992226-1f36-477f-b053-04dc5dc3a31c})
|
||||
----------
|
||||
The name of the StateType ({f2992226-1f36-477f-b053-04dc5dc3a31c}) of ThingClass kasaPowerStrip300
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaPlug110, EventType: totalEnergyConsumed, ID: {a3533121-69ee-44fd-8394-13373e8f960e})
|
||||
----------
|
||||
The name of the StateType ({a3533121-69ee-44fd-8394-13373e8f960e}) of ThingClass kasaPlug110</extracomment>
|
||||
<translation>Gesamter Energieverbrauch</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="181"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="285"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="288"/>
|
||||
<source>Total energy consumed changed</source>
|
||||
<extracomment>The name of the EventType ({a3533121-69ee-44fd-8394-13373e8f960e}) of ThingClass kasaPlug110</extracomment>
|
||||
<extracomment>The name of the EventType ({f2992226-1f36-477f-b053-04dc5dc3a31c}) of ThingClass kasaPowerStrip300
|
||||
----------
|
||||
The name of the EventType ({a3533121-69ee-44fd-8394-13373e8f960e}) of ThingClass kasaPlug110</extracomment>
|
||||
<translation>Gesamter Energieverbrauch geändert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="184"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="187"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="190"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="291"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="294"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="297"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="300"/>
|
||||
<source>Turn on or off</source>
|
||||
<extracomment>The name of the ActionType ({3b0daf6c-ba04-4ff1-a381-685c869665b1}) of ThingClass kasaSwitch200
|
||||
<extracomment>The name of the ActionType ({b1d006a6-f2f5-475c-ab9e-8b431b1ac5f8}) of ThingClass kasaSocket
|
||||
----------
|
||||
The name of the ActionType ({3b0daf6c-ba04-4ff1-a381-685c869665b1}) of ThingClass kasaSwitch200
|
||||
----------
|
||||
The name of the ActionType ({f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) of ThingClass kasaPlug110
|
||||
----------
|
||||
|
|
@ -195,11 +279,14 @@ The name of the ActionType ({a8991ea0-89f0-477b-97fb-414dd7d185b3}) of ThingClas
|
|||
<translation>Ein- ausschalten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="193"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="196"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="199"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="303"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="306"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="309"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="312"/>
|
||||
<source>Turned on or off</source>
|
||||
<extracomment>The name of the EventType ({3b0daf6c-ba04-4ff1-a381-685c869665b1}) of ThingClass kasaSwitch200
|
||||
<extracomment>The name of the EventType ({b1d006a6-f2f5-475c-ab9e-8b431b1ac5f8}) of ThingClass kasaSocket
|
||||
----------
|
||||
The name of the EventType ({3b0daf6c-ba04-4ff1-a381-685c869665b1}) of ThingClass kasaSwitch200
|
||||
----------
|
||||
The name of the EventType ({f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) of ThingClass kasaPlug110
|
||||
----------
|
||||
|
|
@ -207,8 +294,8 @@ The name of the EventType ({a8991ea0-89f0-477b-97fb-414dd7d185b3}) of ThingClass
|
|||
<translation>Ein- ausgeschaltet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="202"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="205"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="315"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="318"/>
|
||||
<source>tp-link</source>
|
||||
<extracomment>The name of the vendor ({8603b6cf-52ec-4481-aca2-f29ebd6cd8a8})
|
||||
----------
|
||||
|
|
|
|||
|
|
@ -4,22 +4,22 @@
|
|||
<context>
|
||||
<name>IntegrationPluginTPLink</name>
|
||||
<message>
|
||||
<location filename="../integrationplugintplink.cpp" line="92"/>
|
||||
<location filename="../integrationplugintplink.cpp" line="121"/>
|
||||
<source>An error happened sending the discovery to the network.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationplugintplink.cpp" line="155"/>
|
||||
<location filename="../integrationplugintplink.cpp" line="203"/>
|
||||
<source>An error happened finding the device in the network.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationplugintplink.cpp" line="192"/>
|
||||
<location filename="../integrationplugintplink.cpp" line="260"/>
|
||||
<source>The device could not be found on the network.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationplugintplink.cpp" line="480"/>
|
||||
<location filename="../integrationplugintplink.cpp" line="602"/>
|
||||
<source>Error sending command to the network.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
@ -27,14 +27,26 @@
|
|||
<context>
|
||||
<name>tplink</name>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="67"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="70"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="73"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="76"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="79"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="82"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="99"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="102"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="105"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="108"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="111"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="114"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="117"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="120"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="123"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="126"/>
|
||||
<source>Connected</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaSwitch200, EventType: connected, ID: {8792b3d1-f83d-44c3-b649-249a935d1eb4})
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaSocket, EventType: connected, ID: {59feb3a8-d35e-4c10-ac2e-01361e711a5e})
|
||||
----------
|
||||
The name of the StateType ({59feb3a8-d35e-4c10-ac2e-01361e711a5e}) of ThingClass kasaSocket
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaPowerStrip300, EventType: connected, ID: {9bcec21d-7207-44c6-8ebf-d2720bb7a63a})
|
||||
----------
|
||||
The name of the StateType ({9bcec21d-7207-44c6-8ebf-d2720bb7a63a}) of ThingClass kasaPowerStrip300
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaSwitch200, EventType: connected, ID: {8792b3d1-f83d-44c3-b649-249a935d1eb4})
|
||||
----------
|
||||
The name of the StateType ({8792b3d1-f83d-44c3-b649-249a935d1eb4}) of ThingClass kasaSwitch200
|
||||
----------
|
||||
|
|
@ -48,11 +60,17 @@ The name of the StateType ({79bcdd81-2e9d-4312-a4a7-85f808d046ef}) of ThingClass
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="85"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="88"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="91"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="129"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="132"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="135"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="138"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="141"/>
|
||||
<source>Connected changed</source>
|
||||
<extracomment>The name of the EventType ({8792b3d1-f83d-44c3-b649-249a935d1eb4}) of ThingClass kasaSwitch200
|
||||
<extracomment>The name of the EventType ({59feb3a8-d35e-4c10-ac2e-01361e711a5e}) of ThingClass kasaSocket
|
||||
----------
|
||||
The name of the EventType ({9bcec21d-7207-44c6-8ebf-d2720bb7a63a}) of ThingClass kasaPowerStrip300
|
||||
----------
|
||||
The name of the EventType ({8792b3d1-f83d-44c3-b649-249a935d1eb4}) of ThingClass kasaSwitch200
|
||||
----------
|
||||
The name of the EventType ({b66825ec-9f1b-48da-af18-f36913291c0e}) of ThingClass kasaPlug110
|
||||
----------
|
||||
|
|
@ -60,26 +78,41 @@ The name of the EventType ({79bcdd81-2e9d-4312-a4a7-85f808d046ef}) of ThingClass
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="94"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="97"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="144"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="147"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="150"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="153"/>
|
||||
<source>Current power consumption</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaPlug110, EventType: currentPower, ID: {ccb52b57-5800-4f03-b7fa-f36dcebe1d4e})
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaPowerStrip300, EventType: currentPower, ID: {f973b4e8-99fb-4331-8193-e287bd37f5a0})
|
||||
----------
|
||||
The name of the StateType ({f973b4e8-99fb-4331-8193-e287bd37f5a0}) of ThingClass kasaPowerStrip300
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaPlug110, EventType: currentPower, ID: {ccb52b57-5800-4f03-b7fa-f36dcebe1d4e})
|
||||
----------
|
||||
The name of the StateType ({ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) of ThingClass kasaPlug110</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="100"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="156"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="159"/>
|
||||
<source>Current power consumption changed</source>
|
||||
<extracomment>The name of the EventType ({ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) of ThingClass kasaPlug110</extracomment>
|
||||
<extracomment>The name of the EventType ({f973b4e8-99fb-4331-8193-e287bd37f5a0}) of ThingClass kasaPowerStrip300
|
||||
----------
|
||||
The name of the EventType ({ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) of ThingClass kasaPlug110</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="103"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="106"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="109"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="162"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="165"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="168"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="171"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="174"/>
|
||||
<source>ID</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaSwitch200, Type: thing, ID: {fe989b2f-034e-4615-8a47-4a8aa775ed99})
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaSocket, Type: thing, ID: {dd944807-c7f2-49da-b443-b69eb8387f41})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaPowerStrip300, Type: thing, ID: {62b38ddf-f6d7-44e1-955f-f04b375d960d})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaSwitch200, Type: thing, ID: {fe989b2f-034e-4615-8a47-4a8aa775ed99})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaPlug110, Type: thing, ID: {de3238f7-fe94-440d-b212-61cd4e221b50})
|
||||
----------
|
||||
|
|
@ -87,35 +120,56 @@ The name of the ParamType (ThingClass: kasaPlug100, Type: thing, ID: {7c7a4d88-6
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="112"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="177"/>
|
||||
<source>Kasa Smart Wi-Fi Light Switch (HS200)</source>
|
||||
<extracomment>The name of the ThingClass ({d527e576-d65e-4ae6-ae43-c89b594fb4c1})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="115"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="180"/>
|
||||
<source>Kasa Smart Wi-Fi Plug (HS100/HS103/HS105/KP100)</source>
|
||||
<extracomment>The name of the ThingClass ({48f981ba-3836-4810-9744-a349088f4545})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="118"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="183"/>
|
||||
<source>Kasa Smart Wi-Fi Plug With Energy Monitoring (HS110)</source>
|
||||
<extracomment>The name of the ThingClass ({32830124-9efb-4614-8227-ee269b1889b0})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="121"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="124"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="127"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="130"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="133"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="136"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="139"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="142"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="145"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="186"/>
|
||||
<source>Kasa Smart Wi-Fi Power Strip (HS300)</source>
|
||||
<extracomment>The name of the ThingClass ({bbdee989-9431-4187-b135-5030a7a11be2})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="189"/>
|
||||
<source>Kasa power socket</source>
|
||||
<extracomment>The name of the ThingClass ({2f40e28c-2484-4e09-bda9-e7accc29ab41})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="192"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="195"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="198"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="201"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="204"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="207"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="210"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="213"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="216"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="219"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="222"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="225"/>
|
||||
<source>Power</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaSwitch200, ActionType: power, ID: {3b0daf6c-ba04-4ff1-a381-685c869665b1})
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaSocket, ActionType: power, ID: {b1d006a6-f2f5-475c-ab9e-8b431b1ac5f8})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaSocket, EventType: power, ID: {b1d006a6-f2f5-475c-ab9e-8b431b1ac5f8})
|
||||
----------
|
||||
The name of the StateType ({b1d006a6-f2f5-475c-ab9e-8b431b1ac5f8}) of ThingClass kasaSocket
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaSwitch200, ActionType: power, ID: {3b0daf6c-ba04-4ff1-a381-685c869665b1})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaSwitch200, EventType: power, ID: {3b0daf6c-ba04-4ff1-a381-685c869665b1})
|
||||
----------
|
||||
|
|
@ -135,14 +189,26 @@ The name of the StateType ({a8991ea0-89f0-477b-97fb-414dd7d185b3}) of ThingClass
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="148"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="151"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="154"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="157"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="160"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="163"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="228"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="231"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="234"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="237"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="240"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="243"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="246"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="249"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="252"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="255"/>
|
||||
<source>Signal strength</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaSwitch200, EventType: signalStrength, ID: {6387c4e3-b0c1-4151-a3c9-925929c2d51e})
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaSocket, EventType: signalStrength, ID: {16b71516-2ff4-4a2f-b0fc-53fff11f3a16})
|
||||
----------
|
||||
The name of the StateType ({16b71516-2ff4-4a2f-b0fc-53fff11f3a16}) of ThingClass kasaSocket
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaPowerStrip300, EventType: signalStrength, ID: {1a587f62-8274-4c2e-bdc6-1b0b6368e5f7})
|
||||
----------
|
||||
The name of the StateType ({1a587f62-8274-4c2e-bdc6-1b0b6368e5f7}) of ThingClass kasaPowerStrip300
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaSwitch200, EventType: signalStrength, ID: {6387c4e3-b0c1-4151-a3c9-925929c2d51e})
|
||||
----------
|
||||
The name of the StateType ({6387c4e3-b0c1-4151-a3c9-925929c2d51e}) of ThingClass kasaSwitch200
|
||||
----------
|
||||
|
|
@ -156,11 +222,17 @@ The name of the StateType ({1de7fac2-87f1-4c2b-9286-1b0895c5ac49}) of ThingClass
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="166"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="169"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="172"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="258"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="261"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="264"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="267"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="270"/>
|
||||
<source>Signal strength changed</source>
|
||||
<extracomment>The name of the EventType ({6387c4e3-b0c1-4151-a3c9-925929c2d51e}) of ThingClass kasaSwitch200
|
||||
<extracomment>The name of the EventType ({16b71516-2ff4-4a2f-b0fc-53fff11f3a16}) of ThingClass kasaSocket
|
||||
----------
|
||||
The name of the EventType ({1a587f62-8274-4c2e-bdc6-1b0b6368e5f7}) of ThingClass kasaPowerStrip300
|
||||
----------
|
||||
The name of the EventType ({6387c4e3-b0c1-4151-a3c9-925929c2d51e}) of ThingClass kasaSwitch200
|
||||
----------
|
||||
The name of the EventType ({cb16cfb0-6608-486f-abe5-264aa652704d}) of ThingClass kasaPlug110
|
||||
----------
|
||||
|
|
@ -168,26 +240,38 @@ The name of the EventType ({1de7fac2-87f1-4c2b-9286-1b0895c5ac49}) of ThingClass
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="175"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="178"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="273"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="276"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="279"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="282"/>
|
||||
<source>Total energy consumed</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaPlug110, EventType: totalEnergyConsumed, ID: {a3533121-69ee-44fd-8394-13373e8f960e})
|
||||
<extracomment>The name of the ParamType (ThingClass: kasaPowerStrip300, EventType: totalEnergyConsumed, ID: {f2992226-1f36-477f-b053-04dc5dc3a31c})
|
||||
----------
|
||||
The name of the StateType ({f2992226-1f36-477f-b053-04dc5dc3a31c}) of ThingClass kasaPowerStrip300
|
||||
----------
|
||||
The name of the ParamType (ThingClass: kasaPlug110, EventType: totalEnergyConsumed, ID: {a3533121-69ee-44fd-8394-13373e8f960e})
|
||||
----------
|
||||
The name of the StateType ({a3533121-69ee-44fd-8394-13373e8f960e}) of ThingClass kasaPlug110</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="181"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="285"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="288"/>
|
||||
<source>Total energy consumed changed</source>
|
||||
<extracomment>The name of the EventType ({a3533121-69ee-44fd-8394-13373e8f960e}) of ThingClass kasaPlug110</extracomment>
|
||||
<extracomment>The name of the EventType ({f2992226-1f36-477f-b053-04dc5dc3a31c}) of ThingClass kasaPowerStrip300
|
||||
----------
|
||||
The name of the EventType ({a3533121-69ee-44fd-8394-13373e8f960e}) of ThingClass kasaPlug110</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="184"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="187"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="190"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="291"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="294"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="297"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="300"/>
|
||||
<source>Turn on or off</source>
|
||||
<extracomment>The name of the ActionType ({3b0daf6c-ba04-4ff1-a381-685c869665b1}) of ThingClass kasaSwitch200
|
||||
<extracomment>The name of the ActionType ({b1d006a6-f2f5-475c-ab9e-8b431b1ac5f8}) of ThingClass kasaSocket
|
||||
----------
|
||||
The name of the ActionType ({3b0daf6c-ba04-4ff1-a381-685c869665b1}) of ThingClass kasaSwitch200
|
||||
----------
|
||||
The name of the ActionType ({f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) of ThingClass kasaPlug110
|
||||
----------
|
||||
|
|
@ -195,11 +279,14 @@ The name of the ActionType ({a8991ea0-89f0-477b-97fb-414dd7d185b3}) of ThingClas
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="193"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="196"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="199"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="303"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="306"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="309"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="312"/>
|
||||
<source>Turned on or off</source>
|
||||
<extracomment>The name of the EventType ({3b0daf6c-ba04-4ff1-a381-685c869665b1}) of ThingClass kasaSwitch200
|
||||
<extracomment>The name of the EventType ({b1d006a6-f2f5-475c-ab9e-8b431b1ac5f8}) of ThingClass kasaSocket
|
||||
----------
|
||||
The name of the EventType ({3b0daf6c-ba04-4ff1-a381-685c869665b1}) of ThingClass kasaSwitch200
|
||||
----------
|
||||
The name of the EventType ({f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) of ThingClass kasaPlug110
|
||||
----------
|
||||
|
|
@ -207,8 +294,8 @@ The name of the EventType ({a8991ea0-89f0-477b-97fb-414dd7d185b3}) of ThingClass
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="202"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="205"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="315"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/tplink/plugininfo.h" line="318"/>
|
||||
<source>tp-link</source>
|
||||
<extracomment>The name of the vendor ({8603b6cf-52ec-4481-aca2-f29ebd6cd8a8})
|
||||
----------
|
||||
|
|
|
|||
Loading…
Reference in New Issue