From d4094dae7b757c6559b66f9f7cbf422bb0a76eaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=BCrz?= Date: Thu, 26 Aug 2021 14:32:13 +0200 Subject: [PATCH] Update sunspec to new interfaces and add adaptive filters --- sunspec/integrationpluginsunspec.cpp | 18 - sunspec/integrationpluginsunspec.json | 600 ++++++++++++++++---------- sunspec/sunspecmeter.cpp | 188 ++++---- 3 files changed, 480 insertions(+), 326 deletions(-) diff --git a/sunspec/integrationpluginsunspec.cpp b/sunspec/integrationpluginsunspec.cpp index c947550..7dc7b62 100644 --- a/sunspec/integrationpluginsunspec.cpp +++ b/sunspec/integrationpluginsunspec.cpp @@ -40,24 +40,6 @@ IntegrationPluginSunSpec::IntegrationPluginSunSpec() { -// QVector valuesReverted; -// QVector values; -// values = {0x0000, 0x41b4}; -// quint32 valueUint32 = SunSpecDataPoint::convertToUInt32(values); -// valuesReverted = SunSpecDataPoint::convertFromUInt32(valueUint32); -// qCCritical(dcSunSpec()) << valueUint32 << SunSpecDataPoint::registersToString(valuesReverted); - -// qint32 valueInt32 = SunSpecDataPoint::convertToInt32(values); -// float valueFloat = SunSpecDataPoint::convertToFloat32(values); -// qCCritical(dcSunSpec()) << valueUint32 << valueInt32 << valueFloat; -// valuesReverted = SunSpecDataPoint::convertFromFloat32(valueFloat); -// qCCritical(dcSunSpec()) << valueUint32 << valueInt32 << valueFloat << endl << SunSpecDataPoint::registersToString(values) << endl << SunSpecDataPoint::registersToString(valuesReverted); - -// // 0x3438, 0x565f, 0x4c47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c47, 0x4320, 0x5245, 0x5355, 0x2031, 0x3000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3438, 0x5620, 0x4443, 0x4443, 0x2032, 0x2e32, 0x2e38, 0x3020, 0x424d, 0x5320, 0x302e, 0x302e, 0x3000, 0x0000, 0x0000, 0x0000, 0x3745, 0x3034, 0x3432, 0x4543, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0070, 0x0000, 0x2000, 0x4619, 0x4000, 0x459c, 0x4000, 0x459c, 0x0000, 0x4248, 0x4000, 0x459c -// values = {0x3438, 0x565f, 0x4c47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}; -// QString valueString = SunSpecDataPoint::convertToString(values); -// valuesReverted = SunSpecDataPoint::convertFromString(valueString, 16); -// qCCritical(dcSunSpec()) << valueString << endl << SunSpecDataPoint::registersToString(values) << endl << SunSpecDataPoint::registersToString(valuesReverted); } diff --git a/sunspec/integrationpluginsunspec.json b/sunspec/integrationpluginsunspec.json index 643de0b..7e5f78a 100644 --- a/sunspec/integrationpluginsunspec.json +++ b/sunspec/integrationpluginsunspec.json @@ -144,7 +144,8 @@ "displayNameEvent": "Total AC current changed", "type": "double", "unit": "Ampere", - "defaultValue": 0.00 + "defaultValue": 0.00, + "filter": "adaptive" }, { "id": "4ca086e9-82b9-461c-b168-1d61b542b884", @@ -153,7 +154,8 @@ "displayNameEvent": "Phase volatage changed", "type": "double", "unit": "Volt", - "defaultValue": 0.00 + "defaultValue": 0.00, + "filter": "adaptive" }, { "id": "f49591d6-d759-4be3-bafc-b6a7a72cf023", @@ -162,7 +164,8 @@ "displayNameEvent": "AC power changed", "type": "double", "unit": "Watt", - "defaultValue": 0.00 + "defaultValue": 0.00, + "filter": "adaptive" }, { "id": "611df2ce-2b9c-49f3-9fa7-5706776e812c", @@ -288,7 +291,8 @@ "displayNameEvent": "Total AC current changed", "type": "double", "unit": "Ampere", - "defaultValue": 0.00 + "defaultValue": 0.00, + "filter": "adaptive" }, { "id": "be7b86b4-aeeb-49ba-9b6b-9792dceed6b5", @@ -297,7 +301,8 @@ "displayNameEvent": "Phase A current changed", "type": "double", "unit": "Ampere", - "defaultValue": 0.00 + "defaultValue": 0.00, + "filter": "adaptive" }, { "id": "fc5df18d-cf2f-4944-97b7-e57dabef8778", @@ -306,7 +311,8 @@ "displayNameEvent": "Phase B current changed", "type": "double", "unit": "Ampere", - "defaultValue": 0.00 + "defaultValue": 0.00, + "filter": "adaptive" }, { "id": "17c24cfc-cb41-4873-82b4-19a20d6be146", @@ -315,7 +321,8 @@ "displayNameEvent": "Phase AN volatage changed", "type": "double", "unit": "Volt", - "defaultValue": 0.00 + "defaultValue": 0.00, + "filter": "adaptive" }, { "id": "f8645ee2-a1e6-4d09-8c20-f6fd02a9e896", @@ -324,7 +331,8 @@ "displayNameEvent": "Phase BN voltage changed", "type": "double", "unit": "Volt", - "defaultValue": 0.00 + "defaultValue": 0.00, + "filter": "adaptive" }, { "id": "9235eb4b-906c-4557-8e18-bca268a367cc", @@ -333,7 +341,8 @@ "displayNameEvent": "AC power changed", "type": "double", "unit": "Watt", - "defaultValue": 0.00 + "defaultValue": 0.00, + "filter": "adaptive" }, { "id": "874f5e4a-a009-4c28-b211-2af90a24b2ac", @@ -459,7 +468,8 @@ "displayNameEvent": "Total AC current changed", "type": "double", "unit": "Ampere", - "defaultValue": 0.00 + "defaultValue": 0.00, + "filter": "adaptive" }, { "id": "3140ccd3-40cf-46c8-8bb2-8c3ea4582f84", @@ -468,7 +478,8 @@ "displayNameEvent": "Phase A current changed", "type": "double", "unit": "Ampere", - "defaultValue": 0.00 + "defaultValue": 0.00, + "filter": "adaptive" }, { "id": "7ea1a53a-6fd9-4914-8283-b57aa1aaaebf", @@ -477,7 +488,8 @@ "displayNameEvent": "Phase B current changed", "type": "double", "unit": "Ampere", - "defaultValue": 0.00 + "defaultValue": 0.00, + "filter": "adaptive" }, { "id": "aa4b4cf5-43d0-4be5-9505-403918b5371d", @@ -486,7 +498,8 @@ "displayNameEvent": "Phase C current changed", "type": "double", "unit": "Ampere", - "defaultValue": 0.00 + "defaultValue": 0.00, + "filter": "adaptive" }, { "id": "f08521aa-9c38-4c31-95e1-acb616f6e9c6", @@ -495,7 +508,8 @@ "displayNameEvent": "Phase AN volatage changed", "type": "double", "unit": "Volt", - "defaultValue": 0.00 + "defaultValue": 0.00, + "filter": "adaptive" }, { "id": "739b8805-d522-4406-bede-d1e4200a3aa9", @@ -504,7 +518,8 @@ "displayNameEvent": "Phase BN voltage changed", "type": "double", "unit": "Volt", - "defaultValue": 0.00 + "defaultValue": 0.00, + "filter": "adaptive" }, { "id": "949b797d-5566-4667-8982-e430d23548e2", @@ -513,7 +528,8 @@ "displayNameEvent": "Phase CN voltage changed", "type": "int", "unit": "Volt", - "defaultValue": 0 + "defaultValue": 0, + "filter": "adaptive" }, { "id": "14036f44-25fd-4e93-8e8c-c677b06a2c34", @@ -522,7 +538,8 @@ "displayNameEvent": "AC power changed", "type": "double", "unit": "Watt", - "defaultValue": 0.00 + "defaultValue": 0.00, + "filter": "adaptive" }, { "id": "faa45cae-ed28-4150-9036-fceddf9d6776", @@ -592,7 +609,7 @@ "displayName": "SunSpec single phase meter", "id": "7ffa43b8-b56f-4435-8509-980e9d81dfa8", "createMethods": [ "Auto" ], - "interfaces": ["smartmeterconsumer", "connectable"], + "interfaces": ["energymeter", "connectable"], "paramTypes": [ { "id": "7d6fcafb-c62e-4a21-aae2-f4041c487149", @@ -642,51 +659,6 @@ "defaultValue": false, "cached": false }, - { - "id": "1abf61d4-6529-483f-832a-8ace4373cd02", - "name": "totalCurrent", - "displayName": "Total AC current", - "displayNameEvent": "Total AC current changed", - "type": "double", - "unit": "Ampere", - "defaultValue": 0.00 - }, - { - "id": "4a058e36-0b45-4388-9a26-0615f7aafa0d", - "name": "phaseACurrent", - "displayName": "Phase A current", - "displayNameEvent": "Phase A current changed", - "type": "double", - "unit": "Ampere", - "defaultValue": 0.00 - }, - { - "id": "408e9c41-cfbf-456b-a9c2-b4adfde4a5b0", - "name": "lnACVoltage", - "displayName": "Line to Neutral AC Voltage", - "displayNameEvent": "Line to Neutral AC Voltage changed", - "type": "double", - "unit": "Volt", - "defaultValue": 0.00 - }, - { - "id": "8bfb8021-1b2e-4693-984c-0580f5665806", - "name": "phaseANVoltage", - "displayName": "Phase AN voltage", - "displayNameEvent": "Phase AN volatage changed", - "type": "double", - "unit": "Volt", - "defaultValue": 0.00 - }, - { - "id": "3a2ce51d-7fa0-4188-bbd6-00d25de90e15", - "name": "frequency", - "displayName": "Frequency", - "displayNameEvent": "Frequency changed", - "type": "double", - "unit": "Hertz", - "defaultValue": 0.00 - }, { "id": "93cf8c6a-2620-42ed-9070-e0726d7b1dbc", "name": "currentPower", @@ -694,7 +666,8 @@ "displayNameEvent": "Total real power changed", "type": "double", "unit": "Watt", - "defaultValue": 0.00 + "defaultValue": 0.00, + "filter": "adaptive" }, { "id": "ba275bdf-f418-4ef0-afbe-ac425c6f6783", @@ -714,6 +687,35 @@ "unit": "KiloWattHour", "defaultValue": 0.00 }, + { + "id": "4a058e36-0b45-4388-9a26-0615f7aafa0d", + "name": "currentPhaseA", + "displayName": "Phase A current", + "displayNameEvent": "Phase A current changed", + "type": "double", + "unit": "Ampere", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "5e7a65a5-b740-4395-87fa-ffbe8fe1c823", + "name": "voltagePhaseA", + "displayName": "Phase A voltage", + "displayNameEvent": "Phase A voltage changed", + "type": "double", + "unit": "Volt", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "3a2ce51d-7fa0-4188-bbd6-00d25de90e15", + "name": "frequency", + "displayName": "Frequency", + "displayNameEvent": "Frequency changed", + "type": "double", + "unit": "Hertz", + "defaultValue": 0.00 + }, { "id": "94adff6f-f672-4e4e-a72c-cd6cd7e8721a", "name": "version", @@ -729,7 +731,7 @@ "displayName": "SunSpec split phase meter", "id": "b8a18e45-5ff5-4f43-915f-04ee216c809d", "createMethods": [ "Auto" ], - "interfaces": ["smartmeterconsumer", "connectable"], + "interfaces": ["energymeter", "connectable"], "paramTypes": [ { "id": "89aeec6d-abeb-48b5-9594-214ad5db2d03", @@ -779,78 +781,6 @@ "defaultValue": false, "cached": false }, - { - "id": "e85024af-5376-4ff1-813e-5a56990c11cc", - "name": "totalCurrent", - "displayName": "Total AC current", - "displayNameEvent": "Total AC current changed", - "type": "double", - "unit": "Ampere", - "defaultValue": 0.00 - }, - { - "id": "e8c0f4bf-a704-46f2-80a0-cf490bd7871b", - "name": "phaseACurrent", - "displayName": "Phase A current", - "displayNameEvent": "Phase A current changed", - "type": "double", - "unit": "Ampere", - "defaultValue": 0.00 - }, - { - "id": "4281f6fc-d5a0-4a22-ac61-6bec88efbc80", - "name": "phaseBCurrent", - "displayName": "Phase B current", - "displayNameEvent": "Phase B current changed", - "type": "double", - "unit": "Ampere", - "defaultValue": 0.00 - }, - { - "id": "0ac79508-07c3-4d01-97a3-6edf121bdf32", - "name": "lnACVoltage", - "displayName": "Line to Neutral AC Voltage", - "displayNameEvent": "Line to Neutral AC Voltage changed", - "type": "double", - "unit": "Volt", - "defaultValue": 0.00 - }, - { - "id": "1bd7e53e-abf8-4d62-b87c-2c84c283567b", - "name": "phaseANVoltage", - "displayName": "Phase AN voltage", - "displayNameEvent": "Phase AN volatage changed", - "type": "double", - "unit": "Volt", - "defaultValue": 0.00 - }, - { - "id": "377b5279-ddb6-451d-8377-a9389c749393", - "name": "phaseBNVoltage", - "displayName": "Phase BN voltage", - "displayNameEvent": "Phase BN voltage changed", - "type": "double", - "unit": "Volt", - "defaultValue": 0.00 - }, - { - "id": "db977c04-a3e1-436f-a0cd-9ce5b7bc6b89", - "name": "frequency", - "displayName": "Frequency", - "displayNameEvent": "Frequency changed", - "type": "double", - "unit": "Hertz", - "defaultValue": 0.00 - }, - { - "id": "ef4bc0f8-f516-49b7-aba8-d5f987485aca", - "name": "currentPower", - "displayName": "Total real power", - "displayNameEvent": "Total real power changed", - "type": "double", - "unit": "Watt", - "defaultValue": 0.00 - }, { "id": "8a63bd73-0546-4636-8da2-23238cc06fb2", "name": "totalEnergyProduced", @@ -869,6 +799,143 @@ "unit": "KiloWattHour", "defaultValue": 0.00 }, + { + "id": "ef4bc0f8-f516-49b7-aba8-d5f987485aca", + "name": "currentPower", + "displayName": "Total real power", + "displayNameEvent": "Total real power changed", + "type": "double", + "unit": "Watt", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "481b9895-1c3e-4e74-9418-ee51dae80a63", + "name": "energyConsumedPhaseA", + "displayName": "Energy consumed phase A", + "displayNameEvent": "Energy consumed phase A changed", + "type": "double", + "unit": "KiloWattHour", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "10245c6c-4b0d-44b4-be10-72026b842c86", + "name": "energyConsumedPhaseB", + "displayName": "Energy consumed phase B", + "displayNameEvent": "Energy consumed phase B changed", + "type": "double", + "unit": "KiloWattHour", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "2dc76576-561c-4bce-8799-fadc55e84aee", + "name": "energyProducedPhaseA", + "displayName": "Energy produced phase A", + "displayNameEvent": "Energy produced phase A changed", + "type": "double", + "unit": "KiloWattHour", + "defaultValue": 0.00 + }, + { + "id": "b1489efd-ece0-419e-ab1c-d3d25ab6b958", + "name": "energyProducedPhaseB", + "displayName": "Energy produced phase B", + "displayNameEvent": "Energy produced phase B changed", + "type": "double", + "unit": "KiloWattHour", + "defaultValue": 0.00 + }, + { + "id": "e85024af-5376-4ff1-813e-5a56990c11cc", + "name": "totalCurrent", + "displayName": "Total AC current", + "displayNameEvent": "Total AC current changed", + "type": "double", + "unit": "Ampere", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "57c0f5ba-a104-424b-b8d4-8bab90acf009", + "name": "currentPowerPhaseA", + "displayName": "Current power phase A", + "displayNameEvent": "Current power phase A changed", + "type": "double", + "unit": "Watt", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "456f7cdf-9756-49b8-9084-f212199d4014", + "name": "currentPowerPhaseB", + "displayName": "Current power phase B", + "displayNameEvent": "Current power phase B changed", + "type": "double", + "unit": "Watt", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "e8c0f4bf-a704-46f2-80a0-cf490bd7871b", + "name": "currentPhaseA", + "displayName": "Phase A current", + "displayNameEvent": "Phase A current changed", + "type": "double", + "unit": "Ampere", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "4281f6fc-d5a0-4a22-ac61-6bec88efbc80", + "name": "currentPhaseB", + "displayName": "Phase B current", + "displayNameEvent": "Phase B current changed", + "type": "double", + "unit": "Ampere", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "0ac79508-07c3-4d01-97a3-6edf121bdf32", + "name": "lnACVoltage", + "displayName": "Line to Neutral AC Voltage", + "displayNameEvent": "Line to Neutral AC Voltage changed", + "type": "double", + "unit": "Volt", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "1bd7e53e-abf8-4d62-b87c-2c84c283567b", + "name": "voltagePhaseA", + "displayName": "Phase A voltage", + "displayNameEvent": "Phase A volatage changed", + "type": "double", + "unit": "Volt", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "377b5279-ddb6-451d-8377-a9389c749393", + "name": "voltagePhaseB", + "displayName": "Phase B voltage", + "displayNameEvent": "Phase B voltage changed", + "type": "double", + "unit": "Volt", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "db977c04-a3e1-436f-a0cd-9ce5b7bc6b89", + "name": "frequency", + "displayName": "Frequency", + "displayNameEvent": "Frequency changed", + "type": "double", + "unit": "Hertz", + "defaultValue": 0.00 + }, { "id": "85c5087c-77b4-4ac8-bdff-020f6242bd57", "name": "version", @@ -935,97 +1002,7 @@ "cached": false }, { - "id": "7855d176-c6b8-439e-9f12-a71f01c1c7aa", - "name": "totalCurrent", - "displayName": "Total AC current", - "displayNameEvent": "Total AC current changed", - "type": "double", - "unit": "Ampere", - "defaultValue": 0.00 - }, - { - "id": "da494d99-5de3-4d03-b7dd-33a33db32164", - "name": "phaseACurrent", - "displayName": "Phase A current", - "displayNameEvent": "Phase A current changed", - "type": "double", - "unit": "Ampere", - "defaultValue": 0.00 - }, - { - "id": "023b6e5c-be3f-4d8c-adfd-e009c7bebffb", - "name": "phaseBCurrent", - "displayName": "Phase B current", - "displayNameEvent": "Phase B current changed", - "type": "double", - "unit": "Ampere", - "defaultValue": 0.00 - }, - { - "id": "2676ad36-3d97-4691-8334-e13934cc58d1", - "name": "phaseCCurrent", - "displayName": "Phase C current", - "displayNameEvent": "Phase C current changed", - "type": "double", - "unit": "Ampere", - "defaultValue": 0.00 - }, - { - "id": "bc54ca1e-1476-40eb-9974-9e3c2f893dd8", - "name": "lnACVoltage", - "displayName": "Line to Neutral AC Voltage", - "displayNameEvent": "Line to Neutral AC Voltage changed", - "type": "double", - "unit": "Volt", - "defaultValue": 0.00 - }, - { - "id": "4bd32d91-877a-4821-9db9-5981de20d21d", - "name": "phaseANVoltage", - "displayName": "Phase AN voltage", - "displayNameEvent": "Phase AN volatage changed", - "type": "double", - "unit": "Volt", - "defaultValue": 0.00 - }, - { - "id": "f090cb78-d7ed-44fd-a5ad-ea9016021c34", - "name": "phaseBNVoltage", - "displayName": "Phase BN voltage", - "displayNameEvent": "Phase BN voltage changed", - "type": "double", - "unit": "Volt", - "defaultValue": 0.00 - }, - { - "id": "fa5aa6f5-e67d-485a-835f-24e49298856c", - "name": "phaseCNVoltage", - "displayName": "Phase CN voltage", - "displayNameEvent": "Phase CN voltage changed", - "type": "double", - "unit": "Volt", - "defaultValue": 0.00 - }, - { - "id": "dfcf52f5-6279-4d25-b7c8-a93b92c39a0c", - "name": "frequency", - "displayName": "Frequency", - "displayNameEvent": "Frequency changed", - "type": "double", - "unit": "Hertz", - "defaultValue": 0.00 - }, - { - "id": "c28c642f-46da-44de-ba0d-c4cbfadbf2cd", - "name": "currentPower", - "displayName": "Total real power", - "displayNameEvent": "Total real power changed", - "type": "double", - "unit": "Watt", - "defaultValue": 0.00 - }, - { - "id": "73ebf57f-1ad2-4d19-bfd9-9e0a514c1243", + "id": "01a69b2c-cc96-4925-9b1c-a2f204ef0837", "name": "totalEnergyProduced", "displayName": "Total real energy exported", "displayNameEvent": "Total real energy exported changed", @@ -1034,7 +1011,7 @@ "defaultValue": 0.00 }, { - "id": "63fa4721-1b0a-458c-b66c-17c161107f0d", + "id": "0a98b229-7625-4811-8bf8-ed22be2db3fb", "name": "totalEnergyConsumed", "displayName": "Total real energy imported", "displayNameEvent": "Total real energy imported changed", @@ -1043,7 +1020,170 @@ "defaultValue": 0.00 }, { - "id": "3b8f53d2-4c80-48a6-8c0b-381e93872811", + "id": "47780b0a-68b7-46c3-bb98-79ec9a57fd69", + "name": "currentPower", + "displayName": "Total real power", + "displayNameEvent": "Total real power changed", + "type": "double", + "unit": "Watt", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "cc0fd197-22ed-4461-8bba-47460396798a", + "name": "energyConsumedPhaseA", + "displayName": "Energy consumed phase A", + "displayNameEvent": "Energy consumed phase A changed", + "type": "double", + "unit": "KiloWattHour", + "defaultValue": 0.00 + }, + { + "id": "e928fde3-b35b-4884-9810-1cd083725e1c", + "name": "energyConsumedPhaseB", + "displayName": "Energy consumed phase B", + "displayNameEvent": "Energy consumed phase B changed", + "type": "double", + "unit": "KiloWattHour", + "defaultValue": 0.00 + }, + { + "id": "2a12a991-d6c8-4665-bcc8-ea2685f7f0d4", + "name": "energyConsumedPhaseC", + "displayName": "Energy consumed phase C", + "displayNameEvent": "Energy consumed phase C changed", + "type": "double", + "unit": "KiloWattHour", + "defaultValue": 0.00 + }, + { + "id": "fe7caa7e-cf37-4550-833e-7f9d35001fdd", + "name": "energyProducedPhaseA", + "displayName": "Energy produced phase A", + "displayNameEvent": "Energy produced phase A changed", + "type": "double", + "unit": "KiloWattHour", + "defaultValue": 0.00 + }, + { + "id": "edbe64a5-121e-4c96-9dc8-bbc2a33dfdb7", + "name": "energyProducedPhaseB", + "displayName": "Energy produced phase B", + "displayNameEvent": "Energy produced phase B changed", + "type": "double", + "unit": "KiloWattHour", + "defaultValue": 0.00 + }, + { + "id": "a26790c0-7378-471c-80ba-67021352415d", + "name": "energyProducedPhaseC", + "displayName": "Energy produced phase C", + "displayNameEvent": "Energy produced phase C changed", + "type": "double", + "unit": "KiloWattHour", + "defaultValue": 0.00 + }, + { + "id": "0e3e8870-3d59-4ee8-b7aa-33bda68b6ae3", + "name": "currentPowerPhaseA", + "displayName": "Current power phase A", + "displayNameEvent": "Current power phase A changed", + "type": "double", + "unit": "Watt", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "453d046c-3a66-4590-882c-1283882918fc", + "name": "currentPowerPhaseB", + "displayName": "Current power phase B", + "displayNameEvent": "Current power phase B changed", + "type": "double", + "unit": "Watt", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "ba4e94de-9136-48a7-aad8-3d5cd0e7d968", + "name": "currentPowerPhaseC", + "displayName": "Current power phase C", + "displayNameEvent": "Current power phase C changed", + "type": "double", + "unit": "Watt", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "46ae5c40-f389-4f7e-a59f-8947d7dc9f3f", + "name": "currentPhaseA", + "displayName": "Phase A current", + "displayNameEvent": "Phase A current changed", + "type": "double", + "unit": "Ampere", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "efc75436-ac51-4fee-81f1-65a726416980", + "name": "currentPhaseB", + "displayName": "Phase B current", + "displayNameEvent": "Phase B current changed", + "type": "double", + "unit": "Ampere", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "618cbcc5-2efe-49d2-9c5c-53fb3eaa3a9d", + "name": "currentPhaseC", + "displayName": "Phase C current", + "displayNameEvent": "Phase C current changed", + "type": "double", + "unit": "Ampere", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "4ff342de-f0b7-475a-99e4-3a926326d1b7", + "name": "voltagePhaseA", + "displayName": "Phase A voltage", + "displayNameEvent": "Phase A volatage changed", + "type": "double", + "unit": "Volt", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "cc8434f1-02fe-41ad-bc8a-94e57293f8fc", + "name": "voltagePhaseB", + "displayName": "Phase B voltage", + "displayNameEvent": "Phase B voltage changed", + "type": "double", + "unit": "Volt", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "fbd673cf-8891-4aef-b112-2829f5fcfe06", + "name": "voltagePhaseC", + "displayName": "Phase C voltage", + "displayNameEvent": "Phase C voltage changed", + "type": "double", + "unit": "Volt", + "defaultValue": 0.00, + "filter": "adaptive" + }, + { + "id": "66734fc7-b3e4-48d4-8cb7-f0a9f7cef88a", + "name": "frequency", + "displayName": "Frequency", + "displayNameEvent": "Frequency changed", + "type": "double", + "unit": "Hertz", + "defaultValue": 0.00 + }, + { + "id": "3d908dd2-4a93-4b62-8cbb-2fa9ef4d28fa", "name": "version", "displayName": "Version", "displayNameEvent": "Version changed", diff --git a/sunspec/sunspecmeter.cpp b/sunspec/sunspecmeter.cpp index 581c5dd..a549440 100644 --- a/sunspec/sunspecmeter.cpp +++ b/sunspec/sunspecmeter.cpp @@ -60,144 +60,176 @@ void SunSpecMeter::onBlockDataUpdated() SunSpecMeterSinglePhaseModel *meter = qobject_cast(m_model); qCDebug(dcSunSpec()) << m_thing->name() << "block data updated" << meter; m_thing->setStateValue(sunspecSinglePhaseMeterConnectedStateTypeId, true); - m_thing->setStateValue(sunspecSinglePhaseMeterPhaseACurrentStateTypeId, meter->ampsPhaseA()); - m_thing->setStateValue(sunspecSinglePhaseMeterLnACVoltageStateTypeId, meter->voltageLn()); - m_thing->setStateValue(sunspecSinglePhaseMeterPhaseANVoltageStateTypeId, meter->phaseVoltageAn()); - m_thing->setStateValue(sunspecSinglePhaseMeterFrequencyStateTypeId, meter->hz()); m_thing->setStateValue(sunspecSinglePhaseMeterCurrentPowerStateTypeId, meter->watts()); m_thing->setStateValue(sunspecSinglePhaseMeterTotalEnergyProducedStateTypeId, meter->totalWattHoursExported() / 1000.0); m_thing->setStateValue(sunspecSinglePhaseMeterTotalEnergyConsumedStateTypeId, meter->totalWattHoursImported() / 1000.0); + m_thing->setStateValue(sunspecSinglePhaseMeterCurrentPhaseAStateTypeId, meter->ampsPhaseA()); + m_thing->setStateValue(sunspecSinglePhaseMeterVoltagePhaseAStateTypeId, meter->phaseVoltageAn()); + m_thing->setStateValue(sunspecSinglePhaseMeterFrequencyStateTypeId, meter->hz()); + m_thing->setStateValue(sunspecSinglePhaseMeterVersionStateTypeId, m_model->commonModelInfo().versionString); break; } case SunSpecModelFactory::ModelIdMeterSinglePhaseFloat: { SunSpecMeterSinglePhaseFloatModel *meter = qobject_cast(m_model); qCDebug(dcSunSpec()) << m_thing->name() << "block data updated" << meter; m_thing->setStateValue(sunspecSinglePhaseMeterConnectedStateTypeId, true); - m_thing->setStateValue(sunspecSinglePhaseMeterVersionStateTypeId, m_model->commonModelInfo().versionString); - - m_thing->setStateValue(sunspecSinglePhaseMeterPhaseACurrentStateTypeId, meter->ampsPhaseA()); - m_thing->setStateValue(sunspecSinglePhaseMeterLnACVoltageStateTypeId, meter->voltageLn()); - m_thing->setStateValue(sunspecSinglePhaseMeterPhaseANVoltageStateTypeId, meter->phaseVoltageAn()); - m_thing->setStateValue(sunspecSinglePhaseMeterFrequencyStateTypeId, meter->hz()); m_thing->setStateValue(sunspecSinglePhaseMeterCurrentPowerStateTypeId, meter->watts()); m_thing->setStateValue(sunspecSinglePhaseMeterTotalEnergyProducedStateTypeId, meter->totalWattHoursExported() / 1000.0); m_thing->setStateValue(sunspecSinglePhaseMeterTotalEnergyConsumedStateTypeId, meter->totalWattHoursImported() / 1000.0); + m_thing->setStateValue(sunspecSinglePhaseMeterCurrentPhaseAStateTypeId, meter->ampsPhaseA()); + m_thing->setStateValue(sunspecSinglePhaseMeterVoltagePhaseAStateTypeId, meter->phaseVoltageAn()); + m_thing->setStateValue(sunspecSinglePhaseMeterFrequencyStateTypeId, meter->hz()); + m_thing->setStateValue(sunspecSinglePhaseMeterVersionStateTypeId, m_model->commonModelInfo().versionString); break; } case SunSpecModelFactory::ModelIdMeterSplitSinglePhaseAbn: { SunSpecMeterSplitSinglePhaseAbnModel *meter = qobject_cast(m_model); qCDebug(dcSunSpec()) << m_thing->name() << "block data updated" << meter; m_thing->setStateValue(sunspecSplitPhaseMeterConnectedStateTypeId, true); - m_thing->setStateValue(sunspecSplitPhaseMeterVersionStateTypeId, m_model->commonModelInfo().versionString); - - m_thing->setStateValue(sunspecSplitPhaseMeterTotalCurrentStateTypeId, meter->amps()); - m_thing->setStateValue(sunspecSplitPhaseMeterPhaseACurrentStateTypeId, meter->ampsPhaseA()); - m_thing->setStateValue(sunspecSplitPhaseMeterPhaseBCurrentStateTypeId, meter->ampsPhaseB()); - m_thing->setStateValue(sunspecSplitPhaseMeterLnACVoltageStateTypeId, meter->voltageLn()); - m_thing->setStateValue(sunspecSplitPhaseMeterPhaseANVoltageStateTypeId, meter->phaseVoltageAn()); - m_thing->setStateValue(sunspecSplitPhaseMeterPhaseBNVoltageStateTypeId, meter->phaseVoltageBn()); - m_thing->setStateValue(sunspecSplitPhaseMeterFrequencyStateTypeId, meter->hz()); - m_thing->setStateValue(sunspecSplitPhaseMeterCurrentPowerStateTypeId, meter->watts()); m_thing->setStateValue(sunspecSplitPhaseMeterTotalEnergyProducedStateTypeId, meter->totalWattHoursExported() / 1000.0); m_thing->setStateValue(sunspecSplitPhaseMeterTotalEnergyConsumedStateTypeId, meter->totalWattHoursImported() / 1000.0); + m_thing->setStateValue(sunspecSplitPhaseMeterCurrentPowerStateTypeId, meter->watts()); + m_thing->setStateValue(sunspecSplitPhaseMeterEnergyConsumedPhaseAStateTypeId, meter->totalWattHoursImportedPhaseA() / 1000.0); + m_thing->setStateValue(sunspecSplitPhaseMeterEnergyConsumedPhaseBStateTypeId, meter->totalWattHoursImportedPhaseB() / 1000.0); + m_thing->setStateValue(sunspecSplitPhaseMeterEnergyProducedPhaseAStateTypeId, meter->totalWattHoursExportedPhaseA() / 1000.0); + m_thing->setStateValue(sunspecSplitPhaseMeterEnergyProducedPhaseBStateTypeId, meter->totalWattHoursExportedPhaseB() / 1000.0); + m_thing->setStateValue(sunspecSplitPhaseMeterTotalCurrentStateTypeId, meter->amps()); + m_thing->setStateValue(sunspecSplitPhaseMeterCurrentPowerPhaseAStateTypeId, meter->wattsPhaseA()); + m_thing->setStateValue(sunspecSplitPhaseMeterCurrentPowerPhaseBStateTypeId, meter->wattsPhaseB()); + m_thing->setStateValue(sunspecSplitPhaseMeterCurrentPhaseAStateTypeId, meter->ampsPhaseA()); + m_thing->setStateValue(sunspecSplitPhaseMeterCurrentPhaseBStateTypeId, meter->ampsPhaseB()); + m_thing->setStateValue(sunspecSplitPhaseMeterLnACVoltageStateTypeId, meter->voltageLn()); + m_thing->setStateValue(sunspecSplitPhaseMeterVoltagePhaseAStateTypeId, meter->phaseVoltageAn()); + m_thing->setStateValue(sunspecSplitPhaseMeterVoltagePhaseBStateTypeId, meter->phaseVoltageBn()); + m_thing->setStateValue(sunspecSplitPhaseMeterFrequencyStateTypeId, meter->hz()); + m_thing->setStateValue(sunspecSplitPhaseMeterVersionStateTypeId, m_model->commonModelInfo().versionString); break; } case SunSpecModelFactory::ModelIdMeterSplitSinglePhaseFloat: { SunSpecMeterSplitSinglePhaseFloatModel *meter = qobject_cast(m_model); qCDebug(dcSunSpec()) << m_thing->name() << "block data updated" << meter; m_thing->setStateValue(sunspecSplitPhaseMeterConnectedStateTypeId, true); - m_thing->setStateValue(sunspecSplitPhaseMeterVersionStateTypeId, m_model->commonModelInfo().versionString); - - m_thing->setStateValue(sunspecSplitPhaseMeterTotalCurrentStateTypeId, meter->amps()); - m_thing->setStateValue(sunspecSplitPhaseMeterPhaseACurrentStateTypeId, meter->ampsPhaseA()); - m_thing->setStateValue(sunspecSplitPhaseMeterPhaseBCurrentStateTypeId, meter->ampsPhaseB()); - m_thing->setStateValue(sunspecSplitPhaseMeterLnACVoltageStateTypeId, meter->voltageLn()); - m_thing->setStateValue(sunspecSplitPhaseMeterPhaseANVoltageStateTypeId, meter->phaseVoltageAn()); - m_thing->setStateValue(sunspecSplitPhaseMeterPhaseBNVoltageStateTypeId, meter->phaseVoltageBn()); - m_thing->setStateValue(sunspecSplitPhaseMeterFrequencyStateTypeId, meter->hz()); - m_thing->setStateValue(sunspecSplitPhaseMeterCurrentPowerStateTypeId, meter->watts()); m_thing->setStateValue(sunspecSplitPhaseMeterTotalEnergyProducedStateTypeId, meter->totalWattHoursExported() / 1000.0); m_thing->setStateValue(sunspecSplitPhaseMeterTotalEnergyConsumedStateTypeId, meter->totalWattHoursImported() / 1000.0); + m_thing->setStateValue(sunspecSplitPhaseMeterCurrentPowerStateTypeId, meter->watts()); + m_thing->setStateValue(sunspecSplitPhaseMeterEnergyConsumedPhaseAStateTypeId, meter->totalWattHoursImportedPhaseA() / 1000.0); + m_thing->setStateValue(sunspecSplitPhaseMeterEnergyConsumedPhaseBStateTypeId, meter->totalWattHoursImportedPhaseB() / 1000.0); + m_thing->setStateValue(sunspecSplitPhaseMeterEnergyProducedPhaseAStateTypeId, meter->totalWattHoursExportedPhaseA() / 1000.0); + m_thing->setStateValue(sunspecSplitPhaseMeterEnergyProducedPhaseBStateTypeId, meter->totalWattHoursExportedPhaseB() / 1000.0); + m_thing->setStateValue(sunspecSplitPhaseMeterTotalCurrentStateTypeId, meter->amps()); + m_thing->setStateValue(sunspecSplitPhaseMeterCurrentPowerPhaseAStateTypeId, meter->wattsPhaseA()); + m_thing->setStateValue(sunspecSplitPhaseMeterCurrentPowerPhaseBStateTypeId, meter->wattsPhaseB()); + m_thing->setStateValue(sunspecSplitPhaseMeterCurrentPhaseAStateTypeId, meter->ampsPhaseA()); + m_thing->setStateValue(sunspecSplitPhaseMeterCurrentPhaseBStateTypeId, meter->ampsPhaseB()); + m_thing->setStateValue(sunspecSplitPhaseMeterLnACVoltageStateTypeId, meter->voltageLn()); + m_thing->setStateValue(sunspecSplitPhaseMeterVoltagePhaseAStateTypeId, meter->phaseVoltageAn()); + m_thing->setStateValue(sunspecSplitPhaseMeterVoltagePhaseBStateTypeId, meter->phaseVoltageBn()); + m_thing->setStateValue(sunspecSplitPhaseMeterFrequencyStateTypeId, meter->hz()); + m_thing->setStateValue(sunspecSplitPhaseMeterVersionStateTypeId, m_model->commonModelInfo().versionString); break; } case SunSpecModelFactory::ModelIdMeterThreePhase: { SunSpecMeterThreePhaseModel *meter = qobject_cast(m_model); qCDebug(dcSunSpec()) << m_thing->name() << "block data updated" << meter; m_thing->setStateValue(sunspecThreePhaseMeterConnectedStateTypeId, true); - m_thing->setStateValue(sunspecThreePhaseMeterVersionStateTypeId, m_model->commonModelInfo().versionString); - - m_thing->setStateValue(sunspecThreePhaseMeterTotalCurrentStateTypeId, meter->amps()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseACurrentStateTypeId, meter->ampsPhaseA()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseBCurrentStateTypeId, meter->ampsPhaseB()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseCCurrentStateTypeId, meter->ampsPhaseC()); - m_thing->setStateValue(sunspecThreePhaseMeterLnACVoltageStateTypeId, meter->voltageLn()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseANVoltageStateTypeId, meter->phaseVoltageAn()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseBNVoltageStateTypeId, meter->phaseVoltageBn()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseCNVoltageStateTypeId, meter->phaseVoltageCn()); - m_thing->setStateValue(sunspecThreePhaseMeterFrequencyStateTypeId, meter->hz()); - m_thing->setStateValue(sunspecThreePhaseMeterCurrentPowerStateTypeId, meter->watts()); m_thing->setStateValue(sunspecThreePhaseMeterTotalEnergyProducedStateTypeId, meter->totalWattHoursExported() / 1000.0); m_thing->setStateValue(sunspecThreePhaseMeterTotalEnergyConsumedStateTypeId, meter->totalWattHoursImported() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPowerStateTypeId, meter->watts()); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyConsumedPhaseAStateTypeId, meter->totalWattHoursImportedPhaseA() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyConsumedPhaseBStateTypeId, meter->totalWattHoursImportedPhaseB() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyConsumedPhaseCStateTypeId, meter->totalWattHoursImportedPhaseC() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyProducedPhaseAStateTypeId, meter->totalWattHoursExportedPhaseA() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyProducedPhaseBStateTypeId, meter->totalWattHoursExportedPhaseB() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyProducedPhaseCStateTypeId, meter->totalWattHoursExportedPhaseC() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPowerPhaseAStateTypeId, meter->wattsPhaseA()); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPowerPhaseBStateTypeId, meter->wattsPhaseB()); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPowerPhaseCStateTypeId, meter->wattsPhaseC()); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPhaseAStateTypeId, meter->ampsPhaseA()); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPhaseBStateTypeId, meter->ampsPhaseB()); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPhaseCStateTypeId, meter->ampsPhaseC()); + m_thing->setStateValue(sunspecThreePhaseMeterVoltagePhaseAStateTypeId, meter->phaseVoltageAn()); + m_thing->setStateValue(sunspecThreePhaseMeterVoltagePhaseBStateTypeId, meter->phaseVoltageBn()); + m_thing->setStateValue(sunspecThreePhaseMeterVoltagePhaseBStateTypeId, meter->phaseVoltageCn()); + m_thing->setStateValue(sunspecThreePhaseMeterFrequencyStateTypeId, meter->hz()); + m_thing->setStateValue(sunspecThreePhaseMeterVersionStateTypeId, m_model->commonModelInfo().versionString); break; } case SunSpecModelFactory::ModelIdDeltaConnectThreePhaseAbcMeter: { SunSpecDeltaConnectThreePhaseAbcMeterModel *meter = qobject_cast(m_model); qCDebug(dcSunSpec()) << m_thing->name() << "block data updated" << meter; m_thing->setStateValue(sunspecThreePhaseMeterConnectedStateTypeId, true); - m_thing->setStateValue(sunspecThreePhaseMeterVersionStateTypeId, m_model->commonModelInfo().versionString); - - m_thing->setStateValue(sunspecThreePhaseMeterTotalCurrentStateTypeId, meter->amps()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseACurrentStateTypeId, meter->ampsPhaseA()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseBCurrentStateTypeId, meter->ampsPhaseB()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseCCurrentStateTypeId, meter->ampsPhaseC()); - m_thing->setStateValue(sunspecThreePhaseMeterLnACVoltageStateTypeId, meter->voltageLn()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseANVoltageStateTypeId, meter->phaseVoltageAn()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseBNVoltageStateTypeId, meter->phaseVoltageBn()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseCNVoltageStateTypeId, meter->phaseVoltageCn()); - m_thing->setStateValue(sunspecThreePhaseMeterFrequencyStateTypeId, meter->hz()); - m_thing->setStateValue(sunspecThreePhaseMeterCurrentPowerStateTypeId, meter->watts()); m_thing->setStateValue(sunspecThreePhaseMeterTotalEnergyProducedStateTypeId, meter->totalWattHoursExported() / 1000.0); m_thing->setStateValue(sunspecThreePhaseMeterTotalEnergyConsumedStateTypeId, meter->totalWattHoursImported() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPowerStateTypeId, meter->watts()); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyConsumedPhaseAStateTypeId, meter->totalWattHoursImportedPhaseA() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyConsumedPhaseBStateTypeId, meter->totalWattHoursImportedPhaseB() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyConsumedPhaseCStateTypeId, meter->totalWattHoursImportedPhaseC() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyProducedPhaseAStateTypeId, meter->totalWattHoursExportedPhaseA() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyProducedPhaseBStateTypeId, meter->totalWattHoursExportedPhaseB() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyProducedPhaseCStateTypeId, meter->totalWattHoursExportedPhaseC() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPowerPhaseAStateTypeId, meter->wattsPhaseA()); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPowerPhaseBStateTypeId, meter->wattsPhaseB()); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPowerPhaseCStateTypeId, meter->wattsPhaseC()); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPhaseAStateTypeId, meter->ampsPhaseA()); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPhaseBStateTypeId, meter->ampsPhaseB()); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPhaseCStateTypeId, meter->ampsPhaseC()); + m_thing->setStateValue(sunspecThreePhaseMeterVoltagePhaseAStateTypeId, meter->phaseVoltageAn()); + m_thing->setStateValue(sunspecThreePhaseMeterVoltagePhaseBStateTypeId, meter->phaseVoltageBn()); + m_thing->setStateValue(sunspecThreePhaseMeterVoltagePhaseBStateTypeId, meter->phaseVoltageCn()); + m_thing->setStateValue(sunspecThreePhaseMeterFrequencyStateTypeId, meter->hz()); + m_thing->setStateValue(sunspecThreePhaseMeterVersionStateTypeId, m_model->commonModelInfo().versionString); break; } case SunSpecModelFactory::ModelIdMeterThreePhaseWyeConnect: { SunSpecMeterThreePhaseWyeConnectModel *meter = qobject_cast(m_model); qCDebug(dcSunSpec()) << m_thing->name() << "block data updated" << meter; m_thing->setStateValue(sunspecThreePhaseMeterConnectedStateTypeId, true); - m_thing->setStateValue(sunspecThreePhaseMeterVersionStateTypeId, m_model->commonModelInfo().versionString); - - m_thing->setStateValue(sunspecThreePhaseMeterTotalCurrentStateTypeId, meter->amps()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseACurrentStateTypeId, meter->ampsPhaseA()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseBCurrentStateTypeId, meter->ampsPhaseB()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseCCurrentStateTypeId, meter->ampsPhaseC()); - m_thing->setStateValue(sunspecThreePhaseMeterLnACVoltageStateTypeId, meter->voltageLn()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseANVoltageStateTypeId, meter->phaseVoltageAn()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseBNVoltageStateTypeId, meter->phaseVoltageBn()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseCNVoltageStateTypeId, meter->phaseVoltageCn()); - m_thing->setStateValue(sunspecThreePhaseMeterFrequencyStateTypeId, meter->hz()); - m_thing->setStateValue(sunspecThreePhaseMeterCurrentPowerStateTypeId, meter->watts()); m_thing->setStateValue(sunspecThreePhaseMeterTotalEnergyProducedStateTypeId, meter->totalWattHoursExported() / 1000.0); m_thing->setStateValue(sunspecThreePhaseMeterTotalEnergyConsumedStateTypeId, meter->totalWattHoursImported() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPowerStateTypeId, meter->watts()); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyConsumedPhaseAStateTypeId, meter->totalWattHoursImportedPhaseA() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyConsumedPhaseBStateTypeId, meter->totalWattHoursImportedPhaseB() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyConsumedPhaseCStateTypeId, meter->totalWattHoursImportedPhaseC() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyProducedPhaseAStateTypeId, meter->totalWattHoursExportedPhaseA() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyProducedPhaseBStateTypeId, meter->totalWattHoursExportedPhaseB() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyProducedPhaseCStateTypeId, meter->totalWattHoursExportedPhaseC() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPowerPhaseAStateTypeId, meter->wattsPhaseA()); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPowerPhaseBStateTypeId, meter->wattsPhaseB()); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPowerPhaseCStateTypeId, meter->wattsPhaseC()); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPhaseAStateTypeId, meter->ampsPhaseA()); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPhaseBStateTypeId, meter->ampsPhaseB()); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPhaseCStateTypeId, meter->ampsPhaseC()); + m_thing->setStateValue(sunspecThreePhaseMeterVoltagePhaseAStateTypeId, meter->phaseVoltageAn()); + m_thing->setStateValue(sunspecThreePhaseMeterVoltagePhaseBStateTypeId, meter->phaseVoltageBn()); + m_thing->setStateValue(sunspecThreePhaseMeterVoltagePhaseBStateTypeId, meter->phaseVoltageCn()); + m_thing->setStateValue(sunspecThreePhaseMeterFrequencyStateTypeId, meter->hz()); + m_thing->setStateValue(sunspecThreePhaseMeterVersionStateTypeId, m_model->commonModelInfo().versionString); break; } case SunSpecModelFactory::ModelIdMeterThreePhaseDeltaConnect: { SunSpecMeterThreePhaseDeltaConnectModel *meter = qobject_cast(m_model); qCDebug(dcSunSpec()) << m_thing->name() << "block data updated" << meter; m_thing->setStateValue(sunspecThreePhaseMeterConnectedStateTypeId, true); - m_thing->setStateValue(sunspecThreePhaseMeterVersionStateTypeId, m_model->commonModelInfo().versionString); - - m_thing->setStateValue(sunspecThreePhaseMeterTotalCurrentStateTypeId, meter->amps()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseACurrentStateTypeId, meter->ampsPhaseA()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseBCurrentStateTypeId, meter->ampsPhaseB()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseCCurrentStateTypeId, meter->ampsPhaseC()); - m_thing->setStateValue(sunspecThreePhaseMeterLnACVoltageStateTypeId, meter->voltageLn()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseANVoltageStateTypeId, meter->phaseVoltageAn()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseBNVoltageStateTypeId, meter->phaseVoltageBn()); - m_thing->setStateValue(sunspecThreePhaseMeterPhaseCNVoltageStateTypeId, meter->phaseVoltageCn()); - m_thing->setStateValue(sunspecThreePhaseMeterFrequencyStateTypeId, meter->hz()); - m_thing->setStateValue(sunspecThreePhaseMeterCurrentPowerStateTypeId, meter->watts()); m_thing->setStateValue(sunspecThreePhaseMeterTotalEnergyProducedStateTypeId, meter->totalWattHoursExported() / 1000.0); m_thing->setStateValue(sunspecThreePhaseMeterTotalEnergyConsumedStateTypeId, meter->totalWattHoursImported() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPowerStateTypeId, meter->watts()); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyConsumedPhaseAStateTypeId, meter->totalWattHoursImportedPhaseA() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyConsumedPhaseBStateTypeId, meter->totalWattHoursImportedPhaseB() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyConsumedPhaseCStateTypeId, meter->totalWattHoursImportedPhaseC() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyProducedPhaseAStateTypeId, meter->totalWattHoursExportedPhaseA() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyProducedPhaseBStateTypeId, meter->totalWattHoursExportedPhaseB() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterEnergyProducedPhaseCStateTypeId, meter->totalWattHoursExportedPhaseC() / 1000.0); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPowerPhaseAStateTypeId, meter->wattsPhaseA()); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPowerPhaseBStateTypeId, meter->wattsPhaseB()); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPowerPhaseCStateTypeId, meter->wattsPhaseC()); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPhaseAStateTypeId, meter->ampsPhaseA()); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPhaseBStateTypeId, meter->ampsPhaseB()); + m_thing->setStateValue(sunspecThreePhaseMeterCurrentPhaseCStateTypeId, meter->ampsPhaseC()); + m_thing->setStateValue(sunspecThreePhaseMeterVoltagePhaseAStateTypeId, meter->phaseVoltageAn()); + m_thing->setStateValue(sunspecThreePhaseMeterVoltagePhaseBStateTypeId, meter->phaseVoltageBn()); + m_thing->setStateValue(sunspecThreePhaseMeterVoltagePhaseBStateTypeId, meter->phaseVoltageCn()); + m_thing->setStateValue(sunspecThreePhaseMeterFrequencyStateTypeId, meter->hz()); + m_thing->setStateValue(sunspecThreePhaseMeterVersionStateTypeId, m_model->commonModelInfo().versionString); break; } default: