Sleepy::loseSomeTime in custom project not working properly

Hi everyone,

I am no electronic expert, but with (a lot of) patience I've managed to almost complete a custom project which can be described as follows: solar powered arduino with battery backup and several sensors: 2 x temperature (1 external, 1 internal), 1 x light sensor (LDR), 2 x voltage sensors (battery + solar), 1 x pressure sensor. All of the sensors readings are updated every 2 mins and then uploaded to emonCMS through a RFM69CW interface.

I have attached a schematic of the project, which has changed a bit (removed the current sensors and added the environmental sensors described above) but should give you an idea of what it is all about.

Thanks to Jeelib and the awesome work of all the people at OEM, the project has been running standalone (on battery only at the moment) for one month. 

I am overall happy of the result, but there is one thing I am very confused about and did not manage to understand. 

As you can see in the attached code (indipowerV4.ino) at line 46, I have declared:

const int time_between_readings= 2;       

then, at line 364, I've written:

for (int i=0; i<time_between_readings; i++)
  {
    dodelay(55000);
  }

The problem is that, in reality, the update interval is quite random. At times it updates every 2 mins as per my request, at times it updates every 10 mins. I have attached an image showing what I mean. 

It is not a big issue, but it is annoying, in particular because I do not understand why this is happening.

Also, what bothers me most is that a similar "sleep code" runs smoothly on both the emonTX and the two emonTH I own.

 

I would really be thankful to anyone that can give me a hint on this!