diff --git a/examples/DhtTemperatureAndHumiditySensor/DhtTemperatureAndHumiditySensor.ino b/examples/DhtTemperatureAndHumiditySensor/DhtTemperatureAndHumiditySensor.ino
index 2fd8e63..ddc1a11 100644
--- a/examples/DhtTemperatureAndHumiditySensor/DhtTemperatureAndHumiditySensor.ino
+++ b/examples/DhtTemperatureAndHumiditySensor/DhtTemperatureAndHumiditySensor.ino
@@ -1,3 +1,4 @@
+
 /**
  * The MySensors Arduino library handles the wireless radio link and protocol
  * between your home built sensors/actuators and HA controller of choice.
@@ -19,40 +20,51 @@
  *******************************
  *
  * REVISION HISTORY
- * Version 1.0: Henrik EKblad
- * Version 1.1 - 2016-07-20: Converted to MySensors v2.0 and added various improvements - Torben Woltjen (mozzbozz)
+ * Version 1.0 (humidity sensor): Henrik EKblad
+ * Version 1.1 - 2016-07-20 (humidity sensor): Converted to MySensors v2.0 and added various improvements - Torben Woltjen (mozzbozz)
+ * Version 2.0 - 2018-09-25: Converted to DHTU Adafruit library - Tiberio Galletti
+ * Version 2.1 - 2018-10-06: Clearer code and... if something changed... every sensor data are sent to gateway - Tiberio Galletti
+ * Version 2.2 - 2018-12-27: Heat Index calculation included in sketch (based on Adafruit official library) - Tiberio Galletti
  * 
  * DESCRIPTION
- * This sketch provides an example of how to implement a humidity/temperature
- * sensor using a DHT11/DHT-22.
+ * This sketch provides an example of how to implement a humidity/temperature sensor using a DHT11/DHT21/DHT22. 
+ * It inlcudes Heat Index *sensor*
  *  
  * For more information, please visit:
- * http://www.mysensors.org/build/humidity
+ * http://www.mysensors.org/build/TempHumFeel-DHT
  * 
  */
+#define SN "TempHumFeel"
+#define SV "2.2"
+
+
 
 // Enable debug prints
-#define MY_DEBUG
+//#define MY_DEBUG
 
 // Enable and select radio type attached 
-#define MY_RADIO_NRF24
+#define MY_RADIO_RF24
 //#define MY_RADIO_RFM69
 //#define MY_RS485
- 
-#include <SPI.h>
-#include <MySensors.h>  
-#include <DHT.h>
 
-// Set this to the pin you connected the DHT's data pin to
-#define DHT_DATA_PIN 3
+//Uncomment (and update) if you want to force Node Id
+//#define MY_NODE_ID 1
+
+#define MY_BAUD_RATE 38400
+
+// Uncomment the type of sensor in use:
+//#define DHTTYPE           DHT11     // DHT 11 
+#define DHTTYPE           DHT22     // DHT 22 (AM2302)
+//#define DHTTYPE           DHT21     // DHT 21 (AM2301)
 
-// Set this offset if the sensor has a permanent small offset to the real temperatures.
-// In Celsius degrees (as measured by the device)
-#define SENSOR_TEMP_OFFSET 0
 
-// Sleep time between sensor updates (in milliseconds)
-// Must be >1000ms for DHT22 and >2000ms for DHT11
-static const uint64_t UPDATE_INTERVAL = 60000;
+// Set this to the pin you connected the DHT's data and power pins to; connect wires in coherent pins
+#define DHTDATAPIN        3         
+#define DHTPOWERPIN       8
+
+
+// Sleep time between sensor updates (in milliseconds) to add to sensor delay (read from sensor data; typically: 1s)
+static const uint64_t UPDATE_INTERVAL = 60000; 
 
 // Force sending an update of the temperature after n sensor reads, so a controller showing the
 // timestamp of the last update doesn't show something like 3 hours in the unlikely case, that
@@ -62,95 +74,218 @@ static const uint8_t FORCE_UPDATE_N_READS = 10;
 
 #define CHILD_ID_HUM 0
 #define CHILD_ID_TEMP 1
