diff --git a/debian/changelog b/debian/changelog index dca84050..00737b79 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,8 @@ +nymea-plugins (0.19.0) UNRELEASED; urgency=medium + + + -- Michael Zanetti Mon, 24 Feb 2020 01:46:44 +0100 + nymea-plugins (0.18.1) xenial; urgency=medium [ Michael Zanetti ] diff --git a/tplink/README.md b/tplink/README.md index b5876fe8..379a3444 100644 --- a/tplink/README.md +++ b/tplink/README.md @@ -1,7 +1,13 @@ # tp-link Kasa -This plugin adds support for tp-link Kasa smart plugs to nymea. Supported features are controlling power -and reading energy consumption. +This plugin adds support for the following tp-link Kasa devices to nymea. + +* HS100 Kasa Smart Wi-Fi Plug +* HS103 Kasa Smart Wi-Fi Plug Lite +* HS105 Kasa Smart Wi-Fi Plug Mini +* HS110 Kasa Smart Wi-Fi Plug With Energy Monitoring +* HS200 Kasa Smart Wi-Fi Light Switch +* 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 for a one time setup of the device to connect it to the Wi-Fi. diff --git a/tplink/deviceplugintplink.cpp b/tplink/deviceplugintplink.cpp index fb8fbef1..ef31e966 100644 --- a/tplink/deviceplugintplink.cpp +++ b/tplink/deviceplugintplink.cpp @@ -43,6 +43,25 @@ DevicePluginTPLink::DevicePluginTPLink() { + m_idParamTypesMap[kasaPlug100DeviceClassId] = kasaPlug100DeviceIdParamTypeId; + m_idParamTypesMap[kasaPlug110DeviceClassId] = kasaPlug110DeviceIdParamTypeId; + m_idParamTypesMap[kasaSwitch200DeviceClassId] = kasaSwitch200DeviceIdParamTypeId; + + m_connectedStateTypesMap[kasaPlug100DeviceClassId] = kasaPlug100ConnectedStateTypeId; + m_connectedStateTypesMap[kasaPlug110DeviceClassId] = kasaPlug110ConnectedStateTypeId; + m_connectedStateTypesMap[kasaSwitch200DeviceClassId] = kasaSwitch200ConnectedStateTypeId; + + m_powerStatetTypesMap[kasaPlug100DeviceClassId] = kasaPlug100PowerStateTypeId; + m_powerStatetTypesMap[kasaPlug110DeviceClassId] = kasaPlug110PowerStateTypeId; + m_powerStatetTypesMap[kasaSwitch200DeviceClassId] = kasaSwitch200PowerStateTypeId; + + m_currentPowerStatetTypesMap[kasaPlug110DeviceClassId] = kasaPlug110CurrentPowerStateTypeId; + + m_totalEnergyConsumedStatetTypesMap[kasaPlug110DeviceClassId] = kasaPlug110TotalEnergyConsumedStateTypeId; + + m_powerActionParamTypesMap[kasaPlug100DeviceClassId] = kasaPlug100PowerActionPowerParamTypeId; + m_powerActionParamTypesMap[kasaPlug110DeviceClassId] = kasaPlug110PowerActionPowerParamTypeId; + m_powerActionParamTypesMap[kasaSwitch200DeviceClassId] = kasaSwitch200PowerActionPowerParamTypeId; } DevicePluginTPLink::~DevicePluginTPLink() @@ -84,19 +103,30 @@ void DevicePluginTPLink::discoverDevices(DeviceDiscoveryInfo *info) } QVariantMap properties = jsonDoc.toVariant().toMap(); QVariantMap sysInfo = properties.value("system").toMap().value("get_sysinfo").toMap(); - if (sysInfo.value("type").toString() == "IOT.SMARTPLUGSWITCH") { - DeviceDescriptor descriptor(kasaPlugDeviceClassId, sysInfo.value("alias").toString(), sysInfo.value("dev_name").toString()); - Param idParam = Param(kasaPlugDeviceIdParamTypeId, sysInfo.value("deviceId").toString()); + qCWarning(dcTplink()) << qUtf8Printable(jsonDoc.toJson(QJsonDocument::Indented)); + + QRegExp modelFilter; + if (info->deviceClassId() == kasaPlug100DeviceClassId) { + modelFilter = QRegExp("(HS100|HS103|HS105|KP100).*"); + } else if (info->deviceClassId() == kasaPlug110DeviceClassId) { + modelFilter = QRegExp("HS110.*"); + } else if (info->deviceClassId() == kasaSwitch200DeviceClassId) { + modelFilter = QRegExp("HS200.*"); + } + QString model = sysInfo.value("model").toString(); + + if (modelFilter.exactMatch(model)) { + DeviceDescriptor descriptor(info->deviceClassId(), sysInfo.value("alias").toString(), sysInfo.value("dev_name").toString()); + Param idParam = Param(m_idParamTypesMap.value(info->deviceClassId()), sysInfo.value("deviceId").toString()); descriptor.setParams(ParamList() << idParam); Device *existingDevice = myDevices().findByParams(ParamList() << idParam); if (existingDevice) { descriptor.setDeviceId(existingDevice->id()); } info->addDeviceDescriptor(descriptor); - } else { - qCWarning(dcTplink()) << "Unhandled device type:" << sysInfo.value("type").toString(); + qCWarning(dcTplink()) << "Ignoring not matching device type:\n" << qUtf8Printable(jsonDoc.toJson(QJsonDocument::Indented)); } } @@ -137,7 +167,7 @@ void DevicePluginTPLink::setupDevice(DeviceSetupInfo *info) } QVariantMap properties = jsonDoc.toVariant().toMap(); QVariantMap sysInfo = properties.value("system").toMap().value("get_sysinfo").toMap(); - if (info->device()->paramValue(kasaPlugDeviceIdParamTypeId).toString() == sysInfo.value("deviceId").toString()) { + if (info->device()->paramValue(m_idParamTypesMap.value(info->device()->deviceClassId())).toString() == sysInfo.value("deviceId").toString()) { qCDebug(dcTplink()) << "Found device at" << senderAddress; connectToDevice(info->device(), senderAddress); @@ -213,11 +243,12 @@ void DevicePluginTPLink::executeAction(DeviceActionInfo *info) QVariantMap map; QVariantMap systemMap; QVariantMap powerMap; - powerMap.insert("state", info->action().param(kasaPlugPowerActionPowerParamTypeId).value().toBool() ? 1 : 0); + ParamTypeId powerActionParamTypeId = m_powerActionParamTypesMap.value(info->device()->deviceClassId()); + powerMap.insert("state", info->action().param(powerActionParamTypeId).value().toBool() ? 1 : 0); systemMap.insert("set_relay_state", powerMap); map.insert("system", systemMap); -// qCDebug(dcTplink()) << "Executing action" << qUtf8Printable(QJsonDocument::fromVariant(map).toJson(QJsonDocument::Compact)); + qCDebug(dcTplink()) << "Executing action" << qUtf8Printable(QJsonDocument::fromVariant(map).toJson(QJsonDocument::Compact)); QByteArray payload = encryptPayload(QJsonDocument::fromVariant(map).toJson(QJsonDocument::Compact)); QByteArray data; @@ -277,7 +308,8 @@ void DevicePluginTPLink::connectToDevice(Device *device, const QHostAddress &add connect(socket, &QTcpSocket::connected, device, [this, device, address] () { qCDebug(dcTplink()) << "Connected to device" << address; - device->setStateValue(kasaPlugConnectedStateTypeId, true); + StateTypeId connectedStateTypeId = m_connectedStateTypesMap.value(device->deviceClassId()); + device->setStateValue(connectedStateTypeId, true); fetchState(device); }); @@ -317,7 +349,7 @@ void DevicePluginTPLink::connectToDevice(Device *device, const QHostAddress &add socket->disconnectFromHost(); return; } -// qCDebug(dcTplink()) << "Socket data received" << qUtf8Printable(jsonDoc.toJson()); + qCDebug(dcTplink()) << "Socket data received" << qUtf8Printable(jsonDoc.toJson()); QVariantMap map = jsonDoc.toVariant().toMap(); if (map.contains("system")) { @@ -333,7 +365,8 @@ void DevicePluginTPLink::connectToDevice(Device *device, const QHostAddress &add } if (systemMap.contains("get_sysinfo")) { int relayState = systemMap.value("get_sysinfo").toMap().value("relay_state").toInt(); - device->setStateValue(kasaPlugPowerStateTypeId, relayState == 1 ? true : false); + StateTypeId powerStateTypeId = m_powerStatetTypesMap.value(device->deviceClassId()); + device->setStateValue(powerStateTypeId, relayState == 1 ? true : false); QString alias = systemMap.value("get_sysinfo").toMap().value("alias").toString(); if (device->name() != alias) { @@ -349,12 +382,14 @@ void DevicePluginTPLink::connectToDevice(Device *device, const QHostAddress &add 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 - double oldValue = device->stateValue(kasaPlugCurrentPowerStateTypeId).toDouble(); + StateTypeId currentPowerStateTypeId = m_currentPowerStatetTypesMap.value(device->deviceClassId()); + double oldValue = device->stateValue(currentPowerStateTypeId).toDouble(); double newValue = emeterMap.value("get_realtime").toMap().value("power_mw").toDouble() / 1000; if (qAbs(oldValue - newValue) > 0.1) { - device->setStateValue(kasaPlugCurrentPowerStateTypeId, newValue); + device->setStateValue(currentPowerStateTypeId, newValue); } - device->setStateValue(kasaPlugTotalEnergyConsumedStateTypeId, emeterMap.value("get_realtime").toMap().value("total_wh").toDouble() / 1000); + StateTypeId totalEnergyConsumedStateTypeId = m_totalEnergyConsumedStatetTypesMap.value(device->deviceClassId()); + device->setStateValue(totalEnergyConsumedStateTypeId, emeterMap.value("get_realtime").toMap().value("total_wh").toDouble() / 1000); } } @@ -369,7 +404,8 @@ void DevicePluginTPLink::connectToDevice(Device *device, const QHostAddress &add // Putting active job back to queue m_jobQueue[device].prepend(m_pendingJobs.take(device)); } - device->setStateValue(kasaPlugConnectedStateTypeId, false); + StateTypeId connectedStateTypeId = m_connectedStateTypesMap.value(device->deviceClassId()); + device->setStateValue(connectedStateTypeId, false); QTimer::singleShot(500, device, [this, device, address]() {connectToDevice(device, address);}); }); @@ -391,7 +427,7 @@ void DevicePluginTPLink::fetchState(Device *device, DeviceActionInfo *info) getRealTime.insert("get_realtime", QVariant()); map.insert("emeter", getRealTime); QByteArray plaintext = QJsonDocument::fromVariant(map).toJson(QJsonDocument::Compact); -// qCDebug(dcTplink()) << "Fetching device state"; + qCDebug(dcTplink()) << "Fetching device state"; QByteArray payload = encryptPayload(plaintext); QByteArray data; QDataStream stream(&data, QIODevice::ReadWrite); diff --git a/tplink/deviceplugintplink.h b/tplink/deviceplugintplink.h index 9380325b..2e762f21 100644 --- a/tplink/deviceplugintplink.h +++ b/tplink/deviceplugintplink.h @@ -85,6 +85,13 @@ private: QHash m_inputBuffers; PluginTimer *m_timer = nullptr; + + QHash m_idParamTypesMap; + QHash m_connectedStateTypesMap; + QHash m_powerStatetTypesMap; + QHash m_currentPowerStatetTypesMap; + QHash m_totalEnergyConsumedStatetTypesMap; + QHash m_powerActionParamTypesMap; }; #endif // DEVICEPLUGINANEL_H diff --git a/tplink/deviceplugintplink.json b/tplink/deviceplugintplink.json index 1f8f67f5..d5ba73ed 100644 --- a/tplink/deviceplugintplink.json +++ b/tplink/deviceplugintplink.json @@ -8,10 +8,47 @@ "displayName": "tp-link", "id": "8603b6cf-52ec-4481-aca2-f29ebd6cd8a8", "deviceClasses": [ + { + "id": "48f981ba-3836-4810-9744-a349088f4545", + "name": "kasaPlug100", + "displayName": "Kasa Smart Wi-Fi Plug (HS100/HS103/HS105/KP100)", + "createMethods": ["discovery"], + "interfaces": [ "powersocket", "connectable" ], + "paramTypes": [ + { + "id": "7c7a4d88-6c7e-4981-b4f2-090976c0c9bb", + "name": "id", + "displayName": "ID", + "type": "QString", + "defaultValue": "" + } + ], + "stateTypes": [ + { + "id": "79bcdd81-2e9d-4312-a4a7-85f808d046ef", + "name": "connected", + "displayName": "Connected", + "displayNameEvent": "Connected changed", + "type": "bool", + "defaultValue": false, + "cached": false + }, + { + "id": "a8991ea0-89f0-477b-97fb-414dd7d185b3", + "name": "power", + "displayName": "Power", + "displayNameEvent": "Turned on or off", + "displayNameAction": "Turn on or off", + "type": "bool", + "defaultValue": false, + "writable": true + } + ] + }, { "id": "32830124-9efb-4614-8227-ee269b1889b0", - "name": "kasaPlug", - "displayName": "Kasa Smart Wi-Fi Plug", + "name": "kasaPlug110", + "displayName": "Kasa Smart Wi-Fi Plug With Energy Monitoring (HS110)", "createMethods": ["discovery"], "interfaces": [ "powersocket", "extendedsmartmeterconsumer", "connectable" ], "paramTypes": [ @@ -62,6 +99,43 @@ "defaultValue": 0 } ] + }, + { + "id": "d527e576-d65e-4ae6-ae43-c89b594fb4c1", + "name": "kasaSwitch200", + "displayName": "Kasa Smart Wi-Fi Light Switch (HS200)", + "createMethods": ["discovery"], + "interfaces": [ "light", "connectable" ], + "paramTypes": [ + { + "id": "fe989b2f-034e-4615-8a47-4a8aa775ed99", + "name": "id", + "displayName": "ID", + "type": "QString", + "defaultValue": "" + } + ], + "stateTypes": [ + { + "id": "8792b3d1-f83d-44c3-b649-249a935d1eb4", + "name": "connected", + "displayName": "Connected", + "displayNameEvent": "Connected changed", + "type": "bool", + "defaultValue": false, + "cached": false + }, + { + "id": "3b0daf6c-ba04-4ff1-a381-685c869665b1", + "name": "power", + "displayName": "Power", + "displayNameEvent": "Turned on or off", + "displayNameAction": "Turn on or off", + "type": "bool", + "defaultValue": false, + "writable": true + } + ] } ] } diff --git a/tplink/translations/024ff2e3-30df-44a1-9c8d-63cc416f1fb8-de.ts b/tplink/translations/024ff2e3-30df-44a1-9c8d-63cc416f1fb8-de.ts index 021cf521..b4709767 100644 --- a/tplink/translations/024ff2e3-30df-44a1-9c8d-63cc416f1fb8-de.ts +++ b/tplink/translations/024ff2e3-30df-44a1-9c8d-63cc416f1fb8-de.ts @@ -4,22 +4,22 @@ DevicePluginTPLink - + An error happened sending the discovery to the network. Beim Durchsuchen des Netzwerks ist ein Fehler aufgetreten. - + An error happened finding the device in the network. Beim Suchen des Geräts ist ein Fehler aufgetreten. - + The device could not be found on the network. Das Gerät konnte nicht im Netzwerk gefunden werden. - + Error sending command to the network. Der Befehl konnte nicht ins Netzwerk gesendet werden. @@ -27,89 +27,155 @@ tplink - - + + + + + + Connected - The name of the ParamType (DeviceClass: kasaPlug, EventType: connected, ID: {b66825ec-9f1b-48da-af18-f36913291c0e}) + The name of the ParamType (DeviceClass: kasaSwitch200, EventType: connected, ID: {8792b3d1-f83d-44c3-b649-249a935d1eb4}) ---------- -The name of the StateType ({b66825ec-9f1b-48da-af18-f36913291c0e}) of DeviceClass kasaPlug +The name of the StateType ({8792b3d1-f83d-44c3-b649-249a935d1eb4}) of DeviceClass kasaSwitch200 +---------- +The name of the ParamType (DeviceClass: kasaPlug110, EventType: connected, ID: {b66825ec-9f1b-48da-af18-f36913291c0e}) +---------- +The name of the StateType ({b66825ec-9f1b-48da-af18-f36913291c0e}) of DeviceClass kasaPlug110 +---------- +The name of the ParamType (DeviceClass: kasaPlug100, EventType: connected, ID: {79bcdd81-2e9d-4312-a4a7-85f808d046ef}) +---------- +The name of the StateType ({79bcdd81-2e9d-4312-a4a7-85f808d046ef}) of DeviceClass kasaPlug100 Verbunden - + + + Connected changed - The name of the EventType ({b66825ec-9f1b-48da-af18-f36913291c0e}) of DeviceClass kasaPlug + The name of the EventType ({8792b3d1-f83d-44c3-b649-249a935d1eb4}) of DeviceClass kasaSwitch200 +---------- +The name of the EventType ({b66825ec-9f1b-48da-af18-f36913291c0e}) of DeviceClass kasaPlug110 +---------- +The name of the EventType ({79bcdd81-2e9d-4312-a4a7-85f808d046ef}) of DeviceClass kasaPlug100 Verbunden/getrennt - - + + Current power consumption - The name of the ParamType (DeviceClass: kasaPlug, EventType: currentPower, ID: {ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) + The name of the ParamType (DeviceClass: kasaPlug110, EventType: currentPower, ID: {ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) ---------- -The name of the StateType ({ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) of DeviceClass kasaPlug +The name of the StateType ({ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) of DeviceClass kasaPlug110 Aktueller Energieverbrauch - + Current power consumption changed - The name of the EventType ({ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) of DeviceClass kasaPlug + The name of the EventType ({ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) of DeviceClass kasaPlug110 Aktueller Energieverbrauch geändert - + + + ID - The name of the ParamType (DeviceClass: kasaPlug, Type: device, ID: {de3238f7-fe94-440d-b212-61cd4e221b50}) + The name of the ParamType (DeviceClass: kasaSwitch200, Type: device, ID: {fe989b2f-034e-4615-8a47-4a8aa775ed99}) +---------- +The name of the ParamType (DeviceClass: kasaPlug110, Type: device, ID: {de3238f7-fe94-440d-b212-61cd4e221b50}) +---------- +The name of the ParamType (DeviceClass: kasaPlug100, Type: device, ID: {7c7a4d88-6c7e-4981-b4f2-090976c0c9bb}) ID - - Kasa Smart Wi-Fi Plug - The name of the DeviceClass ({32830124-9efb-4614-8227-ee269b1889b0}) - Kasa Smart Wi-Fi Plug + + Kasa Smart Wi-Fi Light Switch (HS200) + The name of the DeviceClass ({d527e576-d65e-4ae6-ae43-c89b594fb4c1}) + Kasa Smart Wi-Fi Lichtschalter (HS200) - - - + + Kasa Smart Wi-Fi Plug (HS100/HS103/HS105/KP100) + The name of the DeviceClass ({48f981ba-3836-4810-9744-a349088f4545}) + Kasa Smart WLAN-Steckdose (HS100/HS103/HS105/KP100) + + + + Kasa Smart Wi-Fi Plug With Energy Monitoring (HS110) + The name of the DeviceClass ({32830124-9efb-4614-8227-ee269b1889b0}) + Kasa Smart WLAN-Steckdose mit Verbrauchsanzeige (HS110) + + + + + + + + + + + Power - The name of the ParamType (DeviceClass: kasaPlug, ActionType: power, ID: {f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) + The name of the ParamType (DeviceClass: kasaSwitch200, ActionType: power, ID: {3b0daf6c-ba04-4ff1-a381-685c869665b1}) ---------- -The name of the ParamType (DeviceClass: kasaPlug, EventType: power, ID: {f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) +The name of the ParamType (DeviceClass: kasaSwitch200, EventType: power, ID: {3b0daf6c-ba04-4ff1-a381-685c869665b1}) ---------- -The name of the StateType ({f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) of DeviceClass kasaPlug +The name of the StateType ({3b0daf6c-ba04-4ff1-a381-685c869665b1}) of DeviceClass kasaSwitch200 +---------- +The name of the ParamType (DeviceClass: kasaPlug110, ActionType: power, ID: {f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) +---------- +The name of the ParamType (DeviceClass: kasaPlug110, EventType: power, ID: {f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) +---------- +The name of the StateType ({f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) of DeviceClass kasaPlug110 +---------- +The name of the ParamType (DeviceClass: kasaPlug100, ActionType: power, ID: {a8991ea0-89f0-477b-97fb-414dd7d185b3}) +---------- +The name of the ParamType (DeviceClass: kasaPlug100, EventType: power, ID: {a8991ea0-89f0-477b-97fb-414dd7d185b3}) +---------- +The name of the StateType ({a8991ea0-89f0-477b-97fb-414dd7d185b3}) of DeviceClass kasaPlug100 Eingeschaltet - - + + Total energy consumed - The name of the ParamType (DeviceClass: kasaPlug, EventType: totalEnergyConsumed, ID: {a3533121-69ee-44fd-8394-13373e8f960e}) + The name of the ParamType (DeviceClass: kasaPlug110, EventType: totalEnergyConsumed, ID: {a3533121-69ee-44fd-8394-13373e8f960e}) ---------- -The name of the StateType ({a3533121-69ee-44fd-8394-13373e8f960e}) of DeviceClass kasaPlug +The name of the StateType ({a3533121-69ee-44fd-8394-13373e8f960e}) of DeviceClass kasaPlug110 Gesamter Energieverbrauch - + Total energy consumed changed - The name of the EventType ({a3533121-69ee-44fd-8394-13373e8f960e}) of DeviceClass kasaPlug + The name of the EventType ({a3533121-69ee-44fd-8394-13373e8f960e}) of DeviceClass kasaPlug110 Gesamter Energieverbrauch geändert - + + + Turn on or off - The name of the ActionType ({f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) of DeviceClass kasaPlug + The name of the ActionType ({3b0daf6c-ba04-4ff1-a381-685c869665b1}) of DeviceClass kasaSwitch200 +---------- +The name of the ActionType ({f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) of DeviceClass kasaPlug110 +---------- +The name of the ActionType ({a8991ea0-89f0-477b-97fb-414dd7d185b3}) of DeviceClass kasaPlug100 Ein- ausschalten - + + + Turned on or off - The name of the EventType ({f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) of DeviceClass kasaPlug + The name of the EventType ({3b0daf6c-ba04-4ff1-a381-685c869665b1}) of DeviceClass kasaSwitch200 +---------- +The name of the EventType ({f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) of DeviceClass kasaPlug110 +---------- +The name of the EventType ({a8991ea0-89f0-477b-97fb-414dd7d185b3}) of DeviceClass kasaPlug100 Ein- ausgeschaltet - - + + tp-link The name of the vendor ({8603b6cf-52ec-4481-aca2-f29ebd6cd8a8}) ---------- diff --git a/tplink/translations/024ff2e3-30df-44a1-9c8d-63cc416f1fb8-en_US.ts b/tplink/translations/024ff2e3-30df-44a1-9c8d-63cc416f1fb8-en_US.ts index 07a42fc9..255c481d 100644 --- a/tplink/translations/024ff2e3-30df-44a1-9c8d-63cc416f1fb8-en_US.ts +++ b/tplink/translations/024ff2e3-30df-44a1-9c8d-63cc416f1fb8-en_US.ts @@ -4,22 +4,22 @@ DevicePluginTPLink - + An error happened sending the discovery to the network. - + An error happened finding the device in the network. - + The device could not be found on the network. - + Error sending command to the network. @@ -27,89 +27,155 @@ tplink - - + + + + + + Connected - The name of the ParamType (DeviceClass: kasaPlug, EventType: connected, ID: {b66825ec-9f1b-48da-af18-f36913291c0e}) + The name of the ParamType (DeviceClass: kasaSwitch200, EventType: connected, ID: {8792b3d1-f83d-44c3-b649-249a935d1eb4}) ---------- -The name of the StateType ({b66825ec-9f1b-48da-af18-f36913291c0e}) of DeviceClass kasaPlug +The name of the StateType ({8792b3d1-f83d-44c3-b649-249a935d1eb4}) of DeviceClass kasaSwitch200 +---------- +The name of the ParamType (DeviceClass: kasaPlug110, EventType: connected, ID: {b66825ec-9f1b-48da-af18-f36913291c0e}) +---------- +The name of the StateType ({b66825ec-9f1b-48da-af18-f36913291c0e}) of DeviceClass kasaPlug110 +---------- +The name of the ParamType (DeviceClass: kasaPlug100, EventType: connected, ID: {79bcdd81-2e9d-4312-a4a7-85f808d046ef}) +---------- +The name of the StateType ({79bcdd81-2e9d-4312-a4a7-85f808d046ef}) of DeviceClass kasaPlug100 - + + + Connected changed - The name of the EventType ({b66825ec-9f1b-48da-af18-f36913291c0e}) of DeviceClass kasaPlug - - - - - - Current power consumption - The name of the ParamType (DeviceClass: kasaPlug, EventType: currentPower, ID: {ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) + The name of the EventType ({8792b3d1-f83d-44c3-b649-249a935d1eb4}) of DeviceClass kasaSwitch200 ---------- -The name of the StateType ({ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) of DeviceClass kasaPlug +The name of the EventType ({b66825ec-9f1b-48da-af18-f36913291c0e}) of DeviceClass kasaPlug110 +---------- +The name of the EventType ({79bcdd81-2e9d-4312-a4a7-85f808d046ef}) of DeviceClass kasaPlug100 - + + + Current power consumption + The name of the ParamType (DeviceClass: kasaPlug110, EventType: currentPower, ID: {ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) +---------- +The name of the StateType ({ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) of DeviceClass kasaPlug110 + + + + Current power consumption changed - The name of the EventType ({ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) of DeviceClass kasaPlug + The name of the EventType ({ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) of DeviceClass kasaPlug110 - + + + ID - The name of the ParamType (DeviceClass: kasaPlug, Type: device, ID: {de3238f7-fe94-440d-b212-61cd4e221b50}) + The name of the ParamType (DeviceClass: kasaSwitch200, Type: device, ID: {fe989b2f-034e-4615-8a47-4a8aa775ed99}) +---------- +The name of the ParamType (DeviceClass: kasaPlug110, Type: device, ID: {de3238f7-fe94-440d-b212-61cd4e221b50}) +---------- +The name of the ParamType (DeviceClass: kasaPlug100, Type: device, ID: {7c7a4d88-6c7e-4981-b4f2-090976c0c9bb}) - - Kasa Smart Wi-Fi Plug + + Kasa Smart Wi-Fi Light Switch (HS200) + The name of the DeviceClass ({d527e576-d65e-4ae6-ae43-c89b594fb4c1}) + + + + + Kasa Smart Wi-Fi Plug (HS100/HS103/HS105/KP100) + The name of the DeviceClass ({48f981ba-3836-4810-9744-a349088f4545}) + + + + + Kasa Smart Wi-Fi Plug With Energy Monitoring (HS110) The name of the DeviceClass ({32830124-9efb-4614-8227-ee269b1889b0}) - - - + + + + + + + + + Power - The name of the ParamType (DeviceClass: kasaPlug, ActionType: power, ID: {f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) + The name of the ParamType (DeviceClass: kasaSwitch200, ActionType: power, ID: {3b0daf6c-ba04-4ff1-a381-685c869665b1}) ---------- -The name of the ParamType (DeviceClass: kasaPlug, EventType: power, ID: {f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) +The name of the ParamType (DeviceClass: kasaSwitch200, EventType: power, ID: {3b0daf6c-ba04-4ff1-a381-685c869665b1}) ---------- -The name of the StateType ({f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) of DeviceClass kasaPlug +The name of the StateType ({3b0daf6c-ba04-4ff1-a381-685c869665b1}) of DeviceClass kasaSwitch200 +---------- +The name of the ParamType (DeviceClass: kasaPlug110, ActionType: power, ID: {f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) +---------- +The name of the ParamType (DeviceClass: kasaPlug110, EventType: power, ID: {f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) +---------- +The name of the StateType ({f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) of DeviceClass kasaPlug110 +---------- +The name of the ParamType (DeviceClass: kasaPlug100, ActionType: power, ID: {a8991ea0-89f0-477b-97fb-414dd7d185b3}) +---------- +The name of the ParamType (DeviceClass: kasaPlug100, EventType: power, ID: {a8991ea0-89f0-477b-97fb-414dd7d185b3}) +---------- +The name of the StateType ({a8991ea0-89f0-477b-97fb-414dd7d185b3}) of DeviceClass kasaPlug100 - - + + Total energy consumed - The name of the ParamType (DeviceClass: kasaPlug, EventType: totalEnergyConsumed, ID: {a3533121-69ee-44fd-8394-13373e8f960e}) + The name of the ParamType (DeviceClass: kasaPlug110, EventType: totalEnergyConsumed, ID: {a3533121-69ee-44fd-8394-13373e8f960e}) ---------- -The name of the StateType ({a3533121-69ee-44fd-8394-13373e8f960e}) of DeviceClass kasaPlug +The name of the StateType ({a3533121-69ee-44fd-8394-13373e8f960e}) of DeviceClass kasaPlug110 - + Total energy consumed changed - The name of the EventType ({a3533121-69ee-44fd-8394-13373e8f960e}) of DeviceClass kasaPlug + The name of the EventType ({a3533121-69ee-44fd-8394-13373e8f960e}) of DeviceClass kasaPlug110 - + + + Turn on or off - The name of the ActionType ({f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) of DeviceClass kasaPlug + The name of the ActionType ({3b0daf6c-ba04-4ff1-a381-685c869665b1}) of DeviceClass kasaSwitch200 +---------- +The name of the ActionType ({f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) of DeviceClass kasaPlug110 +---------- +The name of the ActionType ({a8991ea0-89f0-477b-97fb-414dd7d185b3}) of DeviceClass kasaPlug100 - + + + Turned on or off - The name of the EventType ({f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) of DeviceClass kasaPlug + The name of the EventType ({3b0daf6c-ba04-4ff1-a381-685c869665b1}) of DeviceClass kasaSwitch200 +---------- +The name of the EventType ({f1a5fda4-87a6-46f6-9499-16811a5f4f4d}) of DeviceClass kasaPlug110 +---------- +The name of the EventType ({a8991ea0-89f0-477b-97fb-414dd7d185b3}) of DeviceClass kasaPlug100 - - + + tp-link The name of the vendor ({8603b6cf-52ec-4481-aca2-f29ebd6cd8a8}) ----------