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.
This commit is contained in:
parent
6c06e71fd0
commit
fb7b710cb7
@ -14,7 +14,8 @@
|
|||||||
class PowerMeterHttpSml : public PowerMeterSml {
|
class PowerMeterHttpSml : public PowerMeterSml {
|
||||||
public:
|
public:
|
||||||
explicit PowerMeterHttpSml(PowerMeterHttpSmlConfig const& cfg)
|
explicit PowerMeterHttpSml(PowerMeterHttpSmlConfig const& cfg)
|
||||||
: _cfg(cfg) { }
|
: PowerMeterSml("PowerMeterHttpSml")
|
||||||
|
, _cfg(cfg) { }
|
||||||
|
|
||||||
~PowerMeterHttpSml();
|
~PowerMeterHttpSml();
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,9 @@
|
|||||||
|
|
||||||
class PowerMeterSerialSml : public PowerMeterSml {
|
class PowerMeterSerialSml : public PowerMeterSml {
|
||||||
public:
|
public:
|
||||||
|
PowerMeterSerialSml()
|
||||||
|
: PowerMeterSml("PowerMeterSerialSml") { }
|
||||||
|
|
||||||
~PowerMeterSerialSml();
|
~PowerMeterSerialSml();
|
||||||
|
|
||||||
bool init() final;
|
bool init() final;
|
||||||
|
|||||||
@ -16,9 +16,13 @@ public:
|
|||||||
void doMqttPublish() const final;
|
void doMqttPublish() const final;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
explicit PowerMeterSml(char const* user)
|
||||||
|
: _user(user) { }
|
||||||
|
|
||||||
void processSmlByte(uint8_t byte);
|
void processSmlByte(uint8_t byte);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
std::string _user;
|
||||||
mutable std::mutex _mutex;
|
mutable std::mutex _mutex;
|
||||||
|
|
||||||
float _activePowerTotal = 0.0;
|
float _activePowerTotal = 0.0;
|
||||||
|
|||||||
@ -39,5 +39,4 @@ void PowerMeterSerialSml::loop()
|
|||||||
processSmlByte(_upSmlSerial->read());
|
processSmlByte(_upSmlSerial->read());
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageOutput.printf("[PowerMeterSerialSml]: TotalPower: %5.2f\r\n", getPowerTotal());
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -37,11 +37,19 @@ void PowerMeterSml::processSmlByte(uint8_t byte)
|
|||||||
handler.decoder(*handler.target);
|
handler.decoder(*handler.target);
|
||||||
|
|
||||||
if (_verboseLogging) {
|
if (_verboseLogging) {
|
||||||
MessageOutput.printf("[PowerMeterSml] decoded %s to %.2f\r\n",
|
MessageOutput.printf("[%s] decoded %s to %.2f\r\n",
|
||||||
handler.name, *handler.target);
|
_user.c_str(), handler.name, *handler.target);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
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:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user