+#define CHILD_ID_HEATINDEX 2
+
+// Set this offset if the sensors have permanent small offsets to the real temperatures/humidity.
+// In Celsius degrees or moisture percent
+#define SENSOR_HUM_OFFSET 0       // used for temperature data and heat index computation
+#define SENSOR_TEMP_OFFSET 0      // used for humidity data
+#define SENSOR_HEATINDEX_OFFSET 0   // used for heat index data
+
 
+// used libraries: they have to be installed by Arduino IDE (menu path: tools - manage libraries)
+#include <MySensors.h>  // *MySensors* by The MySensors Team (tested on version 2.3.2)
+#include <Adafruit_Sensor.h> // Official "Adafruit Unified Sensor" by Adafruit (tested on version 1.1.1)
+#include <DHT_U.h> // Official *DHT Sensor library* by Adafruit (tested on version 1.3.8) 
+
+DHT_Unified dhtu(DHTDATAPIN, DHTTYPE);
+// See guide for details on Adafruit sensor wiring and usage:
+//   https://learn.adafruit.com/dht/overview
+
+uint32_t delayMS;
 float lastTemp;
 float lastHum;
-uint8_t nNoUpdatesTemp;
-uint8_t nNoUpdatesHum;
+uint8_t nNoUpdates = FORCE_UPDATE_N_READS; // send data on start-up 
 bool metric = true;
+float temperature;
+float humidity;
+float heatindex;
+
+
 
 MyMessage msgHum(CHILD_ID_HUM, V_HUM);
 MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
