title: Cosm example with temp and humidity sensor (DHT11) added
body: <p>Added a temperature and humidity sensor (DHT11) to the standard Cosm Arduino sensor client example. Works for a short while then data streams flat line.</p>
  
  <p>Any idea what could be causing the problem?</p>
  
  <p>Many thanks</p>
  
  <p>Staza</p>
  
  <pre><code>    /**
   * Cosm Arduino sensor client example.
   *
  `` * This sketch demonstrates connecting an Arduino to Cosm (https://cosm.com),
   * using the new Arduino library to send and receive data.
  
  /**
  DHT11 temp and humidity sensor added to the COSM example code
  **/
  
  #include &lt;SPI.h&gt;
  #include &lt;Ethernet.h&gt;
  #include &lt;HttpClient.h&gt;
  #include &lt;Cosm.h&gt;
  #include &lt;dht11.h&gt;
  
  //DHT11*********************************************************************
  dht11 DHT11;
  #define DHT11PIN 7//pin DHT11 sensor is connected to
  //DHT11*********************************************************************
  
  
  #define API_KEY "xxxxxx" // your Cosm API key
  #define FEED_ID xxxxx // your Cosm feed ID
  
  // MAC address for your Ethernet shield
  byte mac[] = {xxxx, xxxx, xxxx, xxxx, xxxx, xxxx}; 
  
  // Analog pin which we're monitoring (0 and 1 are used by the Ethernet shield)
  int sensorPin = 2;
  
  unsigned long lastConnectionTime = 0;                // last time we connected to Cosm
  const unsigned long connectionInterval = 15000;      // delay between connecting to Cosm in milliseconds
  
  // Initialize the Cosm library
  
  // Define the string for our datastream ID
  char sensorId[] = "sensor_reading";
  char sensorId2[] = "DHT11_humidity_sensor_reading";
  char sensorId3[] = "DHT11_temperature_sensor_reading";
  CosmDatastream datastreams[] = {
    CosmDatastream(sensorId, strlen(sensorId), DATASTREAM_FLOAT),
    CosmDatastream(sensorId2, strlen(sensorId2), DATASTREAM_FLOAT),
    CosmDatastream(sensorId3, strlen(sensorId3), DATASTREAM_FLOAT),
  };
  
  // Wrap the datastream into a feed
  CosmFeed feed(FEED_ID, datastreams, 3 /* number of datastreams */);
  
  EthernetClient client;
  CosmClient cosmclient(client);
  
  void setup() {
    // put your setup code here, to run once:
    Serial.begin(9600);
  
    Serial.println("Cosm Sensor Client Example");
    Serial.println("==========================");
  
    Serial.println("Initializing network");
    while (Ethernet.begin(mac) != 1) {
      Serial.println("Error getting IP address via DHCP, trying again...");
      delay(15000);
    }
  
    Serial.println("Network initialized");
    Serial.println();
  }
  
  void loop() {
    // main program loop
    if (millis() - lastConnectionTime &gt; connectionInterval) {
  
  //check DHT11 sensor is working OK    
      int chk = DHT11.read(DHT11PIN);
      Serial.print("Read DHT11 sensor: ");
    switch (chk)
    {
      case 0: Serial.println("OK"); break;
      case -1: Serial.println("Checksum error"); break;
      case -2: Serial.println("Time out error"); break;
      default: Serial.println("Unknown error"); break;
    }
  
      sendData(); // send data to Cosm
      getData(); // read the datastream back from Cosm
      lastConnectionTime = millis(); // update connection time so we wait before connecting again
    }
  }
  
  // send the supplied values to Cosm, printing some debug information as we go
  void sendData() {
    int sensorValue = analogRead(sensorPin);
    int humidityDHT11 = ((float)DHT11.humidity);
    int tempDHT11 = ((float)DHT11.temperature);
    datastreams[0].setFloat(sensorValue);
    datastreams[1].setFloat(humidityDHT11); //DHT11 humidity value*******
    datastreams[2].setFloat(tempDHT11); //DHT11 temp value********
    Serial.print("Read sensor value ");
    Serial.println(datastreams[0].getFloat());
    Serial.print("Read DHT11 humidity sensor value ");
    Serial.println(datastreams[1].getFloat());
    Serial.print("Read DHT11 temperature sensor value ");
    Serial.println(datastreams[2].getFloat());
  
    Serial.println("Uploading to Cosm");
    int ret = cosmclient.put(feed, API_KEY);
    Serial.print("PUT return code: ");
    Serial.println(ret);
  
    Serial.println();
  }
  
  // get the value of the datastream from Cosm, printing out the value we received
  void getData() {
    Serial.println("Reading data from Cosm");
  
    int ret = cosmclient.get(feed, API_KEY);
    Serial.print("GET return code: ");
    Serial.println(ret);
  
    if (ret &gt; 0) {
      Serial.print("Datastream is: ");
      Serial.println(feed[0]);
      Serial.print("Sensor value is: ");
      Serial.println(feed[0].getFloat());
  
      Serial.print("Datastream is: ");
      Serial.println(feed[1]);
      Serial.print("Sensor value is: ");
      Serial.println(feed[1].getFloat());
  
      Serial.print("Datastream is: ");
      Serial.println(feed[2]);
      Serial.print("Sensor value is: ");
      Serial.println(feed[2].getFloat());
     }
  
    Serial.println();
  }
  </code></pre>