diff --git a/src/MqttHandlVedirectHass.cpp b/src/MqttHandlVedirectHass.cpp index a8e4c44b..2fd75aa7 100644 --- a/src/MqttHandlVedirectHass.cpp +++ b/src/MqttHandlVedirectHass.cpp @@ -85,6 +85,17 @@ void MqttHandleVedirectHassClass::publishConfig() publishSensor("Panel maximum power today", NULL, "H21", "power", "measurement", "W", *optMpptData); publishSensor("Panel yield yesterday", NULL, "H22", "energy", "total", "kWh", *optMpptData); publishSensor("Panel maximum power yesterday", NULL, "H23", "power", "measurement", "W", *optMpptData); + + // optional info, provided only if TX is connected to charge controller + if (optMpptData->NetworkTotalDcInputPowerMilliWatts.first != 0) { + publishSensor("VE.Smart network total DC input power", "mdi:solar-power", "NetworkTotalDcInputPower", "power", "measurement", "W", *optMpptData); + } + if (optMpptData->MpptTemperatureMilliCelsius.first != 0) { + publishSensor("MPPT temperature", "mdi:temperature-celsius", "MpptTemperature", "temperature", "measurement", "W", *optMpptData); + } + if (optMpptData->SmartBatterySenseTemperatureMilliCelsius.first != 0) { + publishSensor("Smart Battery Sense temperature", "mdi:temperature-celsius", "SmartBatterySenseTemperature", "temperature", "measurement", "W", *optMpptData); + } } yield(); diff --git a/src/MqttHandleVedirect.cpp b/src/MqttHandleVedirect.cpp index 9bfd0906..0ed47e87 100644 --- a/src/MqttHandleVedirect.cpp +++ b/src/MqttHandleVedirect.cpp @@ -130,4 +130,14 @@ void MqttHandleVedirectClass::publish_mppt_data(const VeDirectMpptController::da PUBLISH(yieldYesterday_H22_Wh, "H22", currentData.yieldYesterday_H22_Wh / 1000.0); PUBLISH(maxPowerYesterday_H23_W, "H23", currentData.maxPowerYesterday_H23_W); #undef PUBLILSH + +#define PUBLISH_OPT(sm, t, val) \ + if (currentData.sm.first != 0 && (_PublishFull || currentData.sm.second != previousData.sm.second)) { \ + MqttSettings.publish(topic + t, String(val)); \ + } + + PUBLISH_OPT(NetworkTotalDcInputPowerMilliWatts, "NetworkTotalDcInputPower", currentData.NetworkTotalDcInputPowerMilliWatts.second / 1000.0); + PUBLISH_OPT(MpptTemperatureMilliCelsius, "MpptTemperature", currentData.MpptTemperatureMilliCelsius.second / 1000.0); + PUBLISH_OPT(SmartBatterySenseTemperatureMilliCelsius, "SmartBatterySenseTemperature", currentData.SmartBatterySenseTemperatureMilliCelsius.second / 1000.0); +#undef PUBLILSH_OPT }