diff --git a/debian/control b/debian/control
index b92711ac..ab990035 100644
--- a/debian/control
+++ b/debian/control
@@ -476,6 +476,14 @@ Description: nymea.io plugin for lifx
.
This package will install the nymea.io plugin for lifx
+Package: nymea-plugin-mecelectronics
+Architecture: any
+Depends: ${shlibs:Depends},
+ ${misc:Depends},
+ nymea-plugins-translations,
+Description: nymea.io plugin for mec electronics devices
+ This package will add support for the mec meter to nymea.
+
Package: nymea-plugin-mailnotification
Architecture: any
diff --git a/debian/nymea-plugin-mecelectronics.install.in b/debian/nymea-plugin-mecelectronics.install.in
new file mode 100644
index 00000000..589ff78f
--- /dev/null
+++ b/debian/nymea-plugin-mecelectronics.install.in
@@ -0,0 +1 @@
+usr/lib/@DEB_HOST_MULTIARCH@/nymea/plugins/libnymea_integrationpluginmecelectronics.so
diff --git a/mecelectronics/README.md b/mecelectronics/README.md
new file mode 100644
index 00000000..e31793ea
--- /dev/null
+++ b/mecelectronics/README.md
@@ -0,0 +1,6 @@
+# mec electronics
+
+This plugin adds support for the mecMeter energy meter by mec electronics.
+
+More information at: https://www.mec.at/produkte/#mecMeter
+
diff --git a/mecelectronics/integrationpluginmecelectronics.cpp b/mecelectronics/integrationpluginmecelectronics.cpp
new file mode 100644
index 00000000..2078ac35
--- /dev/null
+++ b/mecelectronics/integrationpluginmecelectronics.cpp
@@ -0,0 +1,364 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+*
+* Copyright 2013 - 2020, 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 .
+*
+* 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 "integrationpluginmecelectronics.h"
+#include "plugininfo.h"
+
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+
+
+IntegrationPluginMecMeter::IntegrationPluginMecMeter()
+{
+}
+
+IntegrationPluginMecMeter::~IntegrationPluginMecMeter()
+{
+}
+
+void IntegrationPluginMecMeter::init()
+{
+ m_zeroConf = hardwareManager()->zeroConfController()->createServiceBrowser("_http._tcp");
+
+ connect(m_zeroConf, &ZeroConfServiceBrowser::serviceEntryAdded, this, [=](const ZeroConfServiceEntry &entry){
+ if (myThings().findByParams({Param(mecMeterThingIdParamTypeId, entry.name())})) {
+ pluginStorage()->beginGroup(entry.name());
+ pluginStorage()->setValue("cachedAddress", entry.hostAddress().toString());
+ pluginStorage()->endGroup();
+ }
+ });
+}
+
+void IntegrationPluginMecMeter::discoverThings(ThingDiscoveryInfo *info)
+{
+ foreach (const ZeroConfServiceEntry &entry, m_zeroConf->serviceEntries()) {
+ if (entry.protocol() != QAbstractSocket::IPv4Protocol) {
+ continue;
+ }
+ qCDebug(dcMecElectronics()) << "zeroconf entry:" << entry;
+ QRegExp match("mec[A-Z0-9]{12}");
+ if (match.exactMatch(entry.name())) {
+ qCDebug(dcMecElectronics()) << "Found mec meter!";
+ ThingDescriptor descriptor(mecMeterThingClassId, entry.name(), entry.hostAddress().toString());
+ descriptor.setParams({Param(mecMeterThingIdParamTypeId, entry.name())});
+ info->addThingDescriptor(descriptor);
+ }
+ }
+ info->finish(Thing::ThingErrorNoError);
+}
+
+void IntegrationPluginMecMeter::startPairing(ThingPairingInfo *info)
+{
+ info->finish(Thing::ThingErrorNoError, QT_TR_NOOP("Please enter your login credentials for the mecMeter."));
+}
+
+void IntegrationPluginMecMeter::confirmPairing(ThingPairingInfo *info, const QString &username, const QString &secret)
+{
+ QString meterId = info->params().paramValue(mecMeterThingIdParamTypeId).toString();
+ QNetworkRequest request = composeRequest(meterId, username, secret);
+ QNetworkReply *reply = hardwareManager()->networkManager()->get(request);
+ connect(reply, &QNetworkReply::finished, info, [=](){
+ if (reply->error() != QNetworkReply::NoError) {
+ qCWarning(dcMecElectronics()) << "Error connecting to mecmeter:" << reply->error() << reply->errorString();
+ info->finish(Thing::ThingErrorHardwareFailure);
+ }
+
+ pluginStorage()->beginGroup(meterId);
+ pluginStorage()->setValue("username", username);
+ pluginStorage()->setValue("password", secret);
+ pluginStorage()->endGroup();
+
+ info->finish(Thing::ThingErrorNoError);
+ });
+
+}
+
+void IntegrationPluginMecMeter::setupThing(ThingSetupInfo *info)
+{
+ info->finish(Thing::ThingErrorNoError);
+}
+
+void IntegrationPluginMecMeter::postSetupThing(Thing *thing)
+{
+ Q_UNUSED(thing)
+
+ if (!m_timer) {
+ m_timer = hardwareManager()->pluginTimerManager()->registerTimer(1);
+ connect(m_timer, &PluginTimer::timeout, this, [this](){
+ foreach (Thing *thing, myThings()) {
+ refresh(thing);
+ }
+ });
+ }
+}
+
+void IntegrationPluginMecMeter::thingRemoved(Thing *thing)
+{
+ Q_UNUSED(thing)
+ if (myThings().isEmpty() && m_timer) {
+ hardwareManager()->pluginTimerManager()->unregisterTimer(m_timer);
+ m_timer = nullptr;
+ }
+}
+
+void IntegrationPluginMecMeter::refresh(Thing *thing)
+{
+ QString meterId = thing->paramValue(mecMeterThingIdParamTypeId).toString();
+ pluginStorage()->beginGroup(meterId);
+ QString username = pluginStorage()->value("username").toString();
+ QString password = pluginStorage()->value("password").toString();
+ pluginStorage()->endGroup();
+ QNetworkRequest request = composeRequest(thing->paramValue(mecMeterThingIdParamTypeId).toString(), username, password);
+
+ QNetworkReply *reply = hardwareManager()->networkManager()->get(request);
+ connect(reply, &QNetworkReply::finished, reply, &QNetworkReply::deleteLater);
+ connect(reply, &QNetworkReply::finished, thing, [thing, reply](){
+ if (reply->error() != QNetworkReply::NoError) {
+ qCWarning(dcMecElectronics()) << "Failed to refresh meter data. The reply returned with error" << reply->errorString();
+ thing->setStateValue(mecMeterConnectedStateTypeId, false);
+ return;
+ }
+
+ QByteArray data = reply->readAll();
+ QJsonParseError error;
+ QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &error);
+
+ if (error.error != QJsonParseError::NoError) {
+ qCWarning(dcMecElectronics()) << "Failed to parse meter data" << data << ":" << error.errorString();
+ return;
+ }
+
+ thing->setStateValue(mecMeterConnectedStateTypeId, true);
+
+ QVariantMap dataMap = jsonDoc.toVariant().toMap();
+ qCDebug(dcMecElectronics()) << qUtf8Printable(jsonDoc.toJson(QJsonDocument::Indented));
+
+ /*
+ {
+ "EFAA": 0,
+ "EFAB": 0,
+ "EFAC": 0,
+ "EFAF": 0,
+ "EFAH": 0,
+ "EFAT": 0,
+ "EFBF": 0,
+ "EFBH": 0,
+ "EFCF": 0,
+ "EFCH": 0,
+ "EFRA": 0,
+ "EFRB": 0,
+ "EFRC": 0.026041666666666668,
+ "EFRT": 0.026041666666666668,
+ "EFSA": 0,
+ "EFSB": 0,
+ "EFSC": 1193.7760416666667,
+ "EFST": 841.9010416666667,
+ "EFTF": 0,
+ "EFTH": 0,
+ "EMT": 1.9661458333333335,
+ "ERA1": 0,
+ "ERA2": 0,
+ "ERA3": 0,
+ "ERA4": 0,
+ "ERAA": 0,
+ "ERAB": 0,
+ "ERAC": 11.848958333333334,
+ "ERAF": 0,
+ "ERAH": 0,
+ "ERAT": 11.848958333333334,
+ "ERB1": 0,
+ "ERB2": 0,
+ "ERB3": 0,
+ "ERB4": 0,
+ "ERBF": 0,
+ "ERBH": 0,
+ "ERC1": 0,
+ "ERC2": 0.026041666666666668,
+ "ERC3": 1.7447916666666667,
+ "ERC4": 0.9895833333333334,
+ "ERCF": 11.822916666666668,
+ "ERCH": 0,
+ "ERRA": 0,
+ "ERRB": 0,
+ "ERRC": 2.734375,
+ "ERRT": 2.734375,
+ "ERSA": 0,
+ "ERSB": 0,
+ "ERSC": 2341.588541666667,
+ "ERST": 2693.463541666667,
+ "ERT1": 0,
+ "ERT2": 0.026041666666666668,
+ "ERT3": 2.265625,
+ "ERT4": 0.46875,
+ "ERTF": 11.822916666666668,
+ "ERTH": 0,
+ "ESA": 0,
+ "ESB": 0,
+ "ESC": 3535.3645833333335,
+ "EST": 3535.3645833333335,
+ "EVT": 2355.7552083333335,
+ "F": 49.99,
+ "IA": 0.007428385416666667,
+ "IAA": 0,
+ "IAB": 0,
+ "IAC": 30.200000000000003,
+ "IADC": -6.40869140625e-05,
+ "IB": 0.03445963541666667,
+ "IBDC": -0.00044403076171874997,
+ "IC": 0.012877604166666667,
+ "ICDC": 0.000157928466796875,
+ "IN": 3.429166666666667,
+ "IN0": 0.034,
+ "PA": 0,
+ "PAF": 0,
+ "PAH": 0,
+ "PB": 0,
+ "PBF": 0,
+ "PBH": 0,
+ "PC": -0.01953125,
+ "PCF": -0.016276041666666668,
+ "PCH": 0,
+ "PFA": 0,
+ "PFB": 0,
+ "PFC": -0.008,
+ "PFT": -0.007,
+ "PT": -0.013020833333333334,
+ "PTF": -0.013020833333333334,
+ "PTH": 0,
+ "QA": 0,
+ "QB": 0,
+ "QC": -0.009765625,
+ "QT": 0,
+ "SA": 0,
+ "SAMPLES": 13385877,
+ "SB": 0,
+ "SC": 2.98828125,
+ "ST": 2.9817708333333335,
+ "STATUS": 372,
+ "T": 36,
+ "THIA": 0,
+ "THIB": 0,
+ "THIC": 40.81666666666667,
+ "THUA": 0,
+ "THUB": 0,
+ "THUC": 2.5250000000000004,
+ "TIME": 4283480878,
+ "UAA": 0,
+ "UAB": 0,
+ "UAC": 0,
+ "VA": 0,
+ "VAB": 0,
+ "VB": 0,
+ "VBC": 231.947734375,
+ "VC": 231.947734375,
+ "VCA": 231.947734375,
+ "VPT": 154.63182291666666,
+ "VT": 77.31591145833333
+ }
+ */
+
+
+ // Total energy / power
+ thing->setStateValue(mecMeterTotalEnergyConsumedStateTypeId, dataMap.value("EFAT").toDouble() / 1000.0);
+ thing->setStateValue(mecMeterTotalEnergyProducedStateTypeId, dataMap.value("ERAT").toDouble() / 1000.0);
+ thing->setStateValue(mecMeterCurrentPowerStateTypeId, dataMap.value("PT").toDouble());
+// thing->setStateValue(mecMeterTotalForwardeReactiveEnergyStateTypeId, dataMap.value("EFRT").toDouble());
+
+ // Voltage
+ thing->setStateValue(mecMeterVoltagePhaseAStateTypeId, dataMap.value("VA").toDouble());
+ thing->setStateValue(mecMeterVoltagePhaseBStateTypeId, dataMap.value("VB").toDouble());
+ thing->setStateValue(mecMeterVoltagePhaseCStateTypeId, dataMap.value("VC").toDouble());
+
+ // Current
+ thing->setStateValue(mecMeterCurrentPhaseAStateTypeId, dataMap.value("IA").toDouble());
+ thing->setStateValue(mecMeterCurrentPhaseBStateTypeId, dataMap.value("IB").toDouble());
+ thing->setStateValue(mecMeterCurrentPhaseCStateTypeId, dataMap.value("IC").toDouble());
+
+ // Power
+ thing->setStateValue(mecMeterCurrentPowerPhaseAStateTypeId, dataMap.value("PA").toDouble());
+ thing->setStateValue(mecMeterCurrentPowerPhaseBStateTypeId, dataMap.value("PB").toDouble());
+ thing->setStateValue(mecMeterCurrentPowerPhaseCStateTypeId, dataMap.value("PC").toDouble());
+
+ // Frequency
+// thing->setStateValue(mecMeterFrequencyStateTypeId, dataMap.value("F").toDouble());
+
+ // Energy consumed
+ thing->setStateValue(mecMeterEnergyConsumedPhaseAStateTypeId, dataMap.value("EFAA").toDouble() / 1000.0);
+ thing->setStateValue(mecMeterEnergyConsumedPhaseBStateTypeId, dataMap.value("EFAB").toDouble() / 1000.0);
+ thing->setStateValue(mecMeterEnergyConsumedPhaseCStateTypeId, dataMap.value("EFAC").toDouble() / 1000.0);
+
+ // Energy produced
+ thing->setStateValue(mecMeterEnergyProducedPhaseAStateTypeId, dataMap.value("ERAA").toDouble() / 1000.0);
+ thing->setStateValue(mecMeterEnergyProducedPhaseBStateTypeId, dataMap.value("ERAB").toDouble() / 1000.0);
+ thing->setStateValue(mecMeterEnergyProducedPhaseCStateTypeId, dataMap.value("ERAC").toDouble() / 1000.0);
+ });
+}
+
+QNetworkRequest IntegrationPluginMecMeter::composeRequest(const QString &meterId, const QString &username, const QString &password)
+{
+ QHostAddress address;
+ foreach (const ZeroConfServiceEntry &entry, m_zeroConf->serviceEntries()) {
+ if (entry.protocol() == QAbstractSocket::IPv4Protocol && entry.name() == meterId) {
+ address = entry.hostAddress();
+ break;
+ }
+ }
+
+ if (address.isNull()) {
+ pluginStorage()->beginGroup(meterId);
+ address = pluginStorage()->value("cachedAddress").toString();
+ pluginStorage()->endGroup();
+ }
+
+ if (address.isNull()) {
+ qCWarning(dcMecElectronics()) << "Error finding mecMeter device in the network";
+ return QNetworkRequest();
+ }
+
+ QUrl url;
+ url.setScheme("http");
+ url.setHost(address.toString());
+ url.setPath("/wizard/public/api/measurements");
+
+ QNetworkRequest request(url);
+ QString concatenated = username + ":" + password;
+ QByteArray data = concatenated.toLocal8Bit().toBase64();
+ QString headerData = "Basic " + data;
+ request.setRawHeader("Authorization", headerData.toLocal8Bit());
+
+ return request;
+}
+
diff --git a/mecelectronics/integrationpluginmecelectronics.h b/mecelectronics/integrationpluginmecelectronics.h
new file mode 100644
index 00000000..c0534e78
--- /dev/null
+++ b/mecelectronics/integrationpluginmecelectronics.h
@@ -0,0 +1,70 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+*
+* Copyright 2013 - 2020, 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 .
+*
+* 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 INTEGRATIONPLUGINMECMETER_H
+#define INTEGRATIONPLUGINMECMETER_H
+
+#include "integrations/integrationplugin.h"
+
+class PluginTimer;
+class ZeroConfServiceBrowser;
+
+#include
+
+class IntegrationPluginMecMeter: public IntegrationPlugin
+{
+ Q_OBJECT
+
+ Q_PLUGIN_METADATA(IID "io.nymea.IntegrationPlugin" FILE "integrationpluginmecelectronics.json")
+ Q_INTERFACES(IntegrationPlugin)
+
+public:
+ explicit IntegrationPluginMecMeter();
+ ~IntegrationPluginMecMeter();
+
+ void init() override;
+ void discoverThings(ThingDiscoveryInfo *info) override;
+ void startPairing(ThingPairingInfo *info) override;
+ void confirmPairing(ThingPairingInfo *info, const QString &username, const QString &secret) override;
+ void setupThing(ThingSetupInfo *info) override;
+ void postSetupThing(Thing *thing) override;
+ void thingRemoved(Thing *thing) override;
+
+private slots:
+ void refresh(Thing *thing);
+
+private:
+ QNetworkRequest composeRequest(const QString &meterId, const QString &userId, const QString &password);
+
+ ZeroConfServiceBrowser *m_zeroConf = nullptr;
+ PluginTimer *m_timer = nullptr;
+};
+
+#endif // INTEGRATIONPLUGINMECMETER_H
diff --git a/mecelectronics/integrationpluginmecelectronics.json b/mecelectronics/integrationpluginmecelectronics.json
new file mode 100644
index 00000000..965f80d8
--- /dev/null
+++ b/mecelectronics/integrationpluginmecelectronics.json
@@ -0,0 +1,204 @@
+{
+ "name": "mecElectronics",
+ "displayName": "mecElectronics",
+ "id": "5853701d-a335-4282-892f-f23670269505",
+ "vendors": [
+ {
+ "name": "mecElectronics",
+ "displayName": "mec electronics",
+ "id": "09b121c5-29c5-456c-b30a-07c2662c763c",
+ "thingClasses": [
+ {
+ "id": "a26a874d-aa3f-4531-bf9f-1c03ab70aa62",
+ "name": "mecMeter",
+ "displayName": "mecMeter",
+ "createMethods": ["discovery"],
+ "setupMethod": "userandpassword",
+ "interfaces": [ "energymeter", "connectable" ],
+ "paramTypes": [
+ {
+ "id": "00f4fac0-0c27-4132-95cd-841869a8b122",
+ "name": "id",
+ "displayName": "ID",
+ "type": "QString",
+ "defaultValue": ""
+ }
+ ],
+ "stateTypes": [
+ {
+ "id": "825fbdf8-cf4b-4122-a5f6-b99cff182154",
+ "name": "connected",
+ "displayName": "Connected",
+ "displayNameEvent": "Connected changed",
+ "type": "bool",
+ "defaultValue": false,
+ "cached": false
+ },
+ {
+ "id": "ffcf6c7c-e1bc-48d3-adf6-142864c200bd",
+ "name": "currentPower",
+ "displayName": "Current power consumption",
+ "displayNameEvent": "Current power consumption changed",
+ "type": "double",
+ "unit": "Watt",
+ "defaultValue": 0
+ },
+ {
+ "id": "2c36c0ce-1935-4fc7-84ad-b4e22335d7f7",
+ "name": "totalEnergyConsumed",
+ "displayName": "Total consumed energy",
+ "displayNameEvent": "Total consumed energy changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0
+ },
+ {
+ "id": "317ca9f1-92a7-4b7e-bd16-6df6e364ef61",
+ "name": "totalEnergyProduced",
+ "displayName": "Total returned energy",
+ "displayNameEvent": "Total returned energy changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0
+ },
+ {
+ "id": "a2900841-5817-4971-b5a2-cca3e1ab6c1d",
+ "name": "currentPhaseA",
+ "displayName": "Phase A current",
+ "displayNameEvent": "Phase A current changed",
+ "type": "double",
+ "unit": "Ampere",
+ "defaultValue": 0
+ },
+ {
+ "id": "0aebf62a-fc9c-4457-8168-6a40c0227337",
+ "name": "voltagePhaseA",
+ "displayName": "Phase A voltage",
+ "displayNameEvent": "Phase A voltage changed",
+ "type": "double",
+ "unit": "Volt",
+ "defaultValue": 0
+ },
+ {
+ "id": "777ca8ed-623f-4aaa-8aaf-a0f3746ffc4d",
+ "name": "currentPowerPhaseA",
+ "displayName": "Phase A power",
+ "displayNameEvent": "Phase A power changed",
+ "type": "double",
+ "unit": "Watt",
+ "defaultValue": 0
+ },
+ {
+ "id": "ae04176e-387e-4876-8e0c-32f8fa224595",
+ "name": "energyConsumedPhaseA",
+ "displayName": "Phase A consumed energy",
+ "displayNameEvent": "Phase A consumed energy changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0
+ },
+ {
+ "id": "b454057d-8e97-4f96-b0c3-7e4cbf4044c0",
+ "name": "energyProducedPhaseA",
+ "displayName": "Phase A returned energy",
+ "displayNameEvent": "Phase A returned energy changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0
+ },
+ {
+ "id": "90fc6894-044a-45ec-83f4-f38134f35018",
+ "name": "currentPhaseB",
+ "displayName": "Phase B current",
+ "displayNameEvent": "Phase B current changed",
+ "type": "double",
+ "unit": "Ampere",
+ "defaultValue": 0
+ },
+ {
+ "id": "4495030f-23e9-4013-ab00-d95fc8c2eb21",
+ "name": "voltagePhaseB",
+ "displayName": "Phase B voltage",
+ "displayNameEvent": "Phase B voltage changed",
+ "type": "double",
+ "unit": "Volt",
+ "defaultValue": 0
+ },
+ {
+ "id": "632998c0-28c5-4986-acaa-1a40b77efc9d",
+ "name": "currentPowerPhaseB",
+ "displayName": "Phase B power",
+ "displayNameEvent": "Phase B power changed",
+ "type": "double",
+ "unit": "Watt",
+ "defaultValue": 0
+ },
+ {
+ "id": "e20911fb-e0a6-4fe6-a9f7-ecbb1ebb8ee7",
+ "name": "energyConsumedPhaseB",
+ "displayName": "Phase B consumed energy",
+ "displayNameEvent": "Phase B consumed energy changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0
+ },
+ {
+ "id": "a0407475-e770-4a74-b4b4-34b458a26801",
+ "name": "energyProducedPhaseB",
+ "displayName": "Phase B returned energy",
+ "displayNameEvent": "Phase B returned energy changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0
+ },
+ {
+ "id": "ec0ed738-0e79-4db9-83df-746ec18d25f3",
+ "name": "currentPhaseC",
+ "displayName": "Phase C current",
+ "displayNameEvent": "Phase C current changed",
+ "type": "double",
+ "unit": "Ampere",
+ "defaultValue": 0
+ },
+ {
+ "id": "fb8f5094-6d6b-44b7-b244-67614a7a06ff",
+ "name": "voltagePhaseC",
+ "displayName": "Phase C voltage",
+ "displayNameEvent": "Phase C voltage changed",
+ "type": "double",
+ "unit": "Volt",
+ "defaultValue": 0
+ },
+ {
+ "id": "333909a9-f28e-4e8a-a377-ff32fb80ae82",
+ "name": "currentPowerPhaseC",
+ "displayName": "Phase C power",
+ "displayNameEvent": "Phase C power changed",
+ "type": "double",
+ "unit": "Watt",
+ "defaultValue": 0
+ },
+ {
+ "id": "ef43baf0-2f20-44d5-930d-528107c53cac",
+ "name": "energyConsumedPhaseC",
+ "displayName": "Phase C consumed energy",
+ "displayNameEvent": "Phase C consumed energy changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0
+ },
+ {
+ "id": "6b08f113-204c-45c9-9b1a-118416aefcd7",
+ "name": "energyProducedPhaseC",
+ "displayName": "Phase C returned energy",
+ "displayNameEvent": "Phase C returned energy changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/mecelectronics/mecelectronics.png b/mecelectronics/mecelectronics.png
new file mode 100644
index 00000000..2f88aab8
Binary files /dev/null and b/mecelectronics/mecelectronics.png differ
diff --git a/mecelectronics/mecelectronics.pro b/mecelectronics/mecelectronics.pro
new file mode 100644
index 00000000..a9554e76
--- /dev/null
+++ b/mecelectronics/mecelectronics.pro
@@ -0,0 +1,10 @@
+include(../plugins.pri)
+
+QT += network
+
+SOURCES += \
+ integrationpluginmecelectronics.cpp \
+
+HEADERS += \
+ integrationpluginmecelectronics.h \
+
diff --git a/mecelectronics/meta.json b/mecelectronics/meta.json
new file mode 100644
index 00000000..e50949c4
--- /dev/null
+++ b/mecelectronics/meta.json
@@ -0,0 +1,13 @@
+{
+ "title": "mecElectronics",
+ "tagline": "mecMeter",
+ "icon": "mecelectronics.png",
+ "stability": "community",
+ "offline": true,
+ "technologies": [
+ "network"
+ ],
+ "categories": [
+ "energy",
+ ]
+}
diff --git a/mecelectronics/translations/5853701d-a335-4282-892f-f23670269505-de.ts b/mecelectronics/translations/5853701d-a335-4282-892f-f23670269505-de.ts
new file mode 100644
index 00000000..adfd7688
--- /dev/null
+++ b/mecelectronics/translations/5853701d-a335-4282-892f-f23670269505-de.ts
@@ -0,0 +1,324 @@
+
+
+
+
+ IntegrationPluginMecMeter
+
+
+ Please enter your login credentials for the mecMeter.
+ Bitte gib Deine Logindaten für das mecMeter ein.
+
+
+
+ mecElectronics
+
+
+
+ Connected
+ The name of the ParamType (ThingClass: mecMeter, EventType: connected, ID: {825fbdf8-cf4b-4122-a5f6-b99cff182154})
+----------
+The name of the StateType ({825fbdf8-cf4b-4122-a5f6-b99cff182154}) of ThingClass mecMeter
+ Verbunden
+
+
+
+ Connected changed
+ The name of the EventType ({825fbdf8-cf4b-4122-a5f6-b99cff182154}) of ThingClass mecMeter
+ Verbunden/getrennt
+
+
+
+
+ Current power consumption
+ The name of the ParamType (ThingClass: mecMeter, EventType: currentPower, ID: {ffcf6c7c-e1bc-48d3-adf6-142864c200bd})
+----------
+The name of the StateType ({ffcf6c7c-e1bc-48d3-adf6-142864c200bd}) of ThingClass mecMeter
+ Aktueller Stromverbrauch
+
+
+
+ Current power consumption changed
+ The name of the EventType ({ffcf6c7c-e1bc-48d3-adf6-142864c200bd}) of ThingClass mecMeter
+ Aktueller Stromverbrauch geändert
+
+
+
+ ID
+ The name of the ParamType (ThingClass: mecMeter, Type: thing, ID: {00f4fac0-0c27-4132-95cd-841869a8b122})
+ ID
+
+
+
+
+ Phase A consumed energy
+ The name of the ParamType (ThingClass: mecMeter, EventType: energyConsumedPhaseA, ID: {ae04176e-387e-4876-8e0c-32f8fa224595})
+----------
+The name of the StateType ({ae04176e-387e-4876-8e0c-32f8fa224595}) of ThingClass mecMeter
+ Energieverbrauch Phase A
+
+
+
+ Phase A consumed energy changed
+ The name of the EventType ({ae04176e-387e-4876-8e0c-32f8fa224595}) of ThingClass mecMeter
+ Energieverbrauch Phase A geändert
+
+
+
+
+ Phase A current
+ The name of the ParamType (ThingClass: mecMeter, EventType: currentPhaseA, ID: {a2900841-5817-4971-b5a2-cca3e1ab6c1d})
+----------
+The name of the StateType ({a2900841-5817-4971-b5a2-cca3e1ab6c1d}) of ThingClass mecMeter
+ Strom Phase A
+
+
+
+ Phase A current changed
+ The name of the EventType ({a2900841-5817-4971-b5a2-cca3e1ab6c1d}) of ThingClass mecMeter
+ Strom Phase A geändert
+
+
+
+
+ Phase A power
+ The name of the ParamType (ThingClass: mecMeter, EventType: currentPowerPhaseA, ID: {777ca8ed-623f-4aaa-8aaf-a0f3746ffc4d})
+----------
+The name of the StateType ({777ca8ed-623f-4aaa-8aaf-a0f3746ffc4d}) of ThingClass mecMeter
+ Energie Phase A
+
+
+
+ Phase A power changed
+ The name of the EventType ({777ca8ed-623f-4aaa-8aaf-a0f3746ffc4d}) of ThingClass mecMeter
+ Energie Phase A geändert
+
+
+
+
+ Phase A returned energy
+ The name of the ParamType (ThingClass: mecMeter, EventType: energyProducedPhaseA, ID: {b454057d-8e97-4f96-b0c3-7e4cbf4044c0})
+----------
+The name of the StateType ({b454057d-8e97-4f96-b0c3-7e4cbf4044c0}) of ThingClass mecMeter
+ Rückgespeiste Energie Phase A
+
+
+
+ Phase A returned energy changed
+ The name of the EventType ({b454057d-8e97-4f96-b0c3-7e4cbf4044c0}) of ThingClass mecMeter
+ Rückgespeiste Energie Phase A geändert
+
+
+
+
+ Phase A voltage
+ The name of the ParamType (ThingClass: mecMeter, EventType: voltagePhaseA, ID: {0aebf62a-fc9c-4457-8168-6a40c0227337})
+----------
+The name of the StateType ({0aebf62a-fc9c-4457-8168-6a40c0227337}) of ThingClass mecMeter
+ Spannung Phase A
+
+
+
+ Phase A voltage changed
+ The name of the EventType ({0aebf62a-fc9c-4457-8168-6a40c0227337}) of ThingClass mecMeter
+ Spannung Phase A gändert
+
+
+
+
+ Phase B consumed energy
+ The name of the ParamType (ThingClass: mecMeter, EventType: energyConsumedPhaseB, ID: {e20911fb-e0a6-4fe6-a9f7-ecbb1ebb8ee7})
+----------
+The name of the StateType ({e20911fb-e0a6-4fe6-a9f7-ecbb1ebb8ee7}) of ThingClass mecMeter
+ Energieverbrauch Phase B
+
+
+
+ Phase B consumed energy changed
+ The name of the EventType ({e20911fb-e0a6-4fe6-a9f7-ecbb1ebb8ee7}) of ThingClass mecMeter
+ Energieverbrauch Phase B geändert
+
+
+
+
+ Phase B current
+ The name of the ParamType (ThingClass: mecMeter, EventType: currentPhaseB, ID: {90fc6894-044a-45ec-83f4-f38134f35018})
+----------
+The name of the StateType ({90fc6894-044a-45ec-83f4-f38134f35018}) of ThingClass mecMeter
+ Strom Phase B
+
+
+
+ Phase B current changed
+ The name of the EventType ({90fc6894-044a-45ec-83f4-f38134f35018}) of ThingClass mecMeter
+ Strom Phase B geändert
+
+
+
+
+ Phase B power
+ The name of the ParamType (ThingClass: mecMeter, EventType: currentPowerPhaseB, ID: {632998c0-28c5-4986-acaa-1a40b77efc9d})
+----------
+The name of the StateType ({632998c0-28c5-4986-acaa-1a40b77efc9d}) of ThingClass mecMeter
+ Energie Phase B
+
+
+
+ Phase B power changed
+ The name of the EventType ({632998c0-28c5-4986-acaa-1a40b77efc9d}) of ThingClass mecMeter
+ Energie Phase B geändert
+
+
+
+
+ Phase B returned energy
+ The name of the ParamType (ThingClass: mecMeter, EventType: energyProducedPhaseB, ID: {a0407475-e770-4a74-b4b4-34b458a26801})
+----------
+The name of the StateType ({a0407475-e770-4a74-b4b4-34b458a26801}) of ThingClass mecMeter
+ Rückgespeiste Energie Phase B
+
+
+
+ Phase B returned energy changed
+ The name of the EventType ({a0407475-e770-4a74-b4b4-34b458a26801}) of ThingClass mecMeter
+ Rückgespeiste Energie Phase B geändert
+
+
+
+
+ Phase B voltage
+ The name of the ParamType (ThingClass: mecMeter, EventType: voltagePhaseB, ID: {4495030f-23e9-4013-ab00-d95fc8c2eb21})
+----------
+The name of the StateType ({4495030f-23e9-4013-ab00-d95fc8c2eb21}) of ThingClass mecMeter
+ Spannung Phase B
+
+
+
+ Phase B voltage changed
+ The name of the EventType ({4495030f-23e9-4013-ab00-d95fc8c2eb21}) of ThingClass mecMeter
+ Spannung Phase B geändert
+
+
+
+
+ Phase C consumed energy
+ The name of the ParamType (ThingClass: mecMeter, EventType: energyConsumedPhaseC, ID: {ef43baf0-2f20-44d5-930d-528107c53cac})
+----------
+The name of the StateType ({ef43baf0-2f20-44d5-930d-528107c53cac}) of ThingClass mecMeter
+ Energieverbrauch Phase C
+
+
+
+ Phase C consumed energy changed
+ The name of the EventType ({ef43baf0-2f20-44d5-930d-528107c53cac}) of ThingClass mecMeter
+ Energieverbrauch Phase C geändert
+
+
+
+
+ Phase C current
+ The name of the ParamType (ThingClass: mecMeter, EventType: currentPhaseC, ID: {ec0ed738-0e79-4db9-83df-746ec18d25f3})
+----------
+The name of the StateType ({ec0ed738-0e79-4db9-83df-746ec18d25f3}) of ThingClass mecMeter
+ Strom Phase C
+
+
+
+ Phase C current changed
+ The name of the EventType ({ec0ed738-0e79-4db9-83df-746ec18d25f3}) of ThingClass mecMeter
+ Strom Phase C geändert
+
+
+
+
+ Phase C power
+ The name of the ParamType (ThingClass: mecMeter, EventType: currentPowerPhaseC, ID: {333909a9-f28e-4e8a-a377-ff32fb80ae82})
+----------
+The name of the StateType ({333909a9-f28e-4e8a-a377-ff32fb80ae82}) of ThingClass mecMeter
+ Energie Phase C
+
+
+
+ Phase C power changed
+ The name of the EventType ({333909a9-f28e-4e8a-a377-ff32fb80ae82}) of ThingClass mecMeter
+ Energie Phase C geändert
+
+
+
+
+ Phase C returned energy
+ The name of the ParamType (ThingClass: mecMeter, EventType: energyProducedPhaseC, ID: {6b08f113-204c-45c9-9b1a-118416aefcd7})
+----------
+The name of the StateType ({6b08f113-204c-45c9-9b1a-118416aefcd7}) of ThingClass mecMeter
+ Rückgespeiste Energie Phase C
+
+
+
+ Phase C returned energy changed
+ The name of the EventType ({6b08f113-204c-45c9-9b1a-118416aefcd7}) of ThingClass mecMeter
+ Rückgespeiste Energie Phase C geändert
+
+
+
+
+ Phase C voltage
+ The name of the ParamType (ThingClass: mecMeter, EventType: voltagePhaseC, ID: {fb8f5094-6d6b-44b7-b244-67614a7a06ff})
+----------
+The name of the StateType ({fb8f5094-6d6b-44b7-b244-67614a7a06ff}) of ThingClass mecMeter
+ Spannung Phase C
+
+
+
+ Phase C voltage changed
+ The name of the EventType ({fb8f5094-6d6b-44b7-b244-67614a7a06ff}) of ThingClass mecMeter
+ Spannung Phase C geändert
+
+
+
+
+ Total consumed energy
+ The name of the ParamType (ThingClass: mecMeter, EventType: totalEnergyConsumed, ID: {2c36c0ce-1935-4fc7-84ad-b4e22335d7f7})
+----------
+The name of the StateType ({2c36c0ce-1935-4fc7-84ad-b4e22335d7f7}) of ThingClass mecMeter
+ Gesamter Energieverbrauch
+
+
+
+ Total consumed energy changed
+ The name of the EventType ({2c36c0ce-1935-4fc7-84ad-b4e22335d7f7}) of ThingClass mecMeter
+ Gesamter Energieverbrauch geändert
+
+
+
+
+ Total returned energy
+ The name of the ParamType (ThingClass: mecMeter, EventType: totalEnergyProduced, ID: {317ca9f1-92a7-4b7e-bd16-6df6e364ef61})
+----------
+The name of the StateType ({317ca9f1-92a7-4b7e-bd16-6df6e364ef61}) of ThingClass mecMeter
+ Gesamte rückgespeiste Energie
+
+
+
+ Total returned energy changed
+ The name of the EventType ({317ca9f1-92a7-4b7e-bd16-6df6e364ef61}) of ThingClass mecMeter
+ Gesamte rückgespeiste Energie geändert
+
+
+
+ mec electronics
+ The name of the vendor ({09b121c5-29c5-456c-b30a-07c2662c763c})
+ mec electronics
+
+
+
+ mecElectronics
+ The name of the plugin mecElectronics ({5853701d-a335-4282-892f-f23670269505})
+ mecElectronics
+
+
+
+ mecMeter
+ The name of the ThingClass ({a26a874d-aa3f-4531-bf9f-1c03ab70aa62})
+ mecMeter
+
+
+
diff --git a/mecelectronics/translations/5853701d-a335-4282-892f-f23670269505-en_US.ts b/mecelectronics/translations/5853701d-a335-4282-892f-f23670269505-en_US.ts
new file mode 100644
index 00000000..54680200
--- /dev/null
+++ b/mecelectronics/translations/5853701d-a335-4282-892f-f23670269505-en_US.ts
@@ -0,0 +1,324 @@
+
+
+
+
+ IntegrationPluginMecMeter
+
+
+ Please enter your login credentials for the mecMeter.
+
+
+
+
+ mecElectronics
+
+
+
+ Connected
+ The name of the ParamType (ThingClass: mecMeter, EventType: connected, ID: {825fbdf8-cf4b-4122-a5f6-b99cff182154})
+----------
+The name of the StateType ({825fbdf8-cf4b-4122-a5f6-b99cff182154}) of ThingClass mecMeter
+
+
+
+
+ Connected changed
+ The name of the EventType ({825fbdf8-cf4b-4122-a5f6-b99cff182154}) of ThingClass mecMeter
+
+
+
+
+
+ Current power consumption
+ The name of the ParamType (ThingClass: mecMeter, EventType: currentPower, ID: {ffcf6c7c-e1bc-48d3-adf6-142864c200bd})
+----------
+The name of the StateType ({ffcf6c7c-e1bc-48d3-adf6-142864c200bd}) of ThingClass mecMeter
+
+
+
+
+ Current power consumption changed
+ The name of the EventType ({ffcf6c7c-e1bc-48d3-adf6-142864c200bd}) of ThingClass mecMeter
+
+
+
+
+ ID
+ The name of the ParamType (ThingClass: mecMeter, Type: thing, ID: {00f4fac0-0c27-4132-95cd-841869a8b122})
+
+
+
+
+
+ Phase A consumed energy
+ The name of the ParamType (ThingClass: mecMeter, EventType: energyConsumedPhaseA, ID: {ae04176e-387e-4876-8e0c-32f8fa224595})
+----------
+The name of the StateType ({ae04176e-387e-4876-8e0c-32f8fa224595}) of ThingClass mecMeter
+
+
+
+
+ Phase A consumed energy changed
+ The name of the EventType ({ae04176e-387e-4876-8e0c-32f8fa224595}) of ThingClass mecMeter
+
+
+
+
+
+ Phase A current
+ The name of the ParamType (ThingClass: mecMeter, EventType: currentPhaseA, ID: {a2900841-5817-4971-b5a2-cca3e1ab6c1d})
+----------
+The name of the StateType ({a2900841-5817-4971-b5a2-cca3e1ab6c1d}) of ThingClass mecMeter
+
+
+
+
+ Phase A current changed
+ The name of the EventType ({a2900841-5817-4971-b5a2-cca3e1ab6c1d}) of ThingClass mecMeter
+
+
+
+
+
+ Phase A power
+ The name of the ParamType (ThingClass: mecMeter, EventType: currentPowerPhaseA, ID: {777ca8ed-623f-4aaa-8aaf-a0f3746ffc4d})
+----------
+The name of the StateType ({777ca8ed-623f-4aaa-8aaf-a0f3746ffc4d}) of ThingClass mecMeter
+
+
+
+
+ Phase A power changed
+ The name of the EventType ({777ca8ed-623f-4aaa-8aaf-a0f3746ffc4d}) of ThingClass mecMeter
+
+
+
+
+
+ Phase A returned energy
+ The name of the ParamType (ThingClass: mecMeter, EventType: energyProducedPhaseA, ID: {b454057d-8e97-4f96-b0c3-7e4cbf4044c0})
+----------
+The name of the StateType ({b454057d-8e97-4f96-b0c3-7e4cbf4044c0}) of ThingClass mecMeter
+
+
+
+
+ Phase A returned energy changed
+ The name of the EventType ({b454057d-8e97-4f96-b0c3-7e4cbf4044c0}) of ThingClass mecMeter
+
+
+
+
+
+ Phase A voltage
+ The name of the ParamType (ThingClass: mecMeter, EventType: voltagePhaseA, ID: {0aebf62a-fc9c-4457-8168-6a40c0227337})
+----------
+The name of the StateType ({0aebf62a-fc9c-4457-8168-6a40c0227337}) of ThingClass mecMeter
+
+
+
+
+ Phase A voltage changed
+ The name of the EventType ({0aebf62a-fc9c-4457-8168-6a40c0227337}) of ThingClass mecMeter
+
+
+
+
+
+ Phase B consumed energy
+ The name of the ParamType (ThingClass: mecMeter, EventType: energyConsumedPhaseB, ID: {e20911fb-e0a6-4fe6-a9f7-ecbb1ebb8ee7})
+----------
+The name of the StateType ({e20911fb-e0a6-4fe6-a9f7-ecbb1ebb8ee7}) of ThingClass mecMeter
+
+
+
+
+ Phase B consumed energy changed
+ The name of the EventType ({e20911fb-e0a6-4fe6-a9f7-ecbb1ebb8ee7}) of ThingClass mecMeter
+
+
+
+
+
+ Phase B current
+ The name of the ParamType (ThingClass: mecMeter, EventType: currentPhaseB, ID: {90fc6894-044a-45ec-83f4-f38134f35018})
+----------
+The name of the StateType ({90fc6894-044a-45ec-83f4-f38134f35018}) of ThingClass mecMeter
+
+
+
+
+ Phase B current changed
+ The name of the EventType ({90fc6894-044a-45ec-83f4-f38134f35018}) of ThingClass mecMeter
+
+
+
+
+
+ Phase B power
+ The name of the ParamType (ThingClass: mecMeter, EventType: currentPowerPhaseB, ID: {632998c0-28c5-4986-acaa-1a40b77efc9d})
+----------
+The name of the StateType ({632998c0-28c5-4986-acaa-1a40b77efc9d}) of ThingClass mecMeter
+
+
+
+
+ Phase B power changed
+ The name of the EventType ({632998c0-28c5-4986-acaa-1a40b77efc9d}) of ThingClass mecMeter
+
+
+
+
+
+ Phase B returned energy
+ The name of the ParamType (ThingClass: mecMeter, EventType: energyProducedPhaseB, ID: {a0407475-e770-4a74-b4b4-34b458a26801})
+----------
+The name of the StateType ({a0407475-e770-4a74-b4b4-34b458a26801}) of ThingClass mecMeter
+
+
+
+
+ Phase B returned energy changed
+ The name of the EventType ({a0407475-e770-4a74-b4b4-34b458a26801}) of ThingClass mecMeter
+
+
+
+
+
+ Phase B voltage
+ The name of the ParamType (ThingClass: mecMeter, EventType: voltagePhaseB, ID: {4495030f-23e9-4013-ab00-d95fc8c2eb21})
+----------
+The name of the StateType ({4495030f-23e9-4013-ab00-d95fc8c2eb21}) of ThingClass mecMeter
+
+
+
+
+ Phase B voltage changed
+ The name of the EventType ({4495030f-23e9-4013-ab00-d95fc8c2eb21}) of ThingClass mecMeter
+
+
+
+
+
+ Phase C consumed energy
+ The name of the ParamType (ThingClass: mecMeter, EventType: energyConsumedPhaseC, ID: {ef43baf0-2f20-44d5-930d-528107c53cac})
+----------
+The name of the StateType ({ef43baf0-2f20-44d5-930d-528107c53cac}) of ThingClass mecMeter
+
+
+
+
+ Phase C consumed energy changed
+ The name of the EventType ({ef43baf0-2f20-44d5-930d-528107c53cac}) of ThingClass mecMeter
+
+
+
+
+
+ Phase C current
+ The name of the ParamType (ThingClass: mecMeter, EventType: currentPhaseC, ID: {ec0ed738-0e79-4db9-83df-746ec18d25f3})
+----------
+The name of the StateType ({ec0ed738-0e79-4db9-83df-746ec18d25f3}) of ThingClass mecMeter
+
+
+
+
+ Phase C current changed
+ The name of the EventType ({ec0ed738-0e79-4db9-83df-746ec18d25f3}) of ThingClass mecMeter
+
+
+
+
+
+ Phase C power
+ The name of the ParamType (ThingClass: mecMeter, EventType: currentPowerPhaseC, ID: {333909a9-f28e-4e8a-a377-ff32fb80ae82})
+----------
+The name of the StateType ({333909a9-f28e-4e8a-a377-ff32fb80ae82}) of ThingClass mecMeter
+
+
+
+
+ Phase C power changed
+ The name of the EventType ({333909a9-f28e-4e8a-a377-ff32fb80ae82}) of ThingClass mecMeter
+
+
+
+
+
+ Phase C returned energy
+ The name of the ParamType (ThingClass: mecMeter, EventType: energyProducedPhaseC, ID: {6b08f113-204c-45c9-9b1a-118416aefcd7})
+----------
+The name of the StateType ({6b08f113-204c-45c9-9b1a-118416aefcd7}) of ThingClass mecMeter
+
+
+
+
+ Phase C returned energy changed
+ The name of the EventType ({6b08f113-204c-45c9-9b1a-118416aefcd7}) of ThingClass mecMeter
+
+
+
+
+
+ Phase C voltage
+ The name of the ParamType (ThingClass: mecMeter, EventType: voltagePhaseC, ID: {fb8f5094-6d6b-44b7-b244-67614a7a06ff})
+----------
+The name of the StateType ({fb8f5094-6d6b-44b7-b244-67614a7a06ff}) of ThingClass mecMeter
+
+
+
+
+ Phase C voltage changed
+ The name of the EventType ({fb8f5094-6d6b-44b7-b244-67614a7a06ff}) of ThingClass mecMeter
+
+
+
+
+
+ Total consumed energy
+ The name of the ParamType (ThingClass: mecMeter, EventType: totalEnergyConsumed, ID: {2c36c0ce-1935-4fc7-84ad-b4e22335d7f7})
+----------
+The name of the StateType ({2c36c0ce-1935-4fc7-84ad-b4e22335d7f7}) of ThingClass mecMeter
+
+
+
+
+ Total consumed energy changed
+ The name of the EventType ({2c36c0ce-1935-4fc7-84ad-b4e22335d7f7}) of ThingClass mecMeter
+
+
+
+
+
+ Total returned energy
+ The name of the ParamType (ThingClass: mecMeter, EventType: totalEnergyProduced, ID: {317ca9f1-92a7-4b7e-bd16-6df6e364ef61})
+----------
+The name of the StateType ({317ca9f1-92a7-4b7e-bd16-6df6e364ef61}) of ThingClass mecMeter
+
+
+
+
+ Total returned energy changed
+ The name of the EventType ({317ca9f1-92a7-4b7e-bd16-6df6e364ef61}) of ThingClass mecMeter
+
+
+
+
+ mec electronics
+ The name of the vendor ({09b121c5-29c5-456c-b30a-07c2662c763c})
+
+
+
+
+ mecElectronics
+ The name of the plugin mecElectronics ({5853701d-a335-4282-892f-f23670269505})
+
+
+
+
+ mecMeter
+ The name of the ThingClass ({a26a874d-aa3f-4531-bf9f-1c03ab70aa62})
+
+
+
+
diff --git a/nymea-plugins.pro b/nymea-plugins.pro
index a8f3990e..92e777db 100644
--- a/nymea-plugins.pro
+++ b/nymea-plugins.pro
@@ -33,6 +33,7 @@ PLUGIN_DIRS = \
kodi \
lgsmarttv \
lifx \
+ mecelectronics \
mailnotification \
mqttclient \
neatobotvac \