From fb7b710cb76ab8df8d529e219c08b5b1c0c9e7ad Mon Sep 17 00:00:00 2001 From: Bernhard Kirchen Date: Fri, 14 Jun 2024 20:50:43 +0200 Subject: [PATCH] SML power meter: improve message output * when printing a message, tell the name of the derived class. * print total power only when state SML_FINAL reached. * tell if a checksum verification error occurred. --- include/PowerMeterHttpSml.h | 3 ++- include/PowerMeterSerialSml.h | 3 +++ include/PowerMeterSml.h | 4 ++++ src/PowerMeterSerialSml.cpp | 1 - src/PowerMeterSml.cpp | 12 ++++++++++-- 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/include/PowerMeterHttpSml.h b/include/PowerMeterHttpSml.h index 423468eb..823a4b76 100644 --- a/include/PowerMeterHttpSml.h +++ b/include/PowerMeterHttpSml.h @@ -14,7 +14,8 @@ class PowerMeterHttpSml : public PowerMeterSml { public: explicit PowerMeterHttpSml(PowerMeterHttpSmlConfig const& cfg) - : _cfg(cfg) { } + : PowerMeterSml("PowerMeterHttpSml") + , _cfg(cfg) { } ~PowerMeterHttpSml(); diff --git a/include/PowerMeterSerialSml.h b/include/PowerMeterSerialSml.h index 58e01961..634f5994 100644 --- a/include/PowerMeterSerialSml.h +++ b/include/PowerMeterSerialSml.h @@ -6,6 +6,9 @@ class PowerMeterSerialSml : public PowerMeterSml { public: + PowerMeterSerialSml() + : PowerMeterSml("PowerMeterSerialSml") { } + ~PowerMeterSerialSml(); bool init() final; diff --git a/include/PowerMeterSml.h b/include/PowerMeterSml.h index 7a599972..2e180c57 100644 --- a/include/PowerMeterSml.h +++ b/include/PowerMeterSml.h @@ -16,9 +16,13 @@ public: void doMqttPublish() const final; protected: + explicit PowerMeterSml(char const* user) + : _user(user) { } + void processSmlByte(uint8_t byte); private: + std::string _user; mutable std::mutex _mutex; float _activePowerTotal = 0.0; diff --git a/src/PowerMeterSerialSml.cpp b/src/PowerMeterSerialSml.cpp index 5f5a64c1..e19b4067 100644 --- a/src/PowerMeterSerialSml.cpp +++ b/src/PowerMeterSerialSml.cpp @@ -39,5 +39,4 @@ void PowerMeterSerialSml::loop() processSmlByte(_upSmlSerial->read()); } - MessageOutput.printf("[PowerMeterSerialSml]: TotalPower: %5.2f\r\n", getPowerTotal()); } diff --git a/src/PowerMeterSml.cpp b/src/PowerMeterSml.cpp index 9f46fda2..105d20f9 100644 --- a/src/PowerMeterSml.cpp +++ b/src/PowerMeterSml.cpp @@ -37,11 +37,19 @@ void PowerMeterSml::processSmlByte(uint8_t byte) handler.decoder(*handler.target); if (_verboseLogging) { - MessageOutput.printf("[PowerMeterSml] decoded %s to %.2f\r\n", - handler.name, *handler.target); + MessageOutput.printf("[%s] decoded %s to %.2f\r\n", + _user.c_str(), handler.name, *handler.target); } } break; + case SML_FINAL: + MessageOutput.printf("[%s] TotalPower: %5.2f\r\n", + _user.c_str(), getPowerTotal()); + break; + case SML_CHECKSUM_ERROR: + MessageOutput.printf("[%s] checksum verification failed\r\n", + _user.c_str()); + break; default: break; }