Ayuda para verificación en Código para Control Domotico (Luces, clima)

Hola buenas Noches, tardes o días según desde donde me estén leyendo, me gustaría saber si alguien me puede ayudar en echarle un vistazo a mi código y me pueda decir si está bien planteado o que es lo que me está faltando , porque me falla la recepción de la temperatura del Sensor y la lectura del potenciómetro en Android, también del LDR y del Potenciómetro correspondiente, a grandes rasgos lo que pretendo hacer es un sistema de control domótica que consta de controlar la Iluminación de las instancias (sala,cocina,comedor,cuarto1,baño), control de clima (dependiendo de la asignación por medio del potenciómetro la temperatura deseada a la que se debe de prender el clima, esto realizando la comparación de la lectura del sensor DS18B20 >= que la lectura del Potenciómetro) e igualmente como el control del clima también existe el control de encendido de luces exteriores con el sensor LDR que acierta luminosidad se encienden las Luces exteriores, en el sistema asignamos que se guarde los estados de los pines del arduino por seguridad en caso de falla en la energía eléctrica, de antemano les agradezco por la ayuda que me puedan brindar.

NOTA:- todo tipo de comentario constructivo bienvenido para mejora del conocimiento.
Espero alguien con mayor capacidad de programación me pueda verificar el código.
Este es mi código lo coloque en dos partes porque excedió de caracteres y no cupo en un solo mensaje.
Primera parte

//BLUETOOTH
//Alimentación del módulo Bluetooth HC-06 al pin 3 de Arduino
#define PinVccHC06 3
char NOMBRE[10]  = " Nombre";
char BPS         = '4';// 1=1200 , 2=2400, 3=4800, 4=9600, 5=19200, 6=38400, 7=57600, 8=115200
char PASS[10]    = "12345678";

//EEPROM (Guarda el estado de los pines cuando falta la energía)
#include <EEPROM.h>
int device1 = 0;
int device2 = 0;
int device3 = 0;
int device4 = 0;
int device5 = 0;
int cont = 0;
//ILUMINACION (Instancias controladas)
int sala    = 7;
int cocina  = 8;
int comedor = 9;
int cuarto1 = 10;
int bano    = 11;

//DISPLAY LCD 20 X4
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);

//SENSOR TEMPERATURA
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS  12
OneWire ourWire(ONE_WIRE_BUS);
DallasTemperature sensors(&ourWire);
float temperatura = 0;
float t;
//Potenciómetro(Para Asignar la Temperatura Ideal a la que queremos Encender el Clima)
int pinopot = A0;
int valorpot = 0;
//LDR
int LDR = A1;
float l;
//Potenciómetro(Para Asignar a que cantidad de Lux queremos Encender la Iluminacion Exterior)
int pinopot_lux = A2;
int valorpot_lux = 0;
//VENTILADORES(Clima)
const int VENTILADOR1 = 4;
const int VENTILADOR2 = 5;
const int VENTILADOR3 = 6;
boolean estadoventilador1 = (false);
boolean estadoventilador2 = (false);
boolean estadoventilador3 = (false);
//Mandar datos a Android(LDR y DS18B20)
char dato;
String readString;

void setup ()
{
  Serial.flush();
  Serial.begin(9600); // velocidad de la comunicacion entre arduino y ordenador
  //Iniciar el Bluetooth

  pinMode(PinVccHC06, OUTPUT);
  //Alimentamos el módulo HC-06 a 5v
  digitalWrite(PinVccHC06, LOW);
  delay(1000);
  //Activa los sensores
  //Alimentamos el módulo HC-06 a 5v
  digitalWrite(PinVccHC06, HIGH);
  delay(1000);

  //ILUMINACION
  pinMode(sala, OUTPUT);
  pinMode(cocina, OUTPUT);
  pinMode(comedor, OUTPUT);
  pinMode(cuarto1, OUTPUT);
  pinMode(bano, OUTPUT);

  digitalWrite(sala, LOW);
  digitalWrite(cocina, LOW);
  digitalWrite(comedor, LOW);
  digitalWrite(cuarto1, LOW);
  digitalWrite(bano, LOW);
  //DISPLAY LCD 20 X 4
  lcd.init();
  lcd.clear();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("*By mi Nombre* ");

  //Temperatura Actual
  lcd.setCursor(0, 1);
  lcd.print("T Actual: ");
  lcd.setCursor(17, 1);
  lcd.print("\337C");
  //Temperatura en la que se desea se activen los ventiladores asignada por el potenciometro
  lcd.setCursor(0, 2);
  lcd.print("T Deseada: ");
  lcd.setCursor(17, 2);
  lcd.print("\337C");
  //SENSOR TEMPERATURA
  sensors.begin();
  //POTENCIOMETRO
  pinMode(pinopot, INPUT);
  //VENTILADORES(Clima)
  pinMode(VENTILADOR1, OUTPUT);
  pinMode(VENTILADOR2, OUTPUT);
  pinMode(VENTILADOR3, OUTPUT);
}

