                 ledTempDec.off();
             }
 #endif
-            tempValueOld = tempValue;
-        }
+        
+        // Publishing only at relevant temperature change
+        if (fabs(tempDiff) > TEMP_VALUE_MARGIN)
+        {
+#ifdef BLYNK_NOTIFY_TEMP
+            // Temperature status push notification
+            if (tempStatus != tempStatusOld)
+            {
+                Blynk.notify(BLYNK_LABEL_PREFIX + BLYNK_LABEL_GLUE + String::format("%4.1f C", tempValue) + BLYNK_LABEL_GLUE + TEMP_STATUS[tempStatus]);
+                tempStatusOld = tempStatus;
+            }
+#endif
+        }
+        tempValueOld = tempValue;
     }
 #endif
 }

    static byte tempStatusOld = tempStatus;
#endif
    static float tempValueOld = tempValue;
    static unsigned long tsPublish;
    if (millis() - tsPublish >= PERIOD_PUBLISH_BLYNK)
    {
        tsPublish = millis();
        float tempDiff = tempValue - tempValueOld;
        
        // Imidiate publishing

// Hardware configuration
//-------------------------------------------------------------------------
const byte PIN_LM35 = A0;                       // Ambient temperature sensor LM35DZ
const unsigned int REF_VOLTAGE = 3300;          // Reference voltage 3.3V
const float COEF_LM35 = 0.0805861;              // Centigrades per bit


//-------------------------------------------------------------------------
// Time periods (milliseconds)
//-------------------------------------------------------------------------
const unsigned int TIMEOUT_WATCHDOG = 10000;
const unsigned int TIMEOUT_RECONNECT = 10000;
const unsigned int PERIOD_MEASURE_RSSI = 2000;
const unsigned int PERIOD_MEASURE_TEMP = 2000;


//-------------------------------------------------------------------------
// Measuring configuration
//-------------------------------------------------------------------------
// Temperature processing parameters (in centigrades)
const float TEMP_VALUE_NAN = -999.0;    // Temperature not a number
const float TEMP_VALUE_MARGIN = 0.5;    // Temperature hysteresis
// const float TEMP_BUCKET[] = {0.0, 5.0, 16.0, 20.0, 24.0, 28.0};
// const char* TEMP_STATUS[] = {"unknown", "Freeze", "Cold", "Lukewarm", "Normal", "Warm", "Hot"};
const float TEMP_BUCKET[] = {0.0, 4.0, 6.5, 8.5, 10.0}; // Bottom status values
const char* TEMP_STATUS[] = {"unknown", "Freeze", "Cold", "Convectors", "Normal", "Lukewarm"};

// Statistical smoothing and exponential filtering
const float EXPFILTER_FACTOR_RSSI = 0.1;    // Filtering factor for RSSI
