From 8a59fcb89a2ce9e37b2b83b4893b0320aa4e09bb Mon Sep 17 00:00:00 2001 From: Gunnar Skjold Date: Sat, 6 Jan 2024 20:10:33 +0100 Subject: [PATCH] Adaptations for new sensors --- lib/AmsData/include/AmsData.h | 4 +-- .../include/HomeAssistantStatic.h | 30 +++++++++++-------- lib/HomeAssistantMqttHandler/json/ha4.json | 8 ++++- .../src/HomeAssistantMqttHandler.cpp | 8 ++++- lib/JsonMqttHandler/json/json4.json | 6 ++++ lib/JsonMqttHandler/src/JsonMqttHandler.cpp | 6 ++++ lib/RawMqttHandler/src/RawMqttHandler.cpp | 12 ++++---- 7 files changed, 52 insertions(+), 22 deletions(-) diff --git a/lib/AmsData/include/AmsData.h b/lib/AmsData/include/AmsData.h index 3e938928..0ba73b09 100644 --- a/lib/AmsData/include/AmsData.h +++ b/lib/AmsData/include/AmsData.h @@ -92,8 +92,8 @@ protected: float l1voltage = 0, l2voltage = 0, l3voltage = 0, l1current = 0, l2current = 0, l3current = 0; float l1activeImportPower = 0, l2activeImportPower = 0, l3activeImportPower = 0; float l1activeExportPower = 0, l2activeExportPower = 0, l3activeExportPower = 0; - double l1activeImportCounter = 0, l2activeImportCounter = 0, l3activeImportCounter; - double l1activeExportCounter = 0, l2activeExportCounter = 0, l3activeExportCounter; + double l1activeImportCounter = 0, l2activeImportCounter = 0, l3activeImportCounter = 0; + double l1activeExportCounter = 0, l2activeExportCounter = 0, l3activeExportCounter = 0; float powerFactor = 0, l1PowerFactor = 0, l2PowerFactor = 0, l3PowerFactor = 0; double activeImportCounter = 0, reactiveImportCounter = 0, activeExportCounter = 0, reactiveExportCounter = 0; bool threePhase = false, twoPhase = false, counterEstimated = false, l2currentMissing = false;; diff --git a/lib/HomeAssistantMqttHandler/include/HomeAssistantStatic.h b/lib/HomeAssistantMqttHandler/include/HomeAssistantStatic.h index 10005a51..45f89bc2 100644 --- a/lib/HomeAssistantMqttHandler/include/HomeAssistantStatic.h +++ b/lib/HomeAssistantMqttHandler/include/HomeAssistantStatic.h @@ -48,22 +48,28 @@ const HomeAssistantSensor List3ExportSensors[List3ExportSensorCount] PROGMEM = { {"Accumulated active export", "/energy", "tPO", 4000, "kWh", "energy", "total_increasing"} }; -const uint8_t List4SensorCount PROGMEM = 7; +const uint8_t List4SensorCount PROGMEM = 10; const HomeAssistantSensor List4Sensors[List4SensorCount] PROGMEM = { - {"Power factor", "/power", "PF", 30, "%", "power_factor", "measurement"}, - {"L1 power factor", "/power", "PF1", 30, "%", "power_factor", "measurement"}, - {"L2 power factor", "/power", "PF2", 30, "%", "power_factor", "measurement"}, - {"L3 power factor", "/power", "PF3", 30, "%", "power_factor", "measurement"}, - {"L1 active import", "/power", "P1", 30, "W", "power", "measurement"}, - {"L2 active import", "/power", "P2", 30, "W", "power", "measurement"}, - {"L3 active import", "/power", "P3", 30, "W", "power", "measurement"} + {"Power factor", "/power", "PF", 30, "%", "power_factor", "measurement"}, + {"L1 power factor", "/power", "PF1", 30, "%", "power_factor", "measurement"}, + {"L2 power factor", "/power", "PF2", 30, "%", "power_factor", "measurement"}, + {"L3 power factor", "/power", "PF3", 30, "%", "power_factor", "measurement"}, + {"L1 active import", "/power", "P1", 30, "W", "power", "measurement"}, + {"L2 active import", "/power", "P2", 30, "W", "power", "measurement"}, + {"L3 active import", "/power", "P3", 30, "W", "power", "measurement"}, + {"L1 accumulated active import","/power", "tPI1", 30, "kWh", "energy", "total_increasing"}, + {"L2 accumulated active import","/power", "tPI2", 30, "kWh", "energy", "total_increasing"}, + {"L3 accumulated active import","/power", "tPI3", 30, "kWh", "energy", "total_increasing"} }; -const uint8_t List4ExportSensorCount PROGMEM = 3; +const uint8_t List4ExportSensorCount PROGMEM = 6; const HomeAssistantSensor List4ExportSensors[List4ExportSensorCount] PROGMEM = { - {"L1 active export", "/power", "PO1", 30, "W", "power", "measurement"}, - {"L2 active export", "/power", "PO2", 30, "W", "power", "measurement"}, - {"L3 active export", "/power", "PO3", 30, "W", "power", "measurement"} + {"L1 active export", "/power", "PO1", 30, "W", "power", "measurement"}, + {"L2 active export", "/power", "PO2", 30, "W", "power", "measurement"}, + {"L3 active export", "/power", "PO3", 30, "W", "power", "measurement"}, + {"L1 accumulated active export","/power", "tPO1", 30, "kWh", "energy", "total_increasing"}, + {"L2 accumulated active export","/power", "tPO2", 30, "kWh", "energy", "total_increasing"}, + {"L3 accumulated active export","/power", "tPO3", 30, "kWh", "energy", "total_increasing"} }; const uint8_t RealtimeSensorCount PROGMEM = 8; diff --git a/lib/HomeAssistantMqttHandler/json/ha4.json b/lib/HomeAssistantMqttHandler/json/ha4.json index faee4724..c6c85791 100644 --- a/lib/HomeAssistantMqttHandler/json/ha4.json +++ b/lib/HomeAssistantMqttHandler/json/ha4.json @@ -21,5 +21,11 @@ "PF" : %.2f, "PF1" : %.2f, "PF2" : %.2f, - "PF3" : %.2f + "PF3" : %.2f, + "tPI1" : %.3f, + "tPI2" : %.3f, + "tPI3" : %.3f, + "tPO1" : %.3f, + "tPO2" : %.3f, + "tPO3" : %.3f } diff --git a/lib/HomeAssistantMqttHandler/src/HomeAssistantMqttHandler.cpp b/lib/HomeAssistantMqttHandler/src/HomeAssistantMqttHandler.cpp index a0409e79..e8e9f754 100644 --- a/lib/HomeAssistantMqttHandler/src/HomeAssistantMqttHandler.cpp +++ b/lib/HomeAssistantMqttHandler/src/HomeAssistantMqttHandler.cpp @@ -110,7 +110,13 @@ bool HomeAssistantMqttHandler::publishList4(AmsData* data, EnergyAccounting* ea) data->getPowerFactor() == 0 ? 1 : data->getPowerFactor(), data->getPowerFactor() == 0 ? 1 : data->getL1PowerFactor(), data->getPowerFactor() == 0 ? 1 : data->getL2PowerFactor(), - data->getPowerFactor() == 0 ? 1 : data->getL3PowerFactor() + data->getPowerFactor() == 0 ? 1 : data->getL3PowerFactor(), + data->getL1ActiveImportCounter(), + data->getL2ActiveImportCounter(), + data->getL3ActiveImportCounter(), + data->getL1ActiveExportCounter(), + data->getL2ActiveExportCounter(), + data->getL3ActiveExportCounter() ); return mqtt.publish(topic + "/power", json); } diff --git a/lib/JsonMqttHandler/json/json4.json b/lib/JsonMqttHandler/json/json4.json index 8cb98d18..5c50f7de 100644 --- a/lib/JsonMqttHandler/json/json4.json +++ b/lib/JsonMqttHandler/json/json4.json @@ -34,6 +34,12 @@ "tPO" : %.3f, "tQI" : %.3f, "tQO" : %.3f, + "tPI1" : %.3f, + "tPI2" : %.3f, + "tPI3" : %.3f, + "tPO1" : %.3f, + "tPO2" : %.3f, + "tPO3" : %.3f, "rtc" : %lu }, "realtime" : { diff --git a/lib/JsonMqttHandler/src/JsonMqttHandler.cpp b/lib/JsonMqttHandler/src/JsonMqttHandler.cpp index 76ff717e..d3c8eacc 100644 --- a/lib/JsonMqttHandler/src/JsonMqttHandler.cpp +++ b/lib/JsonMqttHandler/src/JsonMqttHandler.cpp @@ -160,6 +160,12 @@ bool JsonMqttHandler::publishList4(AmsData* data, EnergyAccounting* ea) { data->getActiveExportCounter(), data->getReactiveImportCounter(), data->getReactiveExportCounter(), + data->getL1ActiveImportCounter(), + data->getL2ActiveImportCounter(), + data->getL3ActiveImportCounter(), + data->getL1ActiveExportCounter(), + data->getL2ActiveExportCounter(), + data->getL3ActiveExportCounter(), data->getMeterTimestamp(), ea->getUseThisHour(), ea->getUseToday(), diff --git a/lib/RawMqttHandler/src/RawMqttHandler.cpp b/lib/RawMqttHandler/src/RawMqttHandler.cpp index 88dac5f9..6e3d362a 100644 --- a/lib/RawMqttHandler/src/RawMqttHandler.cpp +++ b/lib/RawMqttHandler/src/RawMqttHandler.cpp @@ -107,22 +107,22 @@ bool RawMqttHandler::publishList4(AmsData* data, AmsData* meterState) { mqtt.publish(topic + "/meter/export/l3", String(data->getL3ActiveExportPower(), 2)); } if(full || meterState->getL1ActiveImportCounter() != data->getL1ActiveImportCounter()) { - mqtt->publish(topic + "/meter/import/l1/accumulated", String(data->getL1ActiveImportCounter(), 2)); + mqtt.publish(topic + "/meter/import/l1/accumulated", String(data->getL1ActiveImportCounter(), 2)); } if(full || meterState->getL2ActiveImportCounter() != data->getL2ActiveImportCounter()) { - mqtt->publish(topic + "/meter/import/l2/accumulated", String(data->getL2ActiveImportCounter(), 2)); + mqtt.publish(topic + "/meter/import/l2/accumulated", String(data->getL2ActiveImportCounter(), 2)); } if(full || meterState->getL3ActiveImportCounter() != data->getL3ActiveImportCounter()) { - mqtt->publish(topic + "/meter/import/l3/accumulated", String(data->getL3ActiveImportCounter(), 2)); + mqtt.publish(topic + "/meter/import/l3/accumulated", String(data->getL3ActiveImportCounter(), 2)); } if(full || meterState->getL1ActiveExportCounter() != data->getL1ActiveExportCounter()) { - mqtt->publish(topic + "/meter/export/l1/accumulated", String(data->getL1ActiveExportCounter(), 2)); + mqtt.publish(topic + "/meter/export/l1/accumulated", String(data->getL1ActiveExportCounter(), 2)); } if(full || meterState->getL2ActiveExportCounter() != data->getL2ActiveExportCounter()) { - mqtt->publish(topic + "/meter/export/l2/accumulated", String(data->getL2ActiveExportCounter(), 2)); + mqtt.publish(topic + "/meter/export/l2/accumulated", String(data->getL2ActiveExportCounter(), 2)); } if(full || meterState->getL3ActiveExportCounter() != data->getL3ActiveExportCounter()) { - mqtt->publish(topic + "/meter/export/l3/accumulated", String(data->getL3ActiveExportCounter(), 2)); + mqtt.publish(topic + "/meter/export/l3/accumulated", String(data->getL3ActiveExportCounter(), 2)); } if(full || meterState->getPowerFactor() != data->getPowerFactor()) { mqtt.publish(topic + "/meter/powerfactor", String(data->getPowerFactor(), 2));