#pragma once #include #include "Battery.h" #include class MqttBattery : public BatteryProvider { public: MqttBattery() = default; bool init(bool verboseLogging) final; void deinit() final; void loop() final { return; } // this class is event-driven std::shared_ptr getStats() const final { return _stats; } private: bool _verboseLogging = false; String _socTopic; String _voltageTopic; std::shared_ptr _stats = std::make_shared(); std::optional getFloat(std::string const& src, char const* topic); void onMqttMessageSoC(espMqttClientTypes::MessageProperties const& properties, char const* topic, uint8_t const* payload, size_t len, size_t index, size_t total); void onMqttMessageVoltage(espMqttClientTypes::MessageProperties const& properties, char const* topic, uint8_t const* payload, size_t len, size_t index, size_t total); };