diff --git a/src/PowerMeter.cpp b/src/PowerMeter.cpp index 19eac501d..a27297e8a 100644 --- a/src/PowerMeter.cpp +++ b/src/PowerMeter.cpp @@ -27,10 +27,20 @@ void PowerMeterClass::init() CONFIG_T& config = Configuration.get(); - MqttSettings.subscribe(config.PowerMeter_MqttTopicPowerMeter1, 0, std::bind(&PowerMeterClass::onMqttMessage, this, _1, _2, _3, _4, _5, _6)); - MqttSettings.subscribe(config.PowerMeter_MqttTopicPowerMeter2, 0, std::bind(&PowerMeterClass::onMqttMessage, this, _1, _2, _3, _4, _5, _6)); - MqttSettings.subscribe(config.PowerMeter_MqttTopicPowerMeter3, 0, std::bind(&PowerMeterClass::onMqttMessage, this, _1, _2, _3, _4, _5, _6)); - + if (config.PowerMeter_Enabled && config.PowerMeter_Source == 0) { + if (strlen(config.PowerMeter_MqttTopicPowerMeter1) > 0) { + MqttSettings.subscribe(config.PowerMeter_MqttTopicPowerMeter1, 0, std::bind(&PowerMeterClass::onMqttMessage, this, _1, _2, _3, _4, _5, _6)); + } + + if (strlen(config.PowerMeter_MqttTopicPowerMeter2) > 0) { + MqttSettings.subscribe(config.PowerMeter_MqttTopicPowerMeter2, 0, std::bind(&PowerMeterClass::onMqttMessage, this, _1, _2, _3, _4, _5, _6)); + } + + if (strlen(config.PowerMeter_MqttTopicPowerMeter3) > 0) { + MqttSettings.subscribe(config.PowerMeter_MqttTopicPowerMeter3, 0, std::bind(&PowerMeterClass::onMqttMessage, this, _1, _2, _3, _4, _5, _6)); + } + } + mqttInitDone = true; sdm.begin();