Firmware v1.74 MPPT pause breaking dynamic script control loops

by Boat Gemma · 3 days ago 11 views 4 replies
Boat Gemma
Boat Gemma
Active Member
12 posts
thumb_up 10 likes
Joined Dec 2024
3 days ago
#25127

Been having a strange one with my setup on the boat and wondering if anyone else has hit this.

Running a couple of Victron SmartSolar MPPT 100/20s on the cabin roof, tied into a Cerbo GX and managed via Node-RED scripts on a Pi. The scripts adjust charge current dynamically based on battery state, shore power availability, and a few other variables — works brilliantly normally.

Since updating to v1.74 though, I'm getting what looks like the controllers entering some kind of pause or reduced-output state mid-cycle, and it's completely throwing off my control loop. The script sees the drop in output, assumes something's wrong, and overcorrects. End result is the batteries sitting at 60-70% on days when they should be topping up nicely.

A few things I'm wondering:

  • Has anyone else noticed unusual MPPT behaviour specifically after v1.74?
  • Is this the new "smart pause" feature interacting badly with external script control? I've read a bit about Victron introducing absorption pauses but can't find clear documentation on how it behaves when you're overriding via DVCC or external BMS signals
  • Would rolling back firmware actually fix it, or am I chasing the wrong issue?

My setup is fairly integrated — Fogstar Drift lithium bank, so I need the charge profile to be fairly precise and I can't just leave it to default absorption curves.

Anyone running dynamic script control loops with recent Victron firmware who's found a workaround? Or is there a config flag I'm missing that disables the pause behaviour?

Jock40
Jock40
Member
6 posts
Joined May 2024
3 days ago
#25142

Jock40 | ⚓ Off-Grid Enthusiast | Posts: 847


@BoatGemma yes, hit exactly this on my narrowboat setup last autumn! The v1.74 firmware introduced that MPPT pause behaviour during bulk-to-absorption transitions, and it absolutely plays havoc with Node-RED scripts polling via the Cerbo's MQTT broker.

What I found was the controller dropping off the VE.Can bus briefly during the pause, which causes your control loop to either hang or make daft decisions based on stale data.

My workaround was adding a timeout handler in the script — basically if no fresh SOC or PV power data arrives within 8 seconds, the loop skips that cycle rather than acting on the last known values. Crude but it stopped the erratic behaviour.

Worth checking Victron Community forum too — there's a lengthy thread about this and apparently v1.76 may address it, though I've not updated yet myself.

Spider
Spider
Active Member
47 posts
thumb_up 24 likes
Joined Aug 2023
3 days ago
#25182

@BoatGemma this rings a bell. Had a nightmare with mine after updating the 100/30s on the Persephone — my Node-RED control loop was basically fighting the MPPT's internal pause logic and losing.

What I eventually traced it was the firmware introducing a longer hold-off period before resuming absorption after a transient load spike. The script was interpreting that pause as a fault state and hammering the override registers repeatedly, which made things considerably worse.

Rolled back to v1.72 temporarily while I rewrote the polling intervals. The fix wasn't glamorous — just adding a proper state-check delay before any corrective action — but it stopped the loop chasing its own tail.

Worth checking your VRM logs during the pause windows. The pattern is usually obvious once you know what you're looking for.

Dodgy Mechanic
Dodgy Mechanic
Active Member
27 posts
thumb_up 14 likes
Joined Aug 2023
2 days ago
#25205

DodgyMechanic | 🔧 Off-Grid Tinkerer | Posts: 312


@BoatGemma what firmware were you on before the 1.74 update? That's the bit nobody seems to pin down properly.

I've got a similar Node-RED loop controlling my garden office MPPT (SmartSolar 75/15) via MQTT through a Cerbo and I've been deliberately holding back on updates after getting burned before.

Couple of questions before anyone starts throwing solutions at it:

  • Is the pause happening at a predictable interval or seemingly random?
  • Are your two 100/20s networked together via VE.Smart or running independently?
  • What's the MQTT polling interval set to?

Genuine question — has anyone actually raised this on the Victron Community forum yet? Because if it's reproducible on multiple boats it needs to be a proper bug report, not just us lot guessing in threads like this.

Boxer Camper
Boxer Camper
Regular
68 posts
thumb_up 56 likes
Joined Jul 2023
2 days ago
#25241

BoxerCamper | 🚐 Off-Grid Adventurer | Posts: 1,203


Classic Victron firmware gotcha — I fell into the same hole last winter with my motorhome setup, except mine was a 100/30 being hammered by a Node-RED flow via Modbus TCP.

The short version: v1.74 introduced a deliberate absorption pause behaviour that breaks any script assuming the MPPT state register updates are continuous. Your control loop is likely polling state 0x0201 and getting stale values mid-pause, then overreacting.

Fix that worked for me — add a dead-band filter in your script: if the state hasn't changed for 45+ seconds during expected absorption hours, treat it as a pause, not a fault.

@Spider worth checking your Node-RED flow for any switch nodes acting on raw MPPT state without hysteresis — that's likely your culprit on Persephone too.

Victron Community thread #107234 covers this properly if you want the deeper reading.

Log in to join the discussion.

Log In to Reply