-DHT dht;
+MyMessage msgHeatIndex(CHILD_ID_HEATINDEX, V_TEMP);
+
+
+
+float computeHeatIndex(float temperature, float percentHumidity) {
+  // Based on Adafruit DHT official library (https://github.com/adafruit/DHT-sensor-library/blob/master/DHT.cpp)
+  // Using both Rothfusz and Steadman's equations
+  // http://www.wpc.ncep.noaa.gov/html/heatindex_equation.shtml
+
+  float hi;
+
+  temperature = temperature + SENSOR_TEMP_OFFSET; //include TEMP_OFFSET in HeatIndex computation too
+  temperature = 1.8*temperature+32; //convertion to *F
+
+  hi = 0.5 * (temperature + 61.0 + ((temperature - 68.0) * 1.2) + (percentHumidity * 0.094));
+
+  if (hi > 79) {
+    hi = -42.379 +
+             2.04901523 * temperature +
+            10.14333127 * percentHumidity +
+            -0.22475541 * temperature*percentHumidity +
+            -0.00683783 * pow(temperature, 2) +
+            -0.05481717 * pow(percentHumidity, 2) +
+             0.00122874 * pow(temperature, 2) * percentHumidity +
+             0.00085282 * temperature*pow(percentHumidity, 2) +
+            -0.00000199 * pow(temperature, 2) * pow(percentHumidity, 2);
+
+    if((percentHumidity < 13) && (temperature >= 80.0) && (temperature <= 112.0))
+      hi -= ((13.0 - percentHumidity) * 0.25) * sqrt((17.0 - abs(temperature - 95.0)) * 0.05882);
+
+    else if((percentHumidity > 85.0) && (temperature >= 80.0) && (temperature <= 87.0))
+      hi += ((percentHumidity - 85.0) * 0.1) * ((87.0 - temperature) * 0.2);
+  }
+
+  hi = (hi-32)/1.8;
+  return hi; //return Heat Index, in *C
+}
+
+
+
+
 
 
 void presentation()  
 { 
   // Send the sketch version information to the gateway
-  sendSketchInfo("TemperatureAndHumidity", "1.1");
-  
+  sendSketchInfo(SN, SV);
   // Register all sensors to gw (they will be created as child devices)
-  present(CHILD_ID_HUM, S_HUM);
-  present(CHILD_ID_TEMP, S_TEMP);
-  
+  present(CHILD_ID_HUM, S_HUM, "Humidity");
+  wait(100);                                      //to check: is it needed
+  present(CHILD_ID_TEMP, S_TEMP, "Temperature");
+  wait(100);                                      //to check: is it needed
+  present(CHILD_ID_HEATINDEX, S_TEMP, "Heat Index");
   metric = getControllerConfig().isMetric;
 }
 
 
 void setup()
 {
-  dht.setup(DHT_DATA_PIN); // set data pin of DHT sensor
-  if (UPDATE_INTERVAL <= dht.getMinimumSamplingPeriod()) {
-    Serial.println("Warning: UPDATE_INTERVAL is smaller than supported by the sensor!");
-  }
-  // Sleep for the time of the minimum sampling period to give the sensor time to power up
-  // (otherwise, timeout errors might occure for the first reading)
-  sleep(dht.getMinimumSamplingPeriod());
+  pinMode(DHTPOWERPIN, OUTPUT);
+  digitalWrite(DHTPOWERPIN, HIGH);
+//Serial.begin(9600); 
+  // Initialize device.
+  dhtu.begin();
+
+  
+  Serial.println("DHTxx Unified Sensor Example");
+  // Print temperature sensor details.
+  sensor_t sensor;
+  dhtu.temperature().getSensor(&sensor);
+  Serial.println("------------------------------------");
+  Serial.println("Temperature");
+  Serial.print  ("Sensor:       "); Serial.println(sensor.name);
+  Serial.print  ("Driver Ver:   "); Serial.println(sensor.version);
+  Serial.print  ("Unique ID:    "); Serial.println(sensor.sensor_id);
+  Serial.print  ("Max Value:    "); Serial.print(sensor.max_value); Serial.println(" *C");
+  Serial.print  ("Min Value:    "); Serial.print(sensor.min_value); Serial.println(" *C");
+  Serial.print  ("Resolution:   "); Serial.print(sensor.resolution); Serial.println(" *C");  
+  Serial.print  ("Min Delay:   "); Serial.print(sensor.min_delay/1000); Serial.println(" ms");  
+  Serial.println("------------------------------------");
+  
+  // Print humidity sensor details.
+  dhtu.humidity().getSensor(&sensor);
+  Serial.println("------------------------------------");
+  Serial.println("Humidity");
+  Serial.print  ("Sensor:       "); Serial.println(sensor.name);
+  Serial.print  ("Driver Ver:   "); Serial.println(sensor.version);
+  Serial.print  ("Unique ID:    "); Serial.println(sensor.sensor_id);
+  Serial.print  ("Max Value:    "); Serial.print(sensor.max_value); Serial.println("%");
+  Serial.print  ("Min Value:    "); Serial.print(sensor.min_value); Serial.println("%");
+  Serial.print  ("Resolution:   "); Serial.print(sensor.resolution); Serial.println("%");  
+  Serial.print  ("Min Delay:   "); Serial.print(sensor.min_delay/1000); Serial.println(" ms");  
+  Serial.println("------------------------------------");
+  // Set delay between sensor readings based on sensor details.
+  delayMS = sensor.min_delay / 1000;  
 }
 
 
