From abd50d6d939633d7fd199b68923a3d32d404a3f6 Mon Sep 17 00:00:00 2001 From: DanielR92 Date: Tue, 26 Mar 2024 19:03:38 +0100 Subject: [PATCH 1/2] SML add some phase --- src/plugins/zeroExport/powermeter.h | 37 +++++++++++++++++++---------- src/plugins/zeroExport/zeroExport.h | 2 +- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/plugins/zeroExport/powermeter.h b/src/plugins/zeroExport/powermeter.h index 9ae8ecdf..acedaea1 100644 --- a/src/plugins/zeroExport/powermeter.h +++ b/src/plugins/zeroExport/powermeter.h @@ -60,11 +60,6 @@ class powermeter { break; case 5: result = getPowermeterWattsTibber(logObj, group); - // if (result) { - // logObj["export"] = String(_powerMeterExport); - // logObj["import"] = String(_powerMeterImport); - // logObj["power"] = String(_powerMeter1Power); - // } break; } if (!result) { @@ -400,6 +395,9 @@ class powermeter { sml_states_t currentState; + + float _powerMeterTotal = 0.0; + float _powerMeter1Power = 0.0; float _powerMeter2Power = 0.0; float _powerMeter3Power = 0.0; @@ -407,8 +405,24 @@ class powermeter { float _powerMeterImport = 0.0; float _powerMeterExport = 0.0; + +/* + 07 81 81 c7 82 03 ff #objName: OBIS Kennzahl für den Hersteller + 07 01 00 01 08 00 ff #objName: OBIS Kennzahl für Wirkenergie Bezug gesamt tariflos + 07 01 00 01 08 01 ff #objName: OBIS-Kennzahl für Wirkenergie Bezug Tarif1 + 07 01 00 01 08 02 ff #objName: OBIS-Kennzahl für Wirkenergie Bezug Tarif2 + 07 01 00 02 08 00 ff #objName: OBIS-Kennzahl für Wirkenergie Einspeisung gesamt tariflos + 07 01 00 02 08 01 ff #objName: OBIS-Kennzahl für Wirkenergie Einspeisung Tarif1 + 07 01 00 02 08 02 ff #objName: OBIS-Kennzahl für Wirkenergie Einspeisung Tarif2 +*/ + const std::list smlHandlerList{ - {{0x01, 0x00, 0x10, 0x07, 0x00, 0xff}, &smlOBISW, &_powerMeter1Power}, + {{0x01, 0x00, 0x10, 0x07, 0x00, 0xff}, &smlOBISW, &_powerMeterTotal}, // total - OBIS-Kennzahl für momentane Gesamtwirkleistung + + {{0x01, 0x00, 0x24, 0x07, 0x00, 0xff}, &smlOBISW, &_powerMeter1Power}, // OBIS-Kennzahl für momentane Wirkleistung in Phase L1 + {{0x01, 0x00, 0x38, 0x07, 0x00, 0xff}, &smlOBISW, &_powerMeter2Power}, // OBIS-Kennzahl für momentane Wirkleistung in Phase L2 + {{0x01, 0x00, 0x4c, 0x07, 0x00, 0xff}, &smlOBISW, &_powerMeter3Power}, // OBIS-Kennzahl für momentane Wirkleistung in Phase L3 + {{0x01, 0x00, 0x01, 0x08, 0x00, 0xff}, &smlOBISWh, &_powerMeterImport}, {{0x01, 0x00, 0x02, 0x08, 0x00, 0xff}, &smlOBISWh, &_powerMeterExport}}; @@ -447,12 +461,11 @@ class powermeter { switch (smlCurrentState) { case SML_FINAL: - mCfg->groups[group].pmPower = _powerMeter1Power; - mCfg->groups[group].pmPowerL1 = _powerMeter1Power / 3; - mCfg->groups[group].pmPowerL2 = _powerMeter1Power / 3; - mCfg->groups[group].pmPowerL3 = _powerMeter1Power / 3; - /*mCfg->groups[group].pmPower = _powerMeterImport; - mCfg->groups[group].pmPower = _powerMeterExport;*/ + mCfg->groups[group].pmPower = _powerMeterTotal; + mCfg->groups[group].pmPowerL1 = _powerMeter1Power; + mCfg->groups[group].pmPowerL2 = _powerMeter2Power; + mCfg->groups[group].pmPowerL3 = _powerMeter3Power; + // TODO: Ein return an dieser Stelle verhindert das ordnungsgemäße http.end() result = true; // return true; diff --git a/src/plugins/zeroExport/zeroExport.h b/src/plugins/zeroExport/zeroExport.h index e07e187b..a1507e48 100644 --- a/src/plugins/zeroExport/zeroExport.h +++ b/src/plugins/zeroExport/zeroExport.h @@ -19,7 +19,7 @@ template // TODO: Anbindung an MQTT für Logausgabe. // TODO: Powermeter erweitern -// TODO: Der Teil der noch in app.pp steckt komplett hier in die Funktion verschieben. +// TODO: Der Teil der noch in app.cpp steckt komplett hier in die Funktion verschieben. class ZeroExport { public: From 35fd9637000ec8399bb885081895eb2570f05b18 Mon Sep 17 00:00:00 2001 From: DanielR92 Date: Tue, 26 Mar 2024 19:27:53 +0100 Subject: [PATCH 2/2] fix phase 123 when zero, divide 3 --- src/plugins/zeroExport/powermeter.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/plugins/zeroExport/powermeter.h b/src/plugins/zeroExport/powermeter.h index acedaea1..2611c825 100644 --- a/src/plugins/zeroExport/powermeter.h +++ b/src/plugins/zeroExport/powermeter.h @@ -462,10 +462,18 @@ class powermeter { switch (smlCurrentState) { case SML_FINAL: mCfg->groups[group].pmPower = _powerMeterTotal; + mCfg->groups[group].pmPowerL1 = _powerMeter1Power; mCfg->groups[group].pmPowerL2 = _powerMeter2Power; mCfg->groups[group].pmPowerL3 = _powerMeter3Power; + if(! (_powerMeter1Power && _powerMeter2Power && _powerMeter3Power)) + { + mCfg->groups[group].pmPowerL1 = _powerMeterTotal / 3; + mCfg->groups[group].pmPowerL2 = _powerMeterTotal / 3; + mCfg->groups[group].pmPowerL3 = _powerMeterTotal / 3; + } + // TODO: Ein return an dieser Stelle verhindert das ordnungsgemäße http.end() result = true; // return true;