diff --git a/components/dlms_meter_lib/dlms_meter_lib.cpp b/components/dlms_meter_lib/dlms_meter_lib.cpp index 4fc87ef..5cdf895 100644 --- a/components/dlms_meter_lib/dlms_meter_lib.cpp +++ b/components/dlms_meter_lib/dlms_meter_lib.cpp @@ -30,7 +30,9 @@ static void log_callback(dlms_parser::LogLevel level, const char *fmt, va_list a void DlmsMeterLibComponent::setup() { dlms_parser::Logger::set_log_function(log_callback); - this->parser_.load_default_patterns(); + this->parser_ = std::make_unique(); + this->parser_->load_default_patterns(); + this->rx_buffer_ = std::make_unique(MAX_RX_BUFFER_SIZE); this->rx_buffer_len_ = 0; } diff --git a/components/dlms_meter_lib/dlms_meter_lib.h b/components/dlms_meter_lib/dlms_meter_lib.h index 2399012..efa3168 100644 --- a/components/dlms_meter_lib/dlms_meter_lib.h +++ b/components/dlms_meter_lib/dlms_meter_lib.h @@ -1,6 +1,7 @@ #include "esphome/core/component.h" #include "esphome/core/defines.h" #include "esphome/core/log.h" +#include "esphome/components/uart/uart.h" #ifdef USE_SENSOR #include "esphome/components/sensor/sensor.h" @@ -69,7 +70,7 @@ class DlmsMeterLibComponent : public Component, public uart::UARTDevice { uint32_t receive_timeout_ms_{50}; std::string custom_pattern_{""}; - std::unique_ptr parser_; + std::unique_ptr parser_; #ifdef USE_SENSOR struct NumericSensorEntry {