[Solved] Trying to log min/max temp to variable(s)

I have an outdoor temp sensor:

...
const int tmpPin4 = 3;
OneWire oneWire4(tmpPin4);
DallasTemperature sensors4(&oneWire4);

...
sensors4.requestTemperatures();
  Blynk.virtualWrite(10, sensors4.getTempCByIndex(0)); 
...

it works great, but now I want to log the min and max

So tried this:

int outdoormin, outdoormax; 

sensors4.requestTemperatures();
  Blynk.virtualWrite(10, sensors4.getTempCByIndex(0)); 
  if (outdoormin > sensors4.getTempCByIndex(0))
  {
    outdoormin = sensors4.getTempCByIndex(0);
    
    }
  
  if (outdoormax < sensors4.getTempCByIndex(0))
  {
    outdoormax = sensors4.getTempCByIndex(0);
    
    }
  Blynk.virtualWrite(13, outdoormin); 
  Blynk.virtualWrite(14, outdoormax); 

but nothing useful is writen to V13 or V14

You need to use minimum interval as 1 minute for max/min values. In other words you need a timer with 1 minute interval and once a minute push min/max value there. This is because Blynk accepts only 1 value per minute. In case you send more - we calculate average.

SimpleTimer timer;
int outdoormin = 100, outdoormax = -100; 

void sendMinMax() {
  Blynk.virtualWrite(13, outdoormin); 
  Blynk.virtualWrite(14, outdoormax);
}

void setup() {
  // Setup a function to be called every minute
  timer.setInterval(60000L, sendMinMax);
}

void loop() {
  Blynk.run();
  timer.run(); // Initiates SimpleTimer
}

done and outdoormin and outdoormax starts with 100/-100.

but this still not updates the variables with temperature data.
and variables are not sent to Blynk V13 / V14.

void sendMinMax() {
  sensors4.requestTemperatures();
  if (outdoormin > sensors4.getTempCByIndex(0))
  {
    outdoormin = sensors4.getTempCByIndex(0);
    }
  
  if (outdoormax < sensors4.getTempCByIndex(0))
  {
    outdoormax = sensors4.getTempCByIndex(0);
    }
  Blynk.virtualWrite(13, outdoormin); 
  Blynk.virtualWrite(14, outdoormax);
}

You also have few mistakes in code. Should be :

int temp = sensors4.getTempCByIndex(0);

outdoormin = min(outdoormin, temp);
outdoormax = max(outdoormax, temp);

its so weird

it seems that min() max() are not working

float outdoormin = 100;
float outdoormax = -100;

void sendMinMax() 
{
  sensors4.requestTemperatures();
  float temp = sensors4.getTempCByIndex(0);

  float outdoormin = min(outdoormin, temp);
  float outdoormax = max(outdoormax, temp);
  //Blynk.virtualWrite(13, outdoormin); 
  //Blynk.virtualWrite(14, outdoormax);
  
  Serial.print("\ntemp: ");
  Serial.print(temp);
  Serial.print("\noutdoormin: ");
  Serial.print(outdoormin);
  Serial.print("\noutdoormax: ");
  Serial.print(outdoormax);
}

gives the output

temp: 25.19
outdoormin: 0.00
outdoormax: 25.19
temp: 25.19
outdoormin: 0.00
outdoormax: 25.19
temp: 25.19
outdoormin: 0.00
outdoormax: 25.19
temp: 25.19
outdoormin: 0.00
outdoormax: 25.19
temp: 25.25
outdoormin: 0.00
outdoormax: 25.25
temp: 25.25
outdoormin: 0.00
outdoormax: 25.25
temp: 25.25
outdoormin: 0.00
outdoormax: 25.25
temp: 25.25
outdoormin: 0.00
outdoormax: 25.25
temp: 25.19
outdoormin: 0.00
outdoormax: 25.19

Its as if it totally ignores the min/max

though it works if I inserts numbers

like

float outdoormin = min(21, 20);

or
float outdoormin = min(5, 20);

now it works…

float outdoormin = 100;
float outdoormax = -100;

void sendMinMax() 
{
  sensors4.requestTemperatures();
  int temp = sensors4.getTempCByIndex(0);

  outdoormin = min(outdoormin, temp);
  outdoormax = max(outdoormax, temp);
  Blynk.virtualWrite(13, outdoormin); 
  Blynk.virtualWrite(14, outdoormax);
  
  
}