-void loop()      
-{  
-  // Force reading sensor, so it works also after sleep()
-  dht.readSensor(true);
-  
-  // Get temperature from DHT library
-  float temperature = dht.getTemperature();
-  if (isnan(temperature)) {
-    Serial.println("Failed reading temperature from DHT!");
-  } else if (temperature != lastTemp || nNoUpdatesTemp == FORCE_UPDATE_N_READS) {
-    // Only send temperature if it changed since the last measurement or if we didn't send an update for n times
-    lastTemp = temperature;
 
-    // apply the offset before converting to something different than Celsius degrees
-    temperature += SENSOR_TEMP_OFFSET;
 
-    if (!metric) {
-      temperature = dht.toFahrenheit(temperature);
-    }
-    // Reset no updates counter
-    nNoUpdatesTemp = 0;
-    send(msgTemp.set(temperature, 1));
 
+
+
+
+void loop()      
+{  
+  digitalWrite(DHTPOWERPIN, HIGH);   
+  delay(delayMS);
+  sensors_event_t event;  
+  // Get temperature event and use its value.
+  dhtu.temperature().getEvent(&event);
+  if (isnan(event.temperature)) {
+    Serial.println("Error reading temperature!");
+  }
+  else {
+    temperature = event.temperature;
+    #ifdef MY_DEBUG
+    Serial.print("Temperature: ");
+    Serial.print(temperature);
+    Serial.println(" *C");
+    #endif
+  }
+
+  // Get humidity event and use its value.
+  dhtu.humidity().getEvent(&event);
+  if (isnan(event.relative_humidity)) {
+    Serial.println("Error reading humidity!");
+  }
+  else {
+    humidity = event.relative_humidity;
     #ifdef MY_DEBUG
-    Serial.print("T: ");
-    Serial.println(temperature);
+    Serial.print("Humidity: ");
+    Serial.print(humidity);
+    Serial.println("%");
     #endif
-  } else {
-    // Increase no update counter if the temperature stayed the same
-    nNoUpdatesTemp++;
   }
 
-  // Get humidity from DHT library
-  float humidity = dht.getHumidity();
-  if (isnan(humidity)) {
-    Serial.println("Failed reading humidity from DHT");
-  } else if (humidity != lastHum || nNoUpdatesHum == FORCE_UPDATE_N_READS) {
-    // Only send humidity if it changed since the last measurement or if we didn't send an update for n times
+if (fabs(humidity - lastHum)>=0.05 || fabs(temperature - lastTemp)>=0.05 || nNoUpdates >= FORCE_UPDATE_N_READS) {
+    lastTemp = temperature;
     lastHum = humidity;
-    // Reset no updates counter
-    nNoUpdatesHum = 0;
-    send(msgHum.set(humidity, 1));
+    heatindex = computeHeatIndex(temperature,humidity); //computes Heat Index, in *C
+    nNoUpdates = 0; // Reset no updates counter
+    #ifdef MY_DEBUG
+    Serial.print("Heat Index: ");
+    Serial.print(heatindex);
+    Serial.println(" *C");    
+    #endif    
+    
+    if (!metric) {
+      temperature = 1.8*temperature+32; //convertion to *F
+      heatindex = 1.8*heatindex+32; //convertion to *F
+    }
     
     #ifdef MY_DEBUG
-    Serial.print("H: ");
-    Serial.println(humidity);
-    #endif
-  } else {
-    // Increase no update counter if the humidity stayed the same
-    nNoUpdatesHum++;
+    wait(100);
+    Serial.print("Sending temperature: ");
+    Serial.print(temperature);
+    #endif    
+    send(msgTemp.set(temperature + SENSOR_TEMP_OFFSET, 2));
+
+    #ifdef MY_DEBUG
+    wait(100);
+    Serial.print("Sending humidity: ");
+    Serial.print(humidity);
+    #endif    
+    send(msgHum.set(humidity + SENSOR_HUM_OFFSET, 2));
+
+    #ifdef MY_DEBUG
+    wait(100);
+    Serial.print("Sending HeatIndex: ");
+    Serial.print(heatindex);
+    #endif    
+    send(msgHeatIndex.set(heatindex + SENSOR_HEATINDEX_OFFSET, 2));
+
   }
 
+  nNoUpdates++;
+
   // Sleep for a while to save energy
+  digitalWrite(DHTPOWERPIN, LOW); 
+  wait(300); // waiting for potential presentation requests
   sleep(UPDATE_INTERVAL); 
+
 }
diff --git a/examples/DhtTemperatureAndHumiditySensor/TempHumFeel-DHT.ino b/examples/DhtTemperatureAndHumiditySensor/TempHumFeel-DHT.ino
new file mode 100644
index 0000000..d518978
--- /dev/null
+++ b/examples/DhtTemperatureAndHumiditySensor/TempHumFeel-DHT.ino
@@ -0,0 +1,292 @@
+
+/**
+ * The MySensors Arduino library handles the wireless radio link and protocol
+ * between your home built sensors/actuators and HA controller of choice.
+ * The sensors forms a self healing radio network with optional repeaters. Each
+ * repeater and gateway builds a routing tables in EEPROM which keeps track of the
+ * network topology allowing messages to be routed to nodes.
+ *
+ * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
+ * Copyright (C) 2013-2015 Sensnology AB
+ * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
+ *
+ * Documentation: http://www.mysensors.org
+ * Support Forum: http://forum.mysensors.org
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
+ *
+ *******************************
+ *
+ * REVISION HISTORY
+ * this sensor is based on air humiditidy sensor (http://www.mysensors.org/build/humidity) by Henrik EKblad and Torben Woltjen (mozzbozz)
+ *
+ *  
+ * Version 1.0 - 2018-09-25: Converted to DHTU Adafruit library - Tiberio Galletti
+ * Version 1.1 - 2018-10-06: Clearer code and... if something changed... every sensor data are sent to gateway - Tiberio Galletti
+ * Version 1.2 - 2018-12-27: Heat Index calculation included in sketch code (based on Adafruit official library) - Tiberio Galletti
+ * 
+ * DESCRIPTION
+ * This sketch provides an example of how to implement a humidity/temperature sensor using a DHT11/DHT21/DHT22. 
+ * It includes Heat Index *sensor*
+ *  
+ * For more information, please visit:
+ * http://www.mysensors.org/build/TempHumFeel-DHT
+ * 
+ */
+#define SN "TempHumFeel"
+#define SV "1.2"
+
+
+
+// Enable debug prints
+//#define MY_DEBUG
+
+// Enable and select radio type attached 
+#define MY_RADIO_RF24
+//#define MY_RADIO_RFM69
+//#define MY_RS485
+
+//Uncomment (and update) if you want to force Node Id
+//#define MY_NODE_ID 1
+
+#define MY_BAUD_RATE 38400
+
+// Uncomment the type of sensor in use:
+//#define DHTTYPE           DHT11     // DHT 11 
+#define DHTTYPE           DHT22     // DHT 22 (AM2302)
+//#define DHTTYPE           DHT21     // DHT 21 (AM2301)
+
+
+// Set this to the pin you connected the DHT's data and power pins to; connect wires in coherent pins
+#define DHTDATAPIN        3         
+#define DHTPOWERPIN       8
+
+
+// Sleep time between sensor updates (in milliseconds) to add to sensor delay (read from sensor data; typically: 1s)
+static const uint64_t UPDATE_INTERVAL = 60000; 
+
+// Force sending an update of the temperature after n sensor reads, so a controller showing the
+// timestamp of the last update doesn't show something like 3 hours in the unlikely case, that
+// the value didn't change since;
+// i.e. the sensor would force sending an update every UPDATE_INTERVAL*FORCE_UPDATE_N_READS [ms]
+static const uint8_t FORCE_UPDATE_N_READS = 10;
+
+#define CHILD_ID_HUM 0
+#define CHILD_ID_TEMP 1
+#define CHILD_ID_HEATINDEX 2
+
+// Set this offset if the sensors have permanent small offsets to the real temperatures/humidity.
+// In Celsius degrees or moisture percent
+#define SENSOR_HUM_OFFSET 0       // used for temperature data and heat index computation
+#define SENSOR_TEMP_OFFSET 0      // used for humidity data
+#define SENSOR_HEATINDEX_OFFSET 0   // used for heat index data
+
+
+// used libraries: they have to be installed by Arduino IDE (menu path: tools - manage libraries)
+#include <MySensors.h>  // *MySensors* by The MySensors Team (tested on version 2.3.2)
+#include <Adafruit_Sensor.h> // Official "Adafruit Unified Sensor" by Adafruit (tested on version 1.1.1)
+#include <DHT_U.h> // Official *DHT Sensor library* by Adafruit (tested on version 1.3.8) 
+
+DHT_Unified dhtu(DHTDATAPIN, DHTTYPE);
+// See guide for details on Adafruit sensor wiring and usage:
+//   https://learn.adafruit.com/dht/overview
+
+uint32_t delayMS;
+float lastTemp;
+float lastHum;
+uint8_t nNoUpdates = FORCE_UPDATE_N_READS; // send data on start-up 
+bool metric = true;
+float temperature;
+float humidity;
+float heatindex;
+
+
+
+MyMessage msgHum(CHILD_ID_HUM, V_HUM);
+MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
+MyMessage msgHeatIndex(CHILD_ID_HEATINDEX, V_TEMP);
+
+
+
+float computeHeatIndex(float temperature, float percentHumidity) {
+  // Based on Adafruit DHT official library (https://github.com/adafruit/DHT-sensor-library/blob/master/DHT.cpp)
+  // Using both Rothfusz and Steadman's equations
+  // http://www.wpc.ncep.noaa.gov/html/heatindex_equation.shtml
+
+  float hi;
+
+  temperature = temperature + SENSOR_TEMP_OFFSET; //include TEMP_OFFSET in HeatIndex computation too
+  temperature = 1.8*temperature+32; //convertion to *F
+
+  hi = 0.5 * (temperature + 61.0 + ((temperature - 68.0) * 1.2) + (percentHumidity * 0.094));
+
+  if (hi > 79) {
+    hi = -42.379 +
+             2.04901523 * temperature +
+            10.14333127 * percentHumidity +
+            -0.22475541 * temperature*percentHumidity +
+            -0.00683783 * pow(temperature, 2) +
+            -0.05481717 * pow(percentHumidity, 2) +
+             0.00122874 * pow(temperature, 2) * percentHumidity +
+             0.00085282 * temperature*pow(percentHumidity, 2) +
+            -0.00000199 * pow(temperature, 2) * pow(percentHumidity, 2);
+
+    if((percentHumidity < 13) && (temperature >= 80.0) && (temperature <= 112.0))
+      hi -= ((13.0 - percentHumidity) * 0.25) * sqrt((17.0 - abs(temperature - 95.0)) * 0.05882);
+
+    else if((percentHumidity > 85.0) && (temperature >= 80.0) && (temperature <= 87.0))
+      hi += ((percentHumidity - 85.0) * 0.1) * ((87.0 - temperature) * 0.2);
+  }
+
+  hi = (hi-32)/1.8;
+  return hi; //return Heat Index, in *C
+}
+
+
+
+
+
+
+void presentation()  
+{ 
+  // Send the sketch version information to the gateway
+  sendSketchInfo(SN, SV);
+  // Register all sensors to gw (they will be created as child devices)
+  present(CHILD_ID_HUM, S_HUM, "Humidity");
+  wait(100);                                      //to check: is it needed
+  present(CHILD_ID_TEMP, S_TEMP, "Temperature");
+  wait(100);                                      //to check: is it needed
+  present(CHILD_ID_HEATINDEX, S_TEMP, "Heat Index");
+  metric = getControllerConfig().isMetric;
+}
+
+
+void setup()
+{
+  pinMode(DHTPOWERPIN, OUTPUT);
+  digitalWrite(DHTPOWERPIN, HIGH);
+//Serial.begin(9600); 
+  // Initialize device.
+  dhtu.begin();
+
+  
+  Serial.println("DHTxx Unified Sensor Example");
+  // Print temperature sensor details.
+  sensor_t sensor;
+  dhtu.temperature().getSensor(&sensor);
+  Serial.println("------------------------------------");
+  Serial.println("Temperature");
+  Serial.print  ("Sensor:       "); Serial.println(sensor.name);
+  Serial.print  ("Driver Ver:   "); Serial.println(sensor.version);
+  Serial.print  ("Unique ID:    "); Serial.println(sensor.sensor_id);
+  Serial.print  ("Max Value:    "); Serial.print(sensor.max_value); Serial.println(" *C");
+  Serial.print  ("Min Value:    "); Serial.print(sensor.min_value); Serial.println(" *C");
+  Serial.print  ("Resolution:   "); Serial.print(sensor.resolution); Serial.println(" *C");  
+  Serial.print  ("Min Delay:   "); Serial.print(sensor.min_delay/1000); Serial.println(" ms");  
+  Serial.println("------------------------------------");
+  
+  // Print humidity sensor details.
+  dhtu.humidity().getSensor(&sensor);
+  Serial.println("------------------------------------");
+  Serial.println("Humidity");
+  Serial.print  ("Sensor:       "); Serial.println(sensor.name);
+  Serial.print  ("Driver Ver:   "); Serial.println(sensor.version);
+  Serial.print  ("Unique ID:    "); Serial.println(sensor.sensor_id);
+  Serial.print  ("Max Value:    "); Serial.print(sensor.max_value); Serial.println("%");
+  Serial.print  ("Min Value:    "); Serial.print(sensor.min_value); Serial.println("%");
+  Serial.print  ("Resolution:   "); Serial.print(sensor.resolution); Serial.println("%");  
+  Serial.print  ("Min Delay:   "); Serial.print(sensor.min_delay/1000); Serial.println(" ms");  
+  Serial.println("------------------------------------");
+  // Set delay between sensor readings based on sensor details.
+  delayMS = sensor.min_delay / 1000;  
+}
+
+
+
+
+
+
+
+
+void loop()      
+{  
+  digitalWrite(DHTPOWERPIN, HIGH);   
+  delay(delayMS);
+  sensors_event_t event;  
+  // Get temperature event and use its value.
+  dhtu.temperature().getEvent(&event);
+  if (isnan(event.temperature)) {
+    Serial.println("Error reading temperature!");
+  }
+  else {
+    temperature = event.temperature;
+    #ifdef MY_DEBUG
+    Serial.print("Temperature: ");
+    Serial.print(temperature);
+    Serial.println(" *C");
+    #endif
+  }
+
+  // Get humidity event and use its value.
+  dhtu.humidity().getEvent(&event);
+  if (isnan(event.relative_humidity)) {
+    Serial.println("Error reading humidity!");
+  }
+  else {
+    humidity = event.relative_humidity;
+    #ifdef MY_DEBUG
+    Serial.print("Humidity: ");
+    Serial.print(humidity);
+    Serial.println("%");
+    #endif
+  }
+
+if (fabs(humidity - lastHum)>=0.05 || fabs(temperature - lastTemp)>=0.05 || nNoUpdates >= FORCE_UPDATE_N_READS) {
+    lastTemp = temperature;
+    lastHum = humidity;
+    heatindex = computeHeatIndex(temperature,humidity); //computes Heat Index, in *C
+    nNoUpdates = 0; // Reset no updates counter
+    #ifdef MY_DEBUG
+    Serial.print("Heat Index: ");
+    Serial.print(heatindex);
+    Serial.println(" *C");    
+    #endif    
+    
+    if (!metric) {
+      temperature = 1.8*temperature+32; //convertion to *F
+      heatindex = 1.8*heatindex+32; //convertion to *F
+    }
+    
+    #ifdef MY_DEBUG
+    wait(100);
+    Serial.print("Sending temperature: ");
+    Serial.print(temperature);
+    #endif    
+    send(msgTemp.set(temperature + SENSOR_TEMP_OFFSET, 2));
+
+    #ifdef MY_DEBUG
+    wait(100);
+    Serial.print("Sending humidity: ");
+    Serial.print(humidity);
+    #endif    
+    send(msgHum.set(humidity + SENSOR_HUM_OFFSET, 2));
+
+    #ifdef MY_DEBUG
+    wait(100);
+    Serial.print("Sending HeatIndex: ");
+    Serial.print(heatindex);
+    #endif    
+    send(msgHeatIndex.set(heatindex + SENSOR_HEATINDEX_OFFSET, 2));
+
+  }
+
+  nNoUpdates++;
+
+  // Sleep for a while to save energy
+  digitalWrite(DHTPOWERPIN, LOW); 
+  wait(300); // waiting for potential presentation requests
+  sleep(UPDATE_INTERVAL); 
+
+}