Segunda parte del Codigo

void loop()
{
  /*
  //SENSOR TEMPERATURA
  EnviarTemperatura();
  delay(500);
  */
  //ILUMINACION (Controlada por botones y Voz desde arduino)
  char caracter = Serial.read();
  if (caracter > 0) {
    switch (caracter) {
      case 'a':
        digitalWrite(sala, HIGH);
        EEPROM.write(5, 1); 
        break;
      case 'b':
        digitalWrite(sala, LOW);
        EEPROM.write(5, 0); 
        break;
      case 'c':
        digitalWrite(cocina, HIGH);
        EEPROM.write(6, 1); 
        break;
      case 'd':
        digitalWrite(cocina, LOW);
        EEPROM.write(6, 0); 
        break;
      case 'e':
        digitalWrite(comedor, HIGH);
        EEPROM.write(7, 1); 
        break;
      case 'f':
        digitalWrite(comedor, LOW);
        EEPROM.write(7, 0); 
        break;
      case 'g':
        digitalWrite(cuarto1, HIGH);
        EEPROM.write(8, 1); 
        break;
      case 'h':
        digitalWrite(cuarto1, LOW);
        EEPROM.write(8, 0); 
        break;
      case 'i':
        digitalWrite(bano, HIGH);
        EEPROM.write(9, 1); 
        break;
      case 'j':
        digitalWrite(bano, LOW);
        EEPROM.write(9, 0); 
        break;
      case 'k':
        digitalWrite(sala, HIGH);
        digitalWrite(cocina, HIGH);
        digitalWrite(comedor, HIGH);
        digitalWrite(cuarto1, HIGH);
        digitalWrite(bano, HIGH);
        EEPROM.write(5, 1); 
        EEPROM.write(6, 1); 
        EEPROM.write(7, 1); 
        EEPROM.write(8, 1); 
        EEPROM.write(9, 1); 
        break;
      case 'l':
        digitalWrite(sala, LOW);
        digitalWrite(cocina, LOW);
        digitalWrite(comedor, LOW);
        digitalWrite(cuarto1, LOW);
        digitalWrite(bano, LOW);
        EEPROM.write(5, 0); 
        EEPROM.write(6, 0); 
        EEPROM.write(7, 0); 
        EEPROM.write(8, 0); 
        EEPROM.write(9, 0); 
        break;
    }
  }
  delay(200);
  device1 = digitalRead(sala);
  device2 = digitalRead(cocina);
  device3 = digitalRead(comedor);
  device4 = digitalRead(cuarto1);
  device5 = digitalRead(bano);
  /*
    for (int i = 0; i < 512; i++) {
      Serial1.print(" EEPROM"); Serial.print(i); Serial.print(": ");
      Serial1.println(EEPROM.read(i));
      delay(15);
    }
  */
  cont++;
  //Serial1.print(cont);
  if (cont == 100) {
    cont = 0;
  }

  if (cont <= 1) {
    cont++;

    if ( (EEPROM.read(5)) == 1) {
      digitalWrite(sala, HIGH);
    }
    if ( (EEPROM.read(5)) == 0) {
      digitalWrite(sala, LOW);
    }
    if ( (EEPROM.read(6)) == 1) {
      digitalWrite(cocina, HIGH);
    }
    if ( (EEPROM.read(6)) == 0) {
      digitalWrite(cocina, LOW);
    }
    if ( (EEPROM.read(7)) == 1) {
      digitalWrite(comedor, HIGH);
    }
    if ( (EEPROM.read(7)) == 0) {
      digitalWrite(comedor, LOW);
    }
    if ( (EEPROM.read(8)) == 1) {
      digitalWrite(cuarto1, HIGH);
    }
    if ( (EEPROM.read(8)) == 0) {
      digitalWrite(cuarto1, LOW);
    }
    if ( (EEPROM.read(9)) == 1) {
      digitalWrite(bano, HIGH);
    }
    if ( (EEPROM.read(9)) == 0) {
      digitalWrite(bano, LOW);
    }
  }
  //-----------------------Para Monitorear la Temperatura Actual y la deseada desde Android---------------------
  LeerDato();
  if (readString.length() > 0) {
    if (readString == "Tempa") {
      EnviarTemperatura();
    }
    if (readString == "Tempi") {
      potenciometroTI();
    }
  }
}



