Its not a normal 3g/4g setup. You cant just put a normal simcard in and have it work. Youll need an NB-IOT/CAT-M1 enabled sim. and your local network needs to support it. which isn't actually the case for most of the UK.
Vodafone is our best bet. But even they don't have a full rollout yet.
@joselfesteves I tried using SMS about a month ago - just an experiment to see if it worked. It did, in both directions for standard and multi-line messages. But that is here in Oz, on the Telstra network. Maybe it is a service related issue? Does the service you are using support SMS? I did have to experiment a bit with the AT command set though before I had any success.
@smoochypea You can achieve 5 minuite send intervals easily enough by sleeping for 5minuites - however long execution took.
(read the time at the start and end of executing. run time is end - start sleep for 5 minuites - runtime as long as recording and sending data takes < 5 minuites you'll end up with a nicely timed 5 minuite loop)
That said. without knowing more about what the rest of the datacollection code does it's rather hard to make recommendations.
As long as I tan into it, there are two main reason for unstable systems and two depending on the type of preoject.
Python: You have to test all paths, so you will not run into typical python problems which you find only during runtime.
i2c problems with the pycom extension boards. You have to run a lot of long time tests. Otherwise you may run into i2c exceptions. Maybe the deepsleep problem is related to this. Sometimes deepsleep does not go to sleep on my pytrack and so the device never wakes up and start your code again. But since 1.20.rc4 I have not run into this problem.
memory fragmentation maybe a problem on larger projects. RAM is limitted. Especially on the old devices. So you cannnot code in the same way as on your PC. You have to keep in mind that the compiler, string and float methods will fragment your memory a lot. You can get around the compiler issue by using a cross compiler on the PC. For the remaining part you have to keep an eye on system. If it need huge buffers, allocate them on an eraly stage and reuse them instead of allocating new ones. Avoid floats and strings. Don't import somewhere during runtime. Import your needed modules in the same way as your huge buffers.
some developers don't see the limits of the radio systems. There seems to be no feedback when they are too noisy and the radio submodule forces them to be silent.
Sadly there is no option to log erros onto SD card. So it's hard to see, that most problems are related to typos, forgotten self. and memory fragmentation. I have seen a project which started to build a GC which was able to reorganize the allocated objects. Would be great to have these two features as an option in micopython.