doppia azione rele

Ho un problema con questa parte di sketch:

    if (now.hour() >= 15 ){
      if (((t1+t2+t3)/3) >= tMAX) {
        digitalWrite(relay3, HIGH);}   // accensione aspiratore 
      if (((t1+t2+t3)/3) <= (tMIN+1)) {    
        digitalWrite(relay3, LOW);}   // spegnimento aspiratore 
          
      if (((t1+t2+t3)/3) <= tMIN) {
        digitalWrite(relay1, HIGH);}   // accensione stufa
      if (((t1+t2+t3)/3) >= (tMAX-1)) {    
        digitalWrite(relay1, LOW);}   // spegnimento stufa    
        
      if (((h1+h2+h3)/3) >= hMAX) {
        digitalWrite(relay3, HIGH);}   // accensione aspiratore 
      if (((h1+h2+h3)/3) <= (hMIN+10)) {    
        digitalWrite(relay3, LOW);}   // spegnimento aspiratore

infatti questo codice

        if (((t1+t2+t3)/3) >= tMAX) {
        digitalWrite(relay3, HIGH);}   // accensione aspiratore 
      if (((t1+t2+t3)/3) <= (tMIN+1)) {    
        digitalWrite(relay3, LOW);}   // spegnimento aspiratore

e questo

  if (((h1+h2+h3)/3) >= hMAX) {
        digitalWrite(relay3, HIGH);}   // accensione aspiratore 
      if (((h1+h2+h3)/3) <= (hMIN+10)) {    
        digitalWrite(relay3, LOW);}   // spegnimento aspiratore

si infastidiscono, nel senso che se non vi sono sia tMAX che la hMAX l'aspiratore non rimane acceso...

qualcuno sa come ovviare a questo problema?

    float Temp = (t1+t2+t3) / 3;
    float Umid = (h1+h2+h3) / 3;

    if (now.hour() >= 15 ) {
 
      if (Temp  >= tMAX) || (Umid >= hMAX)) digitalWrite(relay3, HIGH);    // accensione aspiratore 
      else if (Temp <= tMIN + 1) || (h1Umid <= hMIN + 10)) digitalWrite(relay3, LOW);   // spegnimento aspiratore 
          
      if (Temp <= tMIN) digitalWrite(relay1, HIGH);   // accensione stufa
      else if (Temp >= tMAX -1) digitalWrite(relay1, LOW);}   // spegnimento stufa    
   }

grazie cyberhs... non solo per avermi spiegato come fare... anche perche ora cercherò di capire l'utilizzo di "else", che hai aggiunto alla funzione... grazie