diff --git a/src/MqttHandlVedirectHass.cpp b/src/MqttHandlVedirectHass.cpp index 1c7d68f5c..f3f1f6473 100644 --- a/src/MqttHandlVedirectHass.cpp +++ b/src/MqttHandlVedirectHass.cpp @@ -46,7 +46,8 @@ void MqttHandleVedirectHassClass::publishConfig() if (!MqttSettings.getConnected()) { return; } - if (VeDirect.veMap.find("SER") == VeDirect.veMap.end()) { + // ensure data is revieved from victron + if (VeDirect.veMap.find("SER") == VeDirect.veMap.end()) { return; } diff --git a/src/MqttHandleVedirect.cpp b/src/MqttHandleVedirect.cpp index 9d01a44e0..4ba7ec7bb 100644 --- a/src/MqttHandleVedirect.cpp +++ b/src/MqttHandleVedirect.cpp @@ -21,7 +21,16 @@ void MqttHandleVedirectClass::loop() if (!MqttSettings.getConnected() || !config.Vedirect_Enabled) { return; - } + } + + String serial; + auto pos = VeDirect.veMap.find("SER"); + if (pos == VeDirect.veMap.end()) { + return; + } + else { + serial = pos->second; + } if (millis() - _lastPublish > (config.Mqtt_PublishInterval * 1000)) { String key; @@ -44,7 +53,7 @@ void MqttHandleVedirectClass::loop() // publish only changed key, values pairs if (!config.Vedirect_UpdatesOnly || (bChanged && config.Vedirect_UpdatesOnly)) { - topic = "victron/"; + topic = "victron/" + serial + "/"; topic.concat(key); MqttSettings.publish(topic.c_str(), value.c_str()); }