void EnviarTemperatura()
{
  // obter temperaturas
  sensors.requestTemperatures(); //Le pido sensar
  // Asignar en la variable celsius el valor de temperatura
  float celsius = sensors.getTempCByIndex(0);
  valorpot = analogRead(pinopot);        // Guardamos el valor que nos proporciona el potenciómetro
  temperatura = map(valorpot, 0, 1023, 0, 63);          //La variable velocidad toma el valor del potenciómetro dividido entre 16 (estos parámetros son al gusto).

  if (isnan(t)) { //Comprueba que el dato es un número
    Serial.print("Error");
  } else {
    Serial.print(celsius); //Envía el dato por el puerto serie para que lo vea la app de android
  }
  //Temperatura Actual
  lcd.setCursor(11, 1);
  lcd.print(celsius);
  //Temperatura en la que se desea se activen los ventiladores
  lcd.setCursor(11, 2);
  lcd.print(temperatura);


  //VENTILADORES
  if (celsius >= temperatura) {
    digitalWrite(VENTILADOR1, HIGH);
    digitalWrite(VENTILADOR2, HIGH);
    digitalWrite(VENTILADOR3, HIGH);
    lcd.setCursor(0, 3);
    lcd.print("**Clima  Encendido**");
  } else if (celsius <= temperatura - 2) {
    digitalWrite(VENTILADOR1, LOW);
    digitalWrite(VENTILADOR2, LOW);
    digitalWrite(VENTILADOR3, LOW);
    lcd.setCursor(0, 3);
    lcd.print("*******************");
  }
}
void potenciometroTI() {
  valorpot = analogRead(pinopot) / 16;      // Guardamos el valor que nos proporciona el potenciómetro
  //temperatura = map(valorpot, 0, 1023, 0, 63);
  if (isnan(t)) { //Comprueba que el dato es un número
    Serial.print("Error");
  } else {
    Serial.print(valorpot); //Envía el dato por el puerto serie
  }
}

//Leer Datos
void LeerDato() {
  readString = "";
  while (Serial.available()) {
    delay(10);
    if (Serial.available() > 0) { //¿Hay datos en el buffer?
      dato = Serial.read(); //Lee el dato
      readString += dato; //Lo almacena en readString
    }
  }
}

Hola, ¿el VCC del HC-06 está conectado directamente al pin 3 o pasa por un transistor? Si está conectado directamente puede ser un problema de alimentación, pues el pin sólo puede entregar 20 mA y el HC-06 consume unos 40 mA. Conéctalo directamente a 3.3V o a una fuente de alimentación de 3.3V. Si funciona, usa un transistor con el colector a 3.3V, el emisor al HC-06 y la base al pin 3. También es posible que se haya quemado, pues lo alimentas a 5V (a menos que haya un regulador de por medio o pase por un transistor)

Ok muchas gracias por responder y disculpa la demora por responderte, mira te explico el bluetooth es el HC-05 y esta conectado a 5v, trabaja muy bien porque el control de la iluminación se realiza sin ningún inconveniente, lo que yo necesito saber si esta bien estructurada mi programación porque en la app de android recibe solo la lectura de la temperatura pero no la del potenciometro que es el encargado de indicar la temperatura máxima para activar el clima.

He analizado el código y creo que pueden ser dos cosas: la comprobación de si es un número o la app de Android. Podrían ser más cosas pero no puedo probarlo, pues no tengo ese termómetro ni la app. Te doy un consejo: si puedes, en vez de usar un potenciómetro, usar un campo de texto en Android o incluso podrías usar el ESP8266 y conectarlo a Internet por Wi-Fi, de manera que se mostrase en una web.