diff --git a/bgetech/README.md b/bgetech/README.md
new file mode 100644
index 0000000..0fd1664
--- /dev/null
+++ b/bgetech/README.md
@@ -0,0 +1,9 @@
+# B+G E-Tech
+
+This plugin adds support for the B+G E-Tech SDM630 energy meter connected via Modbus RTU.
+
+# Setup instructions
+First, set up a Modbus RTU resource using the configured settings of your meter. Once
+that's set up, the SDM630 can be set up like any other thing. During discovery, nymea will
+offer the configured Modbus resources as possible connections. Select the one that
+you've set up previously.
diff --git a/bgetech/bg-etech.jpg b/bgetech/bg-etech.jpg
new file mode 100644
index 0000000..917bc0d
Binary files /dev/null and b/bgetech/bg-etech.jpg differ
diff --git a/energymeters/energymeters.pro b/bgetech/bgetech.pro
similarity index 59%
rename from energymeters/energymeters.pro
rename to bgetech/bgetech.pro
index 9dd6c12..080685d 100644
--- a/energymeters/energymeters.pro
+++ b/bgetech/bgetech.pro
@@ -3,14 +3,12 @@ include(../plugins.pri)
QT += serialport serialbus
HEADERS += \
- integrationpluginenergymeters.h \
+ integrationpluginbgetech.h \
sdm630modbusrtuconnection.h \
- pro380modbusrtuconnection.h \
../modbus/modbusdatautils.h
SOURCES += \
- integrationpluginenergymeters.cpp \
+ integrationpluginbgetech.cpp \
sdm630modbusrtuconnection.cpp \
- pro380modbusrtuconnection.cpp \
../modbus/modbusdatautils.cpp
diff --git a/bgetech/integrationpluginbgetech.cpp b/bgetech/integrationpluginbgetech.cpp
new file mode 100644
index 0000000..a1ecbda
--- /dev/null
+++ b/bgetech/integrationpluginbgetech.cpp
@@ -0,0 +1,227 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+*
+* 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 .
+*
+* 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 "integrationpluginbgetech.h"
+#include "plugininfo.h"
+
+IntegrationPluginBGETech::IntegrationPluginBGETech()
+{
+}
+
+void IntegrationPluginBGETech::init()
+{
+ connect(hardwareManager()->modbusRtuResource(), &ModbusRtuHardwareResource::modbusRtuMasterRemoved, this, [=] (const QUuid &modbusUuid){
+ qCDebug(dcBgeTech()) << "Modbus RTU master has been removed" << modbusUuid.toString();
+
+ foreach (Thing *thing, myThings()) {
+ if (thing->paramValue(sdm630ThingModbusMasterUuidParamTypeId) == modbusUuid) {
+ qCWarning(dcBgeTech()) << "Modbus RTU hardware resource removed for" << thing << ". The thing will not be functional any more until a new resource has been configured for it.";
+ thing->setStateValue(sdm630ConnectedStateTypeId, false);
+ delete m_sdmConnections.take(thing);
+ }
+ }
+ });
+}
+
+void IntegrationPluginBGETech::discoverThings(ThingDiscoveryInfo *info)
+{
+ qCDebug(dcBgeTech()) << "Discover modbus RTU resources...";
+ if (hardwareManager()->modbusRtuResource()->modbusRtuMasters().isEmpty()) {
+ info->finish(Thing::ThingErrorHardwareNotAvailable, QT_TR_NOOP("No Modbus RTU interface available. Please set up the Modbus RTU interface first."));
+ return;
+ }
+
+ uint slaveAddress = info->params().paramValue(sdm630DiscoverySlaveAddressParamTypeId).toUInt();
+ if (slaveAddress > 254 || slaveAddress == 0) {
+ info->finish(Thing::ThingErrorInvalidParameter, QT_TR_NOOP("The Modbus slave address must be a value between 1 and 254."));
+ return;
+ }
+
+ foreach (ModbusRtuMaster *modbusMaster, hardwareManager()->modbusRtuResource()->modbusRtuMasters()) {
+ qCDebug(dcBgeTech()) << "Found RTU master resource" << modbusMaster << "connected" << modbusMaster->connected();
+ if (!modbusMaster->connected())
+ continue;
+
+ ThingDescriptor descriptor(info->thingClassId(), "SDM630", QString::number(slaveAddress) + " " + modbusMaster->serialPort());
+ ParamList params;
+ params << Param(sdm630ThingSlaveAddressParamTypeId, slaveAddress);
+ params << Param(sdm630ThingModbusMasterUuidParamTypeId, modbusMaster->modbusUuid());
+ descriptor.setParams(params);
+ info->addThingDescriptor(descriptor);
+ }
+
+ info->finish(Thing::ThingErrorNoError);
+ return;
+}
+
+void IntegrationPluginBGETech::setupThing(ThingSetupInfo *info)
+{
+ Thing *thing = info->thing();
+ qCDebug(dcBgeTech()) << "Setup thing" << thing << thing->params();
+
+ uint address = thing->paramValue(sdm630ThingSlaveAddressParamTypeId).toUInt();
+ if (address > 254 || address == 0) {
+ qCWarning(dcBgeTech()) << "Setup failed, slave address is not valid" << address;
+ info->finish(Thing::ThingErrorSetupFailed, QT_TR_NOOP("The Modbus address not valid. It must be a value between 1 and 254."));
+ return;
+ }
+
+ QUuid uuid = thing->paramValue(sdm630ThingModbusMasterUuidParamTypeId).toUuid();
+ if (!hardwareManager()->modbusRtuResource()->hasModbusRtuMaster(uuid)) {
+ qCWarning(dcBgeTech()) << "Setup failed, hardware manager not available";
+ info->finish(Thing::ThingErrorSetupFailed, QT_TR_NOOP("The Modbus RTU interface not available."));
+ return;
+ }
+
+ if (m_sdmConnections.contains(thing)) {
+ qCDebug(dcBgeTech()) << "Setup after rediscovery, cleaning up ...";
+ m_sdmConnections.take(thing)->deleteLater();
+ }
+
+ Sdm630ModbusRtuConnection *sdmConnection = new Sdm630ModbusRtuConnection(hardwareManager()->modbusRtuResource()->getModbusRtuMaster(uuid), address, this);
+ connect(sdmConnection->modbusRtuMaster(), &ModbusRtuMaster::connectedChanged, this, [=](bool connected){
+ if (connected) {
+ qCDebug(dcBgeTech()) << "Modbus RTU resource connected" << thing << sdmConnection->modbusRtuMaster()->serialPort();
+ } else {
+ qCWarning(dcBgeTech()) << "Modbus RTU resource disconnected" << thing << sdmConnection->modbusRtuMaster()->serialPort();
+ }
+ });
+
+ connect(sdmConnection, &Sdm630ModbusRtuConnection::currentPhaseAChanged, this, [=](float currentPhaseA){
+ thing->setStateValue(sdm630CurrentPhaseAStateTypeId, currentPhaseA);
+ thing->setStateValue(sdm630ConnectedStateTypeId, true);
+ });
+
+ connect(sdmConnection, &Sdm630ModbusRtuConnection::currentPhaseBChanged, this, [=](float currentPhaseB){
+ thing->setStateValue(sdm630CurrentPhaseBStateTypeId, currentPhaseB);
+ });
+
+ connect(sdmConnection, &Sdm630ModbusRtuConnection::currentPhaseCChanged, this, [=](float currentPhaseC){
+ thing->setStateValue(sdm630CurrentPhaseCStateTypeId, currentPhaseC);
+ });
+
+ connect(sdmConnection, &Sdm630ModbusRtuConnection::voltagePhaseAChanged, this, [=](float voltagePhaseA){
+ thing->setStateValue(sdm630VoltagePhaseAStateTypeId, voltagePhaseA);
+ });
+
+ connect(sdmConnection, &Sdm630ModbusRtuConnection::voltagePhaseBChanged, this, [=](float voltagePhaseB){
+ thing->setStateValue(sdm630VoltagePhaseBStateTypeId, voltagePhaseB);
+ });
+
+ connect(sdmConnection, &Sdm630ModbusRtuConnection::voltagePhaseCChanged, this, [=](float voltagePhaseC){
+ thing->setStateValue(sdm630VoltagePhaseCStateTypeId, voltagePhaseC);
+ });
+
+ connect(sdmConnection, &Sdm630ModbusRtuConnection::totalCurrentPowerChanged, this, [=](float currentPower){
+ thing->setStateValue(sdm630CurrentPowerStateTypeId, currentPower);
+ });
+
+ connect(sdmConnection, &Sdm630ModbusRtuConnection::powerPhaseAChanged, this, [=](float powerPhaseA){
+ thing->setStateValue(sdm630CurrentPowerPhaseAStateTypeId, powerPhaseA);
+ });
+
+ connect(sdmConnection, &Sdm630ModbusRtuConnection::powerPhaseBChanged, this, [=](float powerPhaseB){
+ thing->setStateValue(sdm630CurrentPowerPhaseBStateTypeId, powerPhaseB);
+ });
+
+ connect(sdmConnection, &Sdm630ModbusRtuConnection::powerPhaseCChanged, this, [=](float powerPhaseC){
+ thing->setStateValue(sdm630CurrentPowerPhaseCStateTypeId, powerPhaseC);
+ });
+
+ connect(sdmConnection, &Sdm630ModbusRtuConnection::frequencyChanged, this, [=](float frequency){
+ thing->setStateValue(sdm630FrequencyStateTypeId, frequency);
+ });
+
+ connect(sdmConnection, &Sdm630ModbusRtuConnection::totalEnergyConsumedChanged, this, [=](float totalEnergyConsumed){
+ thing->setStateValue(sdm630TotalEnergyConsumedStateTypeId, totalEnergyConsumed);
+ });
+
+ connect(sdmConnection, &Sdm630ModbusRtuConnection::totalEnergyProducedChanged, this, [=](float totalEnergyProduced){
+ thing->setStateValue(sdm630TotalEnergyProducedStateTypeId, totalEnergyProduced);
+ });
+
+ connect(sdmConnection, &Sdm630ModbusRtuConnection::energyProducedPhaseAChanged, this, [=](float energyProducedPhaseA){
+ thing->setStateValue(sdm630EnergyProducedPhaseAStateTypeId, energyProducedPhaseA);
+ });
+
+ connect(sdmConnection, &Sdm630ModbusRtuConnection::energyProducedPhaseBChanged, this, [=](float energyProducedPhaseB){
+ thing->setStateValue(sdm630EnergyProducedPhaseBStateTypeId, energyProducedPhaseB);
+ });
+
+ connect(sdmConnection, &Sdm630ModbusRtuConnection::energyProducedPhaseCChanged, this, [=](float energyProducedPhaseC){
+ thing->setStateValue(sdm630EnergyProducedPhaseCStateTypeId, energyProducedPhaseC);
+ });
+
+ connect(sdmConnection, &Sdm630ModbusRtuConnection::energyConsumedPhaseAChanged, this, [=](float energyConsumedPhaseA){
+ thing->setStateValue(sdm630EnergyConsumedPhaseAStateTypeId, energyConsumedPhaseA);
+ });
+
+ connect(sdmConnection, &Sdm630ModbusRtuConnection::energyConsumedPhaseBChanged, this, [=](float energyConsumedPhaseB){
+ thing->setStateValue(sdm630EnergyConsumedPhaseBStateTypeId, energyConsumedPhaseB);
+ });
+
+ connect(sdmConnection, &Sdm630ModbusRtuConnection::energyConsumedPhaseCChanged, this, [=](float energyConsumedPhaseC){
+ thing->setStateValue(sdm630EnergyConsumedPhaseCStateTypeId, energyConsumedPhaseC);
+ });
+
+ // FIXME: try to read before setup success
+ m_sdmConnections.insert(thing, sdmConnection);
+ info->finish(Thing::ThingErrorNoError);
+}
+
+void IntegrationPluginBGETech::postSetupThing(Thing *thing)
+{
+ qCDebug(dcBgeTech) << "Post setup thing" << thing->name();
+ if (!m_refreshTimer) {
+ m_refreshTimer = hardwareManager()->pluginTimerManager()->registerTimer(2);
+ connect(m_refreshTimer, &PluginTimer::timeout, this, [this] {
+ foreach (Thing *thing, myThings()) {
+ m_sdmConnections.value(thing)->update();
+ }
+ });
+
+ qCDebug(dcBgeTech()) << "Starting refresh timer...";
+ m_refreshTimer->start();
+ }
+}
+
+void IntegrationPluginBGETech::thingRemoved(Thing *thing)
+{
+ qCDebug(dcBgeTech()) << "Thing removed" << thing->name();
+
+ if (m_sdmConnections.contains(thing))
+ m_sdmConnections.take(thing)->deleteLater();
+
+ if (myThings().isEmpty() && m_refreshTimer) {
+ qCDebug(dcBgeTech()) << "Stopping reconnect timer";
+ hardwareManager()->pluginTimerManager()->unregisterTimer(m_refreshTimer);
+ m_refreshTimer = nullptr;
+ }
+}
diff --git a/energymeters/integrationpluginenergymeters.h b/bgetech/integrationpluginbgetech.h
similarity index 76%
rename from energymeters/integrationpluginenergymeters.h
rename to bgetech/integrationpluginbgetech.h
index c836b42..c869f91 100644
--- a/energymeters/integrationpluginenergymeters.h
+++ b/bgetech/integrationpluginbgetech.h
@@ -28,28 +28,29 @@
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-#ifndef INTEGRATIONPLUGINENERGYMETERS_H
-#define INTEGRATIONPLUGINENERGYMETERS_H
+#ifndef INTEGRATIONPLUGINBGETECH_H
+#define INTEGRATIONPLUGINBGETECH_H
#include
#include
#include
#include "sdm630modbusrtuconnection.h"
-#include "pro380modbusrtuconnection.h"
+
+#include "extern-plugininfo.h"
#include
#include
-class IntegrationPluginEnergyMeters : public IntegrationPlugin
+class IntegrationPluginBGETech: public IntegrationPlugin
{
Q_OBJECT
- Q_PLUGIN_METADATA(IID "io.nymea.IntegrationPlugin" FILE "integrationpluginenergymeters.json")
+ Q_PLUGIN_METADATA(IID "io.nymea.IntegrationPlugin" FILE "integrationpluginbgetech.json")
Q_INTERFACES(IntegrationPlugin)
public:
- explicit IntegrationPluginEnergyMeters();
+ explicit IntegrationPluginBGETech();
void init() override;
void discoverThings(ThingDiscoveryInfo *info) override;
void setupThing(ThingSetupInfo *info) override;
@@ -59,14 +60,7 @@ public:
private:
PluginTimer *m_refreshTimer = nullptr;
- QHash m_sdmConnections; // sdm 630
- QHash m_ineproConnections; // pro 380
-
- QHash m_discoverySlaveAddressParamTypeIds;
- QHash m_slaveIdParamTypeIds;
- QHash m_modbusUuidParamTypeIds;
- QHash m_connectionStateTypeIds;
-
+ QHash m_sdmConnections;
};
-#endif // INTEGRATIONPLUGINENERGYMETERS_H
+#endif // INTEGRATIONPLUGINBGETECH_H
diff --git a/bgetech/integrationpluginbgetech.json b/bgetech/integrationpluginbgetech.json
new file mode 100644
index 0000000..ff36387
--- /dev/null
+++ b/bgetech/integrationpluginbgetech.json
@@ -0,0 +1,230 @@
+{
+ "name": "bgeTech",
+ "displayName": "B+G E-Tech",
+ "id": "e373f492-4527-4d5f-aa48-34d38c55b0d6",
+ "paramTypes":[ ],
+ "vendors": [
+ {
+ "name": "bgetech",
+ "displayName": "B+G E-Tech",
+ "id": "215035fe-95e8-43d8-a52e-0a31b787d902",
+ "thingClasses": [
+ {
+ "name": "sdm630",
+ "displayName": "SDM630",
+ "id": "f37597bb-35fe-48f2-9617-343dd54c0903",
+ "createMethods": ["discovery"],
+ "interfaces": ["energymeter", "connectable"],
+ "discoveryParamTypes": [
+ {
+ "id": "6ab43559-53ec-47ba-b8a0-8d3b7f8d90c2",
+ "name": "slaveAddress",
+ "displayName": "Slave address",
+ "type": "int",
+ "defaultValue": 1
+ }
+ ],
+ "paramTypes": [
+ {
+ "id": "ac77ea98-b006-486e-a3e8-b30a483f26c1",
+ "name": "slaveAddress",
+ "displayName": "Modbus slave address",
+ "type": "uint",
+ "defaultValue": 1
+ },
+ {
+ "id": "d90e9292-d03c-4f2a-957e-5d965018c9c9",
+ "name": "modbusMasterUuid",
+ "displayName": "Modbus RTU master",
+ "type": "QUuid",
+ "defaultValue": "",
+ "readOnly": true
+ }
+ ],
+ "stateTypes": [
+ {
+ "id": "8050bd0b-1dad-4a7e-b632-c71ead3c9f8b",
+ "name": "connected",
+ "displayName": "Connected",
+ "displayNameEvent": "Connected changed",
+ "type": "bool",
+ "cached": false,
+ "defaultValue": false
+ },
+ {
+ "id": "db018146-0441-4dc0-9834-6d43ebaf8311",
+ "name": "voltagePhaseA",
+ "displayName": "Voltage phase A",
+ "displayNameEvent": "Voltage phase A changed",
+ "type": "double",
+ "unit": "Volt",
+ "defaultValue": 0
+ },
+ {
+ "id": "406f6d02-d5eb-49b3-87da-3247568e6054",
+ "name": "voltagePhaseB",
+ "displayName": "Voltage phase B",
+ "displayNameEvent": "Voltage phase B changed",
+ "type": "double",
+ "unit": "Volt",
+ "defaultValue": 0
+ },
+ {
+ "id": "ace6294d-deaa-4d9a-af78-d64379bcb229",
+ "name": "voltagePhaseC",
+ "displayName": "Voltage phase C",
+ "displayNameEvent": "Voltage phase C changed",
+ "type": "double",
+ "unit": "Volt",
+ "defaultValue": 0
+ },
+ {
+ "id": "4baf1d08-5ffa-49cf-95ef-9527b0c6f081",
+ "name": "currentPhaseA",
+ "displayName": "Current phase A",
+ "displayNameEvent": "Current phase A changed",
+ "type": "double",
+ "unit": "Ampere",
+ "defaultValue": 0
+ },
+ {
+ "id": "99e47d06-0a6a-4bfd-b164-61ecb6ba2818",
+ "name": "currentPhaseB",
+ "displayName": "Current phase B",
+ "displayNameEvent": "Current phase B changed",
+ "type": "double",
+ "unit": "Ampere",
+ "defaultValue": 0
+ },
+ {
+ "id": "4a092a66-352d-4d60-90ab-6ac5f58b92fe",
+ "name": "currentPhaseC",
+ "displayName": "Current phase C",
+ "displayNameEvent": "Current phase C changed",
+ "type": "double",
+ "unit": "Ampere",
+ "defaultValue": 0
+ },
+ {
+ "id": "c824e97b-a6d1-4030-9d7a-00af6fb8e1c3",
+ "name": "currentPower",
+ "displayName": "Current power",
+ "displayNameEvent": "Current power changed",
+ "type": "double",
+ "unit": "Watt",
+ "defaultValue": 0
+ },
+ {
+ "id": "3982fb12-b179-40f7-9b27-36adb1cadd37",
+ "name": "currentPowerPhaseA",
+ "displayName": "Current power phase A",
+ "displayNameEvent": "Current power phase A changed",
+ "type": "double",
+ "unit": "Watt",
+ "defaultValue": 0
+ },
+ {
+ "id": "2a231c58-b095-4037-8394-a730431e70b8",
+ "name": "currentPowerPhaseB",
+ "displayName": "Current power phase B",
+ "displayNameEvent": "Current power phase B changed",
+ "type": "double",
+ "unit": "Watt",
+ "defaultValue": 0
+ },
+ {
+ "id": "ee8c4f0c-2b69-4210-9966-1553a592b06d",
+ "name": "currentPowerPhaseC",
+ "displayName": "Current power phase C",
+ "displayNameEvent": "Current power phase C changed",
+ "type": "double",
+ "unit": "Watt",
+ "defaultValue": 0
+ },
+ {
+ "id": "ab24f26c-dc15-4ec3-8d76-06a48285440b",
+ "name": "frequency",
+ "displayName": "Frequency",
+ "displayNameEvent": "Frequency changed",
+ "type": "double",
+ "unit": "Hertz",
+ "defaultValue": 0.00
+ },
+ {
+ "id": "98d858a8-22e8-4262-b5c7-25bb027942ad",
+ "name": "totalEnergyConsumed",
+ "displayName": "Total energy consumed",
+ "displayNameEvent": "Total energy consumed changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0.00
+ },
+ {
+ "id": "e469b3ff-a4c2-42da-af35-ccafaef214af",
+ "name": "totalEnergyProduced",
+ "displayName": "Total energy produced",
+ "displayNameEvent": "Total energy produced changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0.00
+ },
+ {
+ "id": "6ca06c81-fe75-4448-a22f-47c303421440",
+ "name": "energyConsumedPhaseA",
+ "displayName": "Energy consumed phase A",
+ "displayNameEvent": "Energy consumed phase A changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0.00
+ },
+ {
+ "id": "fa2b879b-2a81-4bc8-9577-98082c4d9330",
+ "name": "energyConsumedPhaseB",
+ "displayName": "Energy consumed phase B",
+ "displayNameEvent": "Energy consumed phase B changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0.00
+ },
+ {
+ "id": "4c084c9e-7a5d-42d1-96b2-a8a4b4a25713",
+ "name": "energyConsumedPhaseC",
+ "displayName": "Energy consumed phase C",
+ "displayNameEvent": "Energy consumed phase C changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0.00
+ },
+ {
+ "id": "308fa88e-6054-4c79-b12a-be2d0a404ef6",
+ "name": "energyProducedPhaseA",
+ "displayName": "Energy produced phase A",
+ "displayNameEvent": "Energy produced phase A changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0.00
+ },
+ {
+ "id": "48ab6e61-dfb4-4f85-b5cc-9d89e53c6b39",
+ "name": "energyProducedPhaseB",
+ "displayName": "Energy produced phase B",
+ "displayNameEvent": "Energy produced phase B changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0.00
+ },
+ {
+ "id": "6b3ddf15-3d4b-4dc1-8e5a-84fbf90b49ff",
+ "name": "energyProducedPhaseC",
+ "displayName": "Energy produced phase C",
+ "displayNameEvent": "Energy produced phase C changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0.00
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/energymeters/meta.json b/bgetech/meta.json
similarity index 57%
rename from energymeters/meta.json
rename to bgetech/meta.json
index 1158181..4e005bc 100644
--- a/energymeters/meta.json
+++ b/bgetech/meta.json
@@ -1,7 +1,7 @@
{
- "title": "Energy Meters",
- "tagline": "Connect Modbus RTU energy meters.",
- "icon": "",
+ "title": "B+G E-Tech",
+ "tagline": "Connect B+G E-Tech energy meters.",
+ "icon": "bg-etech.jpg",
"stability": "consumer",
"offline": true,
"technologies": [
diff --git a/energymeters/sdm630-registers.json b/bgetech/sdm630-registers.json
similarity index 100%
rename from energymeters/sdm630-registers.json
rename to bgetech/sdm630-registers.json
diff --git a/energymeters/sdm630modbusrtuconnection.cpp b/bgetech/sdm630modbusrtuconnection.cpp
similarity index 100%
rename from energymeters/sdm630modbusrtuconnection.cpp
rename to bgetech/sdm630modbusrtuconnection.cpp
diff --git a/energymeters/sdm630modbusrtuconnection.h b/bgetech/sdm630modbusrtuconnection.h
similarity index 100%
rename from energymeters/sdm630modbusrtuconnection.h
rename to bgetech/sdm630modbusrtuconnection.h
diff --git a/bgetech/translations/e373f492-4527-4d5f-aa48-34d38c55b0d6-de.ts b/bgetech/translations/e373f492-4527-4d5f-aa48-34d38c55b0d6-de.ts
new file mode 100644
index 0000000..bee449d
--- /dev/null
+++ b/bgetech/translations/e373f492-4527-4d5f-aa48-34d38c55b0d6-de.ts
@@ -0,0 +1,363 @@
+
+
+
+
+ IntegrationPluginBGETech
+
+
+ No Modbus RTU interface available. Please set up the Modbus RTU interface first.
+ Keine Modbus RTU Schnittstelle verfügbar. Bitte richte zuerst die Modbus RTU Schnittstelle ein.
+
+
+
+ The Modbus slave address must be a value between 1 and 254.
+ Die Modbus Adresse muss ein Wert zwischen 1 und 254 sein.
+
+
+
+ The Modbus address not valid. It must be a value between 1 and 254.
+ Die Modbus Adresse is ungültig. Sie muss ein Wert zwischen 1 und 254 sein.
+
+
+
+ The Modbus RTU interface not available.
+ Die Modbus RTU Schnittstelle ist nicht verfügbar.
+
+
+
+ bgeTech
+
+
+
+ B+G E-Tech
+ The name of the vendor ({215035fe-95e8-43d8-a52e-0a31b787d902})
+----------
+The name of the plugin bgeTech ({e373f492-4527-4d5f-aa48-34d38c55b0d6})
+ B+G E-Tech
+
+
+
+
+ Connected
+ The name of the ParamType (ThingClass: sdm630, EventType: connected, ID: {8050bd0b-1dad-4a7e-b632-c71ead3c9f8b})
+----------
+The name of the StateType ({8050bd0b-1dad-4a7e-b632-c71ead3c9f8b}) of ThingClass sdm630
+
+
+
+
+ Connected changed
+ The name of the EventType ({8050bd0b-1dad-4a7e-b632-c71ead3c9f8b}) of ThingClass sdm630
+ Verbunden oder getrennt
+
+
+
+
+ Current phase A
+ The name of the ParamType (ThingClass: sdm630, EventType: currentPhaseA, ID: {4baf1d08-5ffa-49cf-95ef-9527b0c6f081})
+----------
+The name of the StateType ({4baf1d08-5ffa-49cf-95ef-9527b0c6f081}) of ThingClass sdm630
+ Strom Phase A
+
+
+
+ Current phase A changed
+ The name of the EventType ({4baf1d08-5ffa-49cf-95ef-9527b0c6f081}) of ThingClass sdm630
+ Strom Phase A geändert
+
+
+
+
+ Current phase B
+ The name of the ParamType (ThingClass: sdm630, EventType: currentPhaseB, ID: {99e47d06-0a6a-4bfd-b164-61ecb6ba2818})
+----------
+The name of the StateType ({99e47d06-0a6a-4bfd-b164-61ecb6ba2818}) of ThingClass sdm630
+ Strom Phase B
+
+
+
+ Current phase B changed
+ The name of the EventType ({99e47d06-0a6a-4bfd-b164-61ecb6ba2818}) of ThingClass sdm630
+ Strom Phase B geändert
+
+
+
+
+ Current phase C
+ The name of the ParamType (ThingClass: sdm630, EventType: currentPhaseC, ID: {4a092a66-352d-4d60-90ab-6ac5f58b92fe})
+----------
+The name of the StateType ({4a092a66-352d-4d60-90ab-6ac5f58b92fe}) of ThingClass sdm630
+ Strom Phase C
+
+
+
+ Current phase C changed
+ The name of the EventType ({4a092a66-352d-4d60-90ab-6ac5f58b92fe}) of ThingClass sdm630
+ Strom Phase C geändert
+
+
+
+
+ Current power
+ The name of the ParamType (ThingClass: sdm630, EventType: currentPower, ID: {c824e97b-a6d1-4030-9d7a-00af6fb8e1c3})
+----------
+The name of the StateType ({c824e97b-a6d1-4030-9d7a-00af6fb8e1c3}) of ThingClass sdm630
+ Aktueller Energieverbrauch
+
+
+
+ Current power changed
+ The name of the EventType ({c824e97b-a6d1-4030-9d7a-00af6fb8e1c3}) of ThingClass sdm630
+ Aktueller Energieverbrauch geändert
+
+
+
+
+ Current power phase A
+ The name of the ParamType (ThingClass: sdm630, EventType: currentPowerPhaseA, ID: {3982fb12-b179-40f7-9b27-36adb1cadd37})
+----------
+The name of the StateType ({3982fb12-b179-40f7-9b27-36adb1cadd37}) of ThingClass sdm630
+ Aktueller Energieverbrauch Phase A
+
+
+
+ Current power phase A changed
+ The name of the EventType ({3982fb12-b179-40f7-9b27-36adb1cadd37}) of ThingClass sdm630
+ Aktueller Energieverbrauch Phase A geändert
+
+
+
+
+ Current power phase B
+ The name of the ParamType (ThingClass: sdm630, EventType: currentPowerPhaseB, ID: {2a231c58-b095-4037-8394-a730431e70b8})
+----------
+The name of the StateType ({2a231c58-b095-4037-8394-a730431e70b8}) of ThingClass sdm630
+ Aktueller Energieverbrauch Phase B
+
+
+
+ Current power phase B changed
+ The name of the EventType ({2a231c58-b095-4037-8394-a730431e70b8}) of ThingClass sdm630
+ Aktueller Energieverbrauch Phase B geändert
+
+
+
+
+ Current power phase C
+ The name of the ParamType (ThingClass: sdm630, EventType: currentPowerPhaseC, ID: {ee8c4f0c-2b69-4210-9966-1553a592b06d})
+----------
+The name of the StateType ({ee8c4f0c-2b69-4210-9966-1553a592b06d}) of ThingClass sdm630
+ Aktueller Energieverbrauch Phase C
+
+
+
+ Current power phase C changed
+ The name of the EventType ({ee8c4f0c-2b69-4210-9966-1553a592b06d}) of ThingClass sdm630
+ Aktueller Energieverbrauch Phase C geändert
+
+
+
+
+ Energy consumed phase A
+ The name of the ParamType (ThingClass: sdm630, EventType: energyConsumedPhaseA, ID: {6ca06c81-fe75-4448-a22f-47c303421440})
+----------
+The name of the StateType ({6ca06c81-fe75-4448-a22f-47c303421440}) of ThingClass sdm630
+ Gesamtverbrauch Phase A
+
+
+
+ Energy consumed phase A changed
+ The name of the EventType ({6ca06c81-fe75-4448-a22f-47c303421440}) of ThingClass sdm630
+ Gesamtverbrauch Phase A geändert
+
+
+
+
+ Energy consumed phase B
+ The name of the ParamType (ThingClass: sdm630, EventType: energyConsumedPhaseB, ID: {fa2b879b-2a81-4bc8-9577-98082c4d9330})
+----------
+The name of the StateType ({fa2b879b-2a81-4bc8-9577-98082c4d9330}) of ThingClass sdm630
+ Gesamtverbrauch Phase B
+
+
+
+ Energy consumed phase B changed
+ The name of the EventType ({fa2b879b-2a81-4bc8-9577-98082c4d9330}) of ThingClass sdm630
+ Gesamtverbrauch Phase B geändert
+
+
+
+
+ Energy consumed phase C
+ The name of the ParamType (ThingClass: sdm630, EventType: energyConsumedPhaseC, ID: {4c084c9e-7a5d-42d1-96b2-a8a4b4a25713})
+----------
+The name of the StateType ({4c084c9e-7a5d-42d1-96b2-a8a4b4a25713}) of ThingClass sdm630
+ Gesamtverbrauch Phase C
+
+
+
+ Energy consumed phase C changed
+ The name of the EventType ({4c084c9e-7a5d-42d1-96b2-a8a4b4a25713}) of ThingClass sdm630
+ Gesamtverbrauch Phase C geändert
+
+
+
+
+ Energy produced phase A
+ The name of the ParamType (ThingClass: sdm630, EventType: energyProducedPhaseA, ID: {308fa88e-6054-4c79-b12a-be2d0a404ef6})
+----------
+The name of the StateType ({308fa88e-6054-4c79-b12a-be2d0a404ef6}) of ThingClass sdm630
+ Erzeugte Energie Phase A
+
+
+
+ Energy produced phase A changed
+ The name of the EventType ({308fa88e-6054-4c79-b12a-be2d0a404ef6}) of ThingClass sdm630
+ Erzeugte Energie Phase A geändert
+
+
+
+
+ Energy produced phase B
+ The name of the ParamType (ThingClass: sdm630, EventType: energyProducedPhaseB, ID: {48ab6e61-dfb4-4f85-b5cc-9d89e53c6b39})
+----------
+The name of the StateType ({48ab6e61-dfb4-4f85-b5cc-9d89e53c6b39}) of ThingClass sdm630
+ Erzeugte Energie Phase B
+
+
+
+ Energy produced phase B changed
+ The name of the EventType ({48ab6e61-dfb4-4f85-b5cc-9d89e53c6b39}) of ThingClass sdm630
+ Erzeugte Energie Phase B geändert
+
+
+
+
+ Energy produced phase C
+ The name of the ParamType (ThingClass: sdm630, EventType: energyProducedPhaseC, ID: {6b3ddf15-3d4b-4dc1-8e5a-84fbf90b49ff})
+----------
+The name of the StateType ({6b3ddf15-3d4b-4dc1-8e5a-84fbf90b49ff}) of ThingClass sdm630
+ Erzeugte Energie Phase C
+
+
+
+ Energy produced phase C changed
+ The name of the EventType ({6b3ddf15-3d4b-4dc1-8e5a-84fbf90b49ff}) of ThingClass sdm630
+ Erzeugte Energie Phase C geändert
+
+
+
+
+ Frequency
+ The name of the ParamType (ThingClass: sdm630, EventType: frequency, ID: {ab24f26c-dc15-4ec3-8d76-06a48285440b})
+----------
+The name of the StateType ({ab24f26c-dc15-4ec3-8d76-06a48285440b}) of ThingClass sdm630
+ Frequenz
+
+
+
+ Frequency changed
+ The name of the EventType ({ab24f26c-dc15-4ec3-8d76-06a48285440b}) of ThingClass sdm630
+ Frequenz geändert
+
+
+
+ Modbus RTU master
+ The name of the ParamType (ThingClass: sdm630, Type: thing, ID: {d90e9292-d03c-4f2a-957e-5d965018c9c9})
+ Modbus RTU Master
+
+
+
+ Modbus slave address
+ The name of the ParamType (ThingClass: sdm630, Type: thing, ID: {ac77ea98-b006-486e-a3e8-b30a483f26c1})
+ Modbus Adresse
+
+
+
+ SDM630
+ The name of the ThingClass ({f37597bb-35fe-48f2-9617-343dd54c0903})
+ SDM630
+
+
+
+ Slave address
+ The name of the ParamType (ThingClass: sdm630, Type: discovery, ID: {6ab43559-53ec-47ba-b8a0-8d3b7f8d90c2})
+ Modbus Adresse
+
+
+
+
+ Total energy consumed
+ The name of the ParamType (ThingClass: sdm630, EventType: totalEnergyConsumed, ID: {98d858a8-22e8-4262-b5c7-25bb027942ad})
+----------
+The name of the StateType ({98d858a8-22e8-4262-b5c7-25bb027942ad}) of ThingClass sdm630
+ Gesamter Energieverbrauch
+
+
+
+ Total energy consumed changed
+ The name of the EventType ({98d858a8-22e8-4262-b5c7-25bb027942ad}) of ThingClass sdm630
+ Gesamter Energieverbrauch geändert
+
+
+
+
+ Total energy produced
+ The name of the ParamType (ThingClass: sdm630, EventType: totalEnergyProduced, ID: {e469b3ff-a4c2-42da-af35-ccafaef214af})
+----------
+The name of the StateType ({e469b3ff-a4c2-42da-af35-ccafaef214af}) of ThingClass sdm630
+ Gesamte erzeugte Energie
+
+
+
+ Total energy produced changed
+ The name of the EventType ({e469b3ff-a4c2-42da-af35-ccafaef214af}) of ThingClass sdm630
+ Gesamte erzeugte Energie geändert
+
+
+
+
+ Voltage phase A
+ The name of the ParamType (ThingClass: sdm630, EventType: voltagePhaseA, ID: {db018146-0441-4dc0-9834-6d43ebaf8311})
+----------
+The name of the StateType ({db018146-0441-4dc0-9834-6d43ebaf8311}) of ThingClass sdm630
+ Spannung Phase A
+
+
+
+ Voltage phase A changed
+ The name of the EventType ({db018146-0441-4dc0-9834-6d43ebaf8311}) of ThingClass sdm630
+ Spannung Phase A geändert
+
+
+
+
+ Voltage phase B
+ The name of the ParamType (ThingClass: sdm630, EventType: voltagePhaseB, ID: {406f6d02-d5eb-49b3-87da-3247568e6054})
+----------
+The name of the StateType ({406f6d02-d5eb-49b3-87da-3247568e6054}) of ThingClass sdm630
+ Spannung Phase B
+
+
+
+ Voltage phase B changed
+ The name of the EventType ({406f6d02-d5eb-49b3-87da-3247568e6054}) of ThingClass sdm630
+ Spannung Phase B geändert
+
+
+
+
+ Voltage phase C
+ The name of the ParamType (ThingClass: sdm630, EventType: voltagePhaseC, ID: {ace6294d-deaa-4d9a-af78-d64379bcb229})
+----------
+The name of the StateType ({ace6294d-deaa-4d9a-af78-d64379bcb229}) of ThingClass sdm630
+ Spannung Phase C
+
+
+
+ Voltage phase C changed
+ The name of the EventType ({ace6294d-deaa-4d9a-af78-d64379bcb229}) of ThingClass sdm630
+ Spannung Phase C geändert
+
+
+
diff --git a/bgetech/translations/e373f492-4527-4d5f-aa48-34d38c55b0d6-en_US.ts b/bgetech/translations/e373f492-4527-4d5f-aa48-34d38c55b0d6-en_US.ts
new file mode 100644
index 0000000..3c99c6a
--- /dev/null
+++ b/bgetech/translations/e373f492-4527-4d5f-aa48-34d38c55b0d6-en_US.ts
@@ -0,0 +1,363 @@
+
+
+
+
+ IntegrationPluginBGETech
+
+
+ No Modbus RTU interface available. Please set up the Modbus RTU interface first.
+
+
+
+
+ The Modbus slave address must be a value between 1 and 254.
+
+
+
+
+ The Modbus address not valid. It must be a value between 1 and 254.
+
+
+
+
+ The Modbus RTU interface not available.
+
+
+
+
+ bgeTech
+
+
+
+ B+G E-Tech
+ The name of the vendor ({215035fe-95e8-43d8-a52e-0a31b787d902})
+----------
+The name of the plugin bgeTech ({e373f492-4527-4d5f-aa48-34d38c55b0d6})
+
+
+
+
+
+ Connected
+ The name of the ParamType (ThingClass: sdm630, EventType: connected, ID: {8050bd0b-1dad-4a7e-b632-c71ead3c9f8b})
+----------
+The name of the StateType ({8050bd0b-1dad-4a7e-b632-c71ead3c9f8b}) of ThingClass sdm630
+
+
+
+
+ Connected changed
+ The name of the EventType ({8050bd0b-1dad-4a7e-b632-c71ead3c9f8b}) of ThingClass sdm630
+
+
+
+
+
+ Current phase A
+ The name of the ParamType (ThingClass: sdm630, EventType: currentPhaseA, ID: {4baf1d08-5ffa-49cf-95ef-9527b0c6f081})
+----------
+The name of the StateType ({4baf1d08-5ffa-49cf-95ef-9527b0c6f081}) of ThingClass sdm630
+
+
+
+
+ Current phase A changed
+ The name of the EventType ({4baf1d08-5ffa-49cf-95ef-9527b0c6f081}) of ThingClass sdm630
+
+
+
+
+
+ Current phase B
+ The name of the ParamType (ThingClass: sdm630, EventType: currentPhaseB, ID: {99e47d06-0a6a-4bfd-b164-61ecb6ba2818})
+----------
+The name of the StateType ({99e47d06-0a6a-4bfd-b164-61ecb6ba2818}) of ThingClass sdm630
+
+
+
+
+ Current phase B changed
+ The name of the EventType ({99e47d06-0a6a-4bfd-b164-61ecb6ba2818}) of ThingClass sdm630
+
+
+
+
+
+ Current phase C
+ The name of the ParamType (ThingClass: sdm630, EventType: currentPhaseC, ID: {4a092a66-352d-4d60-90ab-6ac5f58b92fe})
+----------
+The name of the StateType ({4a092a66-352d-4d60-90ab-6ac5f58b92fe}) of ThingClass sdm630
+
+
+
+
+ Current phase C changed
+ The name of the EventType ({4a092a66-352d-4d60-90ab-6ac5f58b92fe}) of ThingClass sdm630
+
+
+
+
+
+ Current power
+ The name of the ParamType (ThingClass: sdm630, EventType: currentPower, ID: {c824e97b-a6d1-4030-9d7a-00af6fb8e1c3})
+----------
+The name of the StateType ({c824e97b-a6d1-4030-9d7a-00af6fb8e1c3}) of ThingClass sdm630
+
+
+
+
+ Current power changed
+ The name of the EventType ({c824e97b-a6d1-4030-9d7a-00af6fb8e1c3}) of ThingClass sdm630
+
+
+
+
+
+ Current power phase A
+ The name of the ParamType (ThingClass: sdm630, EventType: currentPowerPhaseA, ID: {3982fb12-b179-40f7-9b27-36adb1cadd37})
+----------
+The name of the StateType ({3982fb12-b179-40f7-9b27-36adb1cadd37}) of ThingClass sdm630
+
+
+
+
+ Current power phase A changed
+ The name of the EventType ({3982fb12-b179-40f7-9b27-36adb1cadd37}) of ThingClass sdm630
+
+
+
+
+
+ Current power phase B
+ The name of the ParamType (ThingClass: sdm630, EventType: currentPowerPhaseB, ID: {2a231c58-b095-4037-8394-a730431e70b8})
+----------
+The name of the StateType ({2a231c58-b095-4037-8394-a730431e70b8}) of ThingClass sdm630
+
+
+
+
+ Current power phase B changed
+ The name of the EventType ({2a231c58-b095-4037-8394-a730431e70b8}) of ThingClass sdm630
+
+
+
+
+
+ Current power phase C
+ The name of the ParamType (ThingClass: sdm630, EventType: currentPowerPhaseC, ID: {ee8c4f0c-2b69-4210-9966-1553a592b06d})
+----------
+The name of the StateType ({ee8c4f0c-2b69-4210-9966-1553a592b06d}) of ThingClass sdm630
+
+
+
+
+ Current power phase C changed
+ The name of the EventType ({ee8c4f0c-2b69-4210-9966-1553a592b06d}) of ThingClass sdm630
+
+
+
+
+
+ Energy consumed phase A
+ The name of the ParamType (ThingClass: sdm630, EventType: energyConsumedPhaseA, ID: {6ca06c81-fe75-4448-a22f-47c303421440})
+----------
+The name of the StateType ({6ca06c81-fe75-4448-a22f-47c303421440}) of ThingClass sdm630
+
+
+
+
+ Energy consumed phase A changed
+ The name of the EventType ({6ca06c81-fe75-4448-a22f-47c303421440}) of ThingClass sdm630
+
+
+
+
+
+ Energy consumed phase B
+ The name of the ParamType (ThingClass: sdm630, EventType: energyConsumedPhaseB, ID: {fa2b879b-2a81-4bc8-9577-98082c4d9330})
+----------
+The name of the StateType ({fa2b879b-2a81-4bc8-9577-98082c4d9330}) of ThingClass sdm630
+
+
+
+
+ Energy consumed phase B changed
+ The name of the EventType ({fa2b879b-2a81-4bc8-9577-98082c4d9330}) of ThingClass sdm630
+
+
+
+
+
+ Energy consumed phase C
+ The name of the ParamType (ThingClass: sdm630, EventType: energyConsumedPhaseC, ID: {4c084c9e-7a5d-42d1-96b2-a8a4b4a25713})
+----------
+The name of the StateType ({4c084c9e-7a5d-42d1-96b2-a8a4b4a25713}) of ThingClass sdm630
+
+
+
+
+ Energy consumed phase C changed
+ The name of the EventType ({4c084c9e-7a5d-42d1-96b2-a8a4b4a25713}) of ThingClass sdm630
+
+
+
+
+
+ Energy produced phase A
+ The name of the ParamType (ThingClass: sdm630, EventType: energyProducedPhaseA, ID: {308fa88e-6054-4c79-b12a-be2d0a404ef6})
+----------
+The name of the StateType ({308fa88e-6054-4c79-b12a-be2d0a404ef6}) of ThingClass sdm630
+
+
+
+
+ Energy produced phase A changed
+ The name of the EventType ({308fa88e-6054-4c79-b12a-be2d0a404ef6}) of ThingClass sdm630
+
+
+
+
+
+ Energy produced phase B
+ The name of the ParamType (ThingClass: sdm630, EventType: energyProducedPhaseB, ID: {48ab6e61-dfb4-4f85-b5cc-9d89e53c6b39})
+----------
+The name of the StateType ({48ab6e61-dfb4-4f85-b5cc-9d89e53c6b39}) of ThingClass sdm630
+
+
+
+
+ Energy produced phase B changed
+ The name of the EventType ({48ab6e61-dfb4-4f85-b5cc-9d89e53c6b39}) of ThingClass sdm630
+
+
+
+
+
+ Energy produced phase C
+ The name of the ParamType (ThingClass: sdm630, EventType: energyProducedPhaseC, ID: {6b3ddf15-3d4b-4dc1-8e5a-84fbf90b49ff})
+----------
+The name of the StateType ({6b3ddf15-3d4b-4dc1-8e5a-84fbf90b49ff}) of ThingClass sdm630
+
+
+
+
+ Energy produced phase C changed
+ The name of the EventType ({6b3ddf15-3d4b-4dc1-8e5a-84fbf90b49ff}) of ThingClass sdm630
+
+
+
+
+
+ Frequency
+ The name of the ParamType (ThingClass: sdm630, EventType: frequency, ID: {ab24f26c-dc15-4ec3-8d76-06a48285440b})
+----------
+The name of the StateType ({ab24f26c-dc15-4ec3-8d76-06a48285440b}) of ThingClass sdm630
+
+
+
+
+ Frequency changed
+ The name of the EventType ({ab24f26c-dc15-4ec3-8d76-06a48285440b}) of ThingClass sdm630
+
+
+
+
+ Modbus RTU master
+ The name of the ParamType (ThingClass: sdm630, Type: thing, ID: {d90e9292-d03c-4f2a-957e-5d965018c9c9})
+
+
+
+
+ Modbus slave address
+ The name of the ParamType (ThingClass: sdm630, Type: thing, ID: {ac77ea98-b006-486e-a3e8-b30a483f26c1})
+
+
+
+
+ SDM630
+ The name of the ThingClass ({f37597bb-35fe-48f2-9617-343dd54c0903})
+
+
+
+
+ Slave address
+ The name of the ParamType (ThingClass: sdm630, Type: discovery, ID: {6ab43559-53ec-47ba-b8a0-8d3b7f8d90c2})
+
+
+
+
+
+ Total energy consumed
+ The name of the ParamType (ThingClass: sdm630, EventType: totalEnergyConsumed, ID: {98d858a8-22e8-4262-b5c7-25bb027942ad})
+----------
+The name of the StateType ({98d858a8-22e8-4262-b5c7-25bb027942ad}) of ThingClass sdm630
+
+
+
+
+ Total energy consumed changed
+ The name of the EventType ({98d858a8-22e8-4262-b5c7-25bb027942ad}) of ThingClass sdm630
+
+
+
+
+
+ Total energy produced
+ The name of the ParamType (ThingClass: sdm630, EventType: totalEnergyProduced, ID: {e469b3ff-a4c2-42da-af35-ccafaef214af})
+----------
+The name of the StateType ({e469b3ff-a4c2-42da-af35-ccafaef214af}) of ThingClass sdm630
+
+
+
+
+ Total energy produced changed
+ The name of the EventType ({e469b3ff-a4c2-42da-af35-ccafaef214af}) of ThingClass sdm630
+
+
+
+
+
+ Voltage phase A
+ The name of the ParamType (ThingClass: sdm630, EventType: voltagePhaseA, ID: {db018146-0441-4dc0-9834-6d43ebaf8311})
+----------
+The name of the StateType ({db018146-0441-4dc0-9834-6d43ebaf8311}) of ThingClass sdm630
+
+
+
+
+ Voltage phase A changed
+ The name of the EventType ({db018146-0441-4dc0-9834-6d43ebaf8311}) of ThingClass sdm630
+
+
+
+
+
+ Voltage phase B
+ The name of the ParamType (ThingClass: sdm630, EventType: voltagePhaseB, ID: {406f6d02-d5eb-49b3-87da-3247568e6054})
+----------
+The name of the StateType ({406f6d02-d5eb-49b3-87da-3247568e6054}) of ThingClass sdm630
+
+
+
+
+ Voltage phase B changed
+ The name of the EventType ({406f6d02-d5eb-49b3-87da-3247568e6054}) of ThingClass sdm630
+
+
+
+
+
+ Voltage phase C
+ The name of the ParamType (ThingClass: sdm630, EventType: voltagePhaseC, ID: {ace6294d-deaa-4d9a-af78-d64379bcb229})
+----------
+The name of the StateType ({ace6294d-deaa-4d9a-af78-d64379bcb229}) of ThingClass sdm630
+
+
+
+
+ Voltage phase C changed
+ The name of the EventType ({ace6294d-deaa-4d9a-af78-d64379bcb229}) of ThingClass sdm630
+
+
+
+
diff --git a/debian/control b/debian/control
index ca0a9de..8738471 100644
--- a/debian/control
+++ b/debian/control
@@ -43,6 +43,17 @@ Description: nymea integration plugin for alpha innotec heat pumps
This package contains the nymea integration plugin for alpha innotec head pumps.
+Package: nymea-plugin-bgetech
+Architecture: any
+Multi-Arch: same
+Section: libs
+Depends: ${shlibs:Depends},
+ ${misc:Depends},
+Description: nymea integration plugin for B+G E-Tech Modbus based energy meters
+ This package contains the nymea integration plugin for Modbus based energy meters
+ made by B+G E-Tech.
+
+
Package: nymea-plugin-drexelundweiss
Architecture: any
Section: libs
@@ -61,14 +72,15 @@ Description: nymea integration plugin for iDM heat pumps
This package contains the nymea integration plugin for iDM heat pumps.
-Package: nymea-plugin-energymeters
+Package: nymea-plugin-inepro
Architecture: any
Multi-Arch: same
Section: libs
Depends: ${shlibs:Depends},
${misc:Depends},
-Description: nymea integration plugin for Modbus based energy meters
- This package contains a collection of energy meters.
+Description: nymea integration plugin for inepro Metering Modbus based energy meters
+ This package contains the nymea integration plugin for Modbus based energy meters
+ made by inepro Metering.
Package: nymea-plugin-huawei
diff --git a/debian/nymea-plugin-bgetech.install.in b/debian/nymea-plugin-bgetech.install.in
new file mode 100644
index 0000000..c02dd47
--- /dev/null
+++ b/debian/nymea-plugin-bgetech.install.in
@@ -0,0 +1,2 @@
+usr/lib/@DEB_HOST_MULTIARCH@/nymea/plugins/libnymea_integrationpluginbgetech.so
+bgetech/translations/*qm usr/share/nymea/translations/
diff --git a/debian/nymea-plugin-energymeters.install.in b/debian/nymea-plugin-energymeters.install.in
deleted file mode 100644
index cc7039a..0000000
--- a/debian/nymea-plugin-energymeters.install.in
+++ /dev/null
@@ -1,2 +0,0 @@
-usr/lib/@DEB_HOST_MULTIARCH@/nymea/plugins/libnymea_integrationpluginenergymeters.so
-energymeters/translations/*qm usr/share/nymea/translations/
diff --git a/debian/nymea-plugin-inepro.install.in b/debian/nymea-plugin-inepro.install.in
new file mode 100644
index 0000000..2cf6128
--- /dev/null
+++ b/debian/nymea-plugin-inepro.install.in
@@ -0,0 +1,2 @@
+usr/lib/@DEB_HOST_MULTIARCH@/nymea/plugins/libnymea_integrationplugininepro.so
+inepro/translations/*qm usr/share/nymea/translations/
diff --git a/energymeters/README.md b/energymeters/README.md
deleted file mode 100644
index 9f0e154..0000000
--- a/energymeters/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# Energy Meters
-
-Connect Modbus RTU based energy meters.
-
-Once you configured in the system settings a Modbus RTU resource using the configured settings of your meter, you can start adding the energy meter to your system.
-
-While discovering, nymea will offer you the configured modbus resources as possible connections.
-
-
-## Supported things
-
-* b+g e-tech
- * SDM630Modbus
-* inepro Metering
- * PRO380-Mod
-
-
-## Requirements
-
-* The plugin 'nymea-plugin-energymeters' must be installed.
-* At least one Modbus RTU interface must be setup.
diff --git a/energymeters/integrationpluginenergymeters.cpp b/energymeters/integrationpluginenergymeters.cpp
deleted file mode 100644
index 01272ad..0000000
--- a/energymeters/integrationpluginenergymeters.cpp
+++ /dev/null
@@ -1,354 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-*
-* 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 .
-*
-* 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 "integrationpluginenergymeters.h"
-#include "plugininfo.h"
-
-IntegrationPluginEnergyMeters::IntegrationPluginEnergyMeters()
-{
- m_slaveIdParamTypeIds.insert(pro380ThingClassId, pro380ThingSlaveAddressParamTypeId);
- m_slaveIdParamTypeIds.insert(sdm630ThingClassId, sdm630ThingSlaveAddressParamTypeId);
-
- m_modbusUuidParamTypeIds.insert(pro380ThingClassId, pro380ThingModbusMasterUuidParamTypeId);
- m_modbusUuidParamTypeIds.insert(sdm630ThingClassId, sdm630ThingModbusMasterUuidParamTypeId);
-
- m_discoverySlaveAddressParamTypeIds.insert(pro380ThingClassId, pro380DiscoverySlaveAddressParamTypeId);
- m_discoverySlaveAddressParamTypeIds.insert(sdm630ThingClassId, sdm630DiscoverySlaveAddressParamTypeId);
-
- m_connectionStateTypeIds.insert(pro380ThingClassId, pro380ConnectedStateTypeId);
- m_connectionStateTypeIds.insert(sdm630ThingClassId, sdm630ConnectedStateTypeId);
-}
-
-void IntegrationPluginEnergyMeters::init()
-{
- connect(hardwareManager()->modbusRtuResource(), &ModbusRtuHardwareResource::modbusRtuMasterRemoved, this, [=] (const QUuid &modbusUuid){
- qCDebug(dcEnergyMeters()) << "Modbus RTU master has been removed" << modbusUuid.toString();
-
- foreach (Thing *thing, myThings()) {
- if (m_modbusUuidParamTypeIds.contains(thing->thingClassId())) {
- if (thing->paramValue(m_modbusUuidParamTypeIds.value(thing->thingClassId())) == modbusUuid) {
- qCWarning(dcEnergyMeters()) << "Modbus RTU hardware resource removed for" << thing << ". The thing will not be functional any more until a new resource has been configured for it.";
- thing->setStateValue(m_connectionStateTypeIds[thing->thingClassId()], false);
-
- if (thing->thingClassId() == sdm630ThingClassId) {
- delete m_sdmConnections.take(thing);
- } else if (thing->thingClassId() == pro380ThingClassId) {
- delete m_ineproConnections.take(thing);
- }
- }
- }
- }
- });
-}
-
-void IntegrationPluginEnergyMeters::discoverThings(ThingDiscoveryInfo *info)
-{
- qCDebug(dcEnergyMeters()) << "Discover modbus RTU resources...";
- if (hardwareManager()->modbusRtuResource()->modbusRtuMasters().isEmpty()) {
- info->finish(Thing::ThingErrorHardwareNotAvailable, QT_TR_NOOP("No Modbus RTU interface available."));
- return;
- }
-
- Q_ASSERT_X(m_connectionStateTypeIds.contains(info->thingClassId()), "discoverThings", QString("Unhandled thingClassId: %1").arg(info->thingClassId().toString()).toUtf8());
-
- uint slaveAddress = info->params().paramValue(m_discoverySlaveAddressParamTypeIds.value(info->thingClassId())).toUInt();
- if (slaveAddress > 254 || slaveAddress == 0) {
- info->finish(Thing::ThingErrorInvalidParameter, QT_TR_NOOP("Modbus slave address must be between 1 and 254"));
- return;
- }
-
- foreach (ModbusRtuMaster *modbusMaster, hardwareManager()->modbusRtuResource()->modbusRtuMasters()) {
- qCDebug(dcEnergyMeters()) << "Found RTU master resource" << modbusMaster << "connected" << modbusMaster->connected();
- if (!modbusMaster->connected())
- continue;
-
- ThingDescriptor descriptor(info->thingClassId(), QT_TR_NOOP("Energy meter"), QT_TR_NOOP("Slave address ") + QString::number(slaveAddress) + " " + modbusMaster->serialPort());
- ParamList params;
- params << Param(m_slaveIdParamTypeIds.value(info->thingClassId()), slaveAddress);
- params << Param(m_modbusUuidParamTypeIds.value(info->thingClassId()), modbusMaster->modbusUuid());
- descriptor.setParams(params);
- info->addThingDescriptor(descriptor);
- }
-
- info->finish(Thing::ThingErrorNoError);
- return;
-}
-
-void IntegrationPluginEnergyMeters::setupThing(ThingSetupInfo *info)
-{
- Thing *thing = info->thing();
- qCDebug(dcEnergyMeters()) << "Setup thing" << thing << thing->params();
- Q_ASSERT_X(m_connectionStateTypeIds.contains(thing->thingClassId()), "setupThing", QString("Unhandled thingClassId: %1").arg(thing->thingClassId().toString()).toUtf8());
-
- uint address = thing->paramValue(m_slaveIdParamTypeIds.value(thing->thingClassId())).toUInt();
- if (address > 254 || address == 0) {
- qCWarning(dcEnergyMeters()) << "Setup failed, slave address is not valid" << address;
- info->finish(Thing::ThingErrorSetupFailed, QT_TR_NOOP("Slave address not valid, must be between 1 and 254"));
- return;
- }
-
- QUuid uuid = thing->paramValue(m_modbusUuidParamTypeIds.value(thing->thingClassId())).toUuid();
- if (!hardwareManager()->modbusRtuResource()->hasModbusRtuMaster(uuid)) {
- qCWarning(dcEnergyMeters()) << "Setup failed, hardware manager not available";
- info->finish(Thing::ThingErrorSetupFailed, QT_TR_NOOP("Modbus RTU resource not available."));
- return;
- }
-
- if (thing->thingClassId() == sdm630ThingClassId) {
- if (m_sdmConnections.contains(thing)) {
- qCDebug(dcEnergyMeters()) << "Setup after rediscovery, cleaning up ...";
- m_sdmConnections.take(thing)->deleteLater();
- }
-
- Sdm630ModbusRtuConnection *sdmConnection = new Sdm630ModbusRtuConnection(hardwareManager()->modbusRtuResource()->getModbusRtuMaster(uuid), address, this);
- connect(sdmConnection->modbusRtuMaster(), &ModbusRtuMaster::connectedChanged, this, [=](bool connected){
- if (connected) {
- qCDebug(dcEnergyMeters()) << "Modbus RTU resource connected" << thing << sdmConnection->modbusRtuMaster()->serialPort();
- } else {
- qCWarning(dcEnergyMeters()) << "Modbus RTU resource disconnected" << thing << sdmConnection->modbusRtuMaster()->serialPort();
- }
- });
-
- connect(sdmConnection, &Sdm630ModbusRtuConnection::currentPhaseAChanged, this, [=](float currentPhaseA){
- thing->setStateValue(sdm630CurrentPhaseAStateTypeId, currentPhaseA);
- thing->setStateValue(sdm630ConnectedStateTypeId, true);
- });
-
- connect(sdmConnection, &Sdm630ModbusRtuConnection::currentPhaseBChanged, this, [=](float currentPhaseB){
- thing->setStateValue(sdm630CurrentPhaseBStateTypeId, currentPhaseB);
- });
-
- connect(sdmConnection, &Sdm630ModbusRtuConnection::currentPhaseCChanged, this, [=](float currentPhaseC){
- thing->setStateValue(sdm630CurrentPhaseCStateTypeId, currentPhaseC);
- });
-
- connect(sdmConnection, &Sdm630ModbusRtuConnection::voltagePhaseAChanged, this, [=](float voltagePhaseA){
- thing->setStateValue(sdm630VoltagePhaseAStateTypeId, voltagePhaseA);
- });
-
- connect(sdmConnection, &Sdm630ModbusRtuConnection::voltagePhaseBChanged, this, [=](float voltagePhaseB){
- thing->setStateValue(sdm630VoltagePhaseBStateTypeId, voltagePhaseB);
- });
-
- connect(sdmConnection, &Sdm630ModbusRtuConnection::voltagePhaseCChanged, this, [=](float voltagePhaseC){
- thing->setStateValue(sdm630VoltagePhaseCStateTypeId, voltagePhaseC);
- });
-
- connect(sdmConnection, &Sdm630ModbusRtuConnection::totalCurrentPowerChanged, this, [=](float currentPower){
- thing->setStateValue(sdm630CurrentPowerStateTypeId, currentPower);
- });
-
- connect(sdmConnection, &Sdm630ModbusRtuConnection::powerPhaseAChanged, this, [=](float powerPhaseA){
- thing->setStateValue(sdm630CurrentPowerPhaseAStateTypeId, powerPhaseA);
- });
-
- connect(sdmConnection, &Sdm630ModbusRtuConnection::powerPhaseBChanged, this, [=](float powerPhaseB){
- thing->setStateValue(sdm630CurrentPowerPhaseBStateTypeId, powerPhaseB);
- });
-
- connect(sdmConnection, &Sdm630ModbusRtuConnection::powerPhaseCChanged, this, [=](float powerPhaseC){
- thing->setStateValue(sdm630CurrentPowerPhaseCStateTypeId, powerPhaseC);
- });
-
- connect(sdmConnection, &Sdm630ModbusRtuConnection::frequencyChanged, this, [=](float frequency){
- thing->setStateValue(sdm630FrequencyStateTypeId, frequency);
- });
-
- connect(sdmConnection, &Sdm630ModbusRtuConnection::totalEnergyConsumedChanged, this, [=](float totalEnergyConsumed){
- thing->setStateValue(sdm630TotalEnergyConsumedStateTypeId, totalEnergyConsumed);
- });
-
- connect(sdmConnection, &Sdm630ModbusRtuConnection::totalEnergyProducedChanged, this, [=](float totalEnergyProduced){
- thing->setStateValue(sdm630TotalEnergyProducedStateTypeId, totalEnergyProduced);
- });
-
- connect(sdmConnection, &Sdm630ModbusRtuConnection::energyProducedPhaseAChanged, this, [=](float energyProducedPhaseA){
- thing->setStateValue(sdm630EnergyProducedPhaseAStateTypeId, energyProducedPhaseA);
- });
-
- connect(sdmConnection, &Sdm630ModbusRtuConnection::energyProducedPhaseBChanged, this, [=](float energyProducedPhaseB){
- thing->setStateValue(sdm630EnergyProducedPhaseBStateTypeId, energyProducedPhaseB);
- });
-
- connect(sdmConnection, &Sdm630ModbusRtuConnection::energyProducedPhaseCChanged, this, [=](float energyProducedPhaseC){
- thing->setStateValue(sdm630EnergyProducedPhaseCStateTypeId, energyProducedPhaseC);
- });
-
- connect(sdmConnection, &Sdm630ModbusRtuConnection::energyConsumedPhaseAChanged, this, [=](float energyConsumedPhaseA){
- thing->setStateValue(sdm630EnergyConsumedPhaseAStateTypeId, energyConsumedPhaseA);
- });
-
- connect(sdmConnection, &Sdm630ModbusRtuConnection::energyConsumedPhaseBChanged, this, [=](float energyConsumedPhaseB){
- thing->setStateValue(sdm630EnergyConsumedPhaseBStateTypeId, energyConsumedPhaseB);
- });
-
- connect(sdmConnection, &Sdm630ModbusRtuConnection::energyConsumedPhaseCChanged, this, [=](float energyConsumedPhaseC){
- thing->setStateValue(sdm630EnergyConsumedPhaseCStateTypeId, energyConsumedPhaseC);
- });
-
- // FIXME: try to read before setup success
- m_sdmConnections.insert(thing, sdmConnection);
- info->finish(Thing::ThingErrorNoError);
-
- } else if (thing->thingClassId() == pro380ThingClassId) {
- if (m_ineproConnections.contains(thing)) {
- qCDebug(dcEnergyMeters()) << "Setup after rediscovery, cleaning up ...";
- m_ineproConnections.take(thing)->deleteLater();
- }
-
- Pro380ModbusRtuConnection *proConnection = new Pro380ModbusRtuConnection(hardwareManager()->modbusRtuResource()->getModbusRtuMaster(uuid), address, this);
- connect(proConnection->modbusRtuMaster(), &ModbusRtuMaster::connectedChanged, this, [=](bool connected){
- if (connected) {
- qCDebug(dcEnergyMeters()) << "Modbus RTU resource connected" << thing << proConnection->modbusRtuMaster()->serialPort();
- } else {
- qCWarning(dcEnergyMeters()) << "Modbus RTU resource disconnected" << thing << proConnection->modbusRtuMaster()->serialPort();
- }
- });
-
- connect(proConnection, &Pro380ModbusRtuConnection::currentPhaseAChanged, this, [=](float currentPhaseA){
- thing->setStateValue(pro380CurrentPhaseAStateTypeId, currentPhaseA);
- thing->setStateValue(pro380ConnectedStateTypeId, true);
- });
-
- connect(proConnection, &Pro380ModbusRtuConnection::currentPhaseBChanged, this, [=](float currentPhaseB){
- thing->setStateValue(pro380CurrentPhaseBStateTypeId, currentPhaseB);
- });
-
- connect(proConnection, &Pro380ModbusRtuConnection::currentPhaseCChanged, this, [=](float currentPhaseC){
- thing->setStateValue(pro380CurrentPhaseCStateTypeId, currentPhaseC);
- });
-
- connect(proConnection, &Pro380ModbusRtuConnection::voltagePhaseAChanged, this, [=](float voltagePhaseA){
- thing->setStateValue(pro380VoltagePhaseAStateTypeId, voltagePhaseA);
- });
-
- connect(proConnection, &Pro380ModbusRtuConnection::voltagePhaseBChanged, this, [=](float voltagePhaseB){
- thing->setStateValue(pro380VoltagePhaseBStateTypeId, voltagePhaseB);
- });
-
- connect(proConnection, &Pro380ModbusRtuConnection::voltagePhaseCChanged, this, [=](float voltagePhaseC){
- thing->setStateValue(pro380VoltagePhaseCStateTypeId, voltagePhaseC);
- });
-
- connect(proConnection, &Pro380ModbusRtuConnection::totalCurrentPowerChanged, this, [=](float currentPower){
- thing->setStateValue(pro380CurrentPowerStateTypeId, currentPower * 1000); // kW
- });
-
- connect(proConnection, &Pro380ModbusRtuConnection::powerPhaseAChanged, this, [=](float powerPhaseA){
- thing->setStateValue(pro380CurrentPowerPhaseAStateTypeId, powerPhaseA * 1000); // kW
- });
-
- connect(proConnection, &Pro380ModbusRtuConnection::powerPhaseBChanged, this, [=](float powerPhaseB){
- thing->setStateValue(pro380CurrentPowerPhaseBStateTypeId, powerPhaseB * 1000); // kW
- });
-
- connect(proConnection, &Pro380ModbusRtuConnection::powerPhaseCChanged, this, [=](float powerPhaseC){
- thing->setStateValue(pro380CurrentPowerPhaseCStateTypeId, powerPhaseC * 1000); // kW
- });
-
- connect(proConnection, &Pro380ModbusRtuConnection::frequencyChanged, this, [=](float frequency){
- thing->setStateValue(pro380FrequencyStateTypeId, frequency);
- });
-
- connect(proConnection, &Pro380ModbusRtuConnection::totalEnergyConsumedChanged, this, [=](float totalEnergyConsumed){
- thing->setStateValue(pro380TotalEnergyConsumedStateTypeId, totalEnergyConsumed);
- });
-
- connect(proConnection, &Pro380ModbusRtuConnection::totalEnergyProducedChanged, this, [=](float totalEnergyProduced){
- thing->setStateValue(pro380TotalEnergyProducedStateTypeId, totalEnergyProduced);
- });
-
- connect(proConnection, &Pro380ModbusRtuConnection::energyProducedPhaseAChanged, this, [=](float energyProducedPhaseA){
- thing->setStateValue(pro380EnergyProducedPhaseAStateTypeId, energyProducedPhaseA);
- });
-
- connect(proConnection, &Pro380ModbusRtuConnection::energyProducedPhaseBChanged, this, [=](float energyProducedPhaseB){
- thing->setStateValue(pro380EnergyProducedPhaseBStateTypeId, energyProducedPhaseB);
- });
-
- connect(proConnection, &Pro380ModbusRtuConnection::energyProducedPhaseCChanged, this, [=](float energyProducedPhaseC){
- thing->setStateValue(pro380EnergyProducedPhaseCStateTypeId, energyProducedPhaseC);
- });
-
- connect(proConnection, &Pro380ModbusRtuConnection::energyConsumedPhaseAChanged, this, [=](float energyConsumedPhaseA){
- thing->setStateValue(pro380EnergyConsumedPhaseAStateTypeId, energyConsumedPhaseA);
- });
-
- connect(proConnection, &Pro380ModbusRtuConnection::energyConsumedPhaseBChanged, this, [=](float energyConsumedPhaseB){
- thing->setStateValue(pro380EnergyConsumedPhaseBStateTypeId, energyConsumedPhaseB);
- });
-
- connect(proConnection, &Pro380ModbusRtuConnection::energyConsumedPhaseCChanged, this, [=](float energyConsumedPhaseC){
- thing->setStateValue(pro380EnergyConsumedPhaseCStateTypeId, energyConsumedPhaseC);
- });
-
-
- // FIXME: try to read before setup success
- m_ineproConnections.insert(thing, proConnection);
- info->finish(Thing::ThingErrorNoError);
- }
-}
-
-void IntegrationPluginEnergyMeters::postSetupThing(Thing *thing)
-{
- qCDebug(dcEnergyMeters) << "Post setup thing" << thing->name();
- if (!m_refreshTimer) {
- m_refreshTimer = hardwareManager()->pluginTimerManager()->registerTimer(2);
- connect(m_refreshTimer, &PluginTimer::timeout, this, [this] {
- foreach (Thing *thing, myThings().filterByThingClassId(sdm630ThingClassId)) {
- m_sdmConnections.value(thing)->update();
- }
-
- foreach (Thing *thing, myThings().filterByThingClassId(pro380ThingClassId)) {
- m_sdmConnections.value(thing)->update();
- }
- });
-
- qCDebug(dcEnergyMeters()) << "Starting refresh timer...";
- m_refreshTimer->start();
- }
-}
-
-void IntegrationPluginEnergyMeters::thingRemoved(Thing *thing)
-{
- qCDebug(dcEnergyMeters()) << "Thing removed" << thing->name();
-
- if (m_sdmConnections.contains(thing))
- m_sdmConnections.take(thing)->deleteLater();
-
- if (m_ineproConnections.contains(thing))
- m_ineproConnections.take(thing)->deleteLater();
-
- if (myThings().isEmpty() && m_refreshTimer) {
- qCDebug(dcEnergyMeters()) << "Stopping reconnect timer";
- hardwareManager()->pluginTimerManager()->unregisterTimer(m_refreshTimer);
- m_refreshTimer = nullptr;
- }
-}
diff --git a/energymeters/integrationpluginenergymeters.json b/energymeters/integrationpluginenergymeters.json
deleted file mode 100644
index fb48126..0000000
--- a/energymeters/integrationpluginenergymeters.json
+++ /dev/null
@@ -1,452 +0,0 @@
-{
- "name": "EnergyMeters",
- "displayName": "EnergyMeters",
- "id": "56e95111-fb6b-4f63-9a0a-a5ee001e89ed",
- "paramTypes":[ ],
- "vendors": [
- {
- "name": "ineproMetering",
- "displayName": "inepro Metering",
- "id": "64f4df0f-18ce-409c-bf32-84a086c691ca",
- "thingClasses": [
- {
- "name": "pro380",
- "displayName": "PRO380-Mod",
- "id": "d7c6440b-54f9-4cc0-a96b-9bb7304b3e77",
- "createMethods": ["discovery"],
- "interfaces": ["energymeter", "connectable"],
- "discoveryParamTypes": [
- {
- "id": "a29f37f6-b344-4628-8ab4-8f4c18fada4a",
- "name": "slaveAddress",
- "displayName": "Slave address",
- "type": "int",
- "defaultValue": 1
- }
- ],
- "paramTypes": [
- {
- "id": "c75b2c31-6ec3-49ab-8c8f-5231d0a7e941",
- "name": "slaveAddress",
- "displayName": "Modbus slave address",
- "type": "uint",
- "defaultValue": 1
- },
- {
- "id": "6cdbec8c-21b9-42dc-b1ab-8901ac609482",
- "name": "modbusMasterUuid",
- "displayName": "Modbus RTU master",
- "type": "QUuid",
- "defaultValue": "",
- "readOnly": true
- }
- ],
- "stateTypes": [
- {
- "id": "7f9bc504-0882-4b86-83b1-42fa345acfd9",
- "name": "connected",
- "displayName": "Connected",
- "displayNameEvent": "Connected changed",
- "type": "bool",
- "cached": false,
- "defaultValue": false
- },
- {
- "id": "04dba21a-7447-46b9-b9ae-095e5769e511",
- "name": "voltagePhaseA",
- "displayName": "Voltage phase A",
- "displayNameEvent": "Voltage phase A changed",
- "type": "double",
- "unit": "Volt",
- "defaultValue": 0
- },
- {
- "id": "270d0c34-0a0c-4655-985f-faad6efd1afd",
- "name": "voltagePhaseB",
- "displayName": "Voltage phase B",
- "displayNameEvent": "Voltage phase B changed",
- "type": "double",
- "unit": "Volt",
- "defaultValue": 0
- },
- {
- "id": "a1da8cfd-37cc-4c87-b857-e942cd90daec",
- "name": "voltagePhaseC",
- "displayName": "Voltage phase C",
- "displayNameEvent": "Voltage phase C changed",
- "type": "double",
- "unit": "Volt",
- "defaultValue": 0
- },
- {
- "id": "1e077a3b-2dab-4ec4-ae96-ab49a564fe31",
- "name": "currentPhaseA",
- "displayName": "Current phase A",
- "displayNameEvent": "Current phase A changed",
- "type": "double",
- "unit": "Ampere",
- "defaultValue": 0
- },
- {
- "id": "d2f54061-0807-47de-944c-68c8118ece91",
- "name": "currentPhaseB",
- "displayName": "Current phase B",
- "displayNameEvent": "Current phase B changed",
- "type": "double",
- "unit": "Ampere",
- "defaultValue": 0
- },
- {
- "id": "610b20fb-2718-4f02-ac6e-12a9ef8c7615",
- "name": "currentPhaseC",
- "displayName": "Current phase C",
- "displayNameEvent": "Current phase C changed",
- "type": "double",
- "unit": "Ampere",
- "defaultValue": 0
- },
- {
- "id": "464eff60-11c2-46b7-98f5-1aa8172e5a2d",
- "name": "currentPower",
- "displayName": "Current power",
- "displayNameEvent": "Current power changed",
- "type": "double",
- "unit": "Watt",
- "defaultValue": 0
- },
- {
- "id": "55283773-0a4e-4574-b21a-d4a3f287eab1",
- "name": "currentPowerPhaseA",
- "displayName": "Current power phase A",
- "displayNameEvent": "Current power phase A changed",
- "type": "double",
- "unit": "Watt",
- "defaultValue": 0
- },
- {
- "id": "8f15d104-5ff7-4c33-9cf9-fdbef4b6f721",
- "name": "currentPowerPhaseB",
- "displayName": "Current power phase B",
- "displayNameEvent": "Current power phase B changed",
- "type": "double",
- "unit": "Watt",
- "defaultValue": 0
- },
- {
- "id": "86c0f968-ee70-4f56-bdfc-33b8e2b134a4",
- "name": "currentPowerPhaseC",
- "displayName": "Current power phase C",
- "displayNameEvent": "Current power phase C changed",
- "type": "double",
- "unit": "Watt",
- "defaultValue": 0
- },
- {
- "id": "bb6fd00c-3bbb-4977-bb8a-96787bb6f5c5",
- "name": "frequency",
- "displayName": "Frequency",
- "displayNameEvent": "Frequency changed",
- "type": "double",
- "unit": "Hertz",
- "defaultValue": 0.00
- },
- {
- "id": "f18fd596-b47f-44be-a0f0-6ca44369ebf5",
- "name": "totalEnergyConsumed",
- "displayName": "Total energy consumed",
- "displayNameEvent": "Total energy consumed changed",
- "type": "double",
- "unit": "KiloWattHour",
- "defaultValue": 0.00
- },
- {
- "id": "112911c9-14e0-4c83-ac92-f2ceb3bdecdf",
- "name": "totalEnergyProduced",
- "displayName": "Total energy produced",
- "displayNameEvent": "Total energy produced changed",
- "type": "double",
- "unit": "KiloWattHour",
- "defaultValue": 0.00
- },
- {
- "id": "b16b3b0c-82d9-4b3c-a172-0e6631c8ce16",
- "name": "energyConsumedPhaseA",
- "displayName": "Energy consumed phase A",
- "displayNameEvent": "Energy consumed phase A changed",
- "type": "double",
- "unit": "KiloWattHour",
- "defaultValue": 0.00
- },
- {
- "id": "64225f7f-9b2f-4bfc-87b2-38758804a28b",
- "name": "energyConsumedPhaseB",
- "displayName": "Energy consumed phase B",
- "displayNameEvent": "Energy consumed phase B changed",
- "type": "double",
- "unit": "KiloWattHour",
- "defaultValue": 0.00
- },
- {
- "id": "a6e82d61-e837-4ec8-b14a-af0d49bea9d2",
- "name": "energyConsumedPhaseC",
- "displayName": "Energy consumed phase C",
- "displayNameEvent": "Energy consumed phase C changed",
- "type": "double",
- "unit": "KiloWattHour",
- "defaultValue": 0.00
- },
- {
- "id": "95bd476e-c247-4f7d-ab01-d9f1b7c0d996",
- "name": "energyProducedPhaseA",
- "displayName": "Energy produced phase A",
- "displayNameEvent": "Energy produced phase A changed",
- "type": "double",
- "unit": "KiloWattHour",
- "defaultValue": 0.00
- },
- {
- "id": "f0a0bd81-708c-48d6-b5c9-165464a5b309",
- "name": "energyProducedPhaseB",
- "displayName": "Energy produced phase B",
- "displayNameEvent": "Energy produced phase B changed",
- "type": "double",
- "unit": "KiloWattHour",
- "defaultValue": 0.00
- },
- {
- "id": "c33fcd11-b4a9-44b2-9e30-40dfa2e4c9b1",
- "name": "energyProducedPhaseC",
- "displayName": "Energy produced phase C",
- "displayNameEvent": "Energy produced phase C changed",
- "type": "double",
- "unit": "KiloWattHour",
- "defaultValue": 0.00
- }
- ]
- }
- ]
- },
- {
- "name": "bgetech",
- "displayName": "B+G e-tech",
- "id": "215035fe-95e8-43d8-a52e-0a31b787d902",
- "thingClasses": [
- {
- "name": "sdm630",
- "displayName": "SDM630 Modbus",
- "id": "f37597bb-35fe-48f2-9617-343dd54c0903",
- "createMethods": ["discovery"],
- "interfaces": ["energymeter", "connectable"],
- "discoveryParamTypes": [
- {
- "id": "6ab43559-53ec-47ba-b8a0-8d3b7f8d90c2",
- "name": "slaveAddress",
- "displayName": "Slave address",
- "type": "int",
- "defaultValue": 1
- }
- ],
- "paramTypes": [
- {
- "id": "ac77ea98-b006-486e-a3e8-b30a483f26c1",
- "name": "slaveAddress",
- "displayName": "Modbus slave address",
- "type": "uint",
- "defaultValue": 1
- },
- {
- "id": "d90e9292-d03c-4f2a-957e-5d965018c9c9",
- "name": "modbusMasterUuid",
- "displayName": "Modbus RTU master",
- "type": "QUuid",
- "defaultValue": "",
- "readOnly": true
- }
- ],
- "stateTypes": [
- {
- "id": "8050bd0b-1dad-4a7e-b632-c71ead3c9f8b",
- "name": "connected",
- "displayName": "Connected",
- "displayNameEvent": "Connected changed",
- "type": "bool",
- "cached": false,
- "defaultValue": false
- },
- {
- "id": "db018146-0441-4dc0-9834-6d43ebaf8311",
- "name": "voltagePhaseA",
- "displayName": "Voltage phase A",
- "displayNameEvent": "Voltage phase A changed",
- "type": "double",
- "unit": "Volt",
- "defaultValue": 0
- },
- {
- "id": "406f6d02-d5eb-49b3-87da-3247568e6054",
- "name": "voltagePhaseB",
- "displayName": "Voltage phase B",
- "displayNameEvent": "Voltage phase B changed",
- "type": "double",
- "unit": "Volt",
- "defaultValue": 0
- },
- {
- "id": "ace6294d-deaa-4d9a-af78-d64379bcb229",
- "name": "voltagePhaseC",
- "displayName": "Voltage phase C",
- "displayNameEvent": "Voltage phase C changed",
- "type": "double",
- "unit": "Volt",
- "defaultValue": 0
- },
- {
- "id": "4baf1d08-5ffa-49cf-95ef-9527b0c6f081",
- "name": "currentPhaseA",
- "displayName": "Current phase A",
- "displayNameEvent": "Current phase A changed",
- "type": "double",
- "unit": "Ampere",
- "defaultValue": 0
- },
- {
- "id": "99e47d06-0a6a-4bfd-b164-61ecb6ba2818",
- "name": "currentPhaseB",
- "displayName": "Current phase B",
- "displayNameEvent": "Current phase B changed",
- "type": "double",
- "unit": "Ampere",
- "defaultValue": 0
- },
- {
- "id": "4a092a66-352d-4d60-90ab-6ac5f58b92fe",
- "name": "currentPhaseC",
- "displayName": "Current phase C",
- "displayNameEvent": "Current phase C changed",
- "type": "double",
- "unit": "Ampere",
- "defaultValue": 0
- },
- {
- "id": "c824e97b-a6d1-4030-9d7a-00af6fb8e1c3",
- "name": "currentPower",
- "displayName": "Current power",
- "displayNameEvent": "Current power changed",
- "type": "double",
- "unit": "Watt",
- "defaultValue": 0
- },
- {
- "id": "3982fb12-b179-40f7-9b27-36adb1cadd37",
- "name": "currentPowerPhaseA",
- "displayName": "Current power phase A",
- "displayNameEvent": "Current power phase A changed",
- "type": "double",
- "unit": "Watt",
- "defaultValue": 0
- },
- {
- "id": "2a231c58-b095-4037-8394-a730431e70b8",
- "name": "currentPowerPhaseB",
- "displayName": "Current power phase B",
- "displayNameEvent": "Current power phase B changed",
- "type": "double",
- "unit": "Watt",
- "defaultValue": 0
- },
- {
- "id": "ee8c4f0c-2b69-4210-9966-1553a592b06d",
- "name": "currentPowerPhaseC",
- "displayName": "Current power phase C",
- "displayNameEvent": "Current power phase C changed",
- "type": "double",
- "unit": "Watt",
- "defaultValue": 0
- },
- {
- "id": "ab24f26c-dc15-4ec3-8d76-06a48285440b",
- "name": "frequency",
- "displayName": "Frequency",
- "displayNameEvent": "Frequency changed",
- "type": "double",
- "unit": "Hertz",
- "defaultValue": 0.00
- },
- {
- "id": "98d858a8-22e8-4262-b5c7-25bb027942ad",
- "name": "totalEnergyConsumed",
- "displayName": "Total energy consumed",
- "displayNameEvent": "Total energy consumed changed",
- "type": "double",
- "unit": "KiloWattHour",
- "defaultValue": 0.00
- },
- {
- "id": "e469b3ff-a4c2-42da-af35-ccafaef214af",
- "name": "totalEnergyProduced",
- "displayName": "Total energy produced",
- "displayNameEvent": "Total energy produced changed",
- "type": "double",
- "unit": "KiloWattHour",
- "defaultValue": 0.00
- },
- {
- "id": "6ca06c81-fe75-4448-a22f-47c303421440",
- "name": "energyConsumedPhaseA",
- "displayName": "Energy consumed phase A",
- "displayNameEvent": "Energy consumed phase A changed",
- "type": "double",
- "unit": "KiloWattHour",
- "defaultValue": 0.00
- },
- {
- "id": "fa2b879b-2a81-4bc8-9577-98082c4d9330",
- "name": "energyConsumedPhaseB",
- "displayName": "Energy consumed phase B",
- "displayNameEvent": "Energy consumed phase B changed",
- "type": "double",
- "unit": "KiloWattHour",
- "defaultValue": 0.00
- },
- {
- "id": "4c084c9e-7a5d-42d1-96b2-a8a4b4a25713",
- "name": "energyConsumedPhaseC",
- "displayName": "Energy consumed phase C",
- "displayNameEvent": "Energy consumed phase C changed",
- "type": "double",
- "unit": "KiloWattHour",
- "defaultValue": 0.00
- },
- {
- "id": "308fa88e-6054-4c79-b12a-be2d0a404ef6",
- "name": "energyProducedPhaseA",
- "displayName": "Energy produced phase A",
- "displayNameEvent": "Energy produced phase A changed",
- "type": "double",
- "unit": "KiloWattHour",
- "defaultValue": 0.00
- },
- {
- "id": "48ab6e61-dfb4-4f85-b5cc-9d89e53c6b39",
- "name": "energyProducedPhaseB",
- "displayName": "Energy produced phase B",
- "displayNameEvent": "Energy produced phase B changed",
- "type": "double",
- "unit": "KiloWattHour",
- "defaultValue": 0.00
- },
- {
- "id": "6b3ddf15-3d4b-4dc1-8e5a-84fbf90b49ff",
- "name": "energyProducedPhaseC",
- "displayName": "Energy produced phase C",
- "displayNameEvent": "Energy produced phase C changed",
- "type": "double",
- "unit": "KiloWattHour",
- "defaultValue": 0.00
- }
- ]
- }
- ]
- }
- ]
-}
diff --git a/energymeters/translations/56e95111-fb6b-4f63-9a0a-a5ee001e89ed-de.ts b/energymeters/translations/56e95111-fb6b-4f63-9a0a-a5ee001e89ed-de.ts
deleted file mode 100644
index 1ac5b4d..0000000
--- a/energymeters/translations/56e95111-fb6b-4f63-9a0a-a5ee001e89ed-de.ts
+++ /dev/null
@@ -1,577 +0,0 @@
-
-
-
-
- EnergyMeters
-
-
- B+G e-tech
- The name of the vendor ({215035fe-95e8-43d8-a52e-0a31b787d902})
- B+G e-tech
-
-
-
-
-
-
- Connected
- The name of the ParamType (ThingClass: sdm630, EventType: connected, ID: {8050bd0b-1dad-4a7e-b632-c71ead3c9f8b})
-----------
-The name of the StateType ({8050bd0b-1dad-4a7e-b632-c71ead3c9f8b}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: connected, ID: {7f9bc504-0882-4b86-83b1-42fa345acfd9})
-----------
-The name of the StateType ({7f9bc504-0882-4b86-83b1-42fa345acfd9}) of ThingClass pro380
- Verbunden
-
-
-
-
- Connected changed
- The name of the EventType ({8050bd0b-1dad-4a7e-b632-c71ead3c9f8b}) of ThingClass sdm630
-----------
-The name of the EventType ({7f9bc504-0882-4b86-83b1-42fa345acfd9}) of ThingClass pro380
- Verbunden
-
-
-
-
-
-
- Current phase A
- The name of the ParamType (ThingClass: sdm630, EventType: currentPhaseA, ID: {4baf1d08-5ffa-49cf-95ef-9527b0c6f081})
-----------
-The name of the StateType ({4baf1d08-5ffa-49cf-95ef-9527b0c6f081}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: currentPhaseA, ID: {1e077a3b-2dab-4ec4-ae96-ab49a564fe31})
-----------
-The name of the StateType ({1e077a3b-2dab-4ec4-ae96-ab49a564fe31}) of ThingClass pro380
-
-
-
-
-
- Current phase A changed
- The name of the EventType ({4baf1d08-5ffa-49cf-95ef-9527b0c6f081}) of ThingClass sdm630
-----------
-The name of the EventType ({1e077a3b-2dab-4ec4-ae96-ab49a564fe31}) of ThingClass pro380
-
-
-
-
-
-
-
- Current phase B
- The name of the ParamType (ThingClass: sdm630, EventType: currentPhaseB, ID: {99e47d06-0a6a-4bfd-b164-61ecb6ba2818})
-----------
-The name of the StateType ({99e47d06-0a6a-4bfd-b164-61ecb6ba2818}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: currentPhaseB, ID: {d2f54061-0807-47de-944c-68c8118ece91})
-----------
-The name of the StateType ({d2f54061-0807-47de-944c-68c8118ece91}) of ThingClass pro380
-
-
-
-
-
- Current phase B changed
- The name of the EventType ({99e47d06-0a6a-4bfd-b164-61ecb6ba2818}) of ThingClass sdm630
-----------
-The name of the EventType ({d2f54061-0807-47de-944c-68c8118ece91}) of ThingClass pro380
-
-
-
-
-
-
-
- Current phase C
- The name of the ParamType (ThingClass: sdm630, EventType: currentPhaseC, ID: {4a092a66-352d-4d60-90ab-6ac5f58b92fe})
-----------
-The name of the StateType ({4a092a66-352d-4d60-90ab-6ac5f58b92fe}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: currentPhaseC, ID: {610b20fb-2718-4f02-ac6e-12a9ef8c7615})
-----------
-The name of the StateType ({610b20fb-2718-4f02-ac6e-12a9ef8c7615}) of ThingClass pro380
-
-
-
-
-
- Current phase C changed
- The name of the EventType ({4a092a66-352d-4d60-90ab-6ac5f58b92fe}) of ThingClass sdm630
-----------
-The name of the EventType ({610b20fb-2718-4f02-ac6e-12a9ef8c7615}) of ThingClass pro380
-
-
-
-
-
-
-
- Current power
- The name of the ParamType (ThingClass: sdm630, EventType: currentPower, ID: {c824e97b-a6d1-4030-9d7a-00af6fb8e1c3})
-----------
-The name of the StateType ({c824e97b-a6d1-4030-9d7a-00af6fb8e1c3}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: currentPower, ID: {464eff60-11c2-46b7-98f5-1aa8172e5a2d})
-----------
-The name of the StateType ({464eff60-11c2-46b7-98f5-1aa8172e5a2d}) of ThingClass pro380
-
-
-
-
-
- Current power changed
- The name of the EventType ({c824e97b-a6d1-4030-9d7a-00af6fb8e1c3}) of ThingClass sdm630
-----------
-The name of the EventType ({464eff60-11c2-46b7-98f5-1aa8172e5a2d}) of ThingClass pro380
-
-
-
-
-
-
-
- Current power phase A
- The name of the ParamType (ThingClass: sdm630, EventType: currentPowerPhaseA, ID: {3982fb12-b179-40f7-9b27-36adb1cadd37})
-----------
-The name of the StateType ({3982fb12-b179-40f7-9b27-36adb1cadd37}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: currentPowerPhaseA, ID: {55283773-0a4e-4574-b21a-d4a3f287eab1})
-----------
-The name of the StateType ({55283773-0a4e-4574-b21a-d4a3f287eab1}) of ThingClass pro380
-
-
-
-
-
- Current power phase A changed
- The name of the EventType ({3982fb12-b179-40f7-9b27-36adb1cadd37}) of ThingClass sdm630
-----------
-The name of the EventType ({55283773-0a4e-4574-b21a-d4a3f287eab1}) of ThingClass pro380
-
-
-
-
-
-
-
- Current power phase B
- The name of the ParamType (ThingClass: sdm630, EventType: currentPowerPhaseB, ID: {2a231c58-b095-4037-8394-a730431e70b8})
-----------
-The name of the StateType ({2a231c58-b095-4037-8394-a730431e70b8}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: currentPowerPhaseB, ID: {8f15d104-5ff7-4c33-9cf9-fdbef4b6f721})
-----------
-The name of the StateType ({8f15d104-5ff7-4c33-9cf9-fdbef4b6f721}) of ThingClass pro380
-
-
-
-
-
- Current power phase B changed
- The name of the EventType ({2a231c58-b095-4037-8394-a730431e70b8}) of ThingClass sdm630
-----------
-The name of the EventType ({8f15d104-5ff7-4c33-9cf9-fdbef4b6f721}) of ThingClass pro380
-
-
-
-
-
-
-
- Current power phase C
- The name of the ParamType (ThingClass: sdm630, EventType: currentPowerPhaseC, ID: {ee8c4f0c-2b69-4210-9966-1553a592b06d})
-----------
-The name of the StateType ({ee8c4f0c-2b69-4210-9966-1553a592b06d}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: currentPowerPhaseC, ID: {86c0f968-ee70-4f56-bdfc-33b8e2b134a4})
-----------
-The name of the StateType ({86c0f968-ee70-4f56-bdfc-33b8e2b134a4}) of ThingClass pro380
-
-
-
-
-
- Current power phase C changed
- The name of the EventType ({ee8c4f0c-2b69-4210-9966-1553a592b06d}) of ThingClass sdm630
-----------
-The name of the EventType ({86c0f968-ee70-4f56-bdfc-33b8e2b134a4}) of ThingClass pro380
-
-
-
-
-
-
-
- Energy consumed phase A
- The name of the ParamType (ThingClass: sdm630, EventType: energyConsumedPhaseA, ID: {6ca06c81-fe75-4448-a22f-47c303421440})
-----------
-The name of the StateType ({6ca06c81-fe75-4448-a22f-47c303421440}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: energyConsumedPhaseA, ID: {b16b3b0c-82d9-4b3c-a172-0e6631c8ce16})
-----------
-The name of the StateType ({b16b3b0c-82d9-4b3c-a172-0e6631c8ce16}) of ThingClass pro380
-
-
-
-
-
- Energy consumed phase A changed
- The name of the EventType ({6ca06c81-fe75-4448-a22f-47c303421440}) of ThingClass sdm630
-----------
-The name of the EventType ({b16b3b0c-82d9-4b3c-a172-0e6631c8ce16}) of ThingClass pro380
-
-
-
-
-
-
-
- Energy consumed phase B
- The name of the ParamType (ThingClass: sdm630, EventType: energyConsumedPhaseB, ID: {fa2b879b-2a81-4bc8-9577-98082c4d9330})
-----------
-The name of the StateType ({fa2b879b-2a81-4bc8-9577-98082c4d9330}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: energyConsumedPhaseB, ID: {64225f7f-9b2f-4bfc-87b2-38758804a28b})
-----------
-The name of the StateType ({64225f7f-9b2f-4bfc-87b2-38758804a28b}) of ThingClass pro380
-
-
-
-
-
- Energy consumed phase B changed
- The name of the EventType ({fa2b879b-2a81-4bc8-9577-98082c4d9330}) of ThingClass sdm630
-----------
-The name of the EventType ({64225f7f-9b2f-4bfc-87b2-38758804a28b}) of ThingClass pro380
-
-
-
-
-
-
-
- Energy consumed phase C
- The name of the ParamType (ThingClass: sdm630, EventType: energyConsumedPhaseC, ID: {4c084c9e-7a5d-42d1-96b2-a8a4b4a25713})
-----------
-The name of the StateType ({4c084c9e-7a5d-42d1-96b2-a8a4b4a25713}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: energyConsumedPhaseC, ID: {a6e82d61-e837-4ec8-b14a-af0d49bea9d2})
-----------
-The name of the StateType ({a6e82d61-e837-4ec8-b14a-af0d49bea9d2}) of ThingClass pro380
-
-
-
-
-
- Energy consumed phase C changed
- The name of the EventType ({4c084c9e-7a5d-42d1-96b2-a8a4b4a25713}) of ThingClass sdm630
-----------
-The name of the EventType ({a6e82d61-e837-4ec8-b14a-af0d49bea9d2}) of ThingClass pro380
-
-
-
-
-
-
-
- Energy produced phase A
- The name of the ParamType (ThingClass: sdm630, EventType: energyProducedPhaseA, ID: {308fa88e-6054-4c79-b12a-be2d0a404ef6})
-----------
-The name of the StateType ({308fa88e-6054-4c79-b12a-be2d0a404ef6}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: energyProducedPhaseA, ID: {95bd476e-c247-4f7d-ab01-d9f1b7c0d996})
-----------
-The name of the StateType ({95bd476e-c247-4f7d-ab01-d9f1b7c0d996}) of ThingClass pro380
-
-
-
-
-
- Energy produced phase A changed
- The name of the EventType ({308fa88e-6054-4c79-b12a-be2d0a404ef6}) of ThingClass sdm630
-----------
-The name of the EventType ({95bd476e-c247-4f7d-ab01-d9f1b7c0d996}) of ThingClass pro380
-
-
-
-
-
-
-
- Energy produced phase B
- The name of the ParamType (ThingClass: sdm630, EventType: energyProducedPhaseB, ID: {48ab6e61-dfb4-4f85-b5cc-9d89e53c6b39})
-----------
-The name of the StateType ({48ab6e61-dfb4-4f85-b5cc-9d89e53c6b39}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: energyProducedPhaseB, ID: {f0a0bd81-708c-48d6-b5c9-165464a5b309})
-----------
-The name of the StateType ({f0a0bd81-708c-48d6-b5c9-165464a5b309}) of ThingClass pro380
-
-
-
-
-
- Energy produced phase B changed
- The name of the EventType ({48ab6e61-dfb4-4f85-b5cc-9d89e53c6b39}) of ThingClass sdm630
-----------
-The name of the EventType ({f0a0bd81-708c-48d6-b5c9-165464a5b309}) of ThingClass pro380
-
-
-
-
-
-
-
- Energy produced phase C
- The name of the ParamType (ThingClass: sdm630, EventType: energyProducedPhaseC, ID: {6b3ddf15-3d4b-4dc1-8e5a-84fbf90b49ff})
-----------
-The name of the StateType ({6b3ddf15-3d4b-4dc1-8e5a-84fbf90b49ff}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: energyProducedPhaseC, ID: {c33fcd11-b4a9-44b2-9e30-40dfa2e4c9b1})
-----------
-The name of the StateType ({c33fcd11-b4a9-44b2-9e30-40dfa2e4c9b1}) of ThingClass pro380
-
-
-
-
-
- Energy produced phase C changed
- The name of the EventType ({6b3ddf15-3d4b-4dc1-8e5a-84fbf90b49ff}) of ThingClass sdm630
-----------
-The name of the EventType ({c33fcd11-b4a9-44b2-9e30-40dfa2e4c9b1}) of ThingClass pro380
-
-
-
-
- EnergyMeters
- The name of the plugin EnergyMeters ({56e95111-fb6b-4f63-9a0a-a5ee001e89ed})
- Energiezähler
-
-
-
-
-
-
- Frequency
- The name of the ParamType (ThingClass: sdm630, EventType: frequency, ID: {ab24f26c-dc15-4ec3-8d76-06a48285440b})
-----------
-The name of the StateType ({ab24f26c-dc15-4ec3-8d76-06a48285440b}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: frequency, ID: {bb6fd00c-3bbb-4977-bb8a-96787bb6f5c5})
-----------
-The name of the StateType ({bb6fd00c-3bbb-4977-bb8a-96787bb6f5c5}) of ThingClass pro380
- Frequenz
-
-
-
-
- Frequency changed
- The name of the EventType ({ab24f26c-dc15-4ec3-8d76-06a48285440b}) of ThingClass sdm630
-----------
-The name of the EventType ({bb6fd00c-3bbb-4977-bb8a-96787bb6f5c5}) of ThingClass pro380
- Frequenz geändert
-
-
-
-
- Modbus RTU master
- The name of the ParamType (ThingClass: sdm630, Type: thing, ID: {d90e9292-d03c-4f2a-957e-5d965018c9c9})
-----------
-The name of the ParamType (ThingClass: pro380, Type: thing, ID: {6cdbec8c-21b9-42dc-b1ab-8901ac609482})
- Modbus RTU Master
-
-
-
-
- Modbus slave address
- The name of the ParamType (ThingClass: sdm630, Type: thing, ID: {ac77ea98-b006-486e-a3e8-b30a483f26c1})
-----------
-The name of the ParamType (ThingClass: pro380, Type: thing, ID: {c75b2c31-6ec3-49ab-8c8f-5231d0a7e941})
- Modbus Slave-Adresse
-
-
-
- PRO380-Mod
- The name of the ThingClass ({d7c6440b-54f9-4cc0-a96b-9bb7304b3e77})
- PRO380-Mod
-
-
-
- SDM630 Modbus
- The name of the ThingClass ({f37597bb-35fe-48f2-9617-343dd54c0903})
-
-
-
-
-
-
-
- Voltage phase A
- The name of the ParamType (ThingClass: sdm630, EventType: voltagePhaseA, ID: {db018146-0441-4dc0-9834-6d43ebaf8311})
-----------
-The name of the StateType ({db018146-0441-4dc0-9834-6d43ebaf8311}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: voltagePhaseA, ID: {04dba21a-7447-46b9-b9ae-095e5769e511})
-----------
-The name of the StateType ({04dba21a-7447-46b9-b9ae-095e5769e511}) of ThingClass pro380
-
-
-
-
-
- Voltage phase A changed
- The name of the EventType ({db018146-0441-4dc0-9834-6d43ebaf8311}) of ThingClass sdm630
-----------
-The name of the EventType ({04dba21a-7447-46b9-b9ae-095e5769e511}) of ThingClass pro380
-
-
-
-
-
-
-
- Voltage phase B
- The name of the ParamType (ThingClass: sdm630, EventType: voltagePhaseB, ID: {406f6d02-d5eb-49b3-87da-3247568e6054})
-----------
-The name of the StateType ({406f6d02-d5eb-49b3-87da-3247568e6054}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: voltagePhaseB, ID: {270d0c34-0a0c-4655-985f-faad6efd1afd})
-----------
-The name of the StateType ({270d0c34-0a0c-4655-985f-faad6efd1afd}) of ThingClass pro380
-
-
-
-
-
- Voltage phase B changed
- The name of the EventType ({406f6d02-d5eb-49b3-87da-3247568e6054}) of ThingClass sdm630
-----------
-The name of the EventType ({270d0c34-0a0c-4655-985f-faad6efd1afd}) of ThingClass pro380
-
-
-
-
-
-
-
- Voltage phase C
- The name of the ParamType (ThingClass: sdm630, EventType: voltagePhaseC, ID: {ace6294d-deaa-4d9a-af78-d64379bcb229})
-----------
-The name of the StateType ({ace6294d-deaa-4d9a-af78-d64379bcb229}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: voltagePhaseC, ID: {a1da8cfd-37cc-4c87-b857-e942cd90daec})
-----------
-The name of the StateType ({a1da8cfd-37cc-4c87-b857-e942cd90daec}) of ThingClass pro380
-
-
-
-
-
- Voltage phase C changed
- The name of the EventType ({ace6294d-deaa-4d9a-af78-d64379bcb229}) of ThingClass sdm630
-----------
-The name of the EventType ({a1da8cfd-37cc-4c87-b857-e942cd90daec}) of ThingClass pro380
-
-
-
-
-
- Slave address
- The name of the ParamType (ThingClass: sdm630, Type: discovery, ID: {6ab43559-53ec-47ba-b8a0-8d3b7f8d90c2})
-----------
-The name of the ParamType (ThingClass: pro380, Type: discovery, ID: {a29f37f6-b344-4628-8ab4-8f4c18fada4a})
- Slave-Adresse
-
-
-
-
-
-
- Total energy consumed
- The name of the ParamType (ThingClass: sdm630, EventType: totalEnergyConsumed, ID: {98d858a8-22e8-4262-b5c7-25bb027942ad})
-----------
-The name of the StateType ({98d858a8-22e8-4262-b5c7-25bb027942ad}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: totalEnergyConsumed, ID: {f18fd596-b47f-44be-a0f0-6ca44369ebf5})
-----------
-The name of the StateType ({f18fd596-b47f-44be-a0f0-6ca44369ebf5}) of ThingClass pro380
- Gesamte verbrauchte Energy
-
-
-
-
- Total energy consumed changed
- The name of the EventType ({98d858a8-22e8-4262-b5c7-25bb027942ad}) of ThingClass sdm630
-----------
-The name of the EventType ({f18fd596-b47f-44be-a0f0-6ca44369ebf5}) of ThingClass pro380
- Gesamte verbrauchte Energie geändert
-
-
-
-
-
-
- Total energy produced
- The name of the ParamType (ThingClass: sdm630, EventType: totalEnergyProduced, ID: {e469b3ff-a4c2-42da-af35-ccafaef214af})
-----------
-The name of the StateType ({e469b3ff-a4c2-42da-af35-ccafaef214af}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: totalEnergyProduced, ID: {112911c9-14e0-4c83-ac92-f2ceb3bdecdf})
-----------
-The name of the StateType ({112911c9-14e0-4c83-ac92-f2ceb3bdecdf}) of ThingClass pro380
- Gesamte produzierte Energie
-
-
-
-
- Total energy produced changed
- The name of the EventType ({e469b3ff-a4c2-42da-af35-ccafaef214af}) of ThingClass sdm630
-----------
-The name of the EventType ({112911c9-14e0-4c83-ac92-f2ceb3bdecdf}) of ThingClass pro380
- Gesamte produzierte Energie geändert
-
-
-
- inepro Metering
- The name of the vendor ({64f4df0f-18ce-409c-bf32-84a086c691ca})
- inepro Metering
-
-
-
- IntegrationPluginEnergyMeters
-
-
- No Modbus RTU interface available.
- Keine Modbus RTU Schnittstelle verfügbar
-
-
-
- Modbus slave address must be between 1 and 254
- Die Modbus-Slave-Adresse muss zwischen 1 und 254 liegen
-
-
-
- Energy meter
- Energiezähler
-
-
-
- Slave address
- Slave-Adresse
-
-
-
- Slave address not valid, must be between 1 and 254
- Die Slave-Adresse ist ungültig, sie muss zwischen 1 und 254 liegen
-
-
-
- Modbus RTU resource not available.
- Modbus RTU Schnittstelle nicht verfügbar
-
-
-
diff --git a/energymeters/translations/56e95111-fb6b-4f63-9a0a-a5ee001e89ed-en_US.ts b/energymeters/translations/56e95111-fb6b-4f63-9a0a-a5ee001e89ed-en_US.ts
deleted file mode 100644
index f84148f..0000000
--- a/energymeters/translations/56e95111-fb6b-4f63-9a0a-a5ee001e89ed-en_US.ts
+++ /dev/null
@@ -1,577 +0,0 @@
-
-
-
-
- EnergyMeters
-
-
- B+G e-tech
- The name of the vendor ({215035fe-95e8-43d8-a52e-0a31b787d902})
-
-
-
-
-
-
-
- Connected
- The name of the ParamType (ThingClass: sdm630, EventType: connected, ID: {8050bd0b-1dad-4a7e-b632-c71ead3c9f8b})
-----------
-The name of the StateType ({8050bd0b-1dad-4a7e-b632-c71ead3c9f8b}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: connected, ID: {7f9bc504-0882-4b86-83b1-42fa345acfd9})
-----------
-The name of the StateType ({7f9bc504-0882-4b86-83b1-42fa345acfd9}) of ThingClass pro380
-
-
-
-
-
- Connected changed
- The name of the EventType ({8050bd0b-1dad-4a7e-b632-c71ead3c9f8b}) of ThingClass sdm630
-----------
-The name of the EventType ({7f9bc504-0882-4b86-83b1-42fa345acfd9}) of ThingClass pro380
-
-
-
-
-
-
-
- Current phase A
- The name of the ParamType (ThingClass: sdm630, EventType: currentPhaseA, ID: {4baf1d08-5ffa-49cf-95ef-9527b0c6f081})
-----------
-The name of the StateType ({4baf1d08-5ffa-49cf-95ef-9527b0c6f081}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: currentPhaseA, ID: {1e077a3b-2dab-4ec4-ae96-ab49a564fe31})
-----------
-The name of the StateType ({1e077a3b-2dab-4ec4-ae96-ab49a564fe31}) of ThingClass pro380
-
-
-
-
-
- Current phase A changed
- The name of the EventType ({4baf1d08-5ffa-49cf-95ef-9527b0c6f081}) of ThingClass sdm630
-----------
-The name of the EventType ({1e077a3b-2dab-4ec4-ae96-ab49a564fe31}) of ThingClass pro380
-
-
-
-
-
-
-
- Current phase B
- The name of the ParamType (ThingClass: sdm630, EventType: currentPhaseB, ID: {99e47d06-0a6a-4bfd-b164-61ecb6ba2818})
-----------
-The name of the StateType ({99e47d06-0a6a-4bfd-b164-61ecb6ba2818}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: currentPhaseB, ID: {d2f54061-0807-47de-944c-68c8118ece91})
-----------
-The name of the StateType ({d2f54061-0807-47de-944c-68c8118ece91}) of ThingClass pro380
-
-
-
-
-
- Current phase B changed
- The name of the EventType ({99e47d06-0a6a-4bfd-b164-61ecb6ba2818}) of ThingClass sdm630
-----------
-The name of the EventType ({d2f54061-0807-47de-944c-68c8118ece91}) of ThingClass pro380
-
-
-
-
-
-
-
- Current phase C
- The name of the ParamType (ThingClass: sdm630, EventType: currentPhaseC, ID: {4a092a66-352d-4d60-90ab-6ac5f58b92fe})
-----------
-The name of the StateType ({4a092a66-352d-4d60-90ab-6ac5f58b92fe}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: currentPhaseC, ID: {610b20fb-2718-4f02-ac6e-12a9ef8c7615})
-----------
-The name of the StateType ({610b20fb-2718-4f02-ac6e-12a9ef8c7615}) of ThingClass pro380
-
-
-
-
-
- Current phase C changed
- The name of the EventType ({4a092a66-352d-4d60-90ab-6ac5f58b92fe}) of ThingClass sdm630
-----------
-The name of the EventType ({610b20fb-2718-4f02-ac6e-12a9ef8c7615}) of ThingClass pro380
-
-
-
-
-
-
-
- Current power
- The name of the ParamType (ThingClass: sdm630, EventType: currentPower, ID: {c824e97b-a6d1-4030-9d7a-00af6fb8e1c3})
-----------
-The name of the StateType ({c824e97b-a6d1-4030-9d7a-00af6fb8e1c3}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: currentPower, ID: {464eff60-11c2-46b7-98f5-1aa8172e5a2d})
-----------
-The name of the StateType ({464eff60-11c2-46b7-98f5-1aa8172e5a2d}) of ThingClass pro380
-
-
-
-
-
- Current power changed
- The name of the EventType ({c824e97b-a6d1-4030-9d7a-00af6fb8e1c3}) of ThingClass sdm630
-----------
-The name of the EventType ({464eff60-11c2-46b7-98f5-1aa8172e5a2d}) of ThingClass pro380
-
-
-
-
-
-
-
- Current power phase A
- The name of the ParamType (ThingClass: sdm630, EventType: currentPowerPhaseA, ID: {3982fb12-b179-40f7-9b27-36adb1cadd37})
-----------
-The name of the StateType ({3982fb12-b179-40f7-9b27-36adb1cadd37}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: currentPowerPhaseA, ID: {55283773-0a4e-4574-b21a-d4a3f287eab1})
-----------
-The name of the StateType ({55283773-0a4e-4574-b21a-d4a3f287eab1}) of ThingClass pro380
-
-
-
-
-
- Current power phase A changed
- The name of the EventType ({3982fb12-b179-40f7-9b27-36adb1cadd37}) of ThingClass sdm630
-----------
-The name of the EventType ({55283773-0a4e-4574-b21a-d4a3f287eab1}) of ThingClass pro380
-
-
-
-
-
-
-
- Current power phase B
- The name of the ParamType (ThingClass: sdm630, EventType: currentPowerPhaseB, ID: {2a231c58-b095-4037-8394-a730431e70b8})
-----------
-The name of the StateType ({2a231c58-b095-4037-8394-a730431e70b8}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: currentPowerPhaseB, ID: {8f15d104-5ff7-4c33-9cf9-fdbef4b6f721})
-----------
-The name of the StateType ({8f15d104-5ff7-4c33-9cf9-fdbef4b6f721}) of ThingClass pro380
-
-
-
-
-
- Current power phase B changed
- The name of the EventType ({2a231c58-b095-4037-8394-a730431e70b8}) of ThingClass sdm630
-----------
-The name of the EventType ({8f15d104-5ff7-4c33-9cf9-fdbef4b6f721}) of ThingClass pro380
-
-
-
-
-
-
-
- Current power phase C
- The name of the ParamType (ThingClass: sdm630, EventType: currentPowerPhaseC, ID: {ee8c4f0c-2b69-4210-9966-1553a592b06d})
-----------
-The name of the StateType ({ee8c4f0c-2b69-4210-9966-1553a592b06d}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: currentPowerPhaseC, ID: {86c0f968-ee70-4f56-bdfc-33b8e2b134a4})
-----------
-The name of the StateType ({86c0f968-ee70-4f56-bdfc-33b8e2b134a4}) of ThingClass pro380
-
-
-
-
-
- Current power phase C changed
- The name of the EventType ({ee8c4f0c-2b69-4210-9966-1553a592b06d}) of ThingClass sdm630
-----------
-The name of the EventType ({86c0f968-ee70-4f56-bdfc-33b8e2b134a4}) of ThingClass pro380
-
-
-
-
-
-
-
- Energy consumed phase A
- The name of the ParamType (ThingClass: sdm630, EventType: energyConsumedPhaseA, ID: {6ca06c81-fe75-4448-a22f-47c303421440})
-----------
-The name of the StateType ({6ca06c81-fe75-4448-a22f-47c303421440}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: energyConsumedPhaseA, ID: {b16b3b0c-82d9-4b3c-a172-0e6631c8ce16})
-----------
-The name of the StateType ({b16b3b0c-82d9-4b3c-a172-0e6631c8ce16}) of ThingClass pro380
-
-
-
-
-
- Energy consumed phase A changed
- The name of the EventType ({6ca06c81-fe75-4448-a22f-47c303421440}) of ThingClass sdm630
-----------
-The name of the EventType ({b16b3b0c-82d9-4b3c-a172-0e6631c8ce16}) of ThingClass pro380
-
-
-
-
-
-
-
- Energy consumed phase B
- The name of the ParamType (ThingClass: sdm630, EventType: energyConsumedPhaseB, ID: {fa2b879b-2a81-4bc8-9577-98082c4d9330})
-----------
-The name of the StateType ({fa2b879b-2a81-4bc8-9577-98082c4d9330}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: energyConsumedPhaseB, ID: {64225f7f-9b2f-4bfc-87b2-38758804a28b})
-----------
-The name of the StateType ({64225f7f-9b2f-4bfc-87b2-38758804a28b}) of ThingClass pro380
-
-
-
-
-
- Energy consumed phase B changed
- The name of the EventType ({fa2b879b-2a81-4bc8-9577-98082c4d9330}) of ThingClass sdm630
-----------
-The name of the EventType ({64225f7f-9b2f-4bfc-87b2-38758804a28b}) of ThingClass pro380
-
-
-
-
-
-
-
- Energy consumed phase C
- The name of the ParamType (ThingClass: sdm630, EventType: energyConsumedPhaseC, ID: {4c084c9e-7a5d-42d1-96b2-a8a4b4a25713})
-----------
-The name of the StateType ({4c084c9e-7a5d-42d1-96b2-a8a4b4a25713}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: energyConsumedPhaseC, ID: {a6e82d61-e837-4ec8-b14a-af0d49bea9d2})
-----------
-The name of the StateType ({a6e82d61-e837-4ec8-b14a-af0d49bea9d2}) of ThingClass pro380
-
-
-
-
-
- Energy consumed phase C changed
- The name of the EventType ({4c084c9e-7a5d-42d1-96b2-a8a4b4a25713}) of ThingClass sdm630
-----------
-The name of the EventType ({a6e82d61-e837-4ec8-b14a-af0d49bea9d2}) of ThingClass pro380
-
-
-
-
-
-
-
- Energy produced phase A
- The name of the ParamType (ThingClass: sdm630, EventType: energyProducedPhaseA, ID: {308fa88e-6054-4c79-b12a-be2d0a404ef6})
-----------
-The name of the StateType ({308fa88e-6054-4c79-b12a-be2d0a404ef6}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: energyProducedPhaseA, ID: {95bd476e-c247-4f7d-ab01-d9f1b7c0d996})
-----------
-The name of the StateType ({95bd476e-c247-4f7d-ab01-d9f1b7c0d996}) of ThingClass pro380
-
-
-
-
-
- Energy produced phase A changed
- The name of the EventType ({308fa88e-6054-4c79-b12a-be2d0a404ef6}) of ThingClass sdm630
-----------
-The name of the EventType ({95bd476e-c247-4f7d-ab01-d9f1b7c0d996}) of ThingClass pro380
-
-
-
-
-
-
-
- Energy produced phase B
- The name of the ParamType (ThingClass: sdm630, EventType: energyProducedPhaseB, ID: {48ab6e61-dfb4-4f85-b5cc-9d89e53c6b39})
-----------
-The name of the StateType ({48ab6e61-dfb4-4f85-b5cc-9d89e53c6b39}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: energyProducedPhaseB, ID: {f0a0bd81-708c-48d6-b5c9-165464a5b309})
-----------
-The name of the StateType ({f0a0bd81-708c-48d6-b5c9-165464a5b309}) of ThingClass pro380
-
-
-
-
-
- Energy produced phase B changed
- The name of the EventType ({48ab6e61-dfb4-4f85-b5cc-9d89e53c6b39}) of ThingClass sdm630
-----------
-The name of the EventType ({f0a0bd81-708c-48d6-b5c9-165464a5b309}) of ThingClass pro380
-
-
-
-
-
-
-
- Energy produced phase C
- The name of the ParamType (ThingClass: sdm630, EventType: energyProducedPhaseC, ID: {6b3ddf15-3d4b-4dc1-8e5a-84fbf90b49ff})
-----------
-The name of the StateType ({6b3ddf15-3d4b-4dc1-8e5a-84fbf90b49ff}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: energyProducedPhaseC, ID: {c33fcd11-b4a9-44b2-9e30-40dfa2e4c9b1})
-----------
-The name of the StateType ({c33fcd11-b4a9-44b2-9e30-40dfa2e4c9b1}) of ThingClass pro380
-
-
-
-
-
- Energy produced phase C changed
- The name of the EventType ({6b3ddf15-3d4b-4dc1-8e5a-84fbf90b49ff}) of ThingClass sdm630
-----------
-The name of the EventType ({c33fcd11-b4a9-44b2-9e30-40dfa2e4c9b1}) of ThingClass pro380
-
-
-
-
- EnergyMeters
- The name of the plugin EnergyMeters ({56e95111-fb6b-4f63-9a0a-a5ee001e89ed})
-
-
-
-
-
-
-
- Frequency
- The name of the ParamType (ThingClass: sdm630, EventType: frequency, ID: {ab24f26c-dc15-4ec3-8d76-06a48285440b})
-----------
-The name of the StateType ({ab24f26c-dc15-4ec3-8d76-06a48285440b}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: frequency, ID: {bb6fd00c-3bbb-4977-bb8a-96787bb6f5c5})
-----------
-The name of the StateType ({bb6fd00c-3bbb-4977-bb8a-96787bb6f5c5}) of ThingClass pro380
-
-
-
-
-
- Frequency changed
- The name of the EventType ({ab24f26c-dc15-4ec3-8d76-06a48285440b}) of ThingClass sdm630
-----------
-The name of the EventType ({bb6fd00c-3bbb-4977-bb8a-96787bb6f5c5}) of ThingClass pro380
-
-
-
-
-
- Modbus RTU master
- The name of the ParamType (ThingClass: sdm630, Type: thing, ID: {d90e9292-d03c-4f2a-957e-5d965018c9c9})
-----------
-The name of the ParamType (ThingClass: pro380, Type: thing, ID: {6cdbec8c-21b9-42dc-b1ab-8901ac609482})
-
-
-
-
-
- Modbus slave address
- The name of the ParamType (ThingClass: sdm630, Type: thing, ID: {ac77ea98-b006-486e-a3e8-b30a483f26c1})
-----------
-The name of the ParamType (ThingClass: pro380, Type: thing, ID: {c75b2c31-6ec3-49ab-8c8f-5231d0a7e941})
-
-
-
-
- PRO380-Mod
- The name of the ThingClass ({d7c6440b-54f9-4cc0-a96b-9bb7304b3e77})
-
-
-
-
- SDM630 Modbus
- The name of the ThingClass ({f37597bb-35fe-48f2-9617-343dd54c0903})
-
-
-
-
-
-
-
- Voltage phase A
- The name of the ParamType (ThingClass: sdm630, EventType: voltagePhaseA, ID: {db018146-0441-4dc0-9834-6d43ebaf8311})
-----------
-The name of the StateType ({db018146-0441-4dc0-9834-6d43ebaf8311}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: voltagePhaseA, ID: {04dba21a-7447-46b9-b9ae-095e5769e511})
-----------
-The name of the StateType ({04dba21a-7447-46b9-b9ae-095e5769e511}) of ThingClass pro380
-
-
-
-
-
- Voltage phase A changed
- The name of the EventType ({db018146-0441-4dc0-9834-6d43ebaf8311}) of ThingClass sdm630
-----------
-The name of the EventType ({04dba21a-7447-46b9-b9ae-095e5769e511}) of ThingClass pro380
-
-
-
-
-
-
-
- Voltage phase B
- The name of the ParamType (ThingClass: sdm630, EventType: voltagePhaseB, ID: {406f6d02-d5eb-49b3-87da-3247568e6054})
-----------
-The name of the StateType ({406f6d02-d5eb-49b3-87da-3247568e6054}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: voltagePhaseB, ID: {270d0c34-0a0c-4655-985f-faad6efd1afd})
-----------
-The name of the StateType ({270d0c34-0a0c-4655-985f-faad6efd1afd}) of ThingClass pro380
-
-
-
-
-
- Voltage phase B changed
- The name of the EventType ({406f6d02-d5eb-49b3-87da-3247568e6054}) of ThingClass sdm630
-----------
-The name of the EventType ({270d0c34-0a0c-4655-985f-faad6efd1afd}) of ThingClass pro380
-
-
-
-
-
-
-
- Voltage phase C
- The name of the ParamType (ThingClass: sdm630, EventType: voltagePhaseC, ID: {ace6294d-deaa-4d9a-af78-d64379bcb229})
-----------
-The name of the StateType ({ace6294d-deaa-4d9a-af78-d64379bcb229}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: voltagePhaseC, ID: {a1da8cfd-37cc-4c87-b857-e942cd90daec})
-----------
-The name of the StateType ({a1da8cfd-37cc-4c87-b857-e942cd90daec}) of ThingClass pro380
-
-
-
-
-
- Voltage phase C changed
- The name of the EventType ({ace6294d-deaa-4d9a-af78-d64379bcb229}) of ThingClass sdm630
-----------
-The name of the EventType ({a1da8cfd-37cc-4c87-b857-e942cd90daec}) of ThingClass pro380
-
-
-
-
-
- Slave address
- The name of the ParamType (ThingClass: sdm630, Type: discovery, ID: {6ab43559-53ec-47ba-b8a0-8d3b7f8d90c2})
-----------
-The name of the ParamType (ThingClass: pro380, Type: discovery, ID: {a29f37f6-b344-4628-8ab4-8f4c18fada4a})
-
-
-
-
-
-
-
- Total energy consumed
- The name of the ParamType (ThingClass: sdm630, EventType: totalEnergyConsumed, ID: {98d858a8-22e8-4262-b5c7-25bb027942ad})
-----------
-The name of the StateType ({98d858a8-22e8-4262-b5c7-25bb027942ad}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: totalEnergyConsumed, ID: {f18fd596-b47f-44be-a0f0-6ca44369ebf5})
-----------
-The name of the StateType ({f18fd596-b47f-44be-a0f0-6ca44369ebf5}) of ThingClass pro380
-
-
-
-
-
- Total energy consumed changed
- The name of the EventType ({98d858a8-22e8-4262-b5c7-25bb027942ad}) of ThingClass sdm630
-----------
-The name of the EventType ({f18fd596-b47f-44be-a0f0-6ca44369ebf5}) of ThingClass pro380
-
-
-
-
-
-
-
- Total energy produced
- The name of the ParamType (ThingClass: sdm630, EventType: totalEnergyProduced, ID: {e469b3ff-a4c2-42da-af35-ccafaef214af})
-----------
-The name of the StateType ({e469b3ff-a4c2-42da-af35-ccafaef214af}) of ThingClass sdm630
-----------
-The name of the ParamType (ThingClass: pro380, EventType: totalEnergyProduced, ID: {112911c9-14e0-4c83-ac92-f2ceb3bdecdf})
-----------
-The name of the StateType ({112911c9-14e0-4c83-ac92-f2ceb3bdecdf}) of ThingClass pro380
-
-
-
-
-
- Total energy produced changed
- The name of the EventType ({e469b3ff-a4c2-42da-af35-ccafaef214af}) of ThingClass sdm630
-----------
-The name of the EventType ({112911c9-14e0-4c83-ac92-f2ceb3bdecdf}) of ThingClass pro380
-
-
-
-
- inepro Metering
- The name of the vendor ({64f4df0f-18ce-409c-bf32-84a086c691ca})
-
-
-
-
- IntegrationPluginEnergyMeters
-
-
- No Modbus RTU interface available.
-
-
-
-
- Modbus slave address must be between 1 and 254
-
-
-
-
- Energy meter
-
-
-
-
- Slave address
-
-
-
-
- Slave address not valid, must be between 1 and 254
-
-
-
-
- Modbus RTU resource not available.
-
-
-
-
diff --git a/inepro/README.md b/inepro/README.md
new file mode 100644
index 0000000..f0070d1
--- /dev/null
+++ b/inepro/README.md
@@ -0,0 +1,9 @@
+# inepro Metering
+
+This plugin adds support for the inepro Metering PRO380 energy meter connected via Modbus RTU.
+
+# Setup instructions
+First, set up a Modbus RTU resource using the configured settings of your meter. Once
+that's set up, the PRO380 can be set up like any other thing. During discovery, nymea will
+offer the configured Modbus resources as possible connections. Select the one that
+you've set up previously.
diff --git a/inepro/inepro.jpg b/inepro/inepro.jpg
new file mode 100644
index 0000000..954a7ad
Binary files /dev/null and b/inepro/inepro.jpg differ
diff --git a/inepro/inepro.pro b/inepro/inepro.pro
new file mode 100644
index 0000000..4067273
--- /dev/null
+++ b/inepro/inepro.pro
@@ -0,0 +1,14 @@
+include(../plugins.pri)
+
+QT += serialport serialbus
+
+HEADERS += \
+ integrationplugininepro.h \
+ pro380modbusrtuconnection.h \
+ ../modbus/modbusdatautils.h
+
+SOURCES += \
+ integrationplugininepro.cpp \
+ pro380modbusrtuconnection.cpp \
+ ../modbus/modbusdatautils.cpp
+
diff --git a/inepro/integrationplugininepro.cpp b/inepro/integrationplugininepro.cpp
new file mode 100644
index 0000000..af5ff77
--- /dev/null
+++ b/inepro/integrationplugininepro.cpp
@@ -0,0 +1,229 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+*
+* 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 .
+*
+* 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 "integrationplugininepro.h"
+#include "plugininfo.h"
+
+IntegrationPluginInepro::IntegrationPluginInepro()
+{
+}
+
+void IntegrationPluginInepro::init()
+{
+ connect(hardwareManager()->modbusRtuResource(), &ModbusRtuHardwareResource::modbusRtuMasterRemoved, this, [=] (const QUuid &modbusUuid){
+ qCDebug(dcInepro()) << "Modbus RTU master has been removed" << modbusUuid.toString();
+
+ foreach (Thing *thing, myThings()) {
+ if (thing->paramValue(pro380ThingModbusMasterUuidParamTypeId) == modbusUuid) {
+ qCWarning(dcInepro()) << "Modbus RTU hardware resource removed for" << thing << ". The thing will not be functional any more until a new resource has been configured for it.";
+ thing->setStateValue(pro380ConnectedStateTypeId, false);
+
+ delete m_pro380Connections.take(thing);
+ }
+ }
+ });
+}
+
+void IntegrationPluginInepro::discoverThings(ThingDiscoveryInfo *info)
+{
+ qCDebug(dcInepro()) << "Discover modbus RTU resources...";
+ if (hardwareManager()->modbusRtuResource()->modbusRtuMasters().isEmpty()) {
+ info->finish(Thing::ThingErrorHardwareNotAvailable, QT_TR_NOOP("No Modbus RTU interface available. Please set up the Modbus RTU interface first."));
+ return;
+ }
+
+ uint slaveAddress = info->params().paramValue(pro380DiscoverySlaveAddressParamTypeId).toUInt();
+ if (slaveAddress > 254 || slaveAddress == 0) {
+ info->finish(Thing::ThingErrorInvalidParameter, QT_TR_NOOP("The Modbus slave address must be a value between 1 and 254."));
+ return;
+ }
+
+ foreach (ModbusRtuMaster *modbusMaster, hardwareManager()->modbusRtuResource()->modbusRtuMasters()) {
+ qCDebug(dcInepro()) << "Found RTU master resource" << modbusMaster << "connected" << modbusMaster->connected();
+ if (!modbusMaster->connected())
+ continue;
+
+ ThingDescriptor descriptor(info->thingClassId(), "PRO380", QString::number(slaveAddress) + " " + modbusMaster->serialPort());
+ ParamList params;
+ params << Param(pro380ThingSlaveAddressParamTypeId, slaveAddress);
+ params << Param(pro380ThingModbusMasterUuidParamTypeId, modbusMaster->modbusUuid());
+ descriptor.setParams(params);
+ info->addThingDescriptor(descriptor);
+ }
+
+ info->finish(Thing::ThingErrorNoError);
+ return;
+}
+
+void IntegrationPluginInepro::setupThing(ThingSetupInfo *info)
+{
+ Thing *thing = info->thing();
+ qCDebug(dcInepro()) << "Setup thing" << thing << thing->params();
+
+ uint address = thing->paramValue(pro380ThingSlaveAddressParamTypeId).toUInt();
+ if (address > 254 || address == 0) {
+ qCWarning(dcInepro()) << "Setup failed, slave address is not valid" << address;
+ info->finish(Thing::ThingErrorSetupFailed, QT_TR_NOOP("The Modbus address not valid. It must be a Value between 1 and 254."));
+ return;
+ }
+
+ QUuid uuid = thing->paramValue(pro380ThingModbusMasterUuidParamTypeId).toUuid();
+ if (!hardwareManager()->modbusRtuResource()->hasModbusRtuMaster(uuid)) {
+ qCWarning(dcInepro()) << "Setup failed, hardware manager not available";
+ info->finish(Thing::ThingErrorSetupFailed, QT_TR_NOOP("The Modbus RTU interface is not available."));
+ return;
+ }
+
+ if (m_pro380Connections.contains(thing)) {
+ qCDebug(dcInepro()) << "Setup after rediscovery, cleaning up ...";
+ m_pro380Connections.take(thing)->deleteLater();
+ }
+
+ Pro380ModbusRtuConnection *proConnection = new Pro380ModbusRtuConnection(hardwareManager()->modbusRtuResource()->getModbusRtuMaster(uuid), address, this);
+ connect(proConnection->modbusRtuMaster(), &ModbusRtuMaster::connectedChanged, this, [=](bool connected){
+ if (connected) {
+ qCDebug(dcInepro()) << "Modbus RTU resource connected" << thing << proConnection->modbusRtuMaster()->serialPort();
+ } else {
+ qCWarning(dcInepro()) << "Modbus RTU resource disconnected" << thing << proConnection->modbusRtuMaster()->serialPort();
+ }
+ });
+
+ connect(proConnection, &Pro380ModbusRtuConnection::currentPhaseAChanged, this, [=](float currentPhaseA){
+ thing->setStateValue(pro380CurrentPhaseAStateTypeId, currentPhaseA);
+ thing->setStateValue(pro380ConnectedStateTypeId, true);
+ });
+
+ connect(proConnection, &Pro380ModbusRtuConnection::currentPhaseBChanged, this, [=](float currentPhaseB){
+ thing->setStateValue(pro380CurrentPhaseBStateTypeId, currentPhaseB);
+ });
+
+ connect(proConnection, &Pro380ModbusRtuConnection::currentPhaseCChanged, this, [=](float currentPhaseC){
+ thing->setStateValue(pro380CurrentPhaseCStateTypeId, currentPhaseC);
+ });
+
+ connect(proConnection, &Pro380ModbusRtuConnection::voltagePhaseAChanged, this, [=](float voltagePhaseA){
+ thing->setStateValue(pro380VoltagePhaseAStateTypeId, voltagePhaseA);
+ });
+
+ connect(proConnection, &Pro380ModbusRtuConnection::voltagePhaseBChanged, this, [=](float voltagePhaseB){
+ thing->setStateValue(pro380VoltagePhaseBStateTypeId, voltagePhaseB);
+ });
+
+ connect(proConnection, &Pro380ModbusRtuConnection::voltagePhaseCChanged, this, [=](float voltagePhaseC){
+ thing->setStateValue(pro380VoltagePhaseCStateTypeId, voltagePhaseC);
+ });
+
+ connect(proConnection, &Pro380ModbusRtuConnection::totalCurrentPowerChanged, this, [=](float currentPower){
+ thing->setStateValue(pro380CurrentPowerStateTypeId, currentPower * 1000); // kW
+ });
+
+ connect(proConnection, &Pro380ModbusRtuConnection::powerPhaseAChanged, this, [=](float powerPhaseA){
+ thing->setStateValue(pro380CurrentPowerPhaseAStateTypeId, powerPhaseA * 1000); // kW
+ });
+
+ connect(proConnection, &Pro380ModbusRtuConnection::powerPhaseBChanged, this, [=](float powerPhaseB){
+ thing->setStateValue(pro380CurrentPowerPhaseBStateTypeId, powerPhaseB * 1000); // kW
+ });
+
+ connect(proConnection, &Pro380ModbusRtuConnection::powerPhaseCChanged, this, [=](float powerPhaseC){
+ thing->setStateValue(pro380CurrentPowerPhaseCStateTypeId, powerPhaseC * 1000); // kW
+ });
+
+ connect(proConnection, &Pro380ModbusRtuConnection::frequencyChanged, this, [=](float frequency){
+ thing->setStateValue(pro380FrequencyStateTypeId, frequency);
+ });
+
+ connect(proConnection, &Pro380ModbusRtuConnection::totalEnergyConsumedChanged, this, [=](float totalEnergyConsumed){
+ thing->setStateValue(pro380TotalEnergyConsumedStateTypeId, totalEnergyConsumed);
+ });
+
+ connect(proConnection, &Pro380ModbusRtuConnection::totalEnergyProducedChanged, this, [=](float totalEnergyProduced){
+ thing->setStateValue(pro380TotalEnergyProducedStateTypeId, totalEnergyProduced);
+ });
+
+ connect(proConnection, &Pro380ModbusRtuConnection::energyProducedPhaseAChanged, this, [=](float energyProducedPhaseA){
+ thing->setStateValue(pro380EnergyProducedPhaseAStateTypeId, energyProducedPhaseA);
+ });
+
+ connect(proConnection, &Pro380ModbusRtuConnection::energyProducedPhaseBChanged, this, [=](float energyProducedPhaseB){
+ thing->setStateValue(pro380EnergyProducedPhaseBStateTypeId, energyProducedPhaseB);
+ });
+
+ connect(proConnection, &Pro380ModbusRtuConnection::energyProducedPhaseCChanged, this, [=](float energyProducedPhaseC){
+ thing->setStateValue(pro380EnergyProducedPhaseCStateTypeId, energyProducedPhaseC);
+ });
+
+ connect(proConnection, &Pro380ModbusRtuConnection::energyConsumedPhaseAChanged, this, [=](float energyConsumedPhaseA){
+ thing->setStateValue(pro380EnergyConsumedPhaseAStateTypeId, energyConsumedPhaseA);
+ });
+
+ connect(proConnection, &Pro380ModbusRtuConnection::energyConsumedPhaseBChanged, this, [=](float energyConsumedPhaseB){
+ thing->setStateValue(pro380EnergyConsumedPhaseBStateTypeId, energyConsumedPhaseB);
+ });
+
+ connect(proConnection, &Pro380ModbusRtuConnection::energyConsumedPhaseCChanged, this, [=](float energyConsumedPhaseC){
+ thing->setStateValue(pro380EnergyConsumedPhaseCStateTypeId, energyConsumedPhaseC);
+ });
+
+
+ // FIXME: try to read before setup success
+ m_pro380Connections.insert(thing, proConnection);
+ info->finish(Thing::ThingErrorNoError);
+}
+
+void IntegrationPluginInepro::postSetupThing(Thing *thing)
+{
+ qCDebug(dcInepro) << "Post setup thing" << thing->name();
+ if (!m_refreshTimer) {
+ m_refreshTimer = hardwareManager()->pluginTimerManager()->registerTimer(2);
+ connect(m_refreshTimer, &PluginTimer::timeout, this, [this] {
+ foreach (Thing *thing, myThings()) {
+ m_pro380Connections.value(thing)->update();
+ }
+ });
+
+ qCDebug(dcInepro()) << "Starting refresh timer...";
+ m_refreshTimer->start();
+ }
+}
+
+void IntegrationPluginInepro::thingRemoved(Thing *thing)
+{
+ qCDebug(dcInepro()) << "Thing removed" << thing->name();
+
+ if (m_pro380Connections.contains(thing))
+ m_pro380Connections.take(thing)->deleteLater();
+
+ if (myThings().isEmpty() && m_refreshTimer) {
+ qCDebug(dcInepro()) << "Stopping reconnect timer";
+ hardwareManager()->pluginTimerManager()->unregisterTimer(m_refreshTimer);
+ m_refreshTimer = nullptr;
+ }
+}
diff --git a/inepro/integrationplugininepro.h b/inepro/integrationplugininepro.h
new file mode 100644
index 0000000..dfd8ce0
--- /dev/null
+++ b/inepro/integrationplugininepro.h
@@ -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 .
+*
+* 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 INTEGRATIONPLUGININEPRO_H
+#define INTEGRATIONPLUGININEPRO_H
+
+#include
+#include
+#include
+
+#include "pro380modbusrtuconnection.h"
+
+#include "extern-plugininfo.h"
+
+#include
+#include
+
+class IntegrationPluginInepro : public IntegrationPlugin
+{
+ Q_OBJECT
+
+ Q_PLUGIN_METADATA(IID "io.nymea.IntegrationPlugin" FILE "integrationplugininepro.json")
+ Q_INTERFACES(IntegrationPlugin)
+
+public:
+ explicit IntegrationPluginInepro();
+ void init() override;
+ void discoverThings(ThingDiscoveryInfo *info) override;
+ void setupThing(ThingSetupInfo *info) override;
+ void postSetupThing(Thing *thing) override;
+ void thingRemoved(Thing *thing) override;
+
+private:
+ PluginTimer *m_refreshTimer = nullptr;
+
+ QHash m_pro380Connections;
+};
+
+#endif // INTEGRATIONPLUGININEPRO_H
diff --git a/inepro/integrationplugininepro.json b/inepro/integrationplugininepro.json
new file mode 100644
index 0000000..bf04b89
--- /dev/null
+++ b/inepro/integrationplugininepro.json
@@ -0,0 +1,230 @@
+{
+ "name": "inepro",
+ "displayName": "inepro Metering",
+ "id": "9bc19f8c-ff9e-4036-95a4-c79038709656",
+ "paramTypes":[ ],
+ "vendors": [
+ {
+ "name": "ineproMetering",
+ "displayName": "inepro Metering",
+ "id": "64f4df0f-18ce-409c-bf32-84a086c691ca",
+ "thingClasses": [
+ {
+ "name": "pro380",
+ "displayName": "PRO380",
+ "id": "d7c6440b-54f9-4cc0-a96b-9bb7304b3e77",
+ "createMethods": ["discovery"],
+ "interfaces": ["energymeter", "connectable"],
+ "discoveryParamTypes": [
+ {
+ "id": "a29f37f6-b344-4628-8ab4-8f4c18fada4a",
+ "name": "slaveAddress",
+ "displayName": "Slave address",
+ "type": "int",
+ "defaultValue": 1
+ }
+ ],
+ "paramTypes": [
+ {
+ "id": "c75b2c31-6ec3-49ab-8c8f-5231d0a7e941",
+ "name": "slaveAddress",
+ "displayName": "Modbus slave address",
+ "type": "uint",
+ "defaultValue": 1
+ },
+ {
+ "id": "6cdbec8c-21b9-42dc-b1ab-8901ac609482",
+ "name": "modbusMasterUuid",
+ "displayName": "Modbus RTU master",
+ "type": "QUuid",
+ "defaultValue": "",
+ "readOnly": true
+ }
+ ],
+ "stateTypes": [
+ {
+ "id": "7f9bc504-0882-4b86-83b1-42fa345acfd9",
+ "name": "connected",
+ "displayName": "Connected",
+ "displayNameEvent": "Connected changed",
+ "type": "bool",
+ "cached": false,
+ "defaultValue": false
+ },
+ {
+ "id": "04dba21a-7447-46b9-b9ae-095e5769e511",
+ "name": "voltagePhaseA",
+ "displayName": "Voltage phase A",
+ "displayNameEvent": "Voltage phase A changed",
+ "type": "double",
+ "unit": "Volt",
+ "defaultValue": 0
+ },
+ {
+ "id": "270d0c34-0a0c-4655-985f-faad6efd1afd",
+ "name": "voltagePhaseB",
+ "displayName": "Voltage phase B",
+ "displayNameEvent": "Voltage phase B changed",
+ "type": "double",
+ "unit": "Volt",
+ "defaultValue": 0
+ },
+ {
+ "id": "a1da8cfd-37cc-4c87-b857-e942cd90daec",
+ "name": "voltagePhaseC",
+ "displayName": "Voltage phase C",
+ "displayNameEvent": "Voltage phase C changed",
+ "type": "double",
+ "unit": "Volt",
+ "defaultValue": 0
+ },
+ {
+ "id": "1e077a3b-2dab-4ec4-ae96-ab49a564fe31",
+ "name": "currentPhaseA",
+ "displayName": "Current phase A",
+ "displayNameEvent": "Current phase A changed",
+ "type": "double",
+ "unit": "Ampere",
+ "defaultValue": 0
+ },
+ {
+ "id": "d2f54061-0807-47de-944c-68c8118ece91",
+ "name": "currentPhaseB",
+ "displayName": "Current phase B",
+ "displayNameEvent": "Current phase B changed",
+ "type": "double",
+ "unit": "Ampere",
+ "defaultValue": 0
+ },
+ {
+ "id": "610b20fb-2718-4f02-ac6e-12a9ef8c7615",
+ "name": "currentPhaseC",
+ "displayName": "Current phase C",
+ "displayNameEvent": "Current phase C changed",
+ "type": "double",
+ "unit": "Ampere",
+ "defaultValue": 0
+ },
+ {
+ "id": "464eff60-11c2-46b7-98f5-1aa8172e5a2d",
+ "name": "currentPower",
+ "displayName": "Current power",
+ "displayNameEvent": "Current power changed",
+ "type": "double",
+ "unit": "Watt",
+ "defaultValue": 0
+ },
+ {
+ "id": "55283773-0a4e-4574-b21a-d4a3f287eab1",
+ "name": "currentPowerPhaseA",
+ "displayName": "Current power phase A",
+ "displayNameEvent": "Current power phase A changed",
+ "type": "double",
+ "unit": "Watt",
+ "defaultValue": 0
+ },
+ {
+ "id": "8f15d104-5ff7-4c33-9cf9-fdbef4b6f721",
+ "name": "currentPowerPhaseB",
+ "displayName": "Current power phase B",
+ "displayNameEvent": "Current power phase B changed",
+ "type": "double",
+ "unit": "Watt",
+ "defaultValue": 0
+ },
+ {
+ "id": "86c0f968-ee70-4f56-bdfc-33b8e2b134a4",
+ "name": "currentPowerPhaseC",
+ "displayName": "Current power phase C",
+ "displayNameEvent": "Current power phase C changed",
+ "type": "double",
+ "unit": "Watt",
+ "defaultValue": 0
+ },
+ {
+ "id": "bb6fd00c-3bbb-4977-bb8a-96787bb6f5c5",
+ "name": "frequency",
+ "displayName": "Frequency",
+ "displayNameEvent": "Frequency changed",
+ "type": "double",
+ "unit": "Hertz",
+ "defaultValue": 0.00
+ },
+ {
+ "id": "f18fd596-b47f-44be-a0f0-6ca44369ebf5",
+ "name": "totalEnergyConsumed",
+ "displayName": "Total energy consumed",
+ "displayNameEvent": "Total energy consumed changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0.00
+ },
+ {
+ "id": "112911c9-14e0-4c83-ac92-f2ceb3bdecdf",
+ "name": "totalEnergyProduced",
+ "displayName": "Total energy produced",
+ "displayNameEvent": "Total energy produced changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0.00
+ },
+ {
+ "id": "b16b3b0c-82d9-4b3c-a172-0e6631c8ce16",
+ "name": "energyConsumedPhaseA",
+ "displayName": "Energy consumed phase A",
+ "displayNameEvent": "Energy consumed phase A changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0.00
+ },
+ {
+ "id": "64225f7f-9b2f-4bfc-87b2-38758804a28b",
+ "name": "energyConsumedPhaseB",
+ "displayName": "Energy consumed phase B",
+ "displayNameEvent": "Energy consumed phase B changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0.00
+ },
+ {
+ "id": "a6e82d61-e837-4ec8-b14a-af0d49bea9d2",
+ "name": "energyConsumedPhaseC",
+ "displayName": "Energy consumed phase C",
+ "displayNameEvent": "Energy consumed phase C changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0.00
+ },
+ {
+ "id": "95bd476e-c247-4f7d-ab01-d9f1b7c0d996",
+ "name": "energyProducedPhaseA",
+ "displayName": "Energy produced phase A",
+ "displayNameEvent": "Energy produced phase A changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0.00
+ },
+ {
+ "id": "f0a0bd81-708c-48d6-b5c9-165464a5b309",
+ "name": "energyProducedPhaseB",
+ "displayName": "Energy produced phase B",
+ "displayNameEvent": "Energy produced phase B changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0.00
+ },
+ {
+ "id": "c33fcd11-b4a9-44b2-9e30-40dfa2e4c9b1",
+ "name": "energyProducedPhaseC",
+ "displayName": "Energy produced phase C",
+ "displayNameEvent": "Energy produced phase C changed",
+ "type": "double",
+ "unit": "KiloWattHour",
+ "defaultValue": 0.00
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/inepro/meta.json b/inepro/meta.json
new file mode 100644
index 0000000..9f3565b
--- /dev/null
+++ b/inepro/meta.json
@@ -0,0 +1,13 @@
+{
+ "title": "inepro Metering",
+ "tagline": "Connect inepro Metering Modbus RTU energy meters.",
+ "icon": "inepro.jpg",
+ "stability": "consumer",
+ "offline": true,
+ "technologies": [
+ "modbus"
+ ],
+ "categories": [
+ "energy"
+ ]
+}
diff --git a/energymeters/pro380-registers.json b/inepro/pro380-registers.json
similarity index 100%
rename from energymeters/pro380-registers.json
rename to inepro/pro380-registers.json
diff --git a/energymeters/pro380modbusrtuconnection.cpp b/inepro/pro380modbusrtuconnection.cpp
similarity index 100%
rename from energymeters/pro380modbusrtuconnection.cpp
rename to inepro/pro380modbusrtuconnection.cpp
diff --git a/energymeters/pro380modbusrtuconnection.h b/inepro/pro380modbusrtuconnection.h
similarity index 100%
rename from energymeters/pro380modbusrtuconnection.h
rename to inepro/pro380modbusrtuconnection.h
diff --git a/inepro/translations/9bc19f8c-ff9e-4036-95a4-c79038709656-de.ts b/inepro/translations/9bc19f8c-ff9e-4036-95a4-c79038709656-de.ts
new file mode 100644
index 0000000..5ddc234
--- /dev/null
+++ b/inepro/translations/9bc19f8c-ff9e-4036-95a4-c79038709656-de.ts
@@ -0,0 +1,363 @@
+
+
+
+
+ IntegrationPluginInepro
+
+
+ No Modbus RTU interface available. Please set up the Modbus RTU interface first.
+ Keine Modbus RTU Schnittstelle verfügbar. Bitte richte zuerst die Modbus RTU Schnittstelle ein.
+
+
+
+ The Modbus slave address must be a value between 1 and 254.
+ Die Modbus Adresse muss ein Wert zwischen 1 und 254 sein.
+
+
+
+ The Modbus address not valid. It must be a Value between 1 and 254.
+ Die Modbus Adresse ist ungültig. Es muss ein Wert zwischen 1 und 254 sein.
+
+
+
+ The Modbus RTU interface is not available.
+ Die Modbus RTU Schnittstelle ist nicht verfügbar.
+
+
+
+ inepro
+
+
+
+ Connected
+ The name of the ParamType (ThingClass: pro380, EventType: connected, ID: {7f9bc504-0882-4b86-83b1-42fa345acfd9})
+----------
+The name of the StateType ({7f9bc504-0882-4b86-83b1-42fa345acfd9}) of ThingClass pro380
+ Verbunden
+
+
+
+ Connected changed
+ The name of the EventType ({7f9bc504-0882-4b86-83b1-42fa345acfd9}) of ThingClass pro380
+ Verbunden oder getrennt
+
+
+
+
+ Current phase A
+ The name of the ParamType (ThingClass: pro380, EventType: currentPhaseA, ID: {1e077a3b-2dab-4ec4-ae96-ab49a564fe31})
+----------
+The name of the StateType ({1e077a3b-2dab-4ec4-ae96-ab49a564fe31}) of ThingClass pro380
+ Strom Phase A
+
+
+
+ Current phase A changed
+ The name of the EventType ({1e077a3b-2dab-4ec4-ae96-ab49a564fe31}) of ThingClass pro380
+ Strom Phase A geändert
+
+
+
+
+ Current phase B
+ The name of the ParamType (ThingClass: pro380, EventType: currentPhaseB, ID: {d2f54061-0807-47de-944c-68c8118ece91})
+----------
+The name of the StateType ({d2f54061-0807-47de-944c-68c8118ece91}) of ThingClass pro380
+ Strom Phase B
+
+
+
+ Current phase B changed
+ The name of the EventType ({d2f54061-0807-47de-944c-68c8118ece91}) of ThingClass pro380
+ Strom Phase B geändert
+
+
+
+
+ Current phase C
+ The name of the ParamType (ThingClass: pro380, EventType: currentPhaseC, ID: {610b20fb-2718-4f02-ac6e-12a9ef8c7615})
+----------
+The name of the StateType ({610b20fb-2718-4f02-ac6e-12a9ef8c7615}) of ThingClass pro380
+ Strom Phase C
+
+
+
+ Current phase C changed
+ The name of the EventType ({610b20fb-2718-4f02-ac6e-12a9ef8c7615}) of ThingClass pro380
+ Strom Phase C geänert
+
+
+
+
+ Current power
+ The name of the ParamType (ThingClass: pro380, EventType: currentPower, ID: {464eff60-11c2-46b7-98f5-1aa8172e5a2d})
+----------
+The name of the StateType ({464eff60-11c2-46b7-98f5-1aa8172e5a2d}) of ThingClass pro380
+ Aktueller Energieverbrauch
+
+
+
+ Current power changed
+ The name of the EventType ({464eff60-11c2-46b7-98f5-1aa8172e5a2d}) of ThingClass pro380
+ Aktueller Energieverbrauch geändert
+
+
+
+
+ Current power phase A
+ The name of the ParamType (ThingClass: pro380, EventType: currentPowerPhaseA, ID: {55283773-0a4e-4574-b21a-d4a3f287eab1})
+----------
+The name of the StateType ({55283773-0a4e-4574-b21a-d4a3f287eab1}) of ThingClass pro380
+ Aktueller Energieverbrauch Phase A
+
+
+
+ Current power phase A changed
+ The name of the EventType ({55283773-0a4e-4574-b21a-d4a3f287eab1}) of ThingClass pro380
+ Aktueller Energieverbrauch Phase A geändert
+
+
+
+
+ Current power phase B
+ The name of the ParamType (ThingClass: pro380, EventType: currentPowerPhaseB, ID: {8f15d104-5ff7-4c33-9cf9-fdbef4b6f721})
+----------
+The name of the StateType ({8f15d104-5ff7-4c33-9cf9-fdbef4b6f721}) of ThingClass pro380
+ Aktueller Energieverbrauch Phase B
+
+
+
+ Current power phase B changed
+ The name of the EventType ({8f15d104-5ff7-4c33-9cf9-fdbef4b6f721}) of ThingClass pro380
+ Aktueller Energieverbrauch Phase B geändert
+
+
+
+
+ Current power phase C
+ The name of the ParamType (ThingClass: pro380, EventType: currentPowerPhaseC, ID: {86c0f968-ee70-4f56-bdfc-33b8e2b134a4})
+----------
+The name of the StateType ({86c0f968-ee70-4f56-bdfc-33b8e2b134a4}) of ThingClass pro380
+ Aktueller Energieverbrauch Phase C
+
+
+
+ Current power phase C changed
+ The name of the EventType ({86c0f968-ee70-4f56-bdfc-33b8e2b134a4}) of ThingClass pro380
+ Aktueller Energieverbrauch Phase C geändert
+
+
+
+
+ Energy consumed phase A
+ The name of the ParamType (ThingClass: pro380, EventType: energyConsumedPhaseA, ID: {b16b3b0c-82d9-4b3c-a172-0e6631c8ce16})
+----------
+The name of the StateType ({b16b3b0c-82d9-4b3c-a172-0e6631c8ce16}) of ThingClass pro380
+ Gesamtverbrauch Phase A
+
+
+
+ Energy consumed phase A changed
+ The name of the EventType ({b16b3b0c-82d9-4b3c-a172-0e6631c8ce16}) of ThingClass pro380
+ Gesamtverbrauch Phase A geändert
+
+
+
+
+ Energy consumed phase B
+ The name of the ParamType (ThingClass: pro380, EventType: energyConsumedPhaseB, ID: {64225f7f-9b2f-4bfc-87b2-38758804a28b})
+----------
+The name of the StateType ({64225f7f-9b2f-4bfc-87b2-38758804a28b}) of ThingClass pro380
+ Gesamtverbrauch Phase B
+
+
+
+ Energy consumed phase B changed
+ The name of the EventType ({64225f7f-9b2f-4bfc-87b2-38758804a28b}) of ThingClass pro380
+ Gesamtverbrauch Phase B geändert
+
+
+
+
+ Energy consumed phase C
+ The name of the ParamType (ThingClass: pro380, EventType: energyConsumedPhaseC, ID: {a6e82d61-e837-4ec8-b14a-af0d49bea9d2})
+----------
+The name of the StateType ({a6e82d61-e837-4ec8-b14a-af0d49bea9d2}) of ThingClass pro380
+ Gesamtverbrauch Phase C
+
+
+
+ Energy consumed phase C changed
+ The name of the EventType ({a6e82d61-e837-4ec8-b14a-af0d49bea9d2}) of ThingClass pro380
+ Gesamtverbrauch Phase C geändert
+
+
+
+
+ Energy produced phase A
+ The name of the ParamType (ThingClass: pro380, EventType: energyProducedPhaseA, ID: {95bd476e-c247-4f7d-ab01-d9f1b7c0d996})
+----------
+The name of the StateType ({95bd476e-c247-4f7d-ab01-d9f1b7c0d996}) of ThingClass pro380
+ Erzeugte Energie Phase A
+
+
+
+ Energy produced phase A changed
+ The name of the EventType ({95bd476e-c247-4f7d-ab01-d9f1b7c0d996}) of ThingClass pro380
+ Erzeugte Energie Phase A geändert
+
+
+
+
+ Energy produced phase B
+ The name of the ParamType (ThingClass: pro380, EventType: energyProducedPhaseB, ID: {f0a0bd81-708c-48d6-b5c9-165464a5b309})
+----------
+The name of the StateType ({f0a0bd81-708c-48d6-b5c9-165464a5b309}) of ThingClass pro380
+ Erzeugte Energie Phase B
+
+
+
+ Energy produced phase B changed
+ The name of the EventType ({f0a0bd81-708c-48d6-b5c9-165464a5b309}) of ThingClass pro380
+ Erzeugte Energie Phase B geändert
+
+
+
+
+ Energy produced phase C
+ The name of the ParamType (ThingClass: pro380, EventType: energyProducedPhaseC, ID: {c33fcd11-b4a9-44b2-9e30-40dfa2e4c9b1})
+----------
+The name of the StateType ({c33fcd11-b4a9-44b2-9e30-40dfa2e4c9b1}) of ThingClass pro380
+ Erzeugte Energie Phase C
+
+
+
+ Energy produced phase C changed
+ The name of the EventType ({c33fcd11-b4a9-44b2-9e30-40dfa2e4c9b1}) of ThingClass pro380
+ Erzeugte Energie Phase C geändert
+
+
+
+
+ Frequency
+ The name of the ParamType (ThingClass: pro380, EventType: frequency, ID: {bb6fd00c-3bbb-4977-bb8a-96787bb6f5c5})
+----------
+The name of the StateType ({bb6fd00c-3bbb-4977-bb8a-96787bb6f5c5}) of ThingClass pro380
+ Frequenz
+
+
+
+ Frequency changed
+ The name of the EventType ({bb6fd00c-3bbb-4977-bb8a-96787bb6f5c5}) of ThingClass pro380
+ Frequenz geändert
+
+
+
+ Modbus RTU master
+ The name of the ParamType (ThingClass: pro380, Type: thing, ID: {6cdbec8c-21b9-42dc-b1ab-8901ac609482})
+ Modbus RTU Master
+
+
+
+ Modbus slave address
+ The name of the ParamType (ThingClass: pro380, Type: thing, ID: {c75b2c31-6ec3-49ab-8c8f-5231d0a7e941})
+ Modbus Adresse
+
+
+
+ PRO380
+ The name of the ThingClass ({d7c6440b-54f9-4cc0-a96b-9bb7304b3e77})
+ PRO380
+
+
+
+ Slave address
+ The name of the ParamType (ThingClass: pro380, Type: discovery, ID: {a29f37f6-b344-4628-8ab4-8f4c18fada4a})
+ Adresse
+
+
+
+
+ Total energy consumed
+ The name of the ParamType (ThingClass: pro380, EventType: totalEnergyConsumed, ID: {f18fd596-b47f-44be-a0f0-6ca44369ebf5})
+----------
+The name of the StateType ({f18fd596-b47f-44be-a0f0-6ca44369ebf5}) of ThingClass pro380
+ Gesamter Energieverbrauch
+
+
+
+ Total energy consumed changed
+ The name of the EventType ({f18fd596-b47f-44be-a0f0-6ca44369ebf5}) of ThingClass pro380
+ Gesamter Energieverbrauch geändert
+
+
+
+
+ Total energy produced
+ The name of the ParamType (ThingClass: pro380, EventType: totalEnergyProduced, ID: {112911c9-14e0-4c83-ac92-f2ceb3bdecdf})
+----------
+The name of the StateType ({112911c9-14e0-4c83-ac92-f2ceb3bdecdf}) of ThingClass pro380
+ Gesamte erzeugte Energie
+
+
+
+ Total energy produced changed
+ The name of the EventType ({112911c9-14e0-4c83-ac92-f2ceb3bdecdf}) of ThingClass pro380
+ Gesamte erzeugte Energie geändert
+
+
+
+
+ Voltage phase A
+ The name of the ParamType (ThingClass: pro380, EventType: voltagePhaseA, ID: {04dba21a-7447-46b9-b9ae-095e5769e511})
+----------
+The name of the StateType ({04dba21a-7447-46b9-b9ae-095e5769e511}) of ThingClass pro380
+ Spannung Phase A
+
+
+
+ Voltage phase A changed
+ The name of the EventType ({04dba21a-7447-46b9-b9ae-095e5769e511}) of ThingClass pro380
+ Spannung Phase A geändert
+
+
+
+
+ Voltage phase B
+ The name of the ParamType (ThingClass: pro380, EventType: voltagePhaseB, ID: {270d0c34-0a0c-4655-985f-faad6efd1afd})
+----------
+The name of the StateType ({270d0c34-0a0c-4655-985f-faad6efd1afd}) of ThingClass pro380
+ Spannung Phase B
+
+
+
+ Voltage phase B changed
+ The name of the EventType ({270d0c34-0a0c-4655-985f-faad6efd1afd}) of ThingClass pro380
+ Spannung Phase B geändert
+
+
+
+
+ Voltage phase C
+ The name of the ParamType (ThingClass: pro380, EventType: voltagePhaseC, ID: {a1da8cfd-37cc-4c87-b857-e942cd90daec})
+----------
+The name of the StateType ({a1da8cfd-37cc-4c87-b857-e942cd90daec}) of ThingClass pro380
+ Spannung Phase C
+
+
+
+ Voltage phase C changed
+ The name of the EventType ({a1da8cfd-37cc-4c87-b857-e942cd90daec}) of ThingClass pro380
+ Spannung Phase C geändert
+
+
+
+
+ inepro Metering
+ The name of the vendor ({64f4df0f-18ce-409c-bf32-84a086c691ca})
+----------
+The name of the plugin inepro ({9bc19f8c-ff9e-4036-95a4-c79038709656})
+ inepro Metering
+
+
+
diff --git a/inepro/translations/9bc19f8c-ff9e-4036-95a4-c79038709656-en_US.ts b/inepro/translations/9bc19f8c-ff9e-4036-95a4-c79038709656-en_US.ts
new file mode 100644
index 0000000..1f736c1
--- /dev/null
+++ b/inepro/translations/9bc19f8c-ff9e-4036-95a4-c79038709656-en_US.ts
@@ -0,0 +1,363 @@
+
+
+
+
+ IntegrationPluginInepro
+
+
+ No Modbus RTU interface available. Please set up the Modbus RTU interface first.
+
+
+
+
+ The Modbus slave address must be a value between 1 and 254.
+
+
+
+
+ The Modbus address not valid. It must be a Value between 1 and 254.
+
+
+
+
+ The Modbus RTU interface is not available.
+
+
+
+
+ inepro
+
+
+
+ Connected
+ The name of the ParamType (ThingClass: pro380, EventType: connected, ID: {7f9bc504-0882-4b86-83b1-42fa345acfd9})
+----------
+The name of the StateType ({7f9bc504-0882-4b86-83b1-42fa345acfd9}) of ThingClass pro380
+
+
+
+
+ Connected changed
+ The name of the EventType ({7f9bc504-0882-4b86-83b1-42fa345acfd9}) of ThingClass pro380
+
+
+
+
+
+ Current phase A
+ The name of the ParamType (ThingClass: pro380, EventType: currentPhaseA, ID: {1e077a3b-2dab-4ec4-ae96-ab49a564fe31})
+----------
+The name of the StateType ({1e077a3b-2dab-4ec4-ae96-ab49a564fe31}) of ThingClass pro380
+
+
+
+
+ Current phase A changed
+ The name of the EventType ({1e077a3b-2dab-4ec4-ae96-ab49a564fe31}) of ThingClass pro380
+
+
+
+
+
+ Current phase B
+ The name of the ParamType (ThingClass: pro380, EventType: currentPhaseB, ID: {d2f54061-0807-47de-944c-68c8118ece91})
+----------
+The name of the StateType ({d2f54061-0807-47de-944c-68c8118ece91}) of ThingClass pro380
+
+
+
+
+ Current phase B changed
+ The name of the EventType ({d2f54061-0807-47de-944c-68c8118ece91}) of ThingClass pro380
+
+
+
+
+
+ Current phase C
+ The name of the ParamType (ThingClass: pro380, EventType: currentPhaseC, ID: {610b20fb-2718-4f02-ac6e-12a9ef8c7615})
+----------
+The name of the StateType ({610b20fb-2718-4f02-ac6e-12a9ef8c7615}) of ThingClass pro380
+
+
+
+
+ Current phase C changed
+ The name of the EventType ({610b20fb-2718-4f02-ac6e-12a9ef8c7615}) of ThingClass pro380
+
+
+
+
+
+ Current power
+ The name of the ParamType (ThingClass: pro380, EventType: currentPower, ID: {464eff60-11c2-46b7-98f5-1aa8172e5a2d})
+----------
+The name of the StateType ({464eff60-11c2-46b7-98f5-1aa8172e5a2d}) of ThingClass pro380
+
+
+
+
+ Current power changed
+ The name of the EventType ({464eff60-11c2-46b7-98f5-1aa8172e5a2d}) of ThingClass pro380
+
+
+
+
+
+ Current power phase A
+ The name of the ParamType (ThingClass: pro380, EventType: currentPowerPhaseA, ID: {55283773-0a4e-4574-b21a-d4a3f287eab1})
+----------
+The name of the StateType ({55283773-0a4e-4574-b21a-d4a3f287eab1}) of ThingClass pro380
+
+
+
+
+ Current power phase A changed
+ The name of the EventType ({55283773-0a4e-4574-b21a-d4a3f287eab1}) of ThingClass pro380
+
+
+
+
+
+ Current power phase B
+ The name of the ParamType (ThingClass: pro380, EventType: currentPowerPhaseB, ID: {8f15d104-5ff7-4c33-9cf9-fdbef4b6f721})
+----------
+The name of the StateType ({8f15d104-5ff7-4c33-9cf9-fdbef4b6f721}) of ThingClass pro380
+
+
+
+
+ Current power phase B changed
+ The name of the EventType ({8f15d104-5ff7-4c33-9cf9-fdbef4b6f721}) of ThingClass pro380
+
+
+
+
+
+ Current power phase C
+ The name of the ParamType (ThingClass: pro380, EventType: currentPowerPhaseC, ID: {86c0f968-ee70-4f56-bdfc-33b8e2b134a4})
+----------
+The name of the StateType ({86c0f968-ee70-4f56-bdfc-33b8e2b134a4}) of ThingClass pro380
+
+
+
+
+ Current power phase C changed
+ The name of the EventType ({86c0f968-ee70-4f56-bdfc-33b8e2b134a4}) of ThingClass pro380
+
+
+
+
+
+ Energy consumed phase A
+ The name of the ParamType (ThingClass: pro380, EventType: energyConsumedPhaseA, ID: {b16b3b0c-82d9-4b3c-a172-0e6631c8ce16})
+----------
+The name of the StateType ({b16b3b0c-82d9-4b3c-a172-0e6631c8ce16}) of ThingClass pro380
+
+
+
+
+ Energy consumed phase A changed
+ The name of the EventType ({b16b3b0c-82d9-4b3c-a172-0e6631c8ce16}) of ThingClass pro380
+
+
+
+
+
+ Energy consumed phase B
+ The name of the ParamType (ThingClass: pro380, EventType: energyConsumedPhaseB, ID: {64225f7f-9b2f-4bfc-87b2-38758804a28b})
+----------
+The name of the StateType ({64225f7f-9b2f-4bfc-87b2-38758804a28b}) of ThingClass pro380
+
+
+
+
+ Energy consumed phase B changed
+ The name of the EventType ({64225f7f-9b2f-4bfc-87b2-38758804a28b}) of ThingClass pro380
+
+
+
+
+
+ Energy consumed phase C
+ The name of the ParamType (ThingClass: pro380, EventType: energyConsumedPhaseC, ID: {a6e82d61-e837-4ec8-b14a-af0d49bea9d2})
+----------
+The name of the StateType ({a6e82d61-e837-4ec8-b14a-af0d49bea9d2}) of ThingClass pro380
+
+
+
+
+ Energy consumed phase C changed
+ The name of the EventType ({a6e82d61-e837-4ec8-b14a-af0d49bea9d2}) of ThingClass pro380
+
+
+
+
+
+ Energy produced phase A
+ The name of the ParamType (ThingClass: pro380, EventType: energyProducedPhaseA, ID: {95bd476e-c247-4f7d-ab01-d9f1b7c0d996})
+----------
+The name of the StateType ({95bd476e-c247-4f7d-ab01-d9f1b7c0d996}) of ThingClass pro380
+
+
+
+
+ Energy produced phase A changed
+ The name of the EventType ({95bd476e-c247-4f7d-ab01-d9f1b7c0d996}) of ThingClass pro380
+
+
+
+
+
+ Energy produced phase B
+ The name of the ParamType (ThingClass: pro380, EventType: energyProducedPhaseB, ID: {f0a0bd81-708c-48d6-b5c9-165464a5b309})
+----------
+The name of the StateType ({f0a0bd81-708c-48d6-b5c9-165464a5b309}) of ThingClass pro380
+
+
+
+
+ Energy produced phase B changed
+ The name of the EventType ({f0a0bd81-708c-48d6-b5c9-165464a5b309}) of ThingClass pro380
+
+
+
+
+
+ Energy produced phase C
+ The name of the ParamType (ThingClass: pro380, EventType: energyProducedPhaseC, ID: {c33fcd11-b4a9-44b2-9e30-40dfa2e4c9b1})
+----------
+The name of the StateType ({c33fcd11-b4a9-44b2-9e30-40dfa2e4c9b1}) of ThingClass pro380
+
+
+
+
+ Energy produced phase C changed
+ The name of the EventType ({c33fcd11-b4a9-44b2-9e30-40dfa2e4c9b1}) of ThingClass pro380
+
+
+
+
+
+ Frequency
+ The name of the ParamType (ThingClass: pro380, EventType: frequency, ID: {bb6fd00c-3bbb-4977-bb8a-96787bb6f5c5})
+----------
+The name of the StateType ({bb6fd00c-3bbb-4977-bb8a-96787bb6f5c5}) of ThingClass pro380
+
+
+
+
+ Frequency changed
+ The name of the EventType ({bb6fd00c-3bbb-4977-bb8a-96787bb6f5c5}) of ThingClass pro380
+
+
+
+
+ Modbus RTU master
+ The name of the ParamType (ThingClass: pro380, Type: thing, ID: {6cdbec8c-21b9-42dc-b1ab-8901ac609482})
+
+
+
+
+ Modbus slave address
+ The name of the ParamType (ThingClass: pro380, Type: thing, ID: {c75b2c31-6ec3-49ab-8c8f-5231d0a7e941})
+
+
+
+
+ PRO380
+ The name of the ThingClass ({d7c6440b-54f9-4cc0-a96b-9bb7304b3e77})
+
+
+
+
+ Slave address
+ The name of the ParamType (ThingClass: pro380, Type: discovery, ID: {a29f37f6-b344-4628-8ab4-8f4c18fada4a})
+
+
+
+
+
+ Total energy consumed
+ The name of the ParamType (ThingClass: pro380, EventType: totalEnergyConsumed, ID: {f18fd596-b47f-44be-a0f0-6ca44369ebf5})
+----------
+The name of the StateType ({f18fd596-b47f-44be-a0f0-6ca44369ebf5}) of ThingClass pro380
+
+
+
+
+ Total energy consumed changed
+ The name of the EventType ({f18fd596-b47f-44be-a0f0-6ca44369ebf5}) of ThingClass pro380
+
+
+
+
+
+ Total energy produced
+ The name of the ParamType (ThingClass: pro380, EventType: totalEnergyProduced, ID: {112911c9-14e0-4c83-ac92-f2ceb3bdecdf})
+----------
+The name of the StateType ({112911c9-14e0-4c83-ac92-f2ceb3bdecdf}) of ThingClass pro380
+
+
+
+
+ Total energy produced changed
+ The name of the EventType ({112911c9-14e0-4c83-ac92-f2ceb3bdecdf}) of ThingClass pro380
+
+
+
+
+
+ Voltage phase A
+ The name of the ParamType (ThingClass: pro380, EventType: voltagePhaseA, ID: {04dba21a-7447-46b9-b9ae-095e5769e511})
+----------
+The name of the StateType ({04dba21a-7447-46b9-b9ae-095e5769e511}) of ThingClass pro380
+
+
+
+
+ Voltage phase A changed
+ The name of the EventType ({04dba21a-7447-46b9-b9ae-095e5769e511}) of ThingClass pro380
+
+
+
+
+
+ Voltage phase B
+ The name of the ParamType (ThingClass: pro380, EventType: voltagePhaseB, ID: {270d0c34-0a0c-4655-985f-faad6efd1afd})
+----------
+The name of the StateType ({270d0c34-0a0c-4655-985f-faad6efd1afd}) of ThingClass pro380
+
+
+
+
+ Voltage phase B changed
+ The name of the EventType ({270d0c34-0a0c-4655-985f-faad6efd1afd}) of ThingClass pro380
+
+
+
+
+
+ Voltage phase C
+ The name of the ParamType (ThingClass: pro380, EventType: voltagePhaseC, ID: {a1da8cfd-37cc-4c87-b857-e942cd90daec})
+----------
+The name of the StateType ({a1da8cfd-37cc-4c87-b857-e942cd90daec}) of ThingClass pro380
+
+
+
+
+ Voltage phase C changed
+ The name of the EventType ({a1da8cfd-37cc-4c87-b857-e942cd90daec}) of ThingClass pro380
+
+
+
+
+
+ inepro Metering
+ The name of the vendor ({64f4df0f-18ce-409c-bf32-84a086c691ca})
+----------
+The name of the plugin inepro ({9bc19f8c-ff9e-4036-95a4-c79038709656})
+
+
+
+
diff --git a/nymea-plugins-modbus.pro b/nymea-plugins-modbus.pro
index c851b8c..717131d 100644
--- a/nymea-plugins-modbus.pro
+++ b/nymea-plugins-modbus.pro
@@ -6,15 +6,16 @@ SUBDIRS += libnymea-sunspec
PLUGIN_DIRS = \
alphainnotec \
+ bgetech \
drexelundweiss \
- energymeters \
huawei \
+ idm \
+ inepro \
modbuscommander \
mtec \
mypv \
sunspec \
unipi \
- idm \
wallbe \
webasto \