Energy: Make energy meter a three phase

make-energy-meter-3-phase
Simon Stürz 2025-03-24 11:52:21 +01:00
parent 4c65fc0828
commit 5eeaccd3fd
3 changed files with 98 additions and 7 deletions

View File

@ -1,7 +1,7 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
*
* Copyright 2013 - 2020, nymea GmbH
* Copyright 2013 - 2025, nymea GmbH
* Contact: contact@nymea.io
* This file is part of nymea.
@ -103,15 +103,35 @@ void IntegrationPluginGenericEnergy::executeAction(ThingActionInfo *info)
}
} else if (thing->thingClassId() == energyMeterThingClassId) {
if (action.actionTypeId() == energyMeterCurrentPowerActionTypeId) {
thing->setStateValue(energyMeterCurrentPowerStateTypeId, action.paramValue(energyMeterCurrentPowerActionCurrentPowerParamTypeId));
thing->setStateValue(energyMeterCurrentPowerStateTypeId,
action.paramValue(energyMeterCurrentPowerActionCurrentPowerParamTypeId));
} else if (action.actionTypeId() == energyMeterTotalEnergyConsumedActionTypeId) {
thing->setStateValue(energyMeterTotalEnergyConsumedStateTypeId, action.paramValue(energyMeterTotalEnergyConsumedActionTotalEnergyConsumedParamTypeId));
thing->setStateValue(energyMeterTotalEnergyConsumedStateTypeId,
action.paramValue(energyMeterTotalEnergyConsumedActionTotalEnergyConsumedParamTypeId));
} else if (action.actionTypeId() == energyMeterTotalEnergyProducedActionTypeId) {
thing->setStateValue(energyMeterTotalEnergyProducedStateTypeId, action.paramValue(energyMeterTotalEnergyProducedActionTotalEnergyProducedParamTypeId));
thing->setStateValue(energyMeterTotalEnergyProducedStateTypeId,
action.paramValue(energyMeterTotalEnergyProducedActionTotalEnergyProducedParamTypeId));
} else if (action.actionTypeId() == energyMeterCurrentPowerPhaseAActionTypeId) {
thing->setStateValue(energyMeterCurrentPowerPhaseAStateTypeId,
action.paramValue(energyMeterCurrentPowerPhaseAActionCurrentPowerPhaseAParamTypeId));
} else if (action.actionTypeId() == energyMeterCurrentPowerPhaseBActionTypeId) {
thing->setStateValue(energyMeterCurrentPowerPhaseBStateTypeId,
action.paramValue(energyMeterCurrentPowerPhaseBActionCurrentPowerPhaseBParamTypeId));
} else if (action.actionTypeId() == energyMeterCurrentPowerPhaseCActionTypeId) {
thing->setStateValue(energyMeterCurrentPowerPhaseCStateTypeId,
action.paramValue(energyMeterCurrentPowerPhaseCActionCurrentPowerPhaseCParamTypeId));
} else if (action.actionTypeId() == energyMeterCurrentPhaseAActionTypeId) {
thing->setStateValue(energyMeterCurrentPhaseAStateTypeId, action.paramValue(energyMeterCurrentPhaseAActionCurrentPhaseAParamTypeId));
} else if (action.actionTypeId() == energyMeterCurrentPhaseBActionTypeId) {
thing->setStateValue(energyMeterCurrentPhaseBStateTypeId, action.paramValue(energyMeterCurrentPhaseBActionCurrentPhaseBParamTypeId));
} else if (action.actionTypeId() == energyMeterCurrentPhaseCActionTypeId) {
thing->setStateValue(energyMeterCurrentPhaseCStateTypeId, action.paramValue(energyMeterCurrentPhaseCActionCurrentPhaseCParamTypeId));
} else if (action.actionTypeId() == energyMeterVoltagePhaseAActionTypeId) {
thing->setStateValue(energyMeterVoltagePhaseAStateTypeId, action.paramValue(energyMeterVoltagePhaseAActionVoltagePhaseAParamTypeId));
} else if (action.actionTypeId() == energyMeterVoltagePhaseBActionTypeId) {
thing->setStateValue(energyMeterVoltagePhaseBStateTypeId, action.paramValue(energyMeterVoltagePhaseBActionVoltagePhaseBParamTypeId));
} else if (action.actionTypeId() == energyMeterVoltagePhaseCActionTypeId) {
thing->setStateValue(energyMeterVoltagePhaseCStateTypeId, action.paramValue(energyMeterVoltagePhaseCActionVoltagePhaseCParamTypeId));
}
info->finish(Thing::ThingErrorNoError);
} else if (thing->thingClassId() == impulseSmartMeterThingClassId) {

View File

@ -1,6 +1,6 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2020, nymea GmbH
* Copyright 2013 - 2025, nymea GmbH
* Contact: contact@nymea.io
*
* This file is part of nymea.
@ -31,8 +31,9 @@
#ifndef INTEGRATIONPLUGINGENERICENERGY_H
#define INTEGRATIONPLUGINGENERICENERGY_H
#include "integrations/integrationplugin.h"
#include "plugintimer.h"
#include <integrations/integrationplugin.h>
#include <plugintimer.h>
#include "extern-plugininfo.h"
#include <QTimer>

View File

@ -75,6 +75,56 @@
"unit": "Ampere",
"writable": true
},
{
"id": "37097a51-063e-4b04-aa7b-67ddda8a3c81",
"name": "currentPhaseB",
"displayName": "Current on phase B",
"displayNameAction": "Set current on phase B",
"type": "double",
"defaultValue": 0.00,
"unit": "Ampere",
"writable": true
},
{
"id": "6c3497fd-9894-4485-a295-15b0d829d023",
"name": "currentPhaseC",
"displayName": "Current on phase C",
"displayNameAction": "Set current on phase C",
"type": "double",
"defaultValue": 0.00,
"unit": "Ampere",
"writable": true
},
{
"id": "91e82743-2d97-41e9-8bf2-cb6034818079",
"name": "currentPowerPhaseA",
"displayName": "Current power on phase A",
"displayNameAction": "Set current power on phase A",
"type": "double",
"defaultValue": 0.00,
"unit": "Watt",
"writable": true
},
{
"id": "7ecbec82-71ec-4df3-b298-837e7f37aa4b",
"name": "currentPowerPhaseB",
"displayName": "Current power on phase B",
"displayNameAction": "Set current power on phase B",
"type": "double",
"defaultValue": 0.00,
"unit": "Watt",
"writable": true
},
{
"id": "eded281b-217b-48f5-8b91-b5142ea87505",
"name": "currentPowerPhaseC",
"displayName": "Current power on phase C",
"displayNameAction": "Set current power on phase C",
"type": "double",
"defaultValue": 0.00,
"unit": "Watt",
"writable": true
},
{
"id": "03deaf24-e515-4649-8979-ef8ae8ee7c02",
"name": "voltagePhaseA",
@ -84,6 +134,26 @@
"defaultValue": 0.00,
"unit": "Volt",
"writable": true
},
{
"id": "7e1514fb-7e69-4849-90c4-8f27dbd6453a",
"name": "voltagePhaseB",
"displayName": "Voltage on phase B",
"displayNameAction": "Set voltage on phase B",
"type": "double",
"defaultValue": 0.00,
"unit": "Volt",
"writable": true
},
{
"id": "b6e69a07-a362-4eef-87b7-5a670e332919",
"name": "voltagePhaseC",
"displayName": "Voltage on phase C",
"displayNameAction": "Set voltage on phase C",
"type": "double",
"defaultValue": 0.00,
"unit": "Volt",
"writable": true
}
]
},