Electron connects to cloud but no data?

Hi, had an electron running a DHT22 temperature sensor and sending data to thingspeak happily for 10 days then suddenly it stopped sending data. When I looked at it (it is remote) it was blinking blue and to get it going again I had to reflash the sim binary (non particle sim) and reload the code. I recliamed the device OK and then reset it a few times to make sure it was sending the data OK. It sent the data to thingspeak fine, but is now connecting to particle cloud, but not sending data? NOTHING is different and it was working fine before I left! Code is pasted below:

// This #include statement was automatically added by the Particle IDE.
#include "ThingSpeak/ThingSpeak.h"

// This #include statement was automatically added by the Particle IDE.
#include "Adafruit_DHT/Adafruit_DHT.h"



// Sensor type
#define DHTTYPE DHT22    	// DHT 22 (AM2302)

// DHT22 sensor pinout:
// Pin 1 (on the left): +3.3V
// Pin 2: output
// Pin 4 (on the right): GROUND

#define DHT_5V_PIN D2
#define DHT_SENSOR_PIN D1
#define DHT_GROUND_PIN D3

DHT dht(DHT_SENSOR_PIN, DHTTYPE);

/* Thingspeak */
TCPClient client;
unsigned long myChannelNumber = 117187;
const char * myWriteAPIKey = "X51ExxxxxMC6DXMF1";

void setup() {
    // Connect to ThingSpeak
    ThingSpeak.begin(client);

    // Give power to the sensor
    pinMode(DHT_5V_PIN, OUTPUT);
    pinMode(DHT_GROUND_PIN, OUTPUT);
    digitalWrite(DHT_5V_PIN, HIGH);
    digitalWrite(DHT_GROUND_PIN, LOW);
    // Wait for the sensor to stabilize
    delay(1000);

    // Initialize sensor
    dht.begin();

    // Read Sensor
    double temperature = dht.getTempCelcius();
    //double humidity = dht.getHumidity();

    // Update the 2 ThingSpeak fields with the new data
    ThingSpeak.setField(1, (float)temperature);
    //ThingSpeak.setField(2, (float)humidity);
    
    // Write the fields that you've set all at once.
    ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
    
    // Give time for the message to reach ThingSpeak
    delay(5000);

    // Sleep for 30 minutes to save battery
    System.sleep(SLEEP_MODE_DEEP, 30 * 60);
}

void loop() {
    // This will run because the system is sleeping
}