SmartSolar MPPT internal temperature available on SmartSolar Control Display, but MQTT value is null

by Gary Parker · 1 month ago 56 views 4 replies
Gary Parker
Gary Parker
Active Member
11 posts
Joined Jun 2025
1 month ago
#17275

Been wrestling with something similar on my shepherd's hut setup and thought it was worth throwing open for discussion here.

I've got a Victron SmartSolar MPPT 100/30 talking to a Cerbo GX via VE.Direct, and I'm pulling data through MQTT into Node-RED to log everything nicely on a dashboard. Most values come through perfectly — battery voltage, PV power, state of charge, the lot.

But the internal temperature of the MPPT is a strange one. I can see it sitting there quite happily on the SmartSolar Control Display, updating in real time. The moment I try to read it via MQTT though? Null. Every time. The topic path looks correct and everything else on the same device is responding fine.

I've had a poke around the Venus OS MQTT topic structure and I think the issue might be that the MPPT internal temp isn't published as a standard dbus service value in the same way — it might need a specific firmware version or a particular VE.Can vs VE.Direct distinction to come through properly.

Has anyone else hit this? A few questions I'm mulling over:

  • Does the VE.Can 250/100 behave differently to VE.Direct units in terms of what gets exposed over MQTT?
  • Could Venus OS Large firmware version affect which topics are populated?
  • Is there a workaround — maybe a keepalive write to force a refresh on that specific path?

The shepherd's hut doesn't need MPPT temperature logging to function, but when you've gone to the trouble of building a proper monitoring setup, a null value staring back at you is deeply unsatisfying. Anyone cracked this one?

OffGrid Tel
OffGrid Tel
Active Member
24 posts
thumb_up 15 likes
Joined Apr 2024
1 month ago
#17328

@GaryParker97 classic Victron "it works but also doesn't" situation this one.

The SmartSolar's internal temp sensor isn't exposed the same way as a proper battery temp sensor — it's essentially diagnostic data for the unit itself rather than a "real" measured value in the VRM/MQTT hierarchy. The Cerbo GX pulls it fine for local display but it doesn't reliably populate the MQTT path because Victron never properly mapped it as a standard metric.

Worth checking your Venus OS version — there were some MQTT topic changes around v2.80 that shuffled things about. Also, the path you want should be something like:

/devices/SmartSolar.../Dc/0/Temperature

...but honestly that node is inconsistently populated depending on firmware revisions.

If you actually need reliable temperature data for automation purposes, a dedicated Victron Smart Battery Sense or even a cheap DS18B20 wired into the Cerbo's temp input is far more dependable in practice.

Caddy Project
Caddy Project
Active Member
33 posts
thumb_up 13 likes
Joined Nov 2023
1 month ago
#17360

Seen this exact thing on my setup. The MPPT internal temp only publishes to MQTT when it's actively being used for compensation — if the battery temp sensor is connected and taking priority, the internal one goes null on the broker even though the display still shows it.

Check your DVCC settings on the Cerbo. If SVS (Shared Voltage Sense) or STS (Shared Temperature Sense) is pulling from a dedicated sensor, the MPPT internal temp gets deprioritised and Venus OS just doesn't bother publishing it.

Workaround I've used: query the raw value directly via the VRM API rather than relying on local MQTT. Not elegant but it works.

The specific topic path to check is under N/<VRM-ID>/solarcharger/<device-id>/Dc/0/Temperature — if that's returning null, it's almost certainly the DVCC priority chain causing it.

48VQueen
48VQueen
Active Member
27 posts
thumb_up 6 likes
Joined Feb 2024
1 month ago
#17370

@CaddyProject so basically Victron built a sensor, wired it to a display, then went "nah, MQTT doesn't need that" — absolute galaxy-brained engineering right there.

Worth checking your dbus path directly on the Cerbo: com.victronenergy.solarcharger/Dc/0/Temperature — if it's null there too, the MPPT simply isn't publishing it upstream regardless of what the local display shows. Seen this faff on my narrowboat setup where the SmartSolar happily shows internal temp on the VictronConnect app via Bluetooth but the Cerbo just shrugs. Node-RED workaround exists if you're desperate — poll it direct via BLE and inject it into the MQTT broker yourself, which is as ridiculous as it sounds but here we are.

Caddy Project
Caddy Project
Active Member
33 posts
thumb_up 13 likes
Joined Nov 2023
1 month ago
#17432

@48VQueen pretty much, yeah. Though to be fair there's a workaround — if you've got Node-RED on the Cerbo you can poll the VRM API or scrape the display value via dbus directly.

On my boat setup I query com.victronenergy.solarcharger on dbus and the internal temp does surface there as /Dc/0/Temperature under certain firmware versions. Worth checking your MPPT firmware first — mine needed updating before it appeared at all.

dbus-spy com.victronenergy.solarcharger

Run that on the Cerbo via SSH and look for what temperature paths actually exist on your unit. Could save you chasing a null MQTT value that's genuinely just not mapped rather than broken.

Log in to join the discussion.

Log In to Reply