Another question about solar charging a remote Monitor One

I’m implementing a Monitor One as a remote weather station and, despite the posts here, am not successfully able to get the battery charging on solar. First a bit about the setup:

  • Monitor One on DeviceOS 6.2.1 using included proto board. user_IO.cpp and user_modbus.cpp excluded from build.
  • Polls a SDI-12 weather station (that draws 1 mA) and publishes the result.
  • Newpowa 12V 5W solar panel connected to VIN and G on 8-pin connector. MPP current on this guy is 300 mA but should be higher after the 12V to 5V conversion. (Datasheet here: https://drive.google.com/file/d/120u_LUNXjwl7Ag-BTuSG4zRWh0GEFd6X/view?usp=sharing)

As expected with default settings, the charge light blinks rapidly. Curiously, it charges only about 90 minutes a day when the sun is directly pointed at the panel. See plot:

There are a few posts here on how to rectify that, mainly

SystemPowerConfiguration conf;
conf.powerSourceMaxCurrent(128);
System.setPowerConfiguration(conf); 

in void setup(). However, if this is placed before Edge::instance().init(); these settings seem to be overwritten and the charge-light-blinky-behavior continues. If placed after Edge::instance().init(); other battery settings seem to be awry, such as battery SOC being pegged at 100% despite that not being the case.

I have found other charging settings in lib/edge/src/IEdgePlatformConfiguration.h, specifically:

commonCfg.chargeCurrentHigh = 1536; // milliamps
commonCfg.chargeCurrentLow = 512; // milliamps
commonCfg.inputCurrent = 2048; // milliamps

I have lowered all three of these and when on solar, causes a loop of repeated crashes and reboots.

So, what is the official official method of using a solar panel with a Monitor One?