Merge PR #510: New Plugin: myStrom
commit
27a2ba1104
|
|
@ -532,6 +532,15 @@ Description: nymea.io plugin for a generic MQTT client
|
|||
This package will install a generic MQTT client plugin for nymea.io
|
||||
|
||||
|
||||
Package: nymea-plugin-mystrom
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends},
|
||||
${misc:Depends},
|
||||
nymea-plugins-translations,
|
||||
Description: nymea.io plugin for myStrom devices
|
||||
This package will add support for myStrom devices to nymea.
|
||||
|
||||
|
||||
Package: nymea-plugin-neatobotvac
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends},
|
||||
|
|
@ -1308,6 +1317,7 @@ Depends: nymea-plugin-anel,
|
|||
nymea-plugin-mailnotification,
|
||||
nymea-plugin-texasinstruments,
|
||||
nymea-plugin-telegram,
|
||||
nymea-plugin-mystrom,
|
||||
nymea-plugin-nanoleaf,
|
||||
nymea-plugin-neatobotvac,
|
||||
nymea-plugin-netatmo,
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
usr/lib/@DEB_HOST_MULTIARCH@/nymea/plugins/libnymea_integrationpluginmystrom.so
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
# myStrom
|
||||
|
||||
This plugin adds support for the following myStrom devices.
|
||||
|
||||
* myStrom WiFi Switch (CH and EU version)
|
||||
|
||||
In order to use such a device, it must be connected to the same network as nymea.
|
||||
|
||||
To connect the device to the WiFi, connect to the my-XXXXXX WiFi network and open
|
||||
the configuration web interface at http://192.168.254.1. Alternatively the
|
||||
"+" button may be pressed for 2 seconds to use WPS setup with a WPS capable WiFi router.
|
||||
|
||||
To factory reset the device, hold the "+" button for 10 seconds.
|
||||
|
||||
|
|
@ -0,0 +1,212 @@
|
|||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
*
|
||||
* Copyright 2013 - 2021, nymea GmbH
|
||||
* Contact: contact@nymea.io
|
||||
*
|
||||
* This file is part of nymea.
|
||||
* This project including source code and documentation is protected by
|
||||
* copyright law, and remains the property of nymea GmbH. All rights, including
|
||||
* reproduction, publication, editing and translation, are reserved. The use of
|
||||
* this project is subject to the terms of a license agreement to be concluded
|
||||
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
|
||||
* under https://nymea.io/license
|
||||
*
|
||||
* GNU Lesser General Public License Usage
|
||||
* Alternatively, this project may be redistributed and/or modified under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free
|
||||
* Software Foundation; version 3. This project is distributed in the hope that
|
||||
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this project. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* For any further details and any questions please contact us under
|
||||
* contact@nymea.io or see our FAQ/Licensing Information on
|
||||
* https://nymea.io/license/faq
|
||||
*
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include "integrationpluginmystrom.h"
|
||||
#include "plugininfo.h"
|
||||
|
||||
#include <network/networkaccessmanager.h>
|
||||
#include <plugintimer.h>
|
||||
#include <platform/platformzeroconfcontroller.h>
|
||||
#include <network/zeroconf/zeroconfservicebrowser.h>
|
||||
|
||||
#include <QNetworkReply>
|
||||
#include <QJsonDocument>
|
||||
#include <QTimer>
|
||||
#include <QUrlQuery>
|
||||
|
||||
// API doc:
|
||||
// https://api.mystrom.ch/
|
||||
|
||||
IntegrationPluginMyStrom::IntegrationPluginMyStrom()
|
||||
{
|
||||
}
|
||||
|
||||
IntegrationPluginMyStrom::~IntegrationPluginMyStrom()
|
||||
{
|
||||
}
|
||||
|
||||
void IntegrationPluginMyStrom::init()
|
||||
{
|
||||
m_zeroConf = hardwareManager()->zeroConfController()->createServiceBrowser("_hap._tcp");
|
||||
}
|
||||
|
||||
void IntegrationPluginMyStrom::discoverThings(ThingDiscoveryInfo *info)
|
||||
{
|
||||
foreach (const ZeroConfServiceEntry &entry, m_zeroConf->serviceEntries()) {
|
||||
qCDebug(dcMyStrom()) << "Found myStrom device:" << entry;
|
||||
if (entry.protocol() != QAbstractSocket::IPv4Protocol) {
|
||||
continue;
|
||||
}
|
||||
ThingDescriptor descriptor(switchThingClassId, entry.name(), entry.hostAddress().toString());
|
||||
descriptor.setParams({Param(switchThingIdParamTypeId, entry.txt("id"))});
|
||||
info->addThingDescriptor(descriptor);
|
||||
}
|
||||
info->finish(Thing::ThingErrorNoError);
|
||||
}
|
||||
|
||||
void IntegrationPluginMyStrom::setupThing(ThingSetupInfo *info)
|
||||
{
|
||||
QUrl infoUrl = composeUrl(info->thing(), "/api/v1/info");
|
||||
if (infoUrl.isEmpty()) {
|
||||
info->finish(Thing::ThingErrorHardwareNotAvailable, QT_TR_NOOP("Device cannot be found on the network."));
|
||||
return;
|
||||
}
|
||||
|
||||
QNetworkRequest request(infoUrl);
|
||||
QNetworkReply *reply = hardwareManager()->networkManager()->get(request);
|
||||
connect(reply, &QNetworkReply::finished, info, [=](){
|
||||
if (reply->error() != QNetworkReply::NoError) {
|
||||
qCWarning(dcMyStrom()) << "Error fetching device info from myStrom device" << info->thing()->name();
|
||||
info->finish(Thing::ThingErrorHardwareFailure, QT_TR_NOOP("Error fetching device information from myStrom device."));
|
||||
return;
|
||||
}
|
||||
QByteArray data = reply->readAll();
|
||||
QJsonParseError error;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &error);
|
||||
if (error.error != QJsonParseError::NoError) {
|
||||
qCWarning(dcMyStrom()) << "Error parsing JSON from myStrom device:" << error.errorString() << data;
|
||||
info->finish(Thing::ThingErrorHardwareFailure, QT_TR_NOOP("Error processing response from myStrom device."));
|
||||
return;
|
||||
}
|
||||
|
||||
qCDebug(dcMyStrom()) << "Device info:" << qUtf8Printable(jsonDoc.toJson(QJsonDocument::Indented));
|
||||
info->finish(Thing::ThingErrorNoError);
|
||||
|
||||
info->thing()->setStateValue("connected", true);
|
||||
|
||||
pluginStorage()->beginGroup(info->thing()->id().toString());
|
||||
pluginStorage()->setValue("cachedAddress", infoUrl.host());
|
||||
pluginStorage()->endGroup();
|
||||
});
|
||||
}
|
||||
|
||||
void IntegrationPluginMyStrom::postSetupThing(Thing *thing)
|
||||
{
|
||||
Q_UNUSED(thing)
|
||||
if (!m_pluginTimer) {
|
||||
m_pluginTimer = hardwareManager()->pluginTimerManager()->registerTimer(1);
|
||||
connect(m_pluginTimer, &PluginTimer::timeout, this, [=]{
|
||||
|
||||
foreach (Thing *thing, myThings().filterByThingClassId(switchThingClassId)) {
|
||||
QUrl url = composeUrl(thing, "/report");
|
||||
QNetworkReply *reply = hardwareManager()->networkManager()->get(QNetworkRequest(url));
|
||||
connect(reply, &QNetworkReply::finished, thing, [reply, thing](){
|
||||
if (reply->error() != QNetworkReply::NoError) {
|
||||
qCWarning(dcMyStrom()) << "Error fetching report from myStrom device:" << reply->errorString();
|
||||
thing->setStateValue(switchConnectedStateTypeId, false);
|
||||
return;
|
||||
}
|
||||
QByteArray data = reply->readAll();
|
||||
QJsonParseError error;
|
||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &error);
|
||||
if (error.error != QJsonParseError::NoError) {
|
||||
qCWarning(dcMyStrom()) << "Error parsing JSON from myStrom device" << thing->name() << data;
|
||||
return;
|
||||
}
|
||||
thing->setStateValue(switchConnectedStateTypeId, true);
|
||||
qCDebug(dcMyStrom()) << "Switch report:" << qUtf8Printable(jsonDoc.toJson(QJsonDocument::Indented));
|
||||
QVariantMap map = jsonDoc.toVariant().toMap();
|
||||
thing->setStateValue(switchPowerStateTypeId, map.value("relay").toBool());
|
||||
thing->setStateValue(switchCurrentPowerStateTypeId, map.value("power").toDouble());
|
||||
double totalEnergyConsumed = thing->stateValue(switchTotalEnergyConsumedStateTypeId).toDouble();
|
||||
double Ws = map.value("Ws").toDouble();
|
||||
double kWh = Ws / 1000 / 3600;
|
||||
totalEnergyConsumed += kWh;
|
||||
thing->setStateValue(switchTotalEnergyConsumedStateTypeId, totalEnergyConsumed);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void IntegrationPluginMyStrom::thingRemoved(Thing *thing)
|
||||
{
|
||||
Q_UNUSED(thing)
|
||||
if (myThings().isEmpty() && m_pluginTimer) {
|
||||
hardwareManager()->pluginTimerManager()->unregisterTimer(m_pluginTimer);
|
||||
m_pluginTimer = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void IntegrationPluginMyStrom::executeAction(ThingActionInfo *info)
|
||||
{
|
||||
if (info->thing()->thingClassId() == switchThingClassId) {
|
||||
if (info->action().actionTypeId() == switchPowerActionTypeId) {
|
||||
bool power = info->action().paramValue(switchPowerActionPowerParamTypeId).toBool();
|
||||
QUrl powerUrl = composeUrl(info->thing(), "/relay");
|
||||
QUrlQuery query;
|
||||
query.addQueryItem("state", power ? "1" : "0");
|
||||
powerUrl.setQuery(query);
|
||||
|
||||
QNetworkReply *reply = hardwareManager()->networkManager()->get(QNetworkRequest(powerUrl));
|
||||
connect(reply, &QNetworkReply::finished, this, [info, reply, power](){
|
||||
if (reply->error() != QNetworkReply::NoError) {
|
||||
qCWarning(dcMyStrom()) << "Error switching myStrom switch:" << reply->error() << reply->errorString();
|
||||
info->finish(Thing::ThingErrorHardwareFailure, QT_TR_NOOP("Error communicating with myStrom device."));
|
||||
return;
|
||||
}
|
||||
|
||||
qCDebug(dcMyStrom()) << "Power action executed";
|
||||
info->thing()->setStateValue(switchPowerStateTypeId, power);
|
||||
info->finish(Thing::ThingErrorNoError);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QUrl IntegrationPluginMyStrom::composeUrl(Thing *thing, const QString &path)
|
||||
{
|
||||
QHostAddress address;
|
||||
foreach (const ZeroConfServiceEntry &entry, m_zeroConf->serviceEntries()) {
|
||||
if (entry.protocol() == QAbstractSocket::IPv4Protocol && entry.txt("id") == thing->paramValue(switchThingIdParamTypeId).toString()) {
|
||||
address = entry.hostAddress();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (address.isNull()) {
|
||||
pluginStorage()->beginGroup(thing->id().toString());
|
||||
address = pluginStorage()->value("cachedAddress").toString();
|
||||
pluginStorage()->endGroup();
|
||||
}
|
||||
|
||||
if (address.isNull()) {
|
||||
qCWarning(dcMyStrom()) << "Error finding myStrom device in the network";
|
||||
return QUrl();
|
||||
}
|
||||
|
||||
QUrl url;
|
||||
url.setScheme("http");
|
||||
url.setHost(address.toString());
|
||||
url.setPath(path);
|
||||
return url;
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
*
|
||||
* Copyright 2013 - 2021, nymea GmbH
|
||||
* Contact: contact@nymea.io
|
||||
*
|
||||
* This file is part of nymea.
|
||||
* This project including source code and documentation is protected by
|
||||
* copyright law, and remains the property of nymea GmbH. All rights, including
|
||||
* reproduction, publication, editing and translation, are reserved. The use of
|
||||
* this project is subject to the terms of a license agreement to be concluded
|
||||
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
|
||||
* under https://nymea.io/license
|
||||
*
|
||||
* GNU Lesser General Public License Usage
|
||||
* Alternatively, this project may be redistributed and/or modified under the
|
||||
* terms of the GNU Lesser General Public License as published by the Free
|
||||
* Software Foundation; version 3. This project is distributed in the hope that
|
||||
* it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this project. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* For any further details and any questions please contact us under
|
||||
* contact@nymea.io or see our FAQ/Licensing Information on
|
||||
* https://nymea.io/license/faq
|
||||
*
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#ifndef INTEGRATIONPLUGINMYSTROM_H
|
||||
#define INTEGRATIONPLUGINMYSTROM_H
|
||||
|
||||
#include "integrations/integrationplugin.h"
|
||||
|
||||
#include <QUrlQuery>
|
||||
|
||||
class PluginTimer;
|
||||
class ZeroConfServiceBrowser;
|
||||
|
||||
class IntegrationPluginMyStrom: public IntegrationPlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
Q_PLUGIN_METADATA(IID "io.nymea.IntegrationPlugin" FILE "integrationpluginmystrom.json")
|
||||
Q_INTERFACES(IntegrationPlugin)
|
||||
|
||||
public:
|
||||
explicit IntegrationPluginMyStrom();
|
||||
~IntegrationPluginMyStrom();
|
||||
|
||||
void init() override;
|
||||
void discoverThings(ThingDiscoveryInfo *info) override;
|
||||
void setupThing(ThingSetupInfo *info) override;
|
||||
void postSetupThing(Thing *thing) override;
|
||||
void thingRemoved(Thing *thing) override;
|
||||
void executeAction(ThingActionInfo *info) override;
|
||||
|
||||
private:
|
||||
QUrl composeUrl(Thing *thing, const QString &path);
|
||||
|
||||
ZeroConfServiceBrowser *m_zeroConf = nullptr;
|
||||
PluginTimer *m_pluginTimer = nullptr;
|
||||
};
|
||||
|
||||
#endif // INTEGRATIONPLUGINMYSTROM_H
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
{
|
||||
"name": "myStrom",
|
||||
"displayName": "myStrom",
|
||||
"id": "fc7f1a24-42a8-45ce-9ffb-136292eb0164",
|
||||
"vendors": [
|
||||
{
|
||||
"name": "myStrom",
|
||||
"displayName": "myStrom",
|
||||
"id": "884b2875-759a-4373-aca4-6a8cb7220f85",
|
||||
"thingClasses": [
|
||||
{
|
||||
"id": "27dc49c0-58cd-4d5f-a95b-0c437dd828cf",
|
||||
"name": "switch",
|
||||
"displayName": "myStrom WiFi Switch",
|
||||
"createMethods": ["discovery"],
|
||||
"interfaces": [ "powersocket", "smartmeterconsumer", "wirelessconnectable" ],
|
||||
"paramTypes": [
|
||||
{
|
||||
"id": "44144c44-a447-4cee-b77a-18454a779a9c",
|
||||
"name": "id",
|
||||
"displayName": "ID",
|
||||
"type": "QString",
|
||||
"defaultValue": ""
|
||||
}
|
||||
],
|
||||
"stateTypes": [
|
||||
{
|
||||
"id": "8864755d-4e6a-4e45-b2db-3eb5d4f3d53d",
|
||||
"name": "connected",
|
||||
"displayName": "Connected",
|
||||
"displayNameEvent": "Connected changed",
|
||||
"type": "bool",
|
||||
"defaultValue": false,
|
||||
"cached": false
|
||||
},
|
||||
{
|
||||
"id": "71723ea3-d2a1-48c4-9a2c-532d938e5022",
|
||||
"name": "signalStrength",
|
||||
"displayName": "Signal strength",
|
||||
"displayNameEvent": "Signal strength changed",
|
||||
"type": "uint",
|
||||
"unit": "Percentage",
|
||||
"minValue": 0,
|
||||
"maxValue": 100,
|
||||
"defaultValue": 100
|
||||
},
|
||||
{
|
||||
"id": "717f2593-1544-483b-aac8-f9800b299e4d",
|
||||
"name": "power",
|
||||
"displayName": "Power",
|
||||
"displayNameEvent": "Turned on or off",
|
||||
"displayNameAction": "Turn on or off",
|
||||
"type": "bool",
|
||||
"defaultValue": false,
|
||||
"writable": true,
|
||||
"ioType": "digitalOutput"
|
||||
},
|
||||
{
|
||||
"id": "a3533121-69ee-44fd-8394-13373e8f960e",
|
||||
"name": "totalEnergyConsumed",
|
||||
"displayName": "Total energy consumed",
|
||||
"displayNameEvent": "Total energy consumed changed",
|
||||
"type": "double",
|
||||
"unit": "KiloWattHour",
|
||||
"defaultValue": 0
|
||||
},
|
||||
{
|
||||
"id": "ccb52b57-5800-4f03-b7fa-f36dcebe1d4e",
|
||||
"name": "currentPower",
|
||||
"displayName": "Current power consumption",
|
||||
"displayNameEvent": "Current power consumption changed",
|
||||
"type": "double",
|
||||
"unit": "Watt",
|
||||
"defaultValue": 0,
|
||||
"filter": "adaptive"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"title": "myStrom",
|
||||
"tagline": "myStrom",
|
||||
"icon": "mystrom.png",
|
||||
"stability": "consumer",
|
||||
"offline": true,
|
||||
"technologies": [
|
||||
"network"
|
||||
],
|
||||
"categories": [
|
||||
"sensor",
|
||||
"socket"
|
||||
]
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 2.4 KiB |
|
|
@ -0,0 +1,9 @@
|
|||
include(../plugins.pri)
|
||||
|
||||
QT += network
|
||||
|
||||
SOURCES += \
|
||||
integrationpluginmystrom.cpp \
|
||||
|
||||
HEADERS += \
|
||||
integrationpluginmystrom.h \
|
||||
|
|
@ -0,0 +1,135 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="de">
|
||||
<context>
|
||||
<name>IntegrationPluginMyStrom</name>
|
||||
<message>
|
||||
<location filename="../integrationpluginmystrom.cpp" line="78"/>
|
||||
<source>Device cannot be found on the network.</source>
|
||||
<translation>Das Gerät konnte nicht im Netzwerk gefunden werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationpluginmystrom.cpp" line="87"/>
|
||||
<source>Error fetching device information from myStrom device.</source>
|
||||
<translation>Fehler beim Empfangen der Geräteinformationen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationpluginmystrom.cpp" line="95"/>
|
||||
<source>Error processing response from myStrom device.</source>
|
||||
<translation>Fehler beim Bearbeiten der Antwort des myStrom Gerätes.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationpluginmystrom.cpp" line="170"/>
|
||||
<source>Error communicating with myStrom device.</source>
|
||||
<translation>Fehler in der Kommunikation zum myStrom Gerät.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>myStrom</name>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="46"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="49"/>
|
||||
<source>Connected</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: switch, EventType: connected, ID: {8864755d-4e6a-4e45-b2db-3eb5d4f3d53d})
|
||||
----------
|
||||
The name of the StateType ({8864755d-4e6a-4e45-b2db-3eb5d4f3d53d}) of ThingClass switch</extracomment>
|
||||
<translation>Verbunden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="52"/>
|
||||
<source>Connected changed</source>
|
||||
<extracomment>The name of the EventType ({8864755d-4e6a-4e45-b2db-3eb5d4f3d53d}) of ThingClass switch</extracomment>
|
||||
<translation>Verbindung hergestellt oder getrennt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="55"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="58"/>
|
||||
<source>Current power consumption</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: switch, EventType: currentPower, ID: {ccb52b57-5800-4f03-b7fa-f36dcebe1d4e})
|
||||
----------
|
||||
The name of the StateType ({ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) of ThingClass switch</extracomment>
|
||||
<translation>Aktueller Stromverbrauch</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="61"/>
|
||||
<source>Current power consumption changed</source>
|
||||
<extracomment>The name of the EventType ({ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) of ThingClass switch</extracomment>
|
||||
<translation>Aktueller Stromverbrauch geändert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="64"/>
|
||||
<source>ID</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: switch, Type: thing, ID: {44144c44-a447-4cee-b77a-18454a779a9c})</extracomment>
|
||||
<translation>ID</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="67"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="70"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="73"/>
|
||||
<source>Power</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: switch, ActionType: power, ID: {717f2593-1544-483b-aac8-f9800b299e4d})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: switch, EventType: power, ID: {717f2593-1544-483b-aac8-f9800b299e4d})
|
||||
----------
|
||||
The name of the StateType ({717f2593-1544-483b-aac8-f9800b299e4d}) of ThingClass switch</extracomment>
|
||||
<translation>An</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="76"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="79"/>
|
||||
<source>Signal strength</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: switch, EventType: signalStrength, ID: {71723ea3-d2a1-48c4-9a2c-532d938e5022})
|
||||
----------
|
||||
The name of the StateType ({71723ea3-d2a1-48c4-9a2c-532d938e5022}) of ThingClass switch</extracomment>
|
||||
<translation>Signalstärke</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="82"/>
|
||||
<source>Signal strength changed</source>
|
||||
<extracomment>The name of the EventType ({71723ea3-d2a1-48c4-9a2c-532d938e5022}) of ThingClass switch</extracomment>
|
||||
<translation>Signalstärke geändert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="85"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="88"/>
|
||||
<source>Total energy consumed</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: switch, EventType: totalEnergyConsumed, ID: {a3533121-69ee-44fd-8394-13373e8f960e})
|
||||
----------
|
||||
The name of the StateType ({a3533121-69ee-44fd-8394-13373e8f960e}) of ThingClass switch</extracomment>
|
||||
<translation>Gesamtenergieverbrauch</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="91"/>
|
||||
<source>Total energy consumed changed</source>
|
||||
<extracomment>The name of the EventType ({a3533121-69ee-44fd-8394-13373e8f960e}) of ThingClass switch</extracomment>
|
||||
<translation>Gesamtenergieverbrauch geändert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="94"/>
|
||||
<source>Turn on or off</source>
|
||||
<extracomment>The name of the ActionType ({717f2593-1544-483b-aac8-f9800b299e4d}) of ThingClass switch</extracomment>
|
||||
<translation>Ein- oder ausschalten</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="97"/>
|
||||
<source>Turned on or off</source>
|
||||
<extracomment>The name of the EventType ({717f2593-1544-483b-aac8-f9800b299e4d}) of ThingClass switch</extracomment>
|
||||
<translation>Ein- oder ausgeschaltet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="100"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="103"/>
|
||||
<source>myStrom</source>
|
||||
<extracomment>The name of the vendor ({884b2875-759a-4373-aca4-6a8cb7220f85})
|
||||
----------
|
||||
The name of the plugin myStrom ({fc7f1a24-42a8-45ce-9ffb-136292eb0164})</extracomment>
|
||||
<translation>myStrom</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="106"/>
|
||||
<source>myStrom WiFi Switch</source>
|
||||
<extracomment>The name of the ThingClass ({27dc49c0-58cd-4d5f-a95b-0c437dd828cf})</extracomment>
|
||||
<translation>myStrom WiFi Switch</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
@ -0,0 +1,135 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1">
|
||||
<context>
|
||||
<name>IntegrationPluginMyStrom</name>
|
||||
<message>
|
||||
<location filename="../integrationpluginmystrom.cpp" line="78"/>
|
||||
<source>Device cannot be found on the network.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationpluginmystrom.cpp" line="87"/>
|
||||
<source>Error fetching device information from myStrom device.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationpluginmystrom.cpp" line="95"/>
|
||||
<source>Error processing response from myStrom device.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../integrationpluginmystrom.cpp" line="170"/>
|
||||
<source>Error communicating with myStrom device.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>myStrom</name>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="46"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="49"/>
|
||||
<source>Connected</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: switch, EventType: connected, ID: {8864755d-4e6a-4e45-b2db-3eb5d4f3d53d})
|
||||
----------
|
||||
The name of the StateType ({8864755d-4e6a-4e45-b2db-3eb5d4f3d53d}) of ThingClass switch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="52"/>
|
||||
<source>Connected changed</source>
|
||||
<extracomment>The name of the EventType ({8864755d-4e6a-4e45-b2db-3eb5d4f3d53d}) of ThingClass switch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="55"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="58"/>
|
||||
<source>Current power consumption</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: switch, EventType: currentPower, ID: {ccb52b57-5800-4f03-b7fa-f36dcebe1d4e})
|
||||
----------
|
||||
The name of the StateType ({ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) of ThingClass switch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="61"/>
|
||||
<source>Current power consumption changed</source>
|
||||
<extracomment>The name of the EventType ({ccb52b57-5800-4f03-b7fa-f36dcebe1d4e}) of ThingClass switch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="64"/>
|
||||
<source>ID</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: switch, Type: thing, ID: {44144c44-a447-4cee-b77a-18454a779a9c})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="67"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="70"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="73"/>
|
||||
<source>Power</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: switch, ActionType: power, ID: {717f2593-1544-483b-aac8-f9800b299e4d})
|
||||
----------
|
||||
The name of the ParamType (ThingClass: switch, EventType: power, ID: {717f2593-1544-483b-aac8-f9800b299e4d})
|
||||
----------
|
||||
The name of the StateType ({717f2593-1544-483b-aac8-f9800b299e4d}) of ThingClass switch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="76"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="79"/>
|
||||
<source>Signal strength</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: switch, EventType: signalStrength, ID: {71723ea3-d2a1-48c4-9a2c-532d938e5022})
|
||||
----------
|
||||
The name of the StateType ({71723ea3-d2a1-48c4-9a2c-532d938e5022}) of ThingClass switch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="82"/>
|
||||
<source>Signal strength changed</source>
|
||||
<extracomment>The name of the EventType ({71723ea3-d2a1-48c4-9a2c-532d938e5022}) of ThingClass switch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="85"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="88"/>
|
||||
<source>Total energy consumed</source>
|
||||
<extracomment>The name of the ParamType (ThingClass: switch, EventType: totalEnergyConsumed, ID: {a3533121-69ee-44fd-8394-13373e8f960e})
|
||||
----------
|
||||
The name of the StateType ({a3533121-69ee-44fd-8394-13373e8f960e}) of ThingClass switch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="91"/>
|
||||
<source>Total energy consumed changed</source>
|
||||
<extracomment>The name of the EventType ({a3533121-69ee-44fd-8394-13373e8f960e}) of ThingClass switch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="94"/>
|
||||
<source>Turn on or off</source>
|
||||
<extracomment>The name of the ActionType ({717f2593-1544-483b-aac8-f9800b299e4d}) of ThingClass switch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="97"/>
|
||||
<source>Turned on or off</source>
|
||||
<extracomment>The name of the EventType ({717f2593-1544-483b-aac8-f9800b299e4d}) of ThingClass switch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="100"/>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="103"/>
|
||||
<source>myStrom</source>
|
||||
<extracomment>The name of the vendor ({884b2875-759a-4373-aca4-6a8cb7220f85})
|
||||
----------
|
||||
The name of the plugin myStrom ({fc7f1a24-42a8-45ce-9ffb-136292eb0164})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build/nymea-plugins-Desktop-Debug/mystrom/plugininfo.h" line="106"/>
|
||||
<source>myStrom WiFi Switch</source>
|
||||
<extracomment>The name of the ThingClass ({27dc49c0-58cd-4d5f-a95b-0c437dd828cf})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
@ -36,6 +36,7 @@ PLUGIN_DIRS = \
|
|||
lifx \
|
||||
mailnotification \
|
||||
mqttclient \
|
||||
mystrom \
|
||||
neatobotvac \
|
||||
nanoleaf \
|
||||
netatmo \
|
||||
|
|
|
|||
Loading…
Reference in New Issue