MKR GSM + I2C sensors + Arduino IoT results in garbage sensor reads

Hi, I am having this weird problem with Arduino MKR GSM.

I have 6 I2C sensors connected, and everything runs fine if I am just reading the sensors - a sample good output is something like this:

14:34:32.210 -> V1: 3.26[V]
14:34:33.208 -> V2: 0.04[V]
14:34:34.204 -> T1: 21.87[C]
14:34:35.200 -> T2: 23.44[C]
14:34:36.231 -> T3: 23.00[C]
14:34:37.229 -> T4: 22.31[C]

However, once I add Arduino IoT Cloud library (I want to send the data to the cloud), I start getting garbage readings:

14:40:24.016 -> V1: 3.27[V]
14:40:25.013 -> V2: 0.01[V]
14:40:26.010 -> T1: -0.06[C]
14:40:27.039 -> T2: -0.06[C]
14:40:28.034 -> T3: -0.06[C]
14:40:29.031 -> T4: -0.06[C]

The negative temp readings are likely just artifacts of int to float conversion, in fact I am reading zero from the senors (as if the I2C transaction failed).

The I2C Voltage sensors work in both cases, it is only the TMP102 temperature sensors that have this problem. The order of I2C transactions doesn't matter.

I checked the wiring, and it is all good (also it works without the IoT Cloud functionality).

I also checked the power, and when it is all fired up the max current is ~250mA at 5V (I use a regulated power supply).

I have a delay of 1s after each I2c sensor read, and after each cloud update.

I am out of ideas what can be wrong, my working theory is that perhaps the IoT cloud library is taking too much CPU resources, and somehow Arduino manages to miss the I2C interrupt - but that does sound pretty wild.

Any ideas what am I missing here?

FYI the solution turned out to be ditching Arduino IoT Cloud altogether, switch to MKR Wifi board (I didn't have a non-Arduino only SIM handy), and use Adafruit IO web API for posting sensor data.

It is definitely sad that the IoT cloud doesn't work out of the box for a medium size project like this. On the upside, I saved $10/month because Adafruit does what I need for free...