Codigo. No estoy seguro porque no funciona.

Hola Gente estoy intentando hacer lo siguiente:

si el la temperatura es = o menor a la indicada por Tempoff / on y dependiendo si el pin 13 esta o no HIGH. me encienda o apague otro pin, les dejo el pedaso de codigo.

if (dht.readTemperature() <= TempOn && digitalRead(13) == HIGH){
digitalWrite(12,HIGH);
}
else{
  digitalWrite(12,LOW);
}

if (dht.readTemperature() <= TempOff && digitalRead(13) == LOW){
digitalWrite(12,HIGH);
}
else{
  digitalWrite(12,LOW);
}

la idea es que si la TempOn es menor a la que lee el DHT y si la lampara en pin13 esta encendida me encienda el 12 (que es un calefactor.
pero si el pin 13 esta apagado la comparacion la haga con TempOff y en base a ese resultado active o desactive la calefaccion del pin 12

Basicamente esto que te planteo es lo mismo que has puesto tu

bool estado13 = digitalRead(13);
float temp =  dht.readTemperature();

if (estado13) {
    if (temp <= TempOn)
        digitalWrite(12,HIGH);
}
else {
    if (temp <= TempOff)
        digitalWrite(12,HIGH);
    else
        digitalWrite(12,LOW);    
}

Cuidado porque se deben esperar 2 segundos entre lectura y lectura del DHT aprox. He visto que lo mínimo pueden ser 350 mseg.