It looks like i cannot combine the Grove Sunlight sensor and the Grove DHT22 Temperature and Humidity sensor. I can't figure out why. I've the following setup: Seeeduino CLOUD (Arduino YUN clone) Grove Shield Grove Sunlight sensor connected to a I2C port Grove DHT22 Temperature and Humidity sensor connected to port A0 I'm sending the data to Initialstate.com // Process.h gives us access to the Process class, which lets // us communicate with the shell #include "DHT.h" //Temp Hum sensor #include <Bridge.h> #include <Process.h> #include <Wire.h> #include "SI114X.h" //Sunlight sensor SI114X SI1145 = SI114X(); //////////////////////////////////////////// //Temperature and Humidity sensor data start #define DHTPIN A0 // what sensor is connected to, in this case A0 //#define DHTTYPE DHT11 // DHT 11 #define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT21 // DHT 21 (AM2301) DHT dht(DHTPIN, DHTTYPE); //Temparature and Humidity sensor data end //////////////////////////////////////////// //////////////////////////// // Initial State Streamer // //////////////////////////// // URL to IS Bucket API String ISBucketURL = "https://groker.initialstate.com/api/buckets"; // URL to IS Event API String ISEventURL = "https://groker.initialstate.com/api/events"; // Access key (the one you find in your account settings): String accessKey = "KRYLC3tvJUiyTVqTJr5nRqgkKQI2FiDh"; String bucketKey = "Test_Klimaat2"; // Bucket name (name your data will be associated with in Initial State): String bucketName = "Test klimaat 2"; // Bucket key (hidden reference to your bucket that allows appending): //String bucketKey = "arduino_stream"; // Bucket name (name your data will be associated with in Initial State): //String bucketName = "Arduino Stream"; // How many signals are in your stream? You can have as few or as many as you want const int NUM_SIGNALS = 5; // What are the names of your signals (i.e. "Temperature", "Humidity", etc.) String signalName[NUM_SIGNALS] = {"Humidity", "Temperatur", "Visable", "Infrared", "UV"}; // This array is to store our signal data later String signalData[NUM_SIGNALS]; // This only runs once at the very beginning void setup() { Serial.begin(9600); Bridge.begin(); Wire.begin(); SI1145.Begin(); dht.begin(); //Initialize temparature and humidity sensor while (!Serial); // Post Bucket Serial.println("Posting Bucket!"); // The postBucket() function creates a bucket // (unnecessary if the bucket already exists) postBucket(); } // This repeats void loop() { // Gather Data // Read from a port for input or output or generate your own values/messages // These signals are random numbers for the sake of example String VIS; String IR; String UV; String TEMP; String HUM; //Code reading DHT22 HUM = String((float)dht.readHumidity()); TEMP = String((float)dht.readTemperature()); //code reading Sunlight data VIS = String(SI1145.ReadVisible()); IR = String(SI1145.ReadIR()); UV = String((float)SI1145.ReadUV()/100); signalData[0] = HUM; signalData[1] = TEMP; signalData[2] = VIS; signalData[3] = IR; signalData[4] = UV; // Post Data Serial.println("Posting Data!"); // The postData() function streams our events postData(); // Wait for 5 seconds before collecting and sending the next batch delay(5000); } // Here are the data bucket creation and posting functions // They do not need to be edited - everything you would need to change for // your situation can be found above void postBucket() { // Initialize the process Process isbucket; isbucket.begin("curl"); isbucket.addParameter("-k"); isbucket.addParameter("-v"); isbucket.addParameter("-X"); isbucket.addParameter("POST"); isbucket.addParameter("-H"); isbucket.addParameter("Content-Type:application/json"); isbucket.addParameter("-H"); isbucket.addParameter("Accept-Version:0.0.1"); // IS Access Key Header isbucket.addParameter("-H"); isbucket.addParameter("X-IS-AccessKey:" + accessKey); // IS Bucket Key Header isbucket.addParameter("-d"); isbucket.addParameter("{\"bucketKey\": \"" + bucketKey + "\", \"bucketName\": \"" + bucketName + "\"}"); isbucket.addParameter("https://groker.initialstate.com/api/buckets"); // Run the process isbucket.run(); Serial.flush(); } void postData() { // Initialize the process Process isstreamer; isstreamer.begin("curl"); isstreamer.addParameter("-k"); isstreamer.addParameter("-v"); isstreamer.addParameter("-X"); isstreamer.addParameter("POST"); isstreamer.addParameter("-H"); isstreamer.addParameter("Content-Type:application/json"); isstreamer.addParameter("-H"); isstreamer.addParameter("Accept-Version:0.0.1"); // IS Access Key Header isstreamer.addParameter("-H"); isstreamer.addParameter("X-IS-AccessKey:" + accessKey); // IS Bucket Key Header // Note that bucketName is not needed here isstreamer.addParameter("-H"); isstreamer.addParameter("X-IS-BucketKey:" + bucketKey); isstreamer.addParameter("-d"); // Initialize a string to hold our signal data String jsonData; jsonData = "["; for (int i=0; i<NUM_SIGNALS; i++) { jsonData += "{\"key\": \"" + signalName[i] + "\", \"value\": \"" + signalData[i] + "\"}"; if (i != NUM_SIGNALS - 1) { jsonData += ","; } } jsonData += "]"; isstreamer.addParameter(jsonData); isstreamer.addParameter("https://groker.initialstate.com/api/events"); // Print posted data for debug Serial.print("Sending data: "); Serial.println(jsonData); // Run the process isstreamer.run(); Serial.flush(); } This is my code: When I run this code the Serial monitor will correctly display the data string I want to send with all values. However the data is NOT send. Only when I comment out one of these lines in the Loop declaration the data is send to Initial state successfully. Obviously without the data commented out: //Code reading DHT22 HUM = String((float)dht.readHumidity()); TEMP = String((float)dht.readTemperature()); //code reading Sunlight data VIS = String(SI1145.ReadVisible()); IR = String(SI1145.ReadIR()); UV = String((float)SI1145.ReadUV()/100); Any ideas are